Capítulo 7: Expresiones Regulares 7.1. Concepto de expresión regular

Anuncio
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
1
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)*
2
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
3
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.
4
Ejemplo: Mostrar el lenguaje descrito por una ER mediante
notación conjuntista:
1. L(a*(a+b))
=
=
=
=
=
2. L((aa)*(bb)*b)
L(a*)L((a+b))
=
L(a)*(L(a) ∪L(b)) =
{λ,a,aa,aaa,...}{a,b}
{a,aa,...,b,ab,aab,...}
{an|n≥1}∪{anb|n≥0}
=
L(a)*L(a+b)
{a}*({a} ∪{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)*).
5
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.
6
Ejemplos:
Σ={a,b,c}
1. c*.c+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)
2. c+c*=c*¿?
c+c*
=
=
=
=
=
=
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.
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
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.
8
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.
9
Ejemplo:
q1
a
q0
d
c
q2
b
q 4*
b,d
c
q 3*
a,b,c
c
a,b,d
a,b,c,d
q5
a,d
a,b,c,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+∅
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.
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.
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).
11
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*)
12
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:
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* !!!!
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 λ:
q2
q2
a
q0
a,λ
λ
q 1*
c
a
c,a
{q0,q1}*
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
autómatas:
1.
A
a
b
xp=axq+bxp+∅
→ p q p
xq=axp+bxq+λ
* q p q
Solución: xp=(ab*a+b)*(ab*)
2.
A
0
*→ A B
*
B C
C C
1
A
A
C
xA=0xB+1xA+λ
xB=0xC+1xA+λ
xC=0xC+1xC+∅
Solución: xA=(01+1)*(0+λ)
3.
q1
a,b,c
*
a
b
q0
q 3*
a,b,c
c
q2
c
a
Solución: x0=b+c.c*.a
q4
a,b,c
b
4. Autómata no determinista
q 1*
a
Solución:
x0=(b+a.c*a)*.a.c*
a
q0
b
c,λ
c
q2
14
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
q0
A
a1 … an λ
{qf}
→ q0
* qf
q0
λ
qf *
A
a1
… an λ
→ q0 {qf}
* qf
q0
a1
qf *
qf *
15
Si R es una expresión 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_R1
R1
qf_R1
λ
q f*
q0
λ
q0_R2
R2
qf_R2
λ
Si R=R1.R2 :
A
a1 … an λ
{q0_R1}
→ q0
q0_R1 …… ……
qf_R1
{q0_R2}
q0_R2 …… ……
qf_R2
{qf}
* qf
•
λ
q0
λ
q0_R1
qf_R1
R1
λ
q0_R2
R2
qf_R2
Si R=R1*:
a1 … an λ
{q0_R1,
qf}
q0_R1 …… … …
qf_R1
{qf}
* qf
{q0}
λ
q f*
λ
A
→ q0
q0
λ
q0_R1
R1
qf_R1
λ
q f*
λ
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!)
16
Ejemplos: Obtener los AFND correspondientes a las siguientes
expresiones regulares:
1. R=(1+01)*(0+λ):
q0
λ
λ
λ
0
λ
λ
λ
λ
λ
1
λ
λ
λ
1
λ
λ
0
λ
λ
λ
λ
λ
q f*
λ
17
Como se puede observar, los autómatas así construidas
tienen muchas transiciones que se pueden unir:
λ
q1
0
q0
1
q2
1,λ
0,λ
q f*
El AFD mínimo correspondiente es el siguiente:
1
0
q 0*
q 1*
0
q2
1
1,0
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
autómatas finitos, generados por gramáticas regulares y descritos
por expresiones regulares, respectivamente.
LREG=LAF=LER
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
19
Descargar