Sunteți pe pagina 1din 19

Captulo 7: Expresiones Regulares

7.1. Concepto de expresin regular


7.1.1. Definicin 7.1.2. Lenguaje descrito 7.1.3. Propiedades

7.2. Teoremas de equivalencia


7.2.1. Obtener un AFND a partir de una expresin regular 7.2.2. Obtener una expresin equivalente a partir de un autmata finito

7.1. Concepto de Expresin 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 composicin. Lenguajes primitivos: el lenguaje vaco, el lenguaje formado por la palabra vaca, y los lenguajes correspondientes a los distintos smbolos del alfabeto. Operadores de composicin: la unin, la concatenacin y el cierre. Ejemplo: 1. Lenguaje formado por las cadenas que terminan en 01: {0,1}*.{01}= ({0}{1})*.{01} Expresin regular: (0+1)*01 2. Lenguaje formado por palabras de longitud par sobre as y bs: {aa,ab,ba,bb}*= ({aa}{ab}{ba}{bb})* Expresin: (aa+ab+ba+bb)*

7.1.1 Definicin
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: + (unin) . (o simplemente ) (concatenacin) * (cierre) () 3. No hay ms expresiones regulares sobre que las construidas mediante estas reglas.

Precedencia de los operadores: 1. () 2. * cierre 3. . concatenacin 4. + unin Ejemplo: Algunos ejemplos de expresin regular son: (0 + 1)*01 (aa + ab + ba + bb)* a*(a + b) (aa)*(bb)*b

7.1.2 Lenguaje descrito por una ER


Definicin (Lenguaje descrito por una ER): Sea r una expresin regular sobre . El lenguaje descrito por r, L(r), se define recursivamente de la siguiente forma: 1. Si r= L()= 2. Si r= L()= {} 3. Si R=a, a L(a)= {a} 4. Si R=+ L(+)= L()L() 5. Si R=. L(.)= L()L() 6. Si R=* L(*)= L()* 7. Si R=() L(())= L() donde y son expresiones regulares.

Ejemplo: Mostrar el lenguaje descrito por una ER mediante notacin conjuntista: 1. L(a*(a+b)) = = = = = L(a*)L((a+b)) = L(a)*(L(a) L(b)) = {,a,aa,aaa,...}{a,b} {a,aa,...,b,ab,aab,...} {an|n1}{anb|n0} = {a2nb2m+1|n,m0} L(a)*L(a+b) {a}*({a} {b})

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

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 expresin a*.(a+b).c*? 8. Dado el lenguaje L={w |w{a,b,c}* donde w tiene al menos un par de as consecutivos}. Escribe la expresin 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


Definicin (equivalencia de ER): Dos expresiones regulares r1 y r2 se dicen equivalentes, r1 = r2, si describen el mismo lenguaje, esto es, si L(r1)=L(r2). En base a esta definicin se pueden establecer las siguientes equivalencias y propiedades: Respecto a las operaciones + y . : 1. + y . son asociativas: +(+)=(+)+=++ y .(.)=(.).=.. 2. + es conmutativa e idempotente: +=+ y += 3. Distributividad: .(+)=.+. y (+).=.+. 4. Elemento neutro: .=.= y +=+= 5. .=.= 6. Si L(), entonces += Respecto a la operacin *: 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 expresin.

Ejemplos: ={a,b,c} 1. c*.c+c*=c*? c*.c+c* = = = = = 2. c+c*=c*? c+c* = = = = = =

c*.c+c*+ c.c*+c*+ +c.c*+c* c*+c* c*

(por 6) (por 11) (por 2) (por 7) (por 2)

c++c.c* +c+c.c* +c.+c.c* +c.(+c*) +c.c* c*

(por 7) (por 2) (por 4) (por 3) (por 6) (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. Observacin: De este modo slo se puede demostrar que dos expresiones regulares son equivalentes. Sin embargo, mediante este mtodo, 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: Gramticas lineales por la izquierda Gramticas lineales por la derecha Autmatas finitos deterministas Autmatas finitos no deterministas Por tanto, deben existir algoritmos que permiten obtener un autmata o una gramtica regular a partir de una expresin regular y viceversa.

7.2.1 ER equivalente a un autmata finito


Tres mtodos principales para convertir expresiones regulares en autmatas: Mtodo de las rnij (Hopcroft). Eliminacin de estados (Hopcroft,Linz) Ecuaciones caractersticas (Alfonseca, Isasi) (equivalente al mtodo de la eliminacin de estados)

Definicin (ecuacin caracterstica): Sea un autmata finito A=({q0,q1,,qn},,f,q0,F). Cada estado del autmata tiene asignado una ecuacin caracterstica correspondiente, que describe las distintas formas de llegar desde este estado a un estado final. La ecuacin caracterstica para el estado qi es la siguiente: Xi =bjXj+ bkXk ++ bwXw+ai donde:

La expresin bkXk forma parte de la ecuacin si y slo si existe una transicin del estado qi al estado qk para el smbolo de entrada bk ai es una expresin tal que ai= si qiF; ai= en otro caso.

Ejemplo: a q0 b c q 3* a,d x0=b.x1+c.x3+a.x5+d.x5+=b.x1+c.x3+(a+d).x5+ x1=c.x2+a.x0+(b+d).x5+ x2=d.x4+(a+b+c).x5+ x3=c.x3+(a+b+d).x5+ x4=(a+b+c+d).x5+ x5=(a+b+c+d).x5+ Observacin: 1. Se puede definir las ecuaciones caractersticas para autmatas finitos deterministas y no deterministas. 2. Xi es una expresin regular (con variables) que describe las cadenas que llevan del estado qi a un estado final. Evidentemente L(X0)=L(A). Teniendo todas las ecuaciones caractersticas, se puede resolver la ecuacin para el estado inicial obteniendo la expresin regular del lenguaje. El siguiente lema proporciona una regla para eliminar las variables en las ecuaciones. q1 c q2 b,d c a,b,c a,b,d d q 4* a,b,c,d q5 a,b,c,d

10

Lema 1: Sea X una variable y A y B expresiones regulares. Si X=A.X+B y L(A), enconces X=A*.B. Demostracin: Sea cualquier palabra xL(X) con |x|=n y X=A.X+B. Se demuestra que se cumple xL(A*B).Consideramos la definicin de X: X=A.X+B X=A.(A.X+B)+B=A2.X+A.B+B X=A2.(A.X+B)+A.B+B=A3.X+A2.B+A.B+B X=An+1.X+An.B++A.B+B= An+1.X+(An++A+).B

Por tanto, L(X)=L(An+1.X) L((An++A+).B) y dado que xL(X) se sigue xL(An+1.X) o x L((An++A+).B). Dado que L(A), para cualquier wL(An+1.X) se cumple |w|n+1. x tiene longitud n por lo que xL(An+1.X). Por tanto, x L((An++A+).B) y, entonces tambin se verifica xL(A*B).

Razonando de forma similar se puede demostrar que para cualquier palabra xL(A*B) tambin se cumple xL(X).

11

Ejemplos: Resolucin de ecuaciones 1. X=abX X=abX+=(ab)*= 2. X=abX+ X=(ab)*= (ab)* 3. X=abX+cX X=(ab+c)X+= (ab+c)*= Teorema 1: Dado un autmata finito A=(Q,,f,q0,F), existe una expresin regular R tal que L(R)=L(A). Demostracin: La expresin regular equivalente se obtiene resolviendo de forma sucesiva las ecuaciones caractersticas del autmata. La expresin regular R ser la que se obtiene a partir de la ecuacin caracterstica correspondiente al estado inicial del autmata: R=X0. Ejemplo: (para el autmata anterior) Ecuaciones caractersticas: x0=b.x1+c.x3+(a+d).x5+ x1=c.x2+a.x0+(b+d).x5+ x2=d.x4+(a+b+c).x5+ x3=c.x3+(a+b+d).x5+ x4=(a+b+c+d).x5+ x5=(a+b+c+d).x5+ Resolviendo x5: x5=(a+b+c+d)*.= Resolviendo x4: x4=(a+b+c+d). += Resolviendo x2: x2=d.+(a+b+c). +=d Resolviendo x3: x3=c.x3+(a+b+d). +=c.x3+=c*.=c* Resolviendo x1: x1=c.d+a.x0+(b+d).+=cd+a.x0 Resolviendo x0: x0 =b.(cd+a.x0)+c.c*+(a+d).+ = bax0+bcd+c.c*= (ba)*(bcd+cc*) 12

Observaciones: La aplicacin de la regla Si X=A.X+B, enconces X=A*.B slo es posible si L(A). Si el autmata tiene transiciones , entonces es posible que no se pude aplicar esta regla. En consecuencia, ser necesario eliminar transiciones antes (convertir el autmata en uno sin transiciones ). Ejemplo: q2 a q0 a, q 1* c x2= x1=cx1+(a+)x0+ =c*.((a+)x0+) =(c*.a+c*)x0+c* x0=x1+ax2+ =((c*.a+c*)x0+c*)+a =(c*.a+c*)x0+c* (c*.a+c*)*.c* !!!!

Transformacin del autmata (eliminacin de transiciones ): similar a la conversin a un autmata determinista los estados nuevos son las clausuras de los estados originales respecto a : q2 a q0 a, q 1* c q2 a {q0,q1}* c,a

x2= x01=(c+a)x01++ax2 =(c+a)x01++a=(c+a)x01+=(c+a)*.=(c+a)*

13

Ejemplos: Obtener las expresiones regulares para los siguientes autmatas: 1. A a b xp=axq+bxp+ p q p xq=axp+bxq+ * q p q Solucin: xp=(ab*a+b)*(ab*) 2. A 0 * A B * B C C C 3. q1 q0 b c q2 a Solucin: x0=b+c.c*.a 4. Autmata no determinista a q0 b c, a q2 q 1* c Solucin: x0=(b+a.c*a)*.a.c* b c
*

1 A A C

xA=0xB+1xA+ xB=0xC+1xA+ xC=0xC+1xC+ Solucin: xA=(01+1)*(0+) a,b,c a q 3* a,b,c q4 a,b,c

14

7.2.2 AFND equivalente a una Expresin Regular


Dos mtodos principales para convertir expresiones regulares en autmatas: Mtodo de las derivadas (Alfonseca) se obtiene una gramtica regular que se puede convertir en AFND Mtodo de composicin de autmatas (Alfonseca, Linz, Hopcroft) Teorema 2: Dada una expresin regular R sobre el alfabeto , existe un autmata finito no determinista A tal que L(R)=L(A). Demostracin: Basndose en la estructura de la expresin regular R, la demostracin procede por induccin estructural. Sea ={a1,,an}. Si R es una expresin regular primitiva:

R=

A a1 an q0 * qf A a1 an {qf} q0 * qf A a1 an q0 {qf} * qf

q0

qf *

R={}

q0

qf *

R={a1}

q0

a1

qf *

15

Si R es una expresin regular derivada: Si R=R1+R2 :


A a1 an {q0_R1,q0_R2} q0 q0_R1 qf_R1 {qf} q0_R2 qf_R2 {qf} * qf

q0

q0_R1

R1

qf_R1

q f*

q0_R2

R2

qf_R2

Si R=R1.R2 :
q0 q0_R1

A a1 an {q0_R1} q0 q0_R1 qf_R1 {q0_R2} q0_R2 qf_R2 {qf} * qf

R1

qf_R1

q0_R2

R2

qf_R2

q f*

Si R=R1*:

a1 an {q0_R1, qf} q0_R1 qf_R1 {qf} * qf {q0} A q0

q0_R1 qf_R1 q f*

q0

R1

Se construye el autmata de forma recursiva: q0_R1 y q0_R2: estados iniciales de los subautmatas para R1 y R2 (no se marcan como estados iniciales!) qf_R1 y qf_R2: estados finales de los subautmatas para R1 y R2 (no se marcarn como estados finales!)

16

Ejemplos: Obtener los AFND correspondientes a las siguientes expresiones regulares: 1. R=(1+01)*(0+):
q0 0 1 0 1

q f*

17

Como se puede observar, los autmatas as construidas tienen muchas transiciones que se pueden unir:
q0 0 q1 1, 1 q2

0,

q f*

El AFD mnimo correspondiente es el siguiente:


1 q 0* 1 1,0 0 q 1* 0 q2

2. R=(1+01*)* 3. R=a.a*.b.b* 4. R= (b+a).a*

18

Corolario: Sean LREG, LAF y LER las clases de los lenguajes aceptados por autmatas finitos, generados por gramticas regulares y descritos por expresiones regulares, respectivamente. LREG=LAF=LER

Gramticas regulares
Gramtica Lineal por la izquierda Gramtica Lineal por la Derecha

Autmatas Finitos
Autmatas Finitos Deterministas Autmatas Finitos NO Deterministas

Expresiones Regulares

19

S-ar putea să vă placă și