Вы находитесь на странице: 1из 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

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

2
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

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

4
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+b)


= L(a)*(L(a) L(b)) = {a}*({a} {b})
= {,a,aa,aaa,...}{a,b}
= {a,aa,...,b,ab,aab,...}
= {an|n1}{anb|n0}

2. L((aa)*(bb)*b) = {a2nb2m+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 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)*).

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

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

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

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

9
Ejemplo:
q1 c d
a q2
b q 4*
q0 b,d a,b,c a,b,c,d
c
q 3* c
a,b,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+

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.

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:
x2=
q2 x1=cx1+(a+)x0+
c
a a, q 1* =c*.((a+)x0+)
q0 =(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 q2
c
a a, q 1* a
c,a
q0 {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
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 1 xA=0xB+1xA+
* A B A xB=0xC+1xA+
* B C A xC=0xC+1xC+
C C C Solucin: xA=(01+1)*(0+)

3.
a,b,c
*
q1
q 3*
b a a,b,c
q0
c q4
q2 c a,b,c
a b
Solucin: x0=b+c.c*.a

4. Autmata no determinista
c
a q 1*

q0 a Solucin:
x0=(b+a.c*a)*.a.c*
c, q2
b

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 q0 qf *
* qf
R={} A a1 an
q0 {qf} q0 qf *
* qf
R={a1} A a1 an
q0 {qf} q0 a1 qf *
* qf

15
Si R es una expresin regular derivada:
Si R=R1+R2 :
A a1 an
q0_R1 qf_R1
q0 {q0_R1,q0_R2}


R1
q0_R1 q f*
qf_R1 {qf} q0
q0_R2
q0_R2 qf_R2
qf_R2 {qf} R2
* qf

Si R=R1.R2 :
A a1 an q0_R1 qf_R1
q0
q0 {q0_R1} R1
q0_R1
qf_R1 {q0_R2}
q0_R2
q0_R2 qf_R2 q f*
qf_R2 {qf}
R2
* qf

Si R=R1*:

A a1 an
q0 {q0_R1,
qf} q0_R1 qf_R1 q f*
q0
q0_R1 R1
qf_R1 {qf}

* qf {q0}

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


q f*

17
Como se puede observar, los autmatas as construidas
tienen muchas transiciones que se pueden unir:

0 q1
q0 1
q2 0, q f*
1,

El AFD mnimo correspondiente es el siguiente:

0 q 1* 0
q 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
autmatas finitos, generados por gramticas regulares y descritos
por expresiones regulares, respectivamente.
LREG=LAF=LER

Gramticas regulares

Gramtica Lineal por Gramtica Lineal por


la izquierda la Derecha

Autmatas Finitos

Autmatas Finitos Autmatas Finitos NO


Deterministas Deterministas

Expresiones Regulares

19

Вам также может понравиться