Está en la página 1de 32

1

Lenguajes
y
Expresiones Regulares

2
Definiciones bsicas
Alfabeto: conjunto no vaco de smbolos. Es usual utilizar E para
denotar un alfabeto.
Ejemplos: {0, 1}, {a, b, c}, {0, 11}, {(0, 0), (0, 1), (1, 0), (1, 1)}.
Palabra o cadena: es una secuencia de smbolos del alfabeto,es
decir, s = a
1
a
2
...a
n
, donde a
i
e E.
Por lo general se utilizan las primeras letras del alfabeto, a, b, c, d, e,
para denotar smbolos del alfabeto y las ltimas letras, s, t, u, v, w, x,
y, z, para denotar palabras.
Longitud de una palabra: es el nmero de smbolos en s. Se
denota por |s|.
Palabra nula o vaca : es la palabra de longitud cero. Algunos
autores utilizan c para denotarla.
Concatenacin: si s = a
1
a
2
...a
n
y t = b
1
b
2
...b
n
, entonces
st = a
1
a
2
...a
n
b
1
b
2
...b
n
; s
2
= ss; s
3
= sss. La concatenacin es asociativa,
es decir, s(tu) = (st)u, pero no es conmutativa.

3
...Definiciones bsicas
Dado un alfabeto E, definimos:
E
k
= {x | x es una palabra sobre E y |x| = k}
Ejemplo: E = {0, 1}
E
0
={}
E
1
={0, 1}
E
2
={00, 01, 10, 11}
E
3
={000, 001, 010, 011, 100, 101, 110, 111}
...
E
*
= E
0
E
1
E
2
E
3
... es el conjunto de todas las palabras
que pueden ser formadas con letras del alfabeto E, incluyendo a
. A E
*
se le llama la Cerradura de Kleene de E.
E
+
= E
1
E
2
E
3
... es el conjunto de todas las palabras no-
vacas que pueden ser formadas con letras de E, es decir,
E
+
= E
*
{}.
Ejercicio en clase: Sea E = {a, b, c}. Obtener E
0
, E
1
, E
2
y E
3
.

4
Definicin recursiva de E
*

Base: e E
*
Paso recursivo: si w e E
*
y a e E, entonces
wa e E
*
.
Cerradura: w pertenece a E
*
slo si puede ser
obtenida a partir de mediante un nmero finito
de aplicaciones del paso recursivo.

Nota: definiciones recursivas son una buena
herramienta para definir las palabras o cadenas
que componen un lenguaje.

5
Lenguajes
Lenguaje sobre un alfabeto E es un conjunto
finito o infinito de palabras sobre E, es decir, es un
subconjunto de E
*
.
Lenguajes interesantes no consisten de conjuntos
arbitrarios de cadenas sino de cadenas que cumplen
ciertas condiciones las cuales definen la sintaxis del
lenguaje.
Un lenguaje finito puede ser definido por extensin,
a menos que sea demasiado extenso.
Lenguajes infinitos con requerimientos sintcticos
simples pueden definirse recursivamente.


6
Ejemplos
Lenguaje L sobre E ={0, 1} que consta de cadenas que
terminan en 1
Base: 1 e L
Paso recursivo: si u e L y a e E, entonces au e L.
Cerradura: una cadena u pertenece a L slo si puede ser obtenida a
partir del elemento base mediante un nmero finito de aplicaciones
del paso recursivo.
Lenguaje L sobre E ={a, b} que consta de cadenas que
inician con a y tienen longitud par
Base: aa, ab e L
Paso recursivo: si u e L, entonces uaa, uab, uba, ubb e L.
Cerradura: una cadena u pertenece a L slo si puede ser obtenida a
partir de los elementos base mediante un nmero finito de
aplicaciones del paso recursivo.

7
... Ejemplos
Lenguaje L sobre E ={a, b} que consta de
cadenas en las que cada ocurrencia de b es
inmediatamente precedida por una a. Por
ejemplo , a, abaab estn en L pero no as bb,
bab, abb.
Base: e L
Paso recursivo: si u e L, entonces ua y uab e L.
Cerradura: una cadena u pertenece a L slo si puede ser
obtenida a partir de los elementos base mediante un
nmero finito de aplicaciones del paso recursivo.


8
Ejemplos
Sea L el lenguaje sobre el alfabeto E = {0, 1}
definido recursivamente por
1. e L
2. Si u e L entonces 0u y 0u1 e L.
3. Cualquier elemento en L puede ser obtenido a
partir de la regla 1. y utilizando la regla 2. un
nmero finito de veces.
Defina L por intencin.
L = {0
m
1
n
| m > n > 0

9
Ejemplos: Palndromos
Palndromos: palabra o frase que se lee igual de derecha
a izquierda, que de izquierda a derecha
anilina
dbale arroz a la zorra el abad
anita lava la tina
Defina recursivamente al conjunto P que consiste de
todos los palndromos sobre el alfabeto E.
1. e P
2. Si u e P entonces aua e P para cualquier a e E.
3. Cualquier palndromo sobre {a, b} puede ser obtenido a partir de
la regla 1. y utilizando la regla 2. un nmero finito de veces.

10
Ejemplos
Defina recursivamente al lenguaje L sobre el
alfabeto E = {a, b} que consiste de las
palabras que tienen ms as que bs.
1. a e L
2. Si u e L entonces au e P.
3. Si u y v e L entonces buv, ubv y uvb e P.
4. Cualquier palabra en L puede ser obtenido a partir
de la regla 1. y utilizando las reglas 2. y 3. un
nmero finito de veces.

11
Es suficiente la recursividad?
Hay muchos lenguajes que se pueden definir
recursivamente, sin embargo, hay muchos otros,
como lenguajes computacionales o matemticos,
cuyos requerimientos sintcticos no pueden ser
definidos de manera recursiva.
Operaciones de conjuntos se pueden aplicar a
lenguajes simples para definir lenguajes ms
complejos.
Otro enfoque para definir lenguajes interesantes
es especificando un procedimiento algortmico
que reconoce si una palabra pertenece o no al
lenguaje.

12
Concatenacin de lenguajes
L
1
L
2
= {w | w = xy, x e L
1
y y e L
2
}
Para un lenguaje L:
L
0
= {}
L
1
= L
L
2
= L L
L
3
= L L L
...
L
*
= L
0
L
1
L
2
L
3
... (Cerradura de Kleene)
L
+
= L
1
L
2
L
3
... = LL
*

13
Ejemplo de concatenacin
X = {a, b, c}; Y = {abb, ba}
XY ={aabb, aba, babb, bba, cabb, cba}
X
0
= {}
X
1
= {a, b, c}
X
2
= XX = {aa, ab, ac, ba, bb, bc, ca, cb, cc}
X
3
= X
2
X = {aaa, aab, aac, aba, abb, abc, aca,
acb, acc, baa, bab, bac, bba, bbb, bbc, bca,
bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb,
ccc}

14
Ejemplos de Cerradura de Kleene
L = {0, 11}
L
0
= {}
L
1
= {0, 11}
L
2
= {00, 011, 110, 1111}
L
3
= {000, 0011, 0110, 01111, 1100, 11011, 11110,
111111}
L
4
= {0000, 00011, 00110, 001111, 01100, 011011,
011110, 0111111, 11000, 110011, 110110, 1101111,
111100, 1111011, 1111110, 11111111}
L
*
son todas las que se pueden formar concatenando
cualquier nmero de veces (excepto ) palabras de L.
Las palabras pueden ser iguales o distintas.
Cuntos elementos tiene L
n
}: 2
n

Independientemente del lenguaje, L
n
tiene siempre 2
n

elementos?

15
Contraejemplo
L = {0, 00}
L
0
= {}
L
1
= {0, 00}
L
2
= {00, 000, 0000}
L
3
= {000, 0000, 00000, 000000}
L
4
= {0000, 00000, 000000, 0000000, 00000000}
L
*
es la palabra vaca y todas las palabras finitas
formadas con ceros.

16
Ms ejemplos
L = {a, b}
*
{bb} {a, b}
*
Consiste de las cadenas sobre {a, b} que contienen la subcadena bb.
Lenguaje que consiste de todas las cadenas que empiezan
con aa o terminan con bb.
L = {aa}{a, b}
*
{a, b}
*
{bb}
L
1
= {bb} y L
2
= {, bb, bbbb}. L
1
*
= ?, L
2
*
= ?
Tanto L
1
*
como L
2
*
consisten de cadenas que tienen un nmero par de
bs.
{aa, bb, ab, ba}
*
Consiste de todas las cadenas sobre {a, b} de longitud par.
{a, b}
*
- {aa, bb, ab, ba}
*
Es el lenguaje que consiste de las cadenas de longitud non.
Es regular este lenguaje?
Este lenguaje tambin est dado por {a, b}{aa, bb, ab, ba}
*
,por lo
tanto el lenguaje s es regular.

17
Conjuntos regulares
Un conjunto es regular si
1. Es el conjunto vaco, C, el conjunto cuyo elemento es la palabra vaca,
{}, es un subconjunto simple (slo un elemento) del alfabeto.er
generado a partir
2. Puede ser generado a partir de C de {} de un subconjunto simple
utilizando las operaciones de unin, concatenacin y cerradura de
Kleene.
Nota: no se puede utilizar la diferencia de conjuntos.
Definicin recursiva de conjunto regular.
Sea E un alfabeto. Los conjuntos regulares sobre E se definen
recursivamente de la siguiente manera:
Base: C, {} y {a}, para toda a e E, son conjuntos regulares sobre E.
Paso recursivo: Si X y Y son conjuntos regulares sobre E, entonces los
conjuntos X Y, XY y X
*
tambin lo son.
Cerradura: X es un conjunto regular sobre E slo si puede ser obtenido a
partir de los elementos base mediante un nmero finito de aplicaciones
del paso recursivo.

18
Ejemplos de conjuntos regulares
{a, b}
*
{bb}{a, b}
*
es regular sobre {a, b}
Consiste del conjunto de cadenas que contienen
a la subcadena bb.
El conjunto de cadenas que empiezan y
terminan con una a y contienen al menos
una b es regular sobre {a, b}.
{a}{a, b}
*
{b}{a, b}
*
{a}

19
Expresiones regulares
Las expresiones regulares se utilizan para abreviar la
descripcin de conjuntos regulares.
El conjunto regular {a} es representado por a.
Las operaciones de unin, concatenacin y cerradura de Kleene
son denotadas por +, yuxtaposicin y *, respectivamente.
Definicin recursiva de una expresin regular.
Sea E un alfabeto. Las expresiones regulares sobre E se
definen recursivamente de la siguiente manera:
Base: C, y a, para toda a e E, son expresiones regulares sobre
E.
Paso recursivo: Si u y v son expresiones regulares sobre E,
entonces las expresiones (u+v), (uv) y (u
*
) tambin lo son y
representan a los conjuntos {u} {v}, {u}{v} y {u}
*
,
respectivamente.
Cerradura: u es una expresin regular sobre E slo si puede ser
obtenido a partir de los elementos base mediante un nmero finito
de aplicaciones del paso recursivo.

20
Ejemplos
Lenguaje Expresin regular
{}
{0} 0
{001} = {0}{0}{1} 001
{0, 1} = {0}{1} 0 + 1
{0, 10} = {0}{10} 0 + 10
{1, }{001} (1 + )001
{110}
*
{0, 1} (110)
*
(0 + 1)
{1}
*
{10} 1
*
10
{10, 111, 11010}
*
(10 + 111 + 11010)
*

{0, 10}
*
({11}
*
{001, }) (0 + 10)
*
((11)
*
+ 001 + )
(00 + 01 + 10 + 11)
*
((0 + 1)(0 + 1))
*

21
...Expresiones regulares
Tomando en cuenta que la unin y la concatenacin son
asociativas, adems conviniendo en que la precedencia u
orden de ejecucin de las operaciones est dada por:
Parntesis
Cerradura de Kleene
Concatenacin
Unin
las expresiones se pueden simplificar an ms
reduciendo el nmero de parntesis.
{a, b}
*
{bb}{a, b}
*
= (a + b)
*
bb(a + b)
*
{a}{a, b}
*
{b}{a, b}
*
{a} = a(a + b)
*
b(a + b)
*
a
Notacin
u
+
= uu
*
u
2
= uu, u
3
= u
2
u, ...


22
Ejemplo
El conjunto {bawab | w e {a, b}
*
} es regular sobre {a, b}
Demostracin:
Conjunto Expresin Justificacin
1. {a} a Base
2. {b} b Base
3. {a}{b}={ab} ab Concatenacin de 1 y 2
4. {a} {b}={a,b} a+b Unin de 1 y 2
5. {b}{a}={ba} ba Concatenacin de 2 y 1
6. {a,b}
*
(a+b)
*
Cerradura Kleene de 4
7. {ba}{a,b}
*
ba(a+b)
*
Concatenacin de 5 y 6
8. {ba}{a,b}
*
{ab} ba(a+b)
*
ab Concatenacin de 7 y 3

23
Lenguajes regulares
Definicin: Un lenguaje es regular si se
puede representar por una expresin regular
o conjunto regular.

24
...Ms ejemplos
(a+b)
*
aa(a+b)
*
+(a+b)
*
bb(a+b)
*
:
Representa al conjunto de cadenas sobre {a, b} que contienen a la subcadena
aa o a la subcadena bb o a ambas subcadenas.
Expresin regular que represente al conjunto de cadenas sobre
{a, b} que contienen exactamente dos bs:
a
*
ba
*
ba
*
a
*
ba
*
b(a+b)
*
, (a+b)
*
ba
*
ba
*
, (a+b)
*
b(a+b)
*
b(a+b)
*
representan al conjunto de cadenas sobre {a, b} que contienen dos o ms bs.
a
*
(a
*
ba
*
ba
*
)
*
y a
*
(ba
*
ba
*
)
*
Representan cadenas con un nmero par de bs.
Expresin regular para el lenguaje sobre {a, b} en cuyas
palabras inmediatamente antes de toda b aparece una a:
(a+ab)
*
.
Expresin regular que representa a las palabras que contienen
exactamente una vez dos bs contiguas:
(ba+bc+a+c)
*
bb(a+c+ab+cb)
*


25
Ejercicio en clase
Escriba una expresin regular para el
lenguaje sobre {0 ,1} que consiste de las
palabras en las que no hay dos smbolos
iguales contiguos, es decir, los 0s y los 1s
se alternan.
(01)
*
+ (10)
*
+ 0(10)
*
+ 1(01)
*

( + 1)(01)*( + 0)
( + 0)(10)*( + 1)

26
Equivalencias
Una expresin regular define un patrn; una
palabra pertenece al lenguaje definido por esa
expresin regular si y slo si sigue el patrn.

Una expresin regular que represente un lenguaje
debe cumplir dos condiciones:
Correcta: todas las palabras representadas por la
expresin regular deben ser parte del lenguaje.
Completa: toda palabra del lenguaje debe ser
representada por la expresin regular.
Concatenacin indica orden de los smbolos, la
cerradura de Kleene permite repeticiones y +
indica seleccin.
Dos expresiones que representan al mismo
conjunto son llamadas equivalentes.

27
Identidades
Cu = uC = C
u = u = u
C
*
=

*
=
u+v = v+u
u+C = u
u+u = u
u
*
= u
*
u
*
= (u
*
)
*

u(v+w) = uv + uw
(u+v)w = uw+vw
(uv)
*
u = u(vu)
*
(u+v)
*
= (u
*
+v)
*
= u
*
(u+v)
*
= (u+vu
*
)
*
= (u
*
v
*
)
*
= u
*
(vu
*
)
*
=
(u
*
v)
*
u
*

u
*
(u + ) = u
*

u*u* = u*
u
*
+ v
*
= v
*
+ u
*

(u
*
v
*
)
*
= (u + v)
*
= (u + v)
*
uv(u + v)
*
+ v
*
u
*

28
Ejemplos
Expresin que representa las cadenas sobre {a, b} que no
contienen la subcadena aa:
b
*
(ab
+
)
*
+b
*
(ab
+
)
*
a =
b
*
(ab
+
)
*
(+a) =
b
*
(abb
*
)
*
(+a) =
(b+ab)
*
(+a)
Expresin regular que representa las cadenas sobre {a, b, c}
que contienen la subcadena bc:
(a+b+c)
*
bc(a+b+c)
*
c
*
(b+ac
*
)
*

Representa las cadenas que no contienen la subcadena bc.
Cadenas sobre {0, 1} de longitud igual a 6:
(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1) = (0 + 1)
6

Cadenas sobre {0, 1} de longitud mayor o igual a 6:
(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)
*
= (0 + 1)
6
(0 + 1)
*
Cadenas sobre {0, 1} de longitud menor o igual a 6:
(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )
= (0 + 1 + )
6


29
Ejercicios en clase
Obtenga una expresin regular para el conjunto de
palabras sobre {a, b, c} que tienen al menos una a y al
menos una b.
c
*
a(a + c)
*
b(a + b + c)
*
+ c
*
b(b + c)
*
a(a + b + c)
*

Obtenga una expresin regular para el lenguaje sobre
{0 , 1} que consiste de las palabras cuyo dcimo
smbolo contado de la derecha a la izquierda es un 1.
(0+1)
*
1(0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1)
= (0 + 1)
*
1(0 + 1)
9

30
Pregunta
Hay lenguajes para los que no
existe una expresin regular
que los represente?

31
Ejemplo de un lenguaje no regular
{a
n
b
n
| n 0}

32
Actividades fuera de clase
Control de lectura 2: Lenguajes regulares
Tarea 2: Ejercicios 3.1, 3.2, 3.8, 3.9, 3.10
del texto.

También podría gustarte