Está en la página 1de 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))

=
=
=
=
=

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|n1}{anb|n0}
=

L(a)*L(a+b)
{a}*({a} {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)*).

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

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

a
q0

c
q2

q 4*

b,d

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+
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:
q2
a
q0

a,

q 1*

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

q2
a
q0

a,

q 1*

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


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

1
A
A
C

xA=0xB+1xA+
xB=0xC+1xA+
xC=0xC+1xC+
Solucin: xA=(01+1)*(0+)

3.
q1

a,b,c

q0

q 3*
a,b,c

c
q2

a
Solucin: x0=b+c.c*.a

q4
a,b,c

4. Autmata no determinista
q 1*

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

q0
b

c,

q2

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=

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

q f*

17

Como se puede observar, los autmatas as construidas


tienen muchas transiciones que se pueden unir:

q1

q0

1
q2

1,

0,

q f*

El AFD mnimo 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
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

También podría gustarte