Está en la página 1de 19

Capítulo 7: Expresiones Regulares

7.1. Concepto de expresión regular

7.1.1. Definición

7.1.2. Lenguaje descrito

7.1.3. Propiedades

7.2. Teoremas de equivalencia

7.2.1. Obtener un AFND a partir de una expresión regular

7.2.2. Obtener

una autómata finito

expresión

equivalente

a

partir

de

un

7.1. Concepto de Expresión Regular

El objetivo de las expresiones regulares es representar todos los posibles lenguajes definidos sobre un alfabeto , en base a una serie de lenguajes primitivos, y unos operadores de composición.

Lenguajes primitivos: el lenguaje vacío, el lenguaje formado por la palabra vacía, y los lenguajes correspondientes a los distintos símbolos del alfabeto.

Operadores de composición: la unión, la concatenación y el cierre.

Ejemplo:

1. Lenguaje formado por las cadenas que terminan en 01:

{0,1}*.{01}=

({0} {1})*.{01}

Expresión regular: (0+1)*01 2. Lenguaje formado por palabras de longitud par sobre a’s y b’s:

{aa,ab,ba,bb}*=

({aa} {ab}

{ba} {bb})*

Expresión: (aa+ab+ba+bb)*

7.1.1 Definición

Dado un alfabeto , las expresiones regulares sobre se definen de forma recursiva por las siguientes reglas:

1. Las siguientes expresiones son expresiones regulares primitivas:

a, siendo a

.

2. Sean

y expresiones regulares, entonces son expresiones

regulares derivadas:

+

* (cierre)

( )

(unión)

(o simplemente

.

) (concatenación)

3. No

hay

más

expresiones

regulares

sobre

construidas mediante estas reglas.

que

las

Precedencia de los operadores:

1. () 2. * cierre concatenación 4. + unión

Ejemplo:

Algunos ejemplos de expresión regular son:

(0 + 1)*01 (aa + ab + ba + bb)* a*(a + b) (aa)*(bb)*b

7.1.2 Lenguaje descrito por una ER

Definición (Lenguaje descrito por una ER):

Sea r una expresión regular sobre . El lenguaje descrito por r, L(r), se define recursivamente de la siguiente forma:

1. Si r=

2. Si r=

3. Si R=a, a

4. Si R= +

5. Si R= .

6. Si R= *

7. Si R=( )

L()=

L( )= { }

L(a)= {a}

L( + )= L( )

L( . )= L( )L( )

L( *)= L( )*

L(( ))= L( )

L( )

donde y son expresiones regulares.

Ejemplo: Mostrar el lenguaje descrito por una ER mediante notación conjuntista:

1. L(a*(a+b))

=

L(a*)L((a+b))

=

L(a)*L(a+b)

=

L(a)*(L(a) L(b)) =

{a}*({a} {b})

=

{ ,a,aa,aaa, }{a,b}

=

{a,aa, ,b,ab,aab, }

=

{a n |n1} {a n b|n0}

 

2. L((aa)*(bb)*b)

=

{a 2n b 2m+1 |n,m0}

3. Si ={a,b,c}, entonces L((a+b+c)*)= *.

4. L(a*.(b+c))

5. L(0*.1.0*)

6. L((a+b+c+

+z)*.(a+b)*)

7. ¿Que lenguaje describe la expresión a*.(a+b).c*?

8. Dado el lenguaje L={w |w {a,b,c}* donde w tiene al menos un par de a’s consecutivos}. Escribe la expresión regular para L.

9. Escribe todas las palabras de longitud <4 de L((a+b)*.b.(a+a.b)*).

7.1.3 Propiedades de Expresiones Regulares

Definición (equivalencia de ER):

Dos expresiones regulares r 1 y r 2 se dicen equivalentes, r 1 = r 2 , si describen el mismo lenguaje, esto es, si L(r 1 )=L(r 2 ).

En base a esta definición se pueden establecer las siguientes equivalencias y propiedades:

Respecto a las operaciones + y . :

1. + y . son asociativas: +( + )=( + )+ = + +

y

.( . )=(

). =

+ es conmutativa e idempotente:

Distributividad:

Elemento neutro: . = . =

.

.

. + = + y y

.

2.

3.

4.

5. . = .=

6. Si

.( + )= . +

L( ), entonces + =

y

+ ). =

+ . +

(

+=+ =

Respecto a la operación *:

7.

*= +

.

*

8.

*=

 

9.

*=

10.

*. *=

*

11.

.

*= *.

12.

( *)*= *

13. ( *+ *)*=( *. *)*=( + )*=( *. )*. *

14. ( . )*. =

.(

)*

.

=

.

Para comprobar si dos expresiones son equivalentes se puede intentar transformarlos mediante estas reglas en una misma expresión.

Ejemplos:

={a,b,c}

1. c*.c+c*=c*¿?

c*.c+c*

=

c*.c+c*+

(por 6)

=

c.c*+c*+

(por 11)

=

+c.c*+c*

(por 2)

=

c*+c*

(por 7)

=

c*

(por 2)

2. c+c*=c*¿?

 

c+c*

=

c+ +c.c*

(por 7)

=

+c+c.c*

(por 2)

=

+c. +c.c*

(por 4)

=

+c.( +c*)

(por 3)

=

+c.c*

(por 6)

=

c*

(por 7)

3. ((c+b.a)*.a*)*=((c+b.a)+a)* ¿?

4. Dado dos expresiones regulares R= b.c+a.c*.a.c+a.c*.c+a y S=(b+a.c*a).c+a.c*. ¿Representan S y R el mismo lenguaje?

5. Demuestre que las expresiones R=(a*.(b+c)*+b*)* y S=(a+b+c)* son iguales.

Observación: De este modo sólo se puede demostrar que dos expresiones regulares son equivalentes. Sin embargo, mediante este método, no es posible demostrar que dos expresiones regulares describen lenguajes distintos.

7.2 Teoremas de equivalencia

Tal y como indica su nombre, mediante expresiones regulares se puede representar lenguajes regulares. De hecho, la clase de lenguajes que se puede representar mediante una ER, es equivalente a la clase de lenguajes regulares.

Hasta ahora hemos visto que los lenguajes regulares pueden describirse mediante:

Gramáticas lineales por la izquierda

Gramáticas lineales por la derecha

Autómatas finitos deterministas

Autómatas finitos no deterministas

Por tanto, deben existir algoritmos que permiten obtener un autómata o una gramática regular a partir de una expresión regular y viceversa.

7.2.1 ER equivalente a un autómata finito

Tres métodos principales para convertir expresiones regulares en autómatas:

Método de las r n ij (Hopcroft).

Eliminación de estados (Hopcroft,Linz)

Ecuaciones características (Alfonseca, Isasi) (equivalente al método de la eliminación de estados)

Definición (ecuación característica):

Sea un autómata finito A=({q 0 ,q 1 ,…,q n }, ,f,q 0 ,F). Cada estado del autómata tiene asignado una ecuación característica correspondiente, que describe las distintas formas de llegar desde este estado a un estado final. La ecuación característica para el estado q i es la siguiente:

X i =b j X j + b k X k +…+ b w X w +a i

donde:

La expresión b k X k forma parte de la ecuación si y sólo si existe una transición del estado q i al estado q k para el símbolo de entrada b k

en otro

a i es una expresión tal que a i = caso.

si

q i

F; a i =

Ejemplo: q 1 c d a q 2 * q b 4 q 0 b,d
Ejemplo:
q 1
c
d
a
q 2
*
q
b
4
q 0
b,d
a,b,c
a,b,c,d
c
q 3 *
c
a,b,d
q 5
a,d
a,b,c,d

x 0 =b.x 1 +c.x 3 +a.x 5 +d.x 5 +=b.x 1 +c.x 3 +(a+d).x 5 +

x

x

x

x

x

=c.x 2 +a.x 0 +(b+d).x 5 +

=d.x 4 +(a+b+c).x =c.x 3 +(a+b+d).x

=(a+b+c+d).x

=(a+b+c+d).x

1

2

3

4

5

+5 +

5

5

5

+

+

Observación:

1. Se puede definir las ecuaciones características para autómatas finitos deterministas y no deterministas. 2. X i es una expresión regular (con variables) que describe las cadenas que llevan del estado q i a un estado final. Evidentemente L(X 0 )=L(A).

Teniendo todas las ecuaciones características, se puede resolver la ecuación para el estado inicial obteniendo la expresión regular del lenguaje. El siguiente lema proporciona una regla para eliminar las variables en las ecuaciones.

Lema 1:

Sea X una variable y A y B expresiones regulares. Si X=A.X+B

y

L(A), enconces X=A*.B.

Demostración:

Sea cualquier palabra x L(X) con |x|=n y X=A.X+B. Se

demuestra que se cumple x L(A*B).Consideramos la definición de X:

X=A.X+B X=A.(A.X+B)+B=A 2 .X+A.B+B

X=A

2 .(A.X+B)+A.B+B=A 3 .X+A 2 .B+A.B+B

X=A n+1 .X+A n .B+…+A.B+B= A n+1 .X+(A n +…+A+ ).B

Por tanto, L(X)=L(A n+1 .X) L((A n +…+A+ ).B) y dado que x L(X) se sigue x L(A n+1 .X) o x L((A n +…+A+ ).B).

Dado que L(A), para cualquier w L(A n+1 .X) se cumple

|w|n+1.

x tiene longitud n por lo que x L(A n+1 .X).

Por tanto, x L((A n +…+A+ ).B) y, entonces también se verifica x L(A*B).

Razonando de forma similar se puede demostrar que para cualquier palabra x L(A*B) también se cumple x L(X).

Ejemplos: Resolución de ecuaciones

1. X=abX

2. X=abX+

3. X=abX+cX

X=abX+=(ab)*=

X=(ab)* = (ab)*

X=(ab+c)X+= (ab+c)*=

Teorema 1:

Dado un autómata finito A=(Q, ,f,q 0 ,F), existe una expresión regular R tal que L(R)=L(A).

Demostración:

La expresión regular equivalente se obtiene resolviendo de forma sucesiva las ecuaciones características del autómata. La expresión regular R será la que se obtiene a partir de la ecuación característica correspondiente al estado inicial del autómata:

R=X 0 .

Ejemplo: (para el autómata anterior) Ecuaciones características:

x

x

x

x

x

x

0

1

2

3

4

5

=b.x 1 +c.x 3 +(a+d).x =c.x 2 +a.x 0 +(b+d).x

5

5

=d.x 4 +(a+b+c).x =c.x 3 +(a+b+d).x

+5 +

5

=(a+b+c+d).x

=(a+b+c+d).x

5

5

+

+

+

+

Resolviendo x 5 : x 5 =(a+b+c+d)*.=Resolviendo x 4 : x 4 =(a+b+c+d).+ = Resolviendo x 2 : x 2 =d. +(a+b+c).+=d Resolviendo x 3 : x 3 =c.x 3 +(a+b+d).+ =c.x 3 + =c*. =c* Resolviendo x 1 : x 1 =c.d+a.x 0 +(b+d).+=cd+a.x 0 Resolviendo x 0 : x 0 =b.(cd+a.x 0 )+c.c*+(a+d).+= bax 0 +bcd+c.c*= (ba)*(bcd+cc*)

Observaciones:

La aplicación de la regla “Si X=A.X+B, enconces X=A*.B” sólo es posible si L(A).

Si el autómata tiene transiciones , entonces es posible que no se pude aplicar esta regla.

En consecuencia, será necesario eliminar transiciones antes (convertir el autómata en uno sin transiciones ).

Ejemplo: q 2 c a a, q 1 * q 0
Ejemplo:
q 2
c
a a,
q 1 *
q
0

=

x x 1 =cx 1 +(a+ )x 0 + =c*.((a+ )x 0 + ) =(c*.a+c*)x 0 +c* x 0 = x 1 +ax 2 += ((c*.a+c*)x 0 +c*)+a=(c*.a+c*)x 0 +c* ¡¡¡ππππ(c*.a+c*)*.c* !!!!

2

Transformación del autómata (eliminación de transiciones ):

similar a la conversión a un autómata determinista

los estados nuevos son las clausuras de los estados originales respecto a :

q 2 a c,a {q 0 ,q 1 }*
q
2
a
c,a
{q 0 ,q 1 }*
q 2 c a a, q 1 * q 0 2 =∆
q 2
c
a a,
q 1 *
q
0
2 =∆

x

x 01 =(c+a)x 01 + +ax 2 =(c+a)x 01 + +a=(c+a)x 01 + =(c+a)*. =(c+a)*

Ejemplos: Obtener las expresiones regulares para los siguientes

1.

2.

autómatas:

A

 

a

b

 

p

q

p

 

*

q

p

q

A

0

1

 

*

A

B

A

*

B

C

A

 

C

C

C

x

x

p

q

=ax

=ax

q

p

+bx

+bx

+q +

p

Solución: x p =(ab*a+b)*(ab*)

x

A =0x B

+1x A +

 

x

B

=0x

C

+1x

A +

x

C

=0x

C

+1x

C +

Solución: x A =(01+1)*(0+ )

3. a,b,c * q 1 * q 3 b a a,b,c q 0 c q
3.
a,b,c
*
q 1
*
q 3
b
a
a,b,c
q 0
c
q 4
q 2
c
a,b,c
a
Solución: x 0 =b+c.c*.a
b
4. Autómata no determinista a q 1 * a q 0 c, b q 2
4. Autómata no determinista
a q 1 *
a
q 0
c,
b
q 2

c

Solución:

x 0 =(b+a.c*a)*.a.c*

7.2.2 AFND equivalente a una Expresión Regular

Dos métodos principales para convertir expresiones regulares en autómatas:

Método

de

las

derivadas (Alfonseca)

se

obtiene

una

gramática regular que se puede convertir en AFND

 

Método

de

composición

de

autómatas

(Alfonseca,

Linz,

Hopcroft)

Teorema 2:

Dada una expresión regular R sobre el alfabeto , existe un autómata finito no determinista A tal que L(R)=L(A).

Demostración:

Basándose en la estructura de la expresión

regular

R,

la

demostración procede por ={a 1 ,…,a n }.

inducción

estructural.

Sea

Si R es una expresión regular primitiva:

R=

R={ }

R={a 1 }

A

a 1

a n

 
 

q

0

       

*

q

f

A

a 1

a n

 

q

0

       

{q f }

*

q

f

 

A

a 1

a

n

   
 

q

0

{q f }

     

*

q

f

* q q 0 f * q q f 0 a 1 * q q
*
q
q
0
f
*
q
q
f
0
a 1
*
q
q f
0

Si R es una expresión regular derivada:

Si R=R 1 +R 2 :

∑ A a … a 1 n q q q {q 0_R1 f_R1 0 0_R1
A
a
a
1
n
q
q
q
{q
0_R1
f_R1
0
0_R1 ,q 0_R2 }
R
1
q
… …
0_R1
q
q
{q
q
f }
0
f_R1
q
… …
0_R2
q
q
0_R2
f_R2
q
{q
f }
f_R2
R
2
*
q
f
Si R=R 1 .R 2 :
A
a
a
q
q
1
n
q
0_R1
f_R1
0
R
q
1
0
{q 0_R1 }
q
……
……
0_R1
q
{q
f_R1
0_R2 }
q
……
……
0_R2
q
q
q
*
q
{q
0_R2
f_R2
f
f }
f_R2
R
2
*
q
f
Si R=R 1 *:
A
a
a
1
n
q
0
{q 0_R1 ,
q
f }
q
q
q
q
f *
0_R1
f_R1
0
R
q
……
1
0_R1
q
{q
f }
f_R1
*
q
{q
0 }
f
f *
f *

Se construye el autómata de forma recursiva:

q 0_R1 y q 0_R2 : estados iniciales de los subautómatas para R 1 y R 2 (¡no se marcan como estados iniciales!)

q f_R1 y q f_R2 : estados finales de los subautómatas para R 1 y R 2 (¡no se marcarán como estados finales!)

Ejemplos: Obtener los AFND correspondientes a las siguientes expresiones regulares:

1. R=(1+01)*(0+ ): q 0 0 1 1 0 q f *
1. R=(1+01)*(0+ ):
q 0
0
1
1
0
q
f *

Como se puede observar, los autómatas así construidas tienen muchas transiciones que se pueden unir:

0 q 1 1 q 0 0, q 2 q f * 1,
0
q
1
1
q 0
0,
q 2
q f *
1,

El AFD mínimo correspondiente es el siguiente:

1 0 q 1 * 0 q 0 * q 2 1
1
0
q 1 *
0
q 0 *
q 2
1

2. R=(1+01*)*

3. R=a.a*.b.b*

4. R= (b+a).a*

1,0

Corolario:

Sean L REG , L AF y L ER las clases de los lenguajes aceptados por autómatas finitos, generados por gramáticas regulares y descritos por expresiones regulares, respectivamente.

L REG =L AF =L ER

Gramáticas regulares Gramática Lineal por la izquierda Gramática Lineal por la Derecha Autómatas Finitos
Gramáticas regulares
Gramática Lineal por
la izquierda
Gramática Lineal por
la Derecha
Autómatas Finitos
Autómatas Finitos
Deterministas
Autómatas Finitos NO
Deterministas

Expresiones Regulares