capitulo7

19
1 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 expresión equivalente a partir de un autómata finito

Upload: jzaes

Post on 05-Dec-2014

13 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: capitulo7

1

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 expresión equivalente a partir de un

autómata finito

Page 2: capitulo7

2

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)*

Page 3: capitulo7

3

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:

• α+β (unión)

• α.β (o simplemente αβ) (concatenación)

• α* (cierre)

• (α)

3. No hay más expresiones regulares sobre Σ que las

construidas mediante estas reglas.

Precedencia de los operadores:

1. () 2. * cierre

3. . 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

Page 4: capitulo7

4

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=∅ ⇒ 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.

Page 5: capitulo7

5

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,...}

= {an|n≥1}∪{anb|n≥0}

2. L((aa)*(bb)*b) = {a2nb2m+1|n,m≥0}

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)*).

Page 6: capitulo7

6

7.1.3 Propiedades de Expresiones Regulares

Definición (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 definición 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 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.

Page 7: capitulo7

7

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.

Page 8: capitulo7

8

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.

Page 9: capitulo7

9

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 rnij (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=({q0,q1,…,qn},Σ,f,q0,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 qi es la siguiente:

Xi =bjXj+ bkXk +…+ bwXw+ai

donde:

• La expresión bkXk forma parte de la ecuación si y sólo si

existe una transición del estado qi al estado qk para el

símbolo de entrada bk

• ai es una expresión tal que ai=λ si qi∈F; ai=∅ en otro

caso.

Page 10: capitulo7

10

Ejemplo:

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+∅

Observación:

1. Se puede definir las ecuaciones características para

autómatas finitos deterministas y no deterministas.

2. Xi es una expresión 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 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.

a

b

c

c q0

q1

q2

q3*

c

q4*

d

q5

a,d

a,b,d

b,d a,b,c a,b,c,d

a,b,c,d

Page 11: capitulo7

11

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=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

x∈L(X) se sigue x∈L(An+1.X) o x∈ L((An+…+A+λ).B).

• Dado que λ∉L(A), para cualquier w∈L(An+1.X) se cumple

|w|≥n+1.

• x tiene longitud n por lo que x∉L(An+1.X).

• Por tanto, x ∈ L((An+…+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).

Page 12: capitulo7

12

Ejemplos: Resolución 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 autómata finito A=(Q,Σ,f,q0,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=X0.

Ejemplo: (para el autómata anterior)

Ecuaciones características:

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*)

Page 13: capitulo7

13

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:

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* !!!!

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 λ:

x2=∅

x01=(c+a)x01+λ+ax2

=(c+a)x01+λ+a∅=(c+a)x01+λ=(c+a)*.λ=(c+a)*

q0

q1* c

λ

a,λ

q2

a

q0

q1* c

λ

a,λ

q2

a

{q0,q1}*

c,a

q2

a

Page 14: capitulo7

14

Ejemplos: Obtener las expresiones regulares para los siguientes

autómatas:

1.

xp=axq+bxp+∅

xq=axp+bxq+λ

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

2.

xA=0xB+1xA+λ

xB=0xC+1xA+λ

xC=0xC+1xC+∅

Solución: xA=(01+1)*(0+λ)

3.

Solución: x0=b+c.c*.a

4. Autómata no determinista

Solución:

x0=(b+a.c*a)*.a.c*

A a b

→ p q p

* q p q

A 0 1

*→ A B A

* B C A

C C C

b c

q0

q1*

q2

c

q3*

a

q4

a b

a,b,c

a,b,c

a,b,c

q0

q1* c

a

b

a

q2 c,λ

Page 15: capitulo7

15

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 inducción estructural. Sea

∑={a1,…,an}.

Si R es una expresión regular primitiva:

• R=∅

• R={λ}

• R={a1}

A a1 … an λ

→ q0

* qf

A a1 … an λ

→ q0 {qf}

* qf

A a1 … an λ

→ q0 {qf}

* qf

q0 qf

*

q0 qf

* λ

q0 qf

* a1

Page 16: capitulo7

16

Si R es una expresión regular derivada:

• Si R=R1+R2 :

• Si R=R1.R2 :

• Si R=R1*:

Se construye el autómata de forma recursiva:

• q0_R1 y q0_R2: estados iniciales de los subautómatas para

R1 y R2 (¡no se marcan como estados iniciales!)

• qf_R1 y qf_R2: estados finales de los subautómatas para R1 y

R2 (¡no se marcarán como estados finales!)

A a1 … an λ

→ q0 {q0_R1,q0_R2}

q0_R1 … … … …

qf_R1 {qf}

q0_R2 … … … …

qf_R2 {qf}

* qf

A a1 … an λ

→ q0 {q0_R1}

q0_R1 …… ……

qf_R1 {q0_R2}

q0_R2 …… ……

qf_R2 {qf}

* qf

A a1 … an λ

→ q0 {q0_R1,

qf}

q0_R1 …… … …

qf_R1 {qf}

* qf {q0}

q0_R1 q0

qf* q0_R2

qf_R1

qf_R2

λ

λ

R1

R2

λ

q0_R1

q0

qf*

q0_R2

qf_R1

qf_R2

λ

λ

λ

λ

R1

R2

q0_R1 q0 qf_R1

λ λ

R1

qf*

λ

λ

Page 17: capitulo7

17

Ejemplos: Obtener los AFND correspondientes a las siguientes

expresiones regulares:

1. R=(1+01)*(0+λ):

qf* λ λ

λ

λ

λ

0

λ

λ λ

λ

q0

λ

λ

λ

λ

0

1

1

λ

λ

λ

λ

λ

λ

Page 18: capitulo7

18

Como se puede observar, los autómatas así construidas

tienen muchas transiciones que se pueden unir:

El AFD mínimo correspondiente es el siguiente:

2. R=(1+01*)*

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

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

0,λ 1

1,λ

0

λ

q0 qf*

0 0 q0*

q1

q2

1

1

1,0

q1*

q2

Page 19: capitulo7

19

Corolario:

Sean LREG, LAF y LER las clases de los lenguajes aceptados por

autómatas finitos, generados por gramáticas regulares y descritos

por expresiones regulares, respectivamente.

LREG=LAF=LER

Gramáticas regulares

Autómatas Finitos

Gramática Lineal por

la izquierda

Gramática Lineal por

la Derecha

Autómatas Finitos

Deterministas

Autómatas Finitos NO

Deterministas

Expresiones Regulares