Está en la página 1de 98

Teora de Autmatas y Lenguajes Formales

Versin 6
Dr. Arno Formella
Universidad de Vigo
Departamento de Informtica
rea de Lenguajes y Sistemas Informticos
E-32004 Ourense
http://www.ei.uvigo.es/formella
formella@ei.uvigo.es
30 de mayo de 2007
Dr. Arno Formella TALF v6 2
ndice
1. Curso 4
1.1. Administracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Tutoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Sobre este documento 5
2.1. Versiones y lista de correcciones . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Introduccin 8
4. Conceptos bsicos 12
4.1. Alfabetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2. Palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4. Producciones y Derivaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.5. Relaciones de equivalencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.6. Relacin de equivalencia de lenguajes . . . . . . . . . . . . . . . . . . . . . . . 20
5. Gramticas generativas 21
5.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2. Abreviacin de Backus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3. rbol de derivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.4. Jerarquia de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.5. Equivalencia y ambigedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6. Autmatas nitos 29
6.1. Autmatas nitos deterministas (AFD) . . . . . . . . . . . . . . . . . . . . . . . 29
6.2. Autmatas nitos nodeterministas (AFND) . . . . . . . . . . . . . . . . . . . . 32
6.3. Equivalencia entre AFD y AFND . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.4. Autmatas nitos nodeterministas con transiciones (AFND) . . . . . . . . . 38
6.5. Equivalencia entre AFND y AFND . . . . . . . . . . . . . . . . . . . . . . . 41
6.6. Existencia de autmatas nitos mnimos . . . . . . . . . . . . . . . . . . . . . . 43
6.7. Ejemplos de uso del teorema de Myhill y Nerode . . . . . . . . . . . . . . . . . 45
6.8. Algoritmo de minimizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7. Expresiones regulares 49
7.1. Sintaxis y semntica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.2. Equivalencia entre autmatas nitos y expresiones regulares . . . . . . . . . . . 51
7.3. Abreviaciones para el uso de expresiones regulares . . . . . . . . . . . . . . . . 54
7.4. Smbolos y metasmbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Dr. Arno Formella TALF v6 3
8. Lenguajes regulares 56
8.1. Equivalencia entre gramticas lineales por la derecha y autmatas nitos . . . . . 56
8.2. Equivalencia entre gramticas lineales por la derecha y lineales por la izquierda . 58
8.3. Lema de bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9. Propiedades, algoritmos de decisin,
y aplicaciones para lenguajes regulares 65
9.1. Propiedades de lenguajes regulares . . . . . . . . . . . . . . . . . . . . . . . . . 65
9.2. Algoritmos de decisin de lenguages regulares . . . . . . . . . . . . . . . . . . . 66
9.3. Aplicaciones para lenguajes regulares . . . . . . . . . . . . . . . . . . . . . . . 67
10. Lenguajes libres de contexto 69
10.1. Forma Normal de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
10.2. Forma Normal de Greibach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
10.3. Lema de bombeo para lenguajes libres de contexto . . . . . . . . . . . . . . . . 80
11. Autmatas nitos con pila (AFP) 82
11.1. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
11.2. Autmatas nitos con pila nodeterministas (AFPND) . . . . . . . . . . . . . . 83
11.3. Equivalencia entre AFPNDs aceptando con pila vaca y aceptando en estado nal 87
11.4. Equivalencia entre AFPNDs y gramticas libres de contexto . . . . . . . . . . . 89
11.5. Autmatas nitos con pila deterministas (AFPD) . . . . . . . . . . . . . . . . . 91
12. Propiedades, algoritmos de decisin,
y aplicaciones para lenguajes libres de contexto 93
12.1. Propiedades de lenguajes libre de contexto . . . . . . . . . . . . . . . . . . . . . 93
12.2. Algoritmos de decisin de lenguages libres de contexto . . . . . . . . . . . . . . 94
12.3. Aplicaciones para lenguajes libres de contexto . . . . . . . . . . . . . . . . . . . 95
13. Mquinas de Turing (MT) 96
14. Resumen 97
15. Bibliografa 98
15.1. Bibliografa bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
15.2. Bibliografa usada para la preparacin . . . . . . . . . . . . . . . . . . . . . . . 98
Dr. Arno Formella TALF v6 4
1. Curso
1.1. Administracin
Asignaturas vecinas: todo sobre Programacin, lgebra
Prerrequisitos: ningunos, excepto conceptos matemticos bsicos
Evaluacin: 70 % con un examen escrito al nal del curso, teora y 30 %
de las prcticas, teora por lo menos aprobada
Crditos: 6 (4.5 teora, 1.5 prcticas)
Bibliografa: mira Bibliografa
1.2. Clases
Lunes Martes
9-10 TALF(A) 22
10-11
11-12 TALF(A) 22
12-13 TALF(A) 22
13-14
14-15
15-16
16-17 TALF(B) TALF(B) 22
17-18 TALF(B)
18-19
19-20
20-21
1.3. Tutoras
Martes Mircoles
16-17 Teora
17-18 Teora Teora
18-19 Teora Teora
19-20 Teora
Dr. Arno Formella TALF v6 5
2. Sobre este documento
Este documento es un servicio adicional del profesor para los estudiantes. Se recuerda que la
asignatura es presencial. Observa los siguientes comentarios importantes:
Los apuntes
no necesariamente estn completos. El contenido de la asignatura se dene por lo que se
expone durante las clases presenciales.
no necesariamente son correctos. Intento lo mejor. Sobre todo siempre existe la posibili-
dad que haya fallos ortogrcos o de redaccin. Adems, como en todos los campos de la
informtica, lo correcto no es lo que diga el profesor, lo correcto es, lo que es correcto.
no necesariamente siguen el orden de las clases presenciales. Es posible que el orden
de los apartados no es exactamente igual que el orden presentado en clases.
contienen apartados que no se han dado en todos los cursos. Siendo clases presenciales,
los estudiantes ya sabrn distinguir.
todava estn sin grcos.
Los apuntes se han escrito sin el uso de una enumeracin explcita de las deniciones, lemas, y
teoremas, como se suele usar en tal contexto. Se anima al lector que estructure su novela indi-
vidual con notas en los mrgenes para enumerar las deniciones, lemas, y teoremas y relacionar
as de mejor manera las diferentes partes.
2.1. Versiones y lista de correcciones
A parte de algunas correcciones de ortografa se ha realizado las siguientes cambios de versin
en versin:
Versin 6
Haba un fallo en las propiedades de la clausura de Kleene (pgina 17).
Faltaba smbolo de conjunto vaco en la denicin de una gramtica (pgina 32).
Se ha modicado puntualmente el apartado 4.
Faltaba el asterisco Kleene en la denicin de sentencias (pgina 21).
Se ha aclarado la introduccin de la regla $ (pgina 26).
Dr. Arno Formella TALF v6 6
Faltaba un w. . . en la denicin de equivalencia de estados (pgina 33).
Faltaba una inclusion en la explicacin de la clausura (pgina 40
Se ha detallado un poco la mencin de la clase de complejidad PSPACE en pgina 54.
Haba un fallo en las producciones en el paso 1 de la conversin de una gramtica
lineal por la derecha en una gramtica lineal por la izquierda (pgina 58).
Se ha aumentado un poco el ejemplo de conversin a FNC (pgina 71).
El cambio en un AFP para que apile solamente dos smbolos se puede hacer tambin
con transiciones y nuevos smbolos de la pila en vez de usar estados intermedios
(pgina 90).
Faltaba el asterisco Kleene en el clculo del AFPD (pgina 92).
Faltaba espresar claramente que las gramticas de partida no tengan variables co-
munes (pgina 93).
Se ha aadido la posibilidad de comprobar la pertenencia con la FNG (pgina 94).
Versin 5
Se ha movido la denicin de equivalencia entre autmatas al comienzo de la seccin
6.3.
Haba un fallo en la denicin del lenguaje L
dos
(pgina 32).
Se ha aumentado la denicin de

para AFND con otra equacin a lo mejor ms


sencillo de entender (pgina 32).
Versin 4
Haba un fallo en las propiedades de la concatenacin de lenguajes: L
1
. = (y no
= L
1
) (pgina 16).
Versin 3
Se ha modicada ligeramente la introduccin.
Versin 2
(Seccin 4.6) mejorado la precisin de la observacin
(Seccin 8) Si (q, ) = p es una transicin del AFD, con q Q, p F y ,
entonces aadimos a P la produccin q .
(Seccin 8) Entonces el sistema de producciones P de la gramtica ser:
P = q
0
aq
0
[a[bq
1
[b[cq
2
[c[, q
1
bq
1
[b[cq
2
[c, q
2
cq
2
[c
Dr. Arno Formella TALF v6 7
(Seccin 10.1) Si el lenguaje de partida L contiene la palabra vaca ( L) entonces
se detecta en el pasa 4 que el smbolo inicial pertenece a E (o incluso a E

), en este
caso eliminamos con un nuevo smbolo, por ejemplo $

, la aparencia de $ en los lados


derechos y aadimos la regla $ . Tal gramtica sigue estando en forma normal
de Chomsky y genera L.
(Seccin 10.2) Obviamente cualquier gramtica en forma normal de Greibach es una
gramtica libre de contexto que se verica directamente analizando la forma de pro-
ducciones permitidas.
Dr. Arno Formella TALF v6 8
3. Introduccin
Por qu es importante la teora de lenguajes formales y autmatas?
Bueno, aclaramos primero un poco las palabras usadas...
Qu es un lenguaje formal?
Conocemos lenguajes naturales...
espaol, alemn, ingls, chino, rabe...
cuando nacemos no sabemos ninguno
se puede aprender cualquier lenguaje (por lo menos si se ha nacido en un entorno adecua-
do)
el lenguaje es una secuencia de fonemas o smbolos
que forman slabas, palabras, frases, prrafos, captulos, novelas, libros, bibliotecas...
que tiene una sintaxis (fontica o ortografa)
que tiene una gramtica (reglas de concatenacin y construccin de palabras para
formar frases)
(que tiene un estilo (forma de unir frases para generar textos))
Lenguajes formales sern meramente conjuntos de secuencias de smbolos (cuya construccin
se consigue con una gramtica formal).
Qu es un autmata?
dispositivos mecnicos o electrnicos o biolgicos
que en un punto de tiempo estn en un estado
que dado una razn (por ejemplo una seal de entrada) cambian de estado
ejemplos son: reloj mecnico o electrnico, mquina para lavar, todo un ordenador, el
cerebro?
ya se han construido relojes biolgicos con trozos de DNA articial y sntesis de protenas
que visualizan su cambio de estado con luz uorescente
Dr. Arno Formella TALF v6 9
En el contexto de esta asignatura autmatas sern mquinas matemticas con estados y funciones
de transicin (donde se puede aadir entrada, salida, memoria interna modicable, etc.).
En los aos 60 se descubri:
Los conceptos de gramticas (formales) y de los autmatas describen el mismo fenmeno
y estn muy relacionados con los algoritmos
y de esta manera surgi la Teora de Computabilidad y la Teora de Complejidad, es de-
cir, la bsqueda de respuestas a las preguntas: Qu es computable? y Cuntos recursos
(memoria, espacio, tiempo, transiciones) se necesitan?
Es decir, la Teora de los Lenguajes Formales (y de los Autmatas) permite responder a preguntas
escenciales de la Informtica, por ejemplo:
Tesis de Church: Todo lo que es computable se puede calcular con una Mquina de Turing.
Existen problemas que no son computables.
Sin TALF: no hay lenguajes, no hay compiladores, no hay programas, no hay nada.
Unos ejemplos:
favoritas
Con este diagrama podemos formar unas reglas para sustituir smbolos:
$ AB A esos A B CD
C son D EF E GH G mis
G H IJ I clases J favoritas
J F en informatica F
donde usamos para decir que no escribimos nada.
Con dichas reglas podemos derivar diferentes frases, por ejemplo:
$ AB
esosB
esosCD
esos sonD
esos sonEF
esos sonGHF
esos sonHF
esos sonH
esos sonIJ
esos son clasesJ
esos son clases
Dr. Arno Formella TALF v6 10
donde siempre hemos usado una regla adecuada para sustituir smbolos hasta llegar a tal punto
que ya no se puede aplicar ninguna regla ms.
Y con pequeos arreglos podemos traducirlo al alemn:
$ AB A dies B CD
C sind D EF E GH G meine
G H JI I Vorlesungen J liebsten
J F in Informatik F
es decir, hemos quitado la regla A y hemos cambiado la regla de H IJ a H JI.
Otro ejemplo mas sencillo.
Usamos las reglas $ ab$ y $ ab para generar palabras del tipo ab, abab, ababab ...
Podemos derivar una palabra:
$ ab$ abab$ ababab$ ababab
siempre aplicando alguna de las reglas hasta tal punto que ya no se puede aplicar ninguna regla.
Construimos un autmata que acepta una palabra del tipo mencionado. Entendemos por aceptar
que el autmata llega a su estado nal. Consumimos para cada transicin de estado una letra de
la palabra. Podemos dibujar un autmata:
automata
donde el estado inicial (o de comienzo) est marcado con una echa, el estado nal est marcado
con un doble crculo. Las transiciones estn visualizadas con arcos entre los estados que a su
vez estn marcados con sus smbolos correspondientes. Si empezamos en el estado inicial, y si
leemos la palabra por aceptar desde la izquierda hacia la derecha, podemos saltar de estado a
estado siguiendo los arcos adecuados.
Observamos que llegamos solamente al estado nal si la palabra por aceptar es una palabra vlida
del lenguaje.
Vemos y veremos
que las gramticas sirven para generar palabras (y con eso lenguajes) y
que los autmatas sirven para aceptar palabras (y con eso lenguajes).
Hacia el nal del curso tendremos conocimientos sobre una jerarqua de lenguajes y las equiva-
lencias entre:
Lenguajes Tipo 3, Gramticas Regulares y Autmatas Finitos,
Dr. Arno Formella TALF v6 11
Lenguajes Tipo 2, Gramticas Libres de Contexto y Autmatas Finitos con Pila,
(Lenguajes Tipo 1, Gramticas Sensitivos al Contexto y Autmatas Linealmente Acota-
dos),
Lenguajes Tipo 0, Gramticas Generales y Mquinas de Turing.
Dr. Arno Formella TALF v6 12
4. Conceptos bsicos
4.1. Alfabetos
Un alfabeto es un conjunto nito no vaco de smbolos.

1
= 0, 1

2
= a, b

3
= na, pa, bra, la

4
= <HTML>, </HTML>, <BODY>, </BODY>, . . .

5
= [

6
= a, ab, aab
Usamos metasmbolos (tal como , , =, y la coma) para escribir sobre lo que hablamos.
Desde el contexto siempre ser claro, si se trata de un smbolo del alfabeto o si se trata de
un metasmbolo.
Usamos subndices para distinguir diferentes alfabetos.
Usamos normalmente las minsculas o las cifras como alfabetos, = a, . . . , z o =
0, 1, . . ., en los ejemplos se usan normalmente letras desde el principio del alfabeto.
Cardinalidad del alfabeto (nmero de elementos del alfabeto): [[ > 0, [[ <
4.2. Palabras
Una secuencia nita de smbolos de un alfabeto es una palabra sobre dicho alfabeto.

1
: 0, 1, 00, 01, 11, 000, 1001101

2
: a, aa, abb, ababa

3
: napa, palabra

6
: a, ab, aab, aaab, abab
Escribimos la palabra vaca, es decir, la palabra que no contiene ningn smbolo, como .
Dr. Arno Formella TALF v6 13
Usamos normalmente letras minsculas para anotar palabras, preferiblemente desde el -
nal del alfabeto, o mejor decir, metaalfabeto.
El smbolo no pertenece a ningn alfabeto, pero si al metaalfabeto, /
La longitud de una palabra sobre un alfabeto es el nmero de smbolos que contiene.

1
: w = 0 = [w[ = 1, w = 1001101 = [w[ = 7

2
: w = a = [w[ = 1, w = ababa = [w[ = 5

3
: w = napa = [w[ = 2, w = palabra = [w[ = 3

6
: w = ab = [w[ = 2, w = aab = [w[ = 1 o [w[ = 2 ??
Dependiendo del alfabeto puede resultar difcil dividir una palabra en sus smbolos.
Si se puede dividir todas las palabras sobre un alfabeto solamente de una manera en sus
smbolos, se llama tal alfabeto libre.
Solemos usar solamente alfabetos libres.
La longitud de la palabra vaca es cero, [[ = 0
El conjunto de todas las palabras que se pueden formar sobre un alfabeto ms la palabra vaca
se llama el universo del alfabeto W().
W() = w [ w es palabra sobre
W()
es palabra de cualquier universo, W().
La cardinalidad del universo es innito (pero contable o enumerable, vemos ms adelante
lo que signica).
Si el alfabeto es libre (o mejor decir, un generador libre), escribimos

por W().
Podemos concatenar palabras, entonces sean w, v y u palabras en

.
w.v = wv, es decir, usamos el . como smbolo de concatenacin, pero muchas veces
obviamos de l (igual como se suele hacer con el de la multiplicacin).
w = w = w, es decir, se comporta como el elemento neutro (o elemento de intentidad)
respecto a la concatenacin.
Dr. Arno Formella TALF v6 14
[w.v[ = [w[ +[v[
w.v ,= v.w, en general, es decir, existen w y v, por ejemplo:
w = abc v = dec con wv = abcdec ,= decabc = vw
es decir, la concatenacin no es conmutativa.
(w.v).u = w.(v.u) para cualquier palabras w, v y u, por ejemplo:
w = abc v = dec u = fad
(wv)u = (abcdec)fad = abcdecfad = abc(decfad) = w(vu)
es decir, la concatenacin es asociativa (usamos arriba las parntesis como metasmbolos).
Con dichas propiedades la estructura algebraica (

, . ) forma un monoide libre (es decir,


un semigrupo con elemento de intentidad).
Si xy = w, llamamos x prejo de w e y sujo de w.
Dado que w = w y w = w, es por lo tanto prejo y sujo (trivial) de cualquier palabra,
y w es prejo y sujo trivial de si mismo.
Si x es prejo de w entonces [x[ [w[.
Si y es sujo de w entonces [y[ [w[.
Si x es prejo de w, e y es sujo de w y x = y, entonces x = y = w, es verdad?
Si concatenamos siempre la misma palabra w, obtenemos potencias de w.
ww = w
2
, www = w
3
, w. . . w
. .
i-veces
= w
i
, i IN = 0, 1, 2,
w
1
= w, w
0
=
[w
i
[ = i [w[
[w
0
[ = [[ = 0 = 0 [w[ = [w
0
[
w
m+n
= w
m
.w
n
[w
m+n
[ = (m+n) [w[ = m [w[ +n [w[ = [w
m
[ +[w
n
[
La reexin de una palabra w (o la palabra reversa) anotamos como w
R
.
[w[ = [w
R
[
=
R
Dr. Arno Formella TALF v6 15
4.3. Lenguajes
Un lenguaje es cualquier subconjunto del universo sobre algn alfabeto, es decir, L W(), o
tambin L

.
Ejemplo:
Lenguajes triviales
L = es el lenguaje vaco (que no contiene ninguna palabra), [L[ = 0
L = es el lenguaje que solamente contiene la palabra vaca, [L[ = 1
Estos lenguajes son independientes del alfabeto y por eso son lenguajes sobre cualquier
alfabeto.
sea = a, b
L
1
= , a, b
L
ab
= a
n
b
n
[ n IN, es decir, el lenguaje que contiene todas las palabras con un
nmero de as seguidos por el mismo nmero de bs.
L
pal
= ww
R
[ w

, es decir, palndromos de longitud par


L
quad
= a
n
2
[ n IN
>0

Si [L[ < para un lenguaje L

, entonces se llama L lenguaje nito.


Operaciones sobre/con lenguajes, sean L, L
1
, L
2
, L
3

lenguajes (igual para W()):


Unin:
L
1
L
2
= w [ w L
1
o w L
2

Propiedades (unos ejemplos):


Conmutatividad: L
1
L
2
= L
2
L
1
Asociatividad: (L
1
L
2
) L
3
= L
1
(L
2
L
3
)
Idempotencia: L L = L
Operacin con : L = L = L
Operacin con

: L

L
Interseccin:
L
1
L
2
= w [ w L
1
y w L
2

Propiedades (unos ejemplos):


Dr. Arno Formella TALF v6 16
Conmutatividad: L
1
L
2
= L
2
L
1
Asociatividad: (L
1
L
2
) L
3
= L
1
(L
2
L
3
)
Idempotencia: L L = L
Operacin con : L = = L
1
Operacin con

: L

= L =

L
Complemento:
L = w [ w

y w / L
Propiedades (unos ejemplos):
Reglas de DeMorgan: L
1
L
2
= L
1
L
2
L
1
L
2
= L
1
L
2
Con estas tres operaciones la estructura (

, , , ) forma una lgebra booleana.


Diferencia:
L
1
L
2
= w [ w L
1
pero w / L
2

Propiedades (unos ejemplos):


L
1
=

L
1
L
1
L
2
= L
1

L
2
)
Concatenacin:
L
1
.L
2
= w [ w = w
1
.w
2
y w
1
L
1
y w
2
L
2

Propiedades (unos ejemplos):


NoConmutatividad: L
1
.L
2
,= L
2
.L
1
(en general)
Operacin con : L
1
. = = .L
1
Operacin con : L
1
. = L
1
= .L
1
Potencia:
L
i
= L. . . L
. .
i-veces
i IN
Propiedades (unos ejemplos):
CeroPotencia: L
0
=
Induccin: L
i
.L = L
i+1
= L.L
i
Clausura positiva:
L
+
=

_
i=1
L
i
= L
1
L
2
L
3
. . .
Dr. Arno Formella TALF v6 17
Clausura (de Kleene):
L

_
i=0
L
i
= L
0
L
1
L
2
. . .
Propiedades (unos ejemplos):
L
+
= L

si / L

i=0

i
Reexin (o inverso):
L
R
= w [ w
R
L
Homomorsmo: Sean , dos alfabetos. Sea :

una funcin que asigna a cada


smbolo de una palabra sobre . Podemos ampliar la funcin a un homomorsmo
:

, es decir, una funcin que asigna a cada palabra sobre una palabra sobre
, con
() =
(w) = (w)()
Ejemplo:
= a, b, c, d
= 0, 1
(a) = 00 (b) = 1 (c) = (d) = 0110
(abcd) = 0010110
Entonces si L

es un lenguaje sobre
(L) = (w) [ w L

es un lenguaje sobre y si L

es un lenguaje sobre , entonces

1
(L) = w [
1
(w) L

es un lenguaje sobre .
Cul es el orden de prioridad de estos operadores?
4.4. Producciones y Derivaciones
Denimos algunas notaciones para describir reglas de sustitucin, es decir, como derivar una pal-
abra con las producciones de una gramtica (deniremos ms adelante el concepto de gramtica
ms formal):
Dr. Arno Formella TALF v6 18
Una produccin p es una tupla de un conjunto cartesiano sobre dos universos (que pueden ser el
mismo), es decir, p = (A, B)

2
.
Sea (A, B) una produccin, en vez de tuplas tambin escribimos: A B.
Un conjunto de producciones se llama sistema de producciones (o sistema de reglas). A este
nivel todava no decimos mucho sobre los alfabetos involucrados, ms adelante concretaremos.
Una derivacin directa v w es una conversin de una palabra en otra aplicando una produc-
cin, es decir, sea por ejemplo v = aAb una palabra, y sea A B una produccin, entonces
se puede derivar la palabra w = aBb directamente desde v sustituyendo la subpalabra A por la
palabra B como indica la produccin.
Ejemplo: Sean 000 010 y 10 01 dos producciones. Desde v = 1000 se puede derivar
w
1
= 1010 aplicando la primera produccin, y w
2
= 0100 aplicando la segunda.
Una derivacin v

w es una secuencia de derivaciones directa aplicando sucesivamente


producciones de un sistema. La longitud de una derivacin es el nmero de producciones apli-
cadas.
Ejemplo: Sean 000 010 y 10 01 dos producciones. Desde v = 1000 se puede derivar
w
1
= 0011, es decir, v

w
1
aplicando v = 1000 1010 0110 0101 0011 =
w
1
, o tambin w
2
= 0001 aplicando v = 1000 0100 0010 0001 = w
2
. En el primer
caso la longitud de la derivacin es 4, en el segundo caso 3.
Comentario importante: muchas de las comprobaciones en el mbito de la teora de los lengua-
jes formales se realiza mediante induccin sobre: longitud de una palabra o longitud de una
derivacin (o luego tambin longitud de un clculo).
Dado un sistema de producciones, si sustituimos siempre la primera posibilidad a la izquierda de
la palabra de partida, se llama una derivacin ms a la izquierda, e igual, si sustituimos siempre
la primera posibilidad a la derecha de la palabra de partida, se llama una derivacin ms a la
derecha.
4.5. Relaciones de equivalencia
Un conjunto R

es una relacin (binaria sobre

).
Escribimos los pares siendo elementos de R como (x, y), o como x y, o como xRy.
Sean R y S dos relaciones. Denimos
RS = (x, y) [ z

: xRz y zSy
R
0
= (x, x) [ x

R
n+1
= RR
n
Dr. Arno Formella TALF v6 19
es decir, R
0
es la relacin de identidad. La operacin nos permite crear nuevas relaciones a partir
de dos relaciones dadas, y R
n+1
es una relacin construida de tal manera recursivamente. Con
eso denimos:
R

=
_
n0
R
n
R
+
=
_
n1
R
n
es decir, xR

y (o en otra notacin x

y) si x = y o existe una secuencia z


1
, z
2
, . . . , z
n
con
n 1 y xRz
1
, z
1
Rz
2
, . . . , z
n
Ry.
Una relacin R es
reexiva, si x : xRx, es decir, la relacin de identidad R
0
es subrelacin de R,
transitiva, si xRy, yRz = xRz, es decir, si los pares (x, y) y (y, z) son elementos de R
entonces (x, z) tambin lo es,
simtrica, si x, y : xRy yRx, es decir, con (x, y) tambin (y, x) es elemento de la
relacin.
Observamos que para R
R

es una relacin reexiva y transitiva, llamada la clausura reexiva y transitiva de R


(porque es la relacin ms pequea con tal propiedad).
R
+
es una relacin transitiva, llamada la clausura transitiva de R (porque es la relacin
ms pequea con tal propiedad).
R
+
es tambin reexiva si R ya lo es.
R

y R
+
son simtricas si R ya lo es.
Una relacion R es una relacin de equivalencia si R es reexiva, simtrica, y transitiva.
Sea R una relacin de equivalencia. A cada elemento de

podemos asignar el conjunto de


los elementos que son equivalentes a l. Basta con anotar un representente de dicho conjunto y
escribimos
[x]
R
= y [ yRx = y [ xRy
(si desde el contexto ya conocemos R, obviamos del subindice R).
Si xRy entonces [x] = [y] porque ambos caen en la misma clase de equivalencia. Se suele usar
como representante de una clase alguna de las palabras ms cortas de la clase.
Dr. Arno Formella TALF v6 20
Si x, y [z] escribimos tambin x y que signica que xRy e yRx.
Una relacin de equivalencia divide

en clases, es decir,

= [x
1
] [x
2
] . . . [x
k
] . . .
cuyo nmero es nito o innito. La interseccin de dos clases es vaca, es decir, [x
i
] [x
j
] =
si i ,= j porque si tuviesen un elemento en comn, ambas clases seran iguales.
Ejemplo: Sea =
1
, . . . ,
k
un alfabeto (por ejemplo el alfabeto de toda la vida).
La relacin
R = (x, y) [ x comienza con el mismo smbolo que y
es una relacin de equivalencia y nos divide

en

= [
1
] [
2
] . . . [
k
] []
es decir, en todas las clases de palabras que empiezan con la misma letra ms la clase para la
palabra vaca (que no empieza con ninguna letra).
Entonces hay tantas clases como smbolos en ms una clase.
Llamamos el nmero de clases que produce una relacin de equivalencia el ndice de la relacin
Indice(R).
En el ejemplo tenemos Indice(R) = k + 1 = [[ + 1, es decir, un ndice nito.
(Esta relacin se usa para crear diccionarios, ah todas las palabra que empiezan con la misma
letra, estn agrupados en un apartado.)
4.6. Relacin de equivalencia de lenguajes
Para cada lenguaje L

podemos construir una relacin de equivalencia sobre

:
xR
L
y (z

: xz L yz L)
es decir, x es equivalente a y, si, aadiendo cualquier sujo, ambas palabras resultantes o bien
estn en L o bien no estn en L.
Observa: z = : x L y L, es decir, o bien todas las palabras de una clase estn en L
o bien ninguna palabra de una clase est en L.
Ejercicio:Verica que R
L
es una relacin de equivalencia!
Dr. Arno Formella TALF v6 21
5. Gramticas generativas
Una gramtica es una cudrupla
G = (
N
,
T
, P, $)
donde

N
es un alfabeto de smbolos noterminales.

T
es un alfabeto de smbolos terminales.
Se exige
N

T
= y se suele usar =
N

T
.
P es un sistema de producciones nitos, donde se distingue varios casos, ejemplos son:
P (
N

T
)

(
N

T
)

caso muy general, (as no hara falta distinguir los dos alfabetos a la primera vista, es
decir, P

)
P

.
+
N
.

es decir, a la derecha existe por lo menos un smbolo noterminal


P
N

es decir, se sustitue solamente smbolos (palabras) noterminales


P
N
(

T
)
es decir, se sustitue solamente smbolos (palabras) noterminales, pero por smbolos
(palabras) o bien terminales o bien noterminales
Repetimos: se exige que [P[ < , es decir, el conjunto de reglas es nito.
Ms adelante vemos en detalle qu tipos de sistemas de producciones se suele usar!
$ es el smbolo inicial (o de partida, o de comienzo, o axioma) que pertenece al alfabeto
noterminal, es decir, $
N
.
El lenguaje generado por una gramtica es
L(G) = w [ w

T
y $

w
es decir, se puede derivar la palabra w

T
desde el smbolo inicial aplicando las reglas del
sistema de producciones. Dichas palabras derivables que consisten solamente de smbolos termi-
nales se llaman sentencias.
Dr. Arno Formella TALF v6 22
5.1. Ejemplos
Es posible derivar lenguajes innitos con sistemas de producciones nitos?
Si, por ejemplo es posible generar el lenguaje L(G) =

T
con un sistema de producciones
nitos:
G = ($, a, b, $ , $ a$, $ b$, $)
L
1
= , a, b
G
1
= ($, a, b, $ , $ a, $ b, $)
obviamente L(G
1
) = L
1
para lenguajes nitos es fcil generar una gramtica, basta con derivar directamente cada
sentencia desde el smbolo inicial (aunque se puede usar un sistema de producciones ms
sosticado)
Una gramtica recursiva sobre la palabra v

es una gramtica donde se puede derivar


desde v una palabra que contiene v de nuevo, es decir, existe la posibilidad de una derivacin:
v

uvw (con [v[ < [uvw[).


El lenguaje generado por una gramtica es innito, si la gramtica es recursiva sobre una palabra
v que a su vez es derivable desde el smbolo inicial.
L
ab
= a
n
b
n
[ n IN
G
ab
= (a, b, $, $ a$b, $ , $)
L
abc
= a
n
b
n
c
n
[ n IN
, abc, aabbcc, aaabbbccc, . . . L
abc
G
abc
= ($, . . ., a, b, c, P, $)
Cules son las producciones necesarias?
Una vez sabiendo eso, podemos completar el alfabeto noterminal
N
Dr. Arno Formella TALF v6 23
Una primera idea:
P = $ , $ ABC, A , A aA,
B , B bB, C , C cC

N
= $, A, B, C
Obviamente podemos derivar cualquier elemento de L
abc
con esa gramtica, por ejemplo:
$ ABC aABC aaABC aaBC aabBC aabbBC
aabbC aabbcC aabbccC aabbcc
Pero tambin podemos derivar palabras como aaabcccc, es decir, el lenguaje es
L(G
Test
) = a
i
b
j
c
k
[ i, j, k IN L
abc
Parece que la gramtica G
Test
es demasiado amplia. De alguna manera deberamos con-
struir un sistema de producciones que permite mantener un nmero igual de letras a, b y c
(o en otras palabras, necesitamos contar)...
Idea 1: Si somos capaces de derivar desde a
k
Xb
k
c
k
la secuencia a
k+1
Xb
k+1
c
k+1
, hemos
ganado.
Idea 2: Tenemos que pasar la informacin que hemos aadido por ejemplo un ab en un
lado hacia el otro lado donde tenemos que aadir entonces una c (o en un lado la a y en el
otro lado un bc).
El truco consiste en usar unos smbolos noterminales cuales se van a sustituir dependiendo
del contexto en el cual se encuentran.
Entonces, construimos P y
N
:
P =
$ , para obtener la palabra vaca
$ aXbc, para iniciar la construccin
Xb bY, para empezar ir hacia las cs
Y b bY, para ir hacia las cs
Y c Zcc, para aadir una c y empezar volver
bZ Zb, para volver hacia las as
aZ aaXb, para aadir una a y una b
X para terminar

N
= $, X, Y, Z
Dr. Arno Formella TALF v6 24
Se puede comprobar formalmente con induccin sobre k que la gramtica dada genera
exactamente el lenguaje deseado, es decir L(G
abc
) = L
abc
.
La comprobacin sigue la construccin y se observa que no hay ambigedad en el momen-
to de elegir una produccin.
Existe tambin una gramtica que usa un smbolo noterminal menos y tambin una pro-
duccin menos:
P =
$ , para obtener la palabra vaca
$ aXbc, para iniciar la construccin
Xb bX, para ir hacia las cs
Xc Y bcc, para aadir una b y una c
bY Y b, para volver hacia las as
aY aaX, para aadir una a
aY aa para terminar

N
= $, X, Y
Se observa:
tenemos ambigedad en elegir producciones para sustituir y dnde aplicarlas
aqu hemos decidido aadir a la derecha una b y una c
generalmente se nota que hay muchas gramticas que generan el mismo lenguaje
5.2. Abreviacin de Backus
Para abreviar la notacin de las producciones usamos la forma normal de Backus (BNF). Agru-
pamos las producciones cuyas partes izquierdas coincidan, escribiendo las partes derechas sepa-
radas por [, por ejemplo:
P =
$ [ aXbc,
Xb bX,
Xc Y bcc,
bY Y b,
aY aaX [ aa,

Dr. Arno Formella TALF v6 25


Denimos una gramtica que genere expresiones aritmticas, por ejemplo:
((a +b) (c +d)) (e +f)
L
expr
= w [ w es expresin algebraica
donde nos limitamos a variables que consisten de una sola letra. Entonces

T
= (, ), +, , a, . . . , z
P = $ E, E E E [ (E E) [ (E +E) [ a [ . . . [ z
G
expr
= ($, E,
T
, P, $)
se puede ampliar la gramtica que incluye tambin y /
se puede ampliar la gramtica que genere tambin expresiones con variables de ms de una
letra, por ejemplo: ancho altura
ms tarde veremos como se dene las expresiones de tal estilo un poco ms completo
5.3. rbol de derivacin
Para muchas de las gramticas podemos visualizar la aplicacin de las producciones que derivan
desde el smbolo inicial una palabra como un rbol, el rbol de derivacin:
arbol
El lugar con el smbolo inicial se llama raz del rbol (aunque se suele dibujarlo arriba de todo).
Como se ve, cada smbolo es la raz de un subrbol.
La palabra que se puede leer desde la izquierda hacia la derecha en las hojas del rbol y solamente
consiste de smbolos terminales ser una sentencia.
5.4. Jerarquia de Chomsky
Segn Chomsky se clasica las gramticas en cuatro tipos (cuales son, como vemos ms adelante,
entre si verdaderamente diferentes).
Entonces sea G = (
N
,
T
, P, $) una gramtica (y =
N

T
). Las gramticas se destinguen
solamente en el sistema de producciones que siempre ser un conjunto nito y que se clasica
en los siguientes tipos:
Dr. Arno Formella TALF v6 26
Tipo 0: gramticas generales sin restricciones
P

.
N
.

es decir, se sustituye por lo menos un smbolo noterminal.


Tipo 1: gramticas sensibles al contexto
P xAy xvy [ x, y

, A
N
, v
+
$
es decir, se sustituye un smbolo noterminal por algo manteniendo el contexto; entonces
una derivacin siempre produce palabras ms largas o iguales (u

v = [u[ [v[)
Tipo 2: gramticas libres de contexto
P
N

+
$
es decir, se sustituye solo smbolos noterminales por palabras no vacas
Tipo 3: gramticas regulares (o lineales)
P
N
(
N
.
T

T
) $
es decir, lineales a la izquierda (porque los smbolos noterminales aparecen en una derivacin
siempre a la izquierda de la palabra)
P
N
(
T
.
N

T
) $
es decir, lineales a la derecha (porque los smbolos noterminales aparecen en una derivacin
siempre a la derecha de la palabra)
Se ha introducido explcitamente la regla $ en las gramticas de tipos 1, 2, y 3 para permitir
que un lenguaje conteniendo puede ser generado dado que las dems regls solo permiten un
crecimiento de la longitud de las palabras a lo largo de las derivaciones.
Observacin: si permitimos para las gramticas de libre contexto reglas del tipo
N

,
es decir, permitimos reglas como A , podemos sustituir todas las reglas que tengan una A
a la derecha, por ejemplo B xAy por B xy, y conseguir as una eliminacin de las
producciones compresoras.
5.5. Equivalencia y ambigedad
Dos gramticas son equivalentes si generan el mismo lenguaje, es decir, G
1
G
2
si L(G
1
) =
L(G
2
).
Dr. Arno Formella TALF v6 27
(Adelanto: averiguar en general si dos gramticas son equivalentes es un problema no com-
putable. Sin embargo, en casos concretos es posible averigarlo.)
Sea G = ($, A, 1, $ 1A, $ 11, A 1, $) una gramtica. Tanto $ 11 como
$ 1A 11 es una derivacin para la palabra 11.
Una sentencia es ambigua si existen ms de una derivacin para ella en una gramtica.
Una gramtica es ambigua si su lenguaje contiene una sentencia ambigua, es decir, se puede
derivar la misma sentencia con dos (o ms) derivaciones distintas.
Un lenguaje es ambiguo (o incluso se dice inherentemente ambiguo) si todas las gramticas que
generan el lenguaje son ambiguas.
Ejemplo: G = ($, 1, $ 11, $) no es ambigua, entonces L(G) no es ambiguo.
Si una sentencia es ambigua (en el caso de las gramticas libres de contexto) tenemos dos rboles
de derivacin para la misma sentencia.
Ejemplo:
E E +E [ E E [ (E) [ a [ . . . [ z, $ E
ambitree
La ambigedad introduce cierto grado de indeterminismo para derivar palabras, por eso, en la
prctica se intenta evitar gramticas ambiguas.
(Pero: el problema de decisin, si existe para una gramtica ambigua una gramtica equivalente
noambigua es un problema nocomputable.)
Investigamos de nuevo las expresiones aritmticas:
sabemos que tanto la adicin como la multiplicacin son asociativas, entonces podemos
acordar generar siempre con derivaciones ms a la izquierda
sabemos que hay prioridades (acordadas) entre las operaciones: () antes que antes que
+, entonces podemos acordar generar primero las operaciones con menos prioridad
podemos introducir varables adicionales que nos garantizan una derivacin nica
Usamos E para expresiones (va a ser tambin el smbolo inicial), T para termios (con prioridad
asociado a +), F para factores (con prioridad asociado a , y V para variables (que ya no tendrn
operaciones):
E E +T [ T
T T F [ F
F (E) [ V
V a [ b [ . . . [ z
Dr. Arno Formella TALF v6 28
La gramtica con este sistema de producciones no es ambigua.
exprnoamb
Dr. Arno Formella TALF v6 29
6. Autmatas nitos
Describimos autmatas nitos con unas deniciones matemticas. Nos limitamos al principio a
autmatas solamente con entrada.
6.1. Autmatas nitos deterministas (AFD)
Un autmata nito determinista (AFD) es una quntupla
M = (, Q, , q
0
, F)
donde
es un alfabeto (sabemos / )
Q es un conjunto nito y no vaco de estados, es decir, 0 < [Q[ < .
es una funcin de transicin:
: Q Q ; (q, ) = p
es decir, si el autmata se encuentra en el estado q y lee el smbolo va al estado p.
q
0
Q es el estado inicial.
F Q es el conjunto de estados nales.
Podemos pensar de un autmata como un dispositivo que lee desde una cinta con smbolos y que
realiza cambios de estados internamente:
auto
Dibujamos los autmatas como grafos dirigidos (no introducimos el concepto matemtico de
grafos formalmente). Los estados representan los nodos del grafo, y dibujamos una arista atribui-
da con un smbolo entre dos nodos si existe una transisin correspondiente:
compauto
es decir, el estado inicial est marcado por una echa y los estados nales estn marcados con
doble crculo.
Ejemplo: Un AFD que acepta las cadena de 0s y 1s donde los nmeros de ceros y unos es par:
zeroonepar
Dr. Arno Formella TALF v6 30
entonces
M = (0, 1, q
0
, q
1
, q
2
, q
3
, , q
0
, q
0
)
Cmo describimos cmodamente ?
Observamos: [Q[ < y [[ < , entonces podemos hacer una tabla con los estados como las
y con los smbolos como columnas:
(q
0
, 0) = q
3
, (q
0
, 1) = q
1
, (q
1
, 0) = . . .
o ms breve una tabla:
0 1
= q
0
q
3
q
1
q
1
q
2
q
0
q
2
q
1
q
3
q
3
q
0
q
2
Determinista signica que no tenemos opcin ninguna para eligir, es una funcin.
Si es una funcin total llamamos el autmata completo, es decir, existe en cada estado
para cada smbolo una transicin.
Abreviamos los dibujos para reducir el nmero de aristas:
aristas
es decir, permitimos escribir ms de un smbolo por arista, pero el cambio de estado se
realiza con leer solo uno de la lista.
Para denir el lenguaje aceptado por un AFD ampliamos la funcin a una funcin

para que
trabaja sobre palabras:

: Q

(q, ) = q

(q, w) =

((q, ), w) , w

es decir,

reeja el movimiento de la cabeza de lectura del autmata, o en otras palabras,

marca el camino que se est yiendo en el autmata para aceptar la palabra (hilo rojo).
Un autmata nito determinista M = (, Q, , q
0
, F) acepta una palabra w

si

(q
0
, w)
F donde

es la ampliacin de la funcion de transicin .


O en otras palabras, M acepta w, si

(q
0
, w) es un estado nal del autmata.
Dr. Arno Formella TALF v6 31
El lenguaje aceptado por un autmata nito determinista M es el conjunto de palabras acep-
tadas por M:
L(M) = w [ w

, M acepta w
En el grafo podemos observar: si w L(M) entonces existe un camino en el grafo desde el
estado inicial q
0
hasta algn estado nal de tal manera que podemos leer la palabra w a lo largo
de las aristas visitadas.
Ejemplo: Un autmata que acepta nmeros reales (en Pascal):
afdreal
Curiosidades de C/C++:
Comprueba con un compilador de C/C++ (o de Java) si a=000; o a=0011.0; son
sentencias correctas, sino no lo son, modica el autmata adecuadamente (Qu pasa con
a=009?).
Comprueba con un compilador de C/C++ (o de Java) si a=3E000; es una sentencia cor-
recta, sino no lo es, modica el autmata adecuadamente.
a=.1+ +1.; es una sentencia correcta en C/C++ (se asigna a a el valor 1.1 siendo la
suma de dos constantes otantes), pero importante es el espacio entre los dos +
Vemos que estmos confrontados con diferentes problemas:
deberamos saber antemano: Qu es una constante otante?
deberamos traducir dicho conocimiento en un autmata
deberamos comprobar si dicho autmata de verdad acepta lo que debe aceptar
si implementsemos tal autmata de forma real, deberamos comprobar adicionalmente si
la implementacin reeja la descripcin matemtica
Observamos, cada AFD se puede completar:
aadimos un estado e a Q (pero e / F)
aadimos las transiciones que faltan, es decir, (q, ) = e para todos los q Q(incluyendo
e) y
con eso se convierte en una funcin total
Observamos:
si q
0
F entonces L(M) y al revs, si L(M) entonces q
0
F.
puede ocurrir que hay estados no acesibles desde q
0
, incluso pueden ser aislados, es decir,
no existe un camino desde q
0
hacia tal estado.
Dr. Arno Formella TALF v6 32
6.2. Autmatas nitos nodeterministas (AFND)
Ampliamos un poco las posibilidades de las transiciones de un autmata nito, es decir, cambi-
amos la funcin .
Un autmata nito nodeterminista (AFND) es una quntupla
M = (, Q, , q
0
, F)
donde
es un alfabeto.
Q es un conjunto nito no vaco de estados, es decir, 0 < [Q[ < .
es (una de las dos deniciones, que entre si son equivalentes)
una relacin, es decir (Q) Q
o una funcin, es decir, : Q T(Q) siendo T(Q) el conjunto de las partes
de Q
q
0
Q es el estado inicial.
F Q es el conjunto de estados nales.
Ejemplo:un AFND para el lenguaje
L
dos
= w [ w 0, 1

, w contiene dos 0s dos 1s


afnd
Representamos la funcin tambin con una tabla, solo que ahora aparece ms de un estado en
cada celda de la tabla, por eso usamos la notacin de conjuntos:
0 1
= q
0
q
0
, q
3
q
0
, q
1

q
1
q
2

q
2
q
2
q
2

q
3
q
4

q
4
q
4
q
4

Ampliamos de nuevo para denir el lenguaje aceptado por un AFND

: Q

T(Q)
Dr. Arno Formella TALF v6 33

(q, ) = q

(q, w) = p [ p Q, r (q, ) : p

(r, w)
, w

=
_
r(q,)

(r, w)
es decir,

coincide con para smbolos del alfabeto y en general enumera los estados alcanz-
ables con la palabra.
Un autmata nito nodeterminista M = (, Q, , q
0
, F) acepta una palabra w

si

(q
0
, w)
F ,= donde

es la ampliacin de la relacin de transicin .


O en otras palabras, M acepta w, si

(q
0
, w) contiene un estado nal del autmata.
El lenguaje aceptado por un autmata nito nodeterminista M es el conjunto de palabras
aceptadas por M:
L(M) = w [ w

, M acepta w
6.3. Equivalencia entre AFD y AFND
Dos autmatas M
1
y M
2
son equivalentes si aceptan el mismo lenguaje, M
1
M
2
si L(M
1
) =
L(M
2
).
Si eliminamos todos los estados no acesibles (o aislados) de un autmata, obtenemos un
autmata equivalente al autmata original.
Obviamente tal autmata se representa con un grafo conexo.
Dos estados q
1
y q
2
de dos autmatas M
1
y M
2
son equivalentes, es decir, q
1
q
2
, si para
q
1
Q
1
y q
2
Q
2
y w

(q
1
, w) F
1

(q
2
, w) F
2
. .
Entonces dos autmatas son equivalentes si sus estados iniciales son equivalentes.
Est claro que cualquier AFD tambin es un AFND, es decir, si L es un lenguaje aceptado por
un AFD, tambin est aceptado por un AFND. Un AFD es un AFND, simplemente existe como
mucho una sola transicin para cada smbolo del alfabeto y para cada estado.
Pero tambin podemos construir para cada AFND un AFD equivalente, es decir, un autmata
determinsta que acepta el mismo lenguaje.
Ejemplo: convertimos el AFND que acepta L
dos
en un AFD equivalente:
afndafd
Para el caso general tenemos:
Sea M = (, Q, , q
0
, F) un AFND, construimos un AFD M

= (, Q

, q

0
, F

) con
Dr. Arno Formella TALF v6 34
Q

T(Q), es decir, escomo muchoel conjunto de todos los subconjuntos de Q.


q

0
= q
0
, es decir, es el conjunto que contiene el estado inicial del AFND.

(Q
i
, ) = P
j
q Q
i
, p P
j
con (q, ) = p, es decir, existe una transicin con
el smbolo en el AFD, si existe alguna transicin con tal smbolo entre cualquier pareja
de estados correspondientes en el AFND.
F

T(Q) con si f F

entonces existe un q f con q F, es decir, el conjunto de


estados nales son todos aquellos estados del AFD que contienen por lo menos un estado
nal del AFND.
Se suelen construir los estados necesarios del AFD a lo largo de la construccin en vez de coger
por defecto todos los posibles subconjuntos, para evitaren caso que sea posiblela construc-
cin de muchos estados que nalmente no se alcanzan desde el estado inicial.
Por qu es correcta la construccin?
Tenemos que comprobar formalmente que si M (siendo un AFND) acepta w, entonces M

(sien-
do el AFD construido) tambin lo acepta; y si M

acepta w, entonces M tambin lo hace, es


decir, que L(M) = L(M

). Es decir, un autmata es capaz de simular el otro.


Pues, sea M un AFND y M

el AFD correspondiente.
Sea w = x
0
x
1
x
2
. . . x
n
L(M) cualquier palabra aceptada por M.
Comprobamos que w L(M

), es decir, L(M) L(M

):
Denimos los siguientes diagramas
p
x
i
q

P
x
i
Q
es decir, si hacemos la transicin en M desde p a q leyendo x
i
, en otras palabras, usamos
(p, x
i
) = q, entonces existe (segn construccin) una transicin en M

de P (con p P) a
Q (con q Q) leyendo x
i
, en otras palabras, existe (P, x
i
) = Q.
Para la palabra w obtenemos:
q
0
x
0
q
1
x
1
q
2
x
2

x
n1
q
n
xn
q
n+1
F

Q
0
x
0
Q
1
x
1
Q
2
x
2

x
n1
Q
n
xn
Q
n+1
F

Dr. Arno Formella TALF v6 35


donde la construccin va desde la izquierda, es decir, del estado inicial, hacia la derecha, es decir,
a un estado nal. Dado que M acepta w, q
n+1
es un estado nal y siendo miembro de un conjunto
Q
n+1
, este ser un estado nal de M

.
Entonces hemos comprobado que M

acepta w, y por eso L(M) L(M

).
Ahora, sea w = x
0
x
1
x
2
. . . x
n
L(M

) cualquier palabra aceptada por M

.
Comprobamos que w L(M), es decir, L(M) L(M

):
Denimos los siguientes diagramas
P
x
i
Q

p
x
i
q
es decir, si hacemos la transicin en M

desde P leyendo x
i
a Q, en otras palabras, usamos
(P, x
i
) = Q, entonces existe (segn construccin) una transicin en M de algn p (con p P)
leyendo x
i
a algn q (con q Q), en otras palabras, existe (p, x
i
) = q.
Para la palabra w obtenemos:
Q
0
x
0
Q
1
x
1
Q
2
x
2

x
n1
Q
n
xn
Q
n+1
F

q
0
x
0
q
1
x
1
q
2
x
2

x
n1
q
n
xn
q
n+1
F
donde la construccin va ahora desde la derecha, es decir, un estado nal, hacia la izquierda,
es decir, al estado inicial. Dado que M

acepta w, Q
n+1
es un estado nal y un conjunto no
vaco, entonces existe un miembro q
n+1
que tambin es elemento de F y por consecuencia un q
n
aplicando el diagrama y asi succesivamente hasta llegar a q
0
.
Entonces hemos comprobado que M acepta w, y por eso L(M) L(M

).
Finalmente tenemos L(M) L(M

) y L(M) L(M

) y por eso L(M) = L(M

).
Como se observa en la construccin puede ser que se usa 2
|Q|
estados en el autmata determinista
si el autmata no-determinista tena [Q[ estados, es decir, el crecimiento del nmero de estados
puede ser exponencial.
Surgen dos preguntas:
1. Existen AFNDs que producen un AFD de tal tamao grande?
2. Son necesarios tantos estados (o existe una mejor forma de realizar la conversin)?
Dr. Arno Formella TALF v6 36
Un ejemplo para una respuesta a la segunda:
Usamos = a, b como alfabeto. Denimos los siguientes lenguajes (que dependen del nmero
n IN):
L
n
= w [ w

, w = w
1
w
2
, w
1
,= w
2
, [w
1
[ = [w
2
[ = n, n IN
es decir, todas las palabras con 2n letras donde la primera mitad se distingue de la segunda.
Es bastante claro que para cualquier n existe un autmata que acepta L
n
porque el lenguaje es
nito ([L
n
[ = 2
2n
2
n
).
En un libro (HotzEstenfeld) se encuentra el siguiente AFND que acepta L
3
(dejan la compro-
bacin al lector)
afndln
Bueno, con un poco de trabajo se puede comprobar (enumerando todos los caminos desde el
estado inicial hasta el estado nal) que en cada uno de los caminos siempre existe en la primera
parte una arista con una a (o una b) donde en la misma posicin de la segunda parte hay una b (o
una a).
El AFND dado tiene 22 estados que (sin que ellos lo dicen) est en el orden de n
2
(si inspec-
cionamos la construccin vemos la suma de 1 hasta 2n).
Tambin construeron un AFD para L
3
:
afdln
Maniestan que dicho autmata es mnimo, y teniendo ms de 2
n
estados concluyen que la
construccin de un AFND a un AFD puede incrementar el nmero de estados exponencialmente.
Veremos: Ambas construcciones tienen sus deciencias, aunque el hecho en si es correcto!
Primero, no dan un esquema cmo construir un autmata que reconozca L
n
para cualquier n
(puede ser que hay buena suerte en el caso de L
3
).
Segundo, el AFD dado no es mnimo, una simplicacin sera:
afdlns
Pero, el nuevo autmata sigue necesitando un nmero exponencial de estados, porque se tiene
que construir en el lado izquierdo todas las posibles palabras w
1
.
Entonces: Creemos o sabemos?, si no lo hemos comprobado o si no hemos entendido una com-
probacin presentada, entonces solamente creemos. El saber va ms all. Hay que mantenerse
crtico, siempre.
Construimos un AFND para L
n
sistemticamente.
Dr. Arno Formella TALF v6 37
Idea: En cada uno de los caminos reconociendo w
1
siempre tiene que existir una arista con una
a (o una b) donde en la misma posicin para reconocer w
2
hay una b (o una a).
Este principio nos lleva a una construccin inductiva:
afdln1
afdln2
afdln3
afdlnn
El nmero de estados entonces es:
[Q[ = 1 + 2 + 4 + 6 +. . . + 2n + (2n 2) +. . . + 4 + 2 + 1
= 1 + 2
n

i=1
i + 1 + 2
n1

i=1
i
= 1 +n(n + 1) + 1 + (n 1)n
= 2(n
2
+ 1)
Como vemos, incluso hemos reducido el nmero de estados comparando con el autmata del
libro: el AFND para aceptar L
3
tiene solamente 20 estados.
La construccin de un AFD sigue el mismo argumento dado arriba: se necesita construir todas
las posibles palabras w
1
en el lado izquierdo y por eso el AFD tiene por lo menos 2
n
estados
(los 2
n
1 para enumerar los w
1
y por lo menos un estado nal en el lado derecho.
Hasta ahora slo hemos comprobado la explosin del nmero de estados para lenguajes nitos.
Existe tal crecimiento exponencial tambin para lenguajes innitos?
Otro ejemplo para mostrar las capacidades de un AFND (y el crecemiento exponencial necesario
del AFD equivalente):
Usamos = 0, 1 como alfabeto. Denimos los siguientes lenguajes (que dependen del nmero
n IN):
L
n
= w [ w

, w contiene un 1 en la n-nsima posicin desde la derecha


Es bastante fcil construir un AFND que acepte L
n
:
afndlr
No es tan obvio como construir directamente un AFD. Pero es posible con la construccin (Ha-
zlo!).
Observamos en la construccin:
Dr. Arno Formella TALF v6 38
Sea w = x
n
x
n1
. . . x
2
x
1
0, 1

.
Para todos los i 1, . . . , n tenemos:
q
i

(q
0
, w) = x
i
= 1
es decir:
Si x
i
= 1 (el i-simo smbolo desde la derecha es un 1), entonces existe un camino
desde q
0
a q
i
(es decir, q
i

(q
0
, w)) porque podemos usar dicho x
i
para pasar el
puente y
si existe un camino desde q
0
a q
i
leyendo w (q
i

(q
0
, w)), entonces w tiene un 1
como i-simo smbolo desde la derecha (es decir, x
i
= 1) porque hemos pasado el
puente.
Entonces, existe en la construccin para cada subconjunto P T(Q) con q
0
P una
palabra w tal que tenemos que construir un camino desde Q
0
= q
0
hacia P.
Entones el AFD contiene por lo menos 2
|Q|1
= 2
n
estados (todos aquellos que codican
subconjuntos conteniendo q
0
).
Construimos un AFD directamente:
afdlr
Este autmata (y siguiendo el esquema de la construccin) contiene 2
n
estados.
En ambos ejemplos parece que el nmero de estados necesarios en un AFD tenga algo que ver
con la capacidad de contar o enumerar hasta cierto nmero.
6.4. Autmatas nitos nodeterministas con transiciones (AFND
)
Queremos construir un autmata que acepta el lenguaje
L = a
i
b
j
c
k
[ i, j, k IN
Si fuesemos capaces de saltar mgicamente, es decir, sin consumir una letra de la entrada, de un
estado a otro, sera fcil la construccin:
AUTaibjckeps
Es decir, hemos introducido aristas marcados con la palabra vaca .
Un autmata nito nodeterminista con transiciones (AFND) es una quntupla
Dr. Arno Formella TALF v6 39
M = (, Q, , q
0
, F)
donde
Q, , q
0
, y F estn denidos igual como en el caso de un AFND
es
una relacin, es decir (Q( )) Q
o una funcin, es decir, : Q ( ) T(Q) siendo T(Q) el conjunto de
las partes de Q
Observamos que aadir ms aristas con obviamente no cambia el comportamiento del autmata:
AUTaibjckepstrans
Podemos tratar las transiciones con como una relacin T sobre el conjunto de estados, es decir
T = T
1
= (q, p) [ (q, ) = p QQ
En el ejemplo tenemos
T
1
= (q
0
, q
1
), (q
1
, q
2
)
Esta relacin podemos ampliar para que sea reexiva, es decir, que todas las parejas (q, q) con
q Q formen parte de la relacin, es decir, formamos
T
0
= (q, q) [ q Q
y con eso
T = T
0
T
1
entonces T por construccin es una relacin reexiva. En el ejemplo tenemos
T
0
= (q
0
, q
0
), (q
1
, q
1
), (q
2
, q
2
)
y con eso
T = (q
0
, q
0
), (q
0
, q
1
), (q
1
, q
1
), (q
1
, q
2
), (q
2
, q
2
)
Podemos ampliar la relacin aun ms considerando el efecto transitivo de las transiciones , es
decir, formamos en un primer paso
T
2
= (q, p) [ r Q : (q, r), (r, p) T
0
T
1
y (q, p) / T
0
T
1

Dr. Arno Formella TALF v6 40


y con eso
T = T
0
T
1
T
2
en el ejemplo tenemos
T
2
= (q
0
, q
2
)
y as sucesivamente
T
i
=
_
(q, p) [ r Q : (q, r), (r, p)
i1
_
j=0
T
j
y (q, p) /
i1
_
j=0
T
j
_
Finalmente denimos
T

= T
0
T
1
T
2
. . . =

_
i=0
T
i
como clausura (o ciero, o cerradura) transitiva de la relacin de las transiciones o ms
breve clausura.
El proceso termina en nuestro caso de autmatas nitos, es decir, la unin va solamente sobre
un nmero nito de is, porque T

sigue siendo un subconjunto del conjunto nito QQ, T


QQ.
Con la clausura podemos denir la clausura de un estado, como todos aquellos estados que
se pueden alcanzar con caminos de transisiones , es decir
cl(q) = p [ (q, p) T

En el ejemplo:
cl(q
0
) = q
0
, q
1
, q
2

cl(q
1
) = q
1
, q
2

cl(q
2
) = q
2

AUTaibjckafnd
Hemos aadido q
0
a los estados nales F, porque existe un estado nal que pertenece a la
clausura de q
0
, es decir, L.
Hemos marcado las aristas de la clausura con smbolos del alfabeto.
Dr. Arno Formella TALF v6 41
Entonces podemos formalizar el lenguaje aceptado por un AFND (parecido a lo que hicimos
para un AFND).
Primero denimos la ampliacin de para autmatas con transiciones .

(q, w) va a ser el
conjunto de estados (igual como en el caso de

para AFNDs) que podemos alcanzar desde q


leyendo la palabra. Entonces:

: Q

T(Q)
1.

(q, ) = cl(q)
es decir, nos quedamos en la clausura si hemos alcanzado el nal de la palabra
2.

(q, w) = p [ p Q y r

(q, w) tal que p cl((r, ))


=
_
r

(q,w)
cl((r, ))
es decir,

(q, w) es el conjunto de estados alcanzables desde un estado r siendo miembro


de la clausura de un estado alcanzable desde q sin haber ledo el ltimo smbolo .

(q
0
, w) enumera entonces todos los estados alcanzables desde q
0
leyendo la palabra w.
Observa: Hemos dado una denicin recursiva desde la izquierda, es decir, aadimos un smbolo
a la derecha. Hubiese sido posible denir

para un AFND de la misma manera.


Un autmata nodeterminista con transiciones Macepta una palabra w sobre el alfabeto
(w

) si

(q
0
, w) F ,=
donde

sea la ampliacin de la funcin dada arriba.


El lenguaje aceptado por M es (como siempre)
L(M) = w [ M acepta w
6.5. Equivalencia entre AFND y AFND
Primero observamos que cualquier AFND es obviamente tambin un AFND (pues uno que,
por casualidad, no tenga transiciones ).
Luego podemos construir a partir de un AFND un AFND equivalente.
Entonces, sea M = (, Q, , q
0
, F) un AFND.
Un AFND equivalente es el autmata M

= (, Q

, q

0
, F

) donde
Dr. Arno Formella TALF v6 42
Q

= Q

(q, ) =

rcl(q)
cl((r, )) (podemos escribir solo q porque Q

= Q)
q

0
= q
0
F

=
_
F si F cl(q
0
) =
F q
0
si F cl(q
0
) ,=
es decir, aadimos q
0
como estado nal, si algn estado nal del AFND pertenece a la
clausura del estado inicial.
Convertimos el ejemplo:
La tabla de transiciones para M con las transiciones de la clausura es:
a b c cl
q
0
q
0
q
1
q
0
, q
1
, q
2

q
1
q
1
q
2
q
1
, q
2

q
2
q
2
q
2

entonces la tabla con transiciones desde la claurura es


a b c cl
cl(q
0
) q
0
q
1
q
2
q
0
, q
1
, q
2

cl(q
1
) q
1
q
2
q
1
, q
2

cl(q
2
) q
2
q
2

y con eso la tabla nal del AFND es


a b c
q

0
q
0
, q
1
, q
2
q
1
, q
2
q
2

1
q
1
, q
2
q
2

2
q
2

Adems tenemos F cl(q


0
) ,= y por eso F

= F q
0
= q
0
, q
2
.
Finalmente resulta el siguiente grafo:
afnde
Por qu es correcto la construccin?
Dr. Arno Formella TALF v6 43
Pues los argumentos (y la comprobacin) siguen los mismos pasos como lo vimos en el caso de
AFND y AFD. Siempre cuando hay una transicin en el AFND leyendo un smbolo encon-
tramos (segn construccin) una transicin en el AFND correspondiente porque consideramos
toda la clausura, y vice versa, si hay una transicin en el AFND, tiene que haber existido una
transicin en el AFND o bien con o bien sin una secuencia de transiciones .
Cunto ha crecido esta vez el autmata?
El nmero de estados queda igual, solo se ampla (si hace falta) F por un estado. Pero ha creci-
do el nmero de aristas (es decir, transisiones). Dicho crecimiento puede llegar como mucho a
[[[Q[
2
porque como mucho tantas aristas se pueden incorporar entre los nodos del grafo.
Finalmente hemos comprobado la equivalencia entre autmatas nodeterministas y autmatas
nodeterministas con transiciones .
6.6. Existencia de autmatas nitos mnimos
Ya vimos que hay varias posibilidades para construir un autmata nito determinista que acepte
un lenguaje (regular), por ejemplo, por construccin directa, o por el paso de un AFND a un
AFD.
Surge la pregunta: existe un autmata nito determinista (AFD) mnimo que acepta tal lenguaje?
Nos referimos al nmero de estados que tiene el AFD, es decir [Q[, dado que el nmero de
transiciones por estado est determinado por el nmero de smbolos en multiplicado por [Q[ si
el AFD es completo.
La respuesta es: por supuesto que s!
Con el siguiente argumento: cada subconjunto de los nmeros enteros IN tiene un mnimo, y los
nmeros de estados de todos los posibles AFDs que aceptan L forman tal subconjunto.
Para la construccin del autmata mnimo necesitamos el formalismo de las relaciones de equiv-
alencia.
Ya vimos que para cada lenguaje L

podemos construir una relacin de equivalencia sobre

:
xR
L
y ( z

: xz L yz L)
es decir, x es equivalente a y, si, aadiendo cualquier sujo, ambas palabras resultantes o bien
estn en L o bien no estn en L.
Un lenguaje L

es regular, si y solo si el ndice de la relacin R


L
es nito, es decir, la relacin
tiene solamente un nmero nito de clases de equivalencia (Teorema de Myhill y Nerode).
Dr. Arno Formella TALF v6 44
Comprobamos primero la direccin =, es decir, si el lenguaje es regular, entonces el ndice
de la relacin es nito:
L es regular, entonces existe un AFD que acepta L.
Sea M = (, Q, , q
0
, F) un AFD con L(M) = L.
Denimos una relacin de equivalencia sobre M:
xR
M
y si

(q
0
, x) =

(q
0
, y)
es decir, llegamos al mismo estado leyendo x o y empezando en el estado inicial.
Veremos a continuacin que R
M
R
L
, es decir, que R
M
es un renamiento de R
L
, o en otras
palabras, si dos elementos caen en una misma clase de equivalencia respecto a la relacin R
M
,
tambin caen en una misma clase respecto a R
L
.
Entonces, sea xR
M
y, es decir

(q
0
, x) =

(q
0
, y).
Sea z

cualquier palabra. Miramos:


xz L

(q
0
, xz) F

(q
0
, x), z) F

(q
0
, y), z) F

(q
0
, yz) F
yz L
es decir, si xR
M
y entonces tambin xR
L
y, y por eso:
Indice(R
L
) Indice(R
M
)
= nmero de estados acesibles desde q
0
[Q[
<
Comprobamos ahora la direccin =, es decir, si el ndice de la relacin es nito, entonces el
languaje es regular. Dicha comprobacin va a ser una comprobacin constructiva muy til:
Sea R
L
la relacin de equivalencia de L con Indice(R
L
) < .
Entonces hay palabras x
1
, x
2
, . . . , x
k

con k < , es decir k es nito, cuyas clases cubren

= [x
1
] [x
2
] . . . [x
k
]
Construimos un AFD que contiene justamente tantos estados como hay clases:
M = (, Q, , q
0
, F)
donde
Dr. Arno Formella TALF v6 45
Q = [x
1
], [x
2
], . . . , [x
k
]
([x], ) = [x], es decir, se hace la transicin de la clase a la cual pertenece x leyendo
a la clase a la cual pertenece x
q
0
= [], es decir, el estado inicial es la clase a la cual pertenece la palabra vaca
F = [x] [ x L, es decir, existen tantos estados nales como hay clases de equivalencia
perteneciendo a L.
Entonces:

([], x) =

(q
0
, x) = [x] y vemos
x L(M)

(q
0
, x) F

([], x) F
[x] F
x L
6.7. Ejemplos de uso del teorema de Myhill y Nerode
Investigamos de nuevo el lenguaje
L = a
n
b
n
[ n IN, n > 0
anotamos unas clases de equivalencia de L:
[ab] = L
[a
2
b] = a
2
b, a
3
b
2
, a
4
b
3
, . . .
. . .
[a
k
b] = a
k+i1
b
i
[ i 1
vericamos que son clases de equivalencia, porque si a
k+j1
b
j
[a
k
b] y a
k+l1
b
l
[a
k
b] en-
tonces o bien a
k+j1
b
j
z, a
k+l1
b
l
z L (si z = b
k1
) o bien a
k+j1
b
j
z, a
k+l1
b
l
z / L (si
z ,= b
k1
).
Por eso el nmero de clases de R
L
es innito, es decir, Indice(R
L
) = .
Observa que no hemos clasicado todas las palabras de

, sino solamente algunas palabras


posibles:

= L [a
2
b] . . . [a
k
b] . . .
. .
ya son un nmero innito
. . .
..
las dems clases
es decir, para comprobar que un lenguaje no es regular basta con encontrar un nmero innito de
clases de equivalencia (respecto a la relacin R
L
).
Dr. Arno Formella TALF v6 46
Investigamos el lenguaje
L = w [ w 0, 1

y w termina con 00
Pensamos en las posibles clases de equivalencia. Obviamente hay tres, o bien una palabra no
termina en 0, o bien termina en un 0, o bien termina por lo menos en dos 0, es decir:
[] = w [ w no termina en 0
[0] = w [ w termina en un solo 0
[00] = w [ w termina en 00
Con

= [] [0] [00] seguimos la construccin de arriba y obtenemos la tabla de transiciones


para el autmata:
0 1
= [] [0] []
[0] [00] []
[00] [00] []
o como diagrama:
equiafd
6.8. Algoritmo de minimizacin
La comprobacin del teorema de Myhill y Nerode nos proporciona un hecho muy importante:
el autmata basado en las clases de equivalencia es el autmata mnimo dentro de todos los
posibles autmatas nitos deterministas y completos que aceptan el mismo lenguaje, porque un
tal autmata M

denira un renamiento de R
M
R
L
, es decir, Indice(R
M
) Indice(R
L
)
y el AFD de las clases de equivalencia M representa las mismas clases R
L
= R
M
, entonces
Indice(R
M
) Indice(R
L
) = Indice(R
M
).
Una pregunta surge: Cmo sabemos si un AFD M ya es mnimo?
Pues, M no es mnimo, si
w

p, q Q, p ,= q :

(p, w) F

(q, w) F
es decir, llegamos con alguna palabra w desde ambos estados siempre o bien a un estado nal, o
bien a un estado nonal.
En tal caso, podemos unir los dos estados en un nico estado.
Dr. Arno Formella TALF v6 47
Basta con realizar las pruebas con todas las palabras w con [w[ < [Q[ porque no hace falta
visitar un estado dos veces.
Con dicho argumento describimos el algoritmo de minimizacin (sin comprobacin) a contin-
uacin.
Decimos que dos estados p y q son distinguibles (o noequivalentes) si existe una palabra w que
nos lleva desde p a un estado nal pero no desde q, o al revs, es decir:
p , q (

(p, w) F y

(q, w) / F) o (

(p, w) / F y

(q, w) F)
El algoritmo calcular la relacin de distinguibilidad (o noequivalencia) entre los estados y
contiene 5 pasos (si no contamos el paso previo de completar el AFD):
1. Se elimina todos los estados no acesibles desde el estado inicial (p.ej., con un algoritmo
que sucesivamente marca los estados acesibles).
2. Se forma una tabla de todas las parejas de estados (p, q) con p ,= q.
3. Se marca en la tabla todas las parejas (p, q) con p F, q / F o p / F, q F (porque
dichos estados seguro son distinguibles).
4. Mientras haya cambio en la tabla:
para cada pareja (p, q) no marcada y para cada smbolo
si ((p, ), (q, )) est marcada, tambin se marca (p, q).
5. Las parejas (tuplas) no marcadas se une en un slo estado.
Ejemplo: partimos del siguiente AFD completo:
afdc
1. Todos los estados son acesibles desde a, por eso, no hay que eliminar nada.
2. La tabla es:
a b c d e
a -
b - -
c - - -
d - - - -
e - - - - -
Dr. Arno Formella TALF v6 48
3. Las marcas iniciales son (en vez de simple marcas, usamos nmeros para visualizar en el
siguiente apartado los cambios en la tabla en cada paso):
a b c d e
a - 1
b - - 1
c - - - 1
d - - - - 1
e - - - - -
4.
a b c d e
a - 2 3 1
b - - 4 1
c - - - 5 1
d - - - - 1
e - - - - -
5. El autmata mnimo es:
afdcmin
Observa que en la construccn del autmata podemos comprobar de cierta manera la cor-
reccin de la tabla: cuando recorremos todas las aristas del autmata original, tenemos que
o bien aadir o bien encontrar su homloga en el autmata en construccin.
El paso 4 se puede implementar ms eciente. En vez de mirar tantas veces las parejas no mar-
cados, se mantiene listas de espera que se marcan recursivamente. Observamos:
Si tenemos que marcar (p, q), es porque (r, s) = ((p, ), (q, )) ya est marcado.
Entonces de alguna manera la pareja (p, q) depende de la pareja (r, s).
Es decir, si en un futuro marcamos en algun momento (r, s), directamente podemos marcar
(p, q) tambin.
Para llevar eso a cabo, aadimos a cada celda una lista de parejas que dependen de la la pareja en
cuestin, o aadimos echas entre celdas en la tabla para resaltar las dependencias. Si se marca
una pareja, recursivamente se marcan tambin todas las entradas en las listas, destinos de las
echas.
Con est mejora el algoritmo tiene complejidad O([Q[
2
[[).
Dr. Arno Formella TALF v6 49
7. Expresiones regulares
Hasta ahora era bastante informal como describimos lenguajes aceptados por autmatas. Siempre
tenamos que aprovechar de una notacin como
L(M) = w [ alguna propiedad de w
Por ejemplo, si queramos desarrollar un autmata que comprobase que una cadena codicase
una direccin de correo electrnico vlida tendramos como propiedades:
1. los smbolos permitidos son: a-z, A-Z, 0-9, @ . - _
2. debe contener exactamente una @
3. por lo menos un . detrs de la @
4. detrs del ltimo . deben venir entre 2 y 4 letras
5. detrs de cada . y de la @ debe venir por lo menos una letra
6. delante de la @ por lo menos una palabra que empieza con una letra,
es decir, L(M) = w [ w cumple las condiciones de arriba .
Ejercicio: Intenta construir un autmata!
Sera conveniente tener un metalenguaje que nos permitiese describir fcilmente lenguajes (por
lo menos de cierto tipo).
7.1. Sintaxis y semntica
Sea un alfabeto. Una expresin regular sobre se dene con las siguientes reglas (induc-
tivas):
1. a) es una expresin regular
b) es una expresin regular
c) si , entonces es una expresin regular
2. si y son expresiones regulares, entonces tambin
a) . es una expresin regular (obviamos del punto muchas veces)
Dr. Arno Formella TALF v6 50
b) ( +) es una expresin regular
3. si es una expresin regular, entonces tambin
a) () es una expresin regular
b) ()

es una expresin regular


Como observamos: hemos introducido metasmbolos ((,),

,+,.,). Si alguno de ellos


aparece en tenemos un problema (Houston) que resolveremos al nal de esta seccin.
Ejemplos:
Sea = a, b, c. Posibles expresiones regulares son:
((a.b)

+b.c.(a)

) ((a.a.a +b.c) + (c.b)

.(b)

)
Con eso hemos denido una sintaxis de expresiones regulares, pero cul ser su semntica?
Para cada expresin regular denimos un lenguaje correspondiente (basado en las reglas).
El lenguaje L() denido por una expresin regular se dene:
1. a) L() =
b) L() =
c) si , entonces L() =
2. si y son expresiones regulares, entonces
a) L(.) = L().L()
b) L(( +)) = L() L()
3. si es una expresin regular
a) L(()) = L()
b) L(()

) = (L())

Ejemplos: sobre = 0, 1:
el lenguaje que contiene una subcadena 11:
((0 + 1))

,1,1.((0 + 1))

todas las cadenas que alternan 0 y 1:


(((0,1)

+ (0,1)

,0) + ((1,0)

+ (1,0)

,1))
o tambin con la expresin
(1 +).(0,1)

.(0 +)
Dr. Arno Formella TALF v6 51
7.2. Equivalencia entre autmatas nitos y expresiones regulares
La semntica de una expresin regular dene un lenguaje.
Dado una expresin regular (sobre un alfabeto ). Qu tiene que ver el lenguaje L() con un
lenguaje L(M) aceptado por un autmata nito M?
Veremos: para cada expresin regular existe un autmata nodeterminista con transiciones
M, o sea un AFND, que acepta el mismo lenguaje (es decir, L() = L(M)).
Ya sabemos: entonces tambin existe un autmata nito determinista, o sea un AFD, aceptando
el mismo lenguaje.
De hecho, comprobaremos algo ms: para cada sobre existe un AFND M = (, Q, , q
0
, F)
con L() = L(M) y
no existe ninguna transicin hacia el estado inicial, es decir
q Q, : q
0
/ (q, ) (q, )
M tiene exactamente un estado nal del cual no sale ninguna transicin, es decir,
[F[ = 1 y , f F : (f, ) (f, ) =
La comprobacin sigue la denicin inductiva de la expresin regular, lo describimos solamente
con los grafos de los autmatas. Entonces, sean , , y expresiones regulares sobre algn
alfabeto .
1. a) =
regexprafnde1
b) =
regexprafnde2
c) = a
regexprafnde3
2. a) =
regexprafnde4
b) = ( +)
regexprafnde5
3. a) = ()
regexprafnde6
Dr. Arno Formella TALF v6 52
b) = ()

regexprafnde7
Ejemplo: construimos el AFND para = (((a.b)

+a) +b.b)
regexprafndeej
La otra direccin, es decir, comprobando que para cada autmata nito existe una expresin
regular que describe el mismo lenguaje, nos costar un poco ms de trabajo.
Sea M = (, Q, , q
0
, F) un AFD (sabemos que cualquier AFND o AFND se puede convertir
en un AFD).
Describimos un algoritmo que sucesivamente construye la clausura transitiva del autmata da-
do y as construye nalmentecomo atributos de las aristas entre q
0
y un nuevo estado fla
expresin regular.
Por eso permitimos que se pueden escribir expresiones regulares a las aristas de un autmata, es
decir, para (p, ) = q escribimos (p, , q) (pues, la arista del estado p al estado q con atributo a),
o teniendo expresiones regulares (p, , q) (pues, una arista de p a q con atributo ), o con dibujo:
aristaexpr
1. aadimos un nuevo estado f y conectamos todos los estados en F con transiciones a f,
es decir, cambiamos M por M

= (Q f, ,

, q
0
, f) donde

= para estados en
Q y adems q F :

(q, ) = f. As no hemos cambiado el lenguaje aceptado por M.


(Pero siguimos escribiendo abajo simplemente M, , y Q para simplicar la notacin.)
2. para todos los estados q ,= q
0
y q ,= f
a) para cada pareja de aristas (p, , q) y (q, , r) y arista reexiva (q, , q) (nota, puede
ser p = r)
aade arista (p,

, r)
b) elimina q con todas sus aristas adyacentes
pqr
c) agrupa las aristas construidas (p,
1
, r), . . . , (p,
k
, r) escribiendo (p,
1
+. . .+
k
, r)
(nota que obviamos de los parentesis)
3. cuando termina el proceso, es decir, cuando solamente existen aristas entre q
0
y f, precisa-
mente (q
0
, , q
0
) y/o (q
0
, , f), la expresin regular nal es

.
(Observa: si q
0
F entonces existe una arista con entre q
0
y f, por eso, L(), y entonces
no hay que considerar un caso especial para contemplar lazos reexivos en q
0
porque

.)
Dr. Arno Formella TALF v6 53
Ejemplo:
afder
Una comprobacin formal de la correccin del algoritmo es bastante tcnica. Principalmente
hay que realizar una induccin estructural con propiedades de dichos autmatas extendidos (que
tienen expresiones regulares en sus aristas). No lo detallamos aqu, cae en la categora: lo creemos
(en estos momentos).
Como vimos en el ejemplo, hemos construido una expresin regular totalmente diferente a la de
partida. Debemos transformar dicha expresin regular sin cambiar el lenguaje que dene para
conseguir nalmente una expresin regular igual a la de partida. Por eso:
Dos expresiones regulares y son equivalentes ( ) si denen el mismo lenguaje, es
decir, si L() = L().
Obviamente hay operaciones con expresiones regulares que mantienen la equivalencia, por ejem-
plo:
Asociatividad:
( + ( +)) (( +) +)
.(.) (.).
Conmutatividad:
( +) ( +)
Elementos neutros:
( +) ( +)

(.) (.)

Eliminacin:
(.) (.)

Dr. Arno Formella TALF v6 54
Distributividad:
.( +) (. +.)
( +). (. +.)
Simplicacin:
(()

()

()


()


Con eso y un poco de mpetu podemos transformar sucesivamente la expresin regular obtenida
para obtener al nal la expresin regular que era la base para el autmata nito inicial.
El problema de comprobar en general si dos expresiones regulares son equivalentes no es nada
fcil. Dicho problema cae en la clase de los problemas PSPACE que contiene problemas que se
pueden resolver con una mquina de TURING con espacio polinomio. Dicha clase es an ms
complejos que los problemas de la clase NP que (a lo mejor) veremos hacia el nal del curso
(un problema NP es el problema del viajante que consiste en determinar si existe un viaje por
n destinos con recorrido de longitud debajo de cierta distancia dada). Aqu nos basta constatar
que un algoritmo determinista que resuelve el problema necesita un tiempo que crece ms que
exponencial en la longitud de la expresin regular.
7.3. Abreviaciones para el uso de expresiones regulares
Para simplicar ms el uso de expresiones regulares, introducimos prioridades para eliminar
parentesis (ya obviamos tales parentesis antes cuando averigamos un expresin regular a partir
de un AFD, atorgamos
a la operacin asterisco de Kleene mxima prioridad (parecido a la exponenciacin en
expresiones algebraicas)
a la operacin concatenacin segunda prioridad (parecido a la multiplicacin en expre-
siones algebraicas) y
a la operacin addicin la mnima prioridad (parecido a la adicin en expresiones alge-
braicas)
Dr. Arno Formella TALF v6 55
Ejemplo:
(((((a +b) +c))

.a +b).a.(b)

+a) = ((a +b +c)

a +b)ab

+a
Adicionalmente describimos algunos ejemplos de abreviaciones de uso comn para expresiones
regulares. Dependiendo del entorno en el cual se trabaja, pueden variar bastante las deniciones,
incluso puede ser que algunas notaciones describen lenguajes que ya no son lenguajes regu-
lares!.
Sea =
0
,
1
, . . . ,
n
un alfabeto, donde los smbolos implcitamente estn ordenados, es
decir, si i < j para i, j 1, . . . , n entonces
i
viene antes en el orden de todos los smbolos
que
j
(pues, entonces es tal cual como estamos acostrumbados de tratar nuestro alfabeto del
lenguaje natural).
[
i

j
] :
i
+ . . . +
j
, es decir, todo el rango de smbolos entre (y incluyendo)
i
y

j
. Si j < i, [
i

j
] = .
? : ( +), es decir, una o ninguna vez .
., cualquier smbolo del alfabeto

+
:

, es decir, por lo menos una vez .

n
: . . .
. .
nveces
(usando tal n en varias posiciones y exigiendo que tenga en casos concretos
en todos los sitios el mismo valor se pueden describir lenguajes ya no regulares)

{m,n}
por lo menos m veces, pero como mucho n veces . (igual como arriba, usando tal
n y m se pueden describir algunos lenguajes no regulares)
7.4. Smbolos y metasmbolos
Resolvemos el problema de tener smbolos iguales en y en el metaalfabeto:
Se suele usar un smbolo de escape en el metalenguaje, normalmente el smbolo \. Si \ aparece
delante de otro smbolo, entonces se considera este smbolo un smbolo de , sino un meta
smbolo. (Entonces, si \ es en , se anotara como \\.)
Entonces podemos escribir la expresin regular que dene una direccin de correo electrnico
sintcticamente correta como:
= [ a zA Z ][ a zA Z0 9 _ ]

= (.)

@(.)
+
[ a zA Z ]
{2,4}
donde unimos adicionalmente varios rangos en uno.
Dr. Arno Formella TALF v6 56
8. Lenguajes regulares
8.1. Equivalencia entre gramticas lineales por la derecha y aut-
matas nitos
Sea M = (, Q, , q
0
, F) un AFD.
Construimos una gramtica lineal por la derecha Gcon L(G) = L(M), es decir, genera el mismo
lenguaje que el AFD acepta.
G = (
N
,
T
, P, $) = (Q, , P, q
0
)
es decir

N
= Q, los estados del autmata determinan los smbolos noterminales de la gramtica

T
= , los smbolos del autmata determinan los smbolos terminales de la gramtica
$ = q
0
, el estado inicial del autmata determina el smbolo inicial de la gramtica
El sistema de producciones P est dado por:
Si (q, ) = p es una transicin del AFD, con p, q Q y , entonces aadimos a P
la produccin q p.
Si (q, ) = p es una transicin del AFD, con q Q, p F y , entonces aadimos
a P la produccin q .
Si q
0
F, entonces aadimos a P la produccin q
0
.
Ejemplo:
afdabc
a b c
= q
0
q
0
q
1
q
2
q
1
q
1
q
2
q
2
q
2
Dr. Arno Formella TALF v6 57
Entonces el sistema de producciones P de la gramtica ser:
P = q
0
aq
0
[ a [ bq
1
[ b [ cq
2
[ c [ , q
1
bq
1
[ b [ cq
2
[ c, q
2
cq
2
[ c
Sea G = (
N
,
T
, P, $) una gramtica lineal por la derecha, es decir, P
N
(
T
.
N

T
) $ .
Construimos una autmata nito M con L(M) = L(G), es decir, el autmata acepta el mismo
lenguaje que la gramtica genera.
M = (, Q, , q
0
, F) = (
T
,
N
f, , $, f)
es decir,

T
= , los smbolos terminales de la gramtica determinan los smbolos del autmata
Q =
N
f, los smbolos noterminales de la gramtica determinan los estados del
autmata, y aadimos un nuevo estado f, es decir, f /
N
q
0
= $, el smbolo inicial de la gramtica determina el estado inicial del autmata
Las transiciones estn dadas por:
Si A B es una produccin de G, con A, B
N
y
T
, entonces aadimos la
transicin (A, ) = B.
Si A es una produccin de G, con A
N
y
T
, entonces aadimos la
transicin (A, ) = f.
Si $ es una produccin de G, entonces aadimos la transicin ($, ) = f.
Observamos que el autmata construido es un autmata nito nodeterminista (AFND) que
podemos convertir en un AFD si hace falta.
Ejemplo:
Para la gramtica de arribarenombrando los smbolosconvertimos
P = $ a$ [ a [ bA [ cB [ c [ , A bA [ b [ cB [ c, B cB [ c
a la tabla de transiciones
a b c
= $ $, f A B, f
A A, f B, f
B B, f
f
graafd
Dr. Arno Formella TALF v6 58
8.2. Equivalencia entre gramticas lineales por la derecha y lin-
eales por la izquierda
Como era de esperar, gramticas lineales por la derecha y gramticas lineales por la izquierda
describen el mismo fenmeno, es decir, generan los lenguajes regulares.
Sea G = (
N
,
T
, P, $) una gramtica lineal por la derecha, es decir, P
N
(
N
.
T

T
) $ .
Construimos una gramtica G

= (

N
,
T
, P

, $) lineal por la izquierda con el siguiente algorit-


mo en cuatro pasos:
1. Si el smbolo inicial $ de G aparece a la derecha en una produccin de P, se sustitue $ en
dichas reglas de la siguiente manera:
Se introduce un nuevo smbolo noterminal $

, es decir,

N
=
N
$

.
Por cada regla de forma $ con
N
.
T

T
se crea una nueva regla
$

.
Cada regla de forma X $ (X
N
,
T
) se sustitue por X $

.
Si $ P, se aade para cada regla X $ (X
N
,
T
) la regla
X .
Con esas modicaciones obtenemos un nuevo sistema de producciones P y un alfabeto de
variables o bien

N
=
N
o bien

N
=
N
$

.
2. Se crea un grafo dirigido con las siguientes propiedades:
El conjunto de nodos es

N
.
Se aade una arista entre los nodes Ay B con atributo , si existe una regla A B
en P.
Se aade una arista entre los nodes A y con atributo , si existe una regla A
en P.
Se aade una arista entre los nodes $ y con atributo , si existe la regla $ en
P.
3. Se inverte el grafo, ms preciso:
Se intercambian los nodos $ y .
Se invierte la direccin de todas las aristas.
4. Se transforma el grafo obtenido en el conjunto de reglas P

:
Para cada arista entre A y B con atributo se crea una regla A B (A

N
, B

N
y
T
).
Dr. Arno Formella TALF v6 59
Ejemplo: Partimos de la gramtica
G = ($, A, 0, 1, $ [ 1A, A 0$ [ 0, $)
1. el smbolo inicial $ aparece a la derecha entonces:
Introducimos un nuevo smbolo noterminal $

.
Aadimos la regla $

1A.
Sustituimos la regla A 0$ por A 0$

siendo $ P, aadimos la regla A 0 (pero que ya est en P)


Queda el sistema de producciones intermedio como
P = $ [ 1A, A 0$

[ 0, $

1A
2. El grafo reejando dichas reglas es:
graphldli
3. Y el grafo invertido es:
igraphldli
4. con lo cual obtenemos el conjunto de reglas:
P

= $ [ A0, A $

1 [ 1, $

A0
8.3. Lema de bombeo
Siendo a

una expresin regular, podemos construir un autmata nito que acepta el lenguaje
as denido, tambin podemos construir para cualquier n IN jo un autmata nito adecuado
(a
n
b
n
sera una expresin regular extendida que dene el lenguaje correspondiente que contiene
una sola palabra).
Pero no podemos construir un autmata nito que acepte el lenguaje:
L
ab
= a
n
b
n
[ n IN = , ab, aabb, aaabbb, . . .
donde el parmetro n no es jo, sino se quiere que haya tantas as como bs.
Por qu no podemos construir tal autmata?
Una respuesta ya dimos con el teorema de Myhill-Nerode. Aqu vemos otra.
Dr. Arno Formella TALF v6 60
asumimos que tengamos un autmata nito M con k estados que acepta L
ab
anotamos los estados de M despus de haber ledo las palabras a
i
para i = 0, . . . , k (son
k + 1 palabras)
pues sern (usando la ampliacin de la funcin ):

(q
0
, ),

(q
0
, a),

(q
0
, aa),

(q
0
, aaa), . . . ,

(q
0
, a
k
)
Entonces, un estado tiene que aparecer por lo menos dos veces (se llama principio de los
cajones (pigeonhole principle): si se quiere poner ms calcetines que hay cajones en los
cajones, por lo menos en un cajn acaban por lo menos dos calcetines)
es decir:

(q
0
, a
i
) =

(q
0
, a
j
) para algunos i ,= j
Entonces:

(q
0
, a
i
b
j
) =

(q
0
, a
i
), b
j
)
=

(q
0
, a
j
), b
j
)
=

(q
0
, a
j
b
j
) F
pues, el autmata tambin acepta a
i
b
j
, i ,= j que no debe hacer. Una contradiccin!
Entonces asumimos mal, es decir, no existe un autmata que acepte L
ab
, o en otras pal-
abras, L
ab
no es regular.
Observamos el comportamiento del siguiente autmata:
afdcpl
w
0
= 110 10
w
1
= 110 010 10
w
2
= 110 010010 10
w
3
= 110 010010010 10
. . .
w
k
= x y
k
z
Lema (de bombeo para lenguajes regulares): Sea L un lenguaje regular (innito). Entonces
existe un n IN de tal manera que cada palabra w L con [w[ n se puede dividir en tres
partes, w = xyz cumplindose las tres propiedades:
1. y ,=
2. [xy[ n
Dr. Arno Formella TALF v6 61
3. para todos los k 0 : xy
k
z L
Comprobacin (ideas principales):
Sea L un lenguaje regular (innito).
Entonces existe un autmata nito determinista M que acepta L.
Sea n el nmero de estados de M (n = [Q[).
Sea w una palabra con [w[ n (tal palabra existe porque L es innito).
Entonces se visita un estado de M por lo menos dos veces.
Escogemos el estado que se visita la primera vez dos veces, le llamamos q.
La parte de w que se lee hasta llegar la primera vez a q llamamos x (puede ser que x = ).
La parte de w que se lee hasta llegar la segunda vez a q llamamos y (y ,= porque un bucle
en un AFD tiene aristas con smbolos).
La longitud [xy[ n porque hemos recorrido un camino dondo solo un estado aparece dos
veces.
La parte que sobra para terminar aceptando w llamamos z.
Entonces dividimos w en tres partes, es decir, w = xyz.
M acepta tanto xz, como xyz, como cualquier xy
k
z para todos los k 0 porque podemos
recorrer el bucle de y tantas veces como queremos (esto se debe comprobar formalmente
con induccin).
Entonces, comprobamos de nuevo que L
ab
no es regular, ahora usando el lema de bombeo:
Asumimos que L
ab
sea regular.
El lema de bombeo nos garantiza la existencia de un n tal que se cumplen las propiedades
para palabras w con [w[ n.
(Pensamos...): Elegimos w = a
n
b
n
. Obviamente w L
ab
y [w[ = 2n n.
El lema de bombeo nos garantiza la existencia de una particin w = xyz con y ,= ,
[xy[ n, y k 0 : xy
k
z L
ab
. (No conocemos la particin en concreto, pero sus
propiedades.)
Porque [xy[ n el prejo xy no contiene ninguna b.
Dr. Arno Formella TALF v6 62
Porque y ,= la subpalabra y contiene por lo menos una a.
Todos las bs estn en z.
Tanto xz = xy
0
z L
ab
como xy
1
z L
ab
pero xz contiene por lo menos una a menos que
xyz (hemos quitado y).
Eso es una contradiccin porque xz no debe estar dentro L
ab
.
Entonces L
ab
no puede ser regular.
Receta para el uso del lema de bombeo:
Dado un lenguaje L.
Queremos comprobar que L no es regular.
Comprobacin con contradiccin.
Asumimos que L sea regular.
El lema de bombeo garantiza la existencia de un n (pero no lo conocemos).
Buscamos w L (con un poco de sabidura) que depende de n, tal que [w[ n
El lema de bombeo garantiza la existencia de la particin de w = xyz cumpliendo las 3
propiedades.
Comprobamos (con un poco de sabidura) que, independiente de la particin de w en con-
creto (en los lmites de las primeras dos propiedades), se produce una contradiccin con la
tercera propiedad.
Podemos describir dicha receta tambin como un juego para dos personas:
Juego para un lenguaje L.
Jugador 1 selecciona n.
Jugador 2 selecciona w L con [w[ n.
Jugador 1 selecciona particin w = xyz con y ,= y [xy[ n.
Jugador 2 selecciona k.
si xy
k
z / L gana jugador 2, sino gana jugador 1.
Dr. Arno Formella TALF v6 63
si jugador 2 puede ganar siempre, entonces L no es regular.
El lema de bombeo es el jugador 1, quin es el jugador 2?
Otro Ejemplo:
L
quad
= 0
m
[ m es nmero cuadrado
es decir, todas las cadenas de ceros que tienen un nmero cuadrado de smbolos.
Asumimos que L
quad
sea regular.
El lema de bombeo nos garantiza la existencia de un n tal que se cumplen las propiedades
para palabras w con [w[ n.
(Pensamos...): Elegimos w = 0
n
2
. Obviamente w L
quad
y [w[ = n
2
n.
El lema de bombeo nos garantiza la existencia de una particin w = xyz con y ,= ,
[xy[ n, y k 0 : xy
k
z L
quad
. (No conocemos la particin en concreto, pero sus
propiedades.)
Tanto xyz L
quad
como xy
2
z L
quad
con y ,= .
Tenemos entonces:
n
2
= [xyz[ porque es w
< [xy
2
z[ porque es y tiene una longitud > 0
= [xyz[ +[y[
n
2
+n porque si [xy[ n tambin [y[ n
< n
2
+ 2n + 1
= (n + 1)
2
Eso es una contradiccin porque xy
2
z no puede ser una palabra cuya longitud es un nmero
cuadrado entre dos nmeros cuadrados consecutivos.
Entonces L
quad
no puede ser regular.
Dos comentarios ms:
Este lema de bombeo solo garantiza una propiedad para lenguajes regulares, es decir, todos
los lenguajes regulares (innitos) la tienen, pero pueden existir ms lenguajes que la ten-
gan, o en otras palabras, pueden existir lenguajes L donde encontramos tal n y la divisin
de w en xyz con todas las propiedades, pero L no es regular.
Dr. Arno Formella TALF v6 64
Con el lema de bombeo tambin se puede derivar: si tal w / L entonces xy
k
z / L (el
argumento es fcil: no hace falta que lleguemos a una estado nal en la comprobacin, lo
importante eran los caminos recorridos).
Reglas de mano:
Un lenguaje es regular si independientemente de la longitud de la palabra de entrada, hay
que memorizar solamente una cantidad constante de informacin (en el caso de L
ab
de-
beramos memorizar el nmero de as que no es constante).
La comprobacin formal se realiza con el lema de bombeo.
El lema de bombeo se usa para comprobar que un lenguaje no es regular, para comprobar
que es regular, por ejemplo, se construye un autmata nito, una expresin regular, o una
grmatica de tipo 3.
Pero ojo, existen lenguajes regulares que tienen que ver con nmeros:
L
tres
= w [ w es codicacin de un nmero divisible por 3
Ejercicio: contruye un autmata nito que acepte L
tres
.
Dr. Arno Formella TALF v6 65
9. Propiedades, algoritmos de decisin,
y aplicaciones para lenguajes regulares
La clase de los lenguajes regulares es una clase de alguna manera muy robusta: hay muchas
posibilidades de describir los lenguajes y exhiben un gran nmero de propiedades de clausura,
como vemos ahora.
9.1. Propiedades de lenguajes regulares
Sean L
1
y L
2
dos lenguajes regulares.
Unin: L = L
1
L
2
es regular, porque podemos construir una expresin regular para L, teniendo
las expresiones regulares para L
1
y L
2
, ms preciso: con L
1
= L() y L
2
= L() tenemos
L = L(( +))
Concatencin: L = L
1
.L
2
es regular, porque podemos construir una expresin regular para L,
teniendo las expresiones regulares para L
1
y L
2
, ms preciso: con L
1
= L() y L
2
= L()
tenemos L = L()
Clausura: L = L

1
es regular, porque podemos construir una expresin regular para L, teniendo
la expresin regular para L
1
, ms preciso: con L
1
= L() tenemos L = L(()

)
Complemento: L = L
1
=

L
1
es regular, porque podemos construir, dado un AFD com-
pleto M
1
que acepta L
1
, un AFD M que acepta L simplemente invertiendo sus esta-
dos nales, es decir, los estados no nales de M
1
sern los estados nales de M y los
nales se convierten en los no nales, entonces, si M
1
= (, Q, , q
0
, F) construimos
M = (, Q, , q
0
, QF).
Interseccin: L = L
1
L
2
es regular, porque con las reglas de DeMorgan obtenemos L =
L
1
L
2
= L
1
L
2
. Complemento y unin producen lenguajes regulares, como visto
antes. Dicha construccin es bastante laborosa, abajo vemos una construccin directa y
simple.
Diferencia: L = L
1
L
2
es regular, porque se puede expresar la diferencia como L = L
1
L
2
=
L
1
L
2
= L
1
(

L
2
) y las operaciones usadas mantienen la regularidad.
En vez de usar la lgica booleana, es decir, aplicando las reglas de DeMorgan, se puede construir
directamente un autmata que acepta el lenguaje L = L
1
L
2
.
Dr. Arno Formella TALF v6 66
La idea principal es, simular en paralelo en un solo autmata (digamos autmata de producto)
las transiciones de los dos autmatas (por ejemplo nitos deterministas y completas) para L
1
y
L
2
.
Entonces sean M
1
= (
1
, Q
1
,
1
, q
1
, F
1
) y M
2
= (
2
, Q
2
,
2
, q
2
, F
2
) los dos AFDs completos
que aceptan L
1
y L
2
, es decir, L
1
= L(M
1
) y L
2
= L(M
2
).
Construimos el AFD completo M que acepta L = L
1
L
2
= L(M) como
M = (, Q, , q
0
, F)
donde
asumimos que =
1
=
2
, es decir, usamos solamente los smbolos comunes. Es fcil
eliminar en M
1
y en M
2
todas las dependencias de smbolos superues antemano en caso
que haya.
Q = Q
1
Q
2
, es decir, el producto cartesiano de los estados de M
1
y M
2
.
es la funcin de transicin con
((p, q), ) = (
1
(p, ),
2
(q, ))
para p Q
1
, q Q
2
y .
q
0
= (q
1
, q
2
), es decir, la pareja de los dos estados iniciales
F = F
1
F
2
, es decir, todas las parejas donde ambos estados son estados nales de ambos
autmatas.
Ejemplo:
afdprod
Obviamente la construccin funciona igual con autmatas nitos nodeterministas (AFND).
Homomorsmo: a lo mejor lo incluyo.
9.2. Algoritmos de decisin de lenguages regulares
Pertenencia: w L? s, se puede contestar la pregunta (es decir, es un problema computable),
porque
construimos un AFD M que acepte L
simulamos su comportamiento leyendo la palabra w
Dr. Arno Formella TALF v6 67
si acabamos en un estado nal, w est en L, sino w no est en L
Vaciedad: L = ? s, se puede contestar la pregunta (es decir, es un problema computable)
porque
construimos un autmata que acepte L
analizamos el grafo del autmata para averiguar si existe un camino desde el estado
incial hacia un estado nal (dicho proceso resulta ms fcil, si se aade un estado y
se conecta todos los estados nales a este estado, as basta buscar un camino entre el
estado inicial y el estado aadido)
si existe tal camino, entonces L no es vaco, sino L es vaco lrempty
Cardinalidad: [L[ < ? s, se puede contestar la pregunta (es decir, es un problema com-
putable) porque
construimos un autmata que acepte L
analizamos el grafo del autmata para averiguar si existe un ciclo en un camino entre
el estado inicial y algn estado nal
si existe tal ciclo, entonces L es innito, sino L es nito
Igualidad: L
1
= L
2
? s, se puede contestar la pregunta (es decir, es un problema computable)
porque
construimos los autmatas nitos deterministas y mnimos que acepten L
1
y L
2
comparamos la estructura de los grafos de ambos autmatas
si son iguales, entonces ambos lenguajes son iguales, sino son diferentes
(Nota: comparar dos grafos generales y decidir si son iguales, es decir, el problema de
isomorfa de grafos, es un problema que se puede calcular, pero todava no se conoce
el algoritmo ptimo. Para los AFD mnimos se reduce la complejidad porque las
aristas llevan atributos y se conoce ambos estados iniciales que tengan que coincidir.
)
9.3. Aplicaciones para lenguajes regulares
Anlisis sintctico: El trabajo de un compilador es la traduccin de algn cdigo fuente (escrito
en un lenguaje de programacn, es decir, el cdigo fuente no es nada ms que una palabra
(larga) sobre el alfabeto de los smbolos permitidos) en una serie de instrucciones para un
procesador.
En la primera fase, el compilar analiza lexicogrcamente el texto, es decir, transforma con
la ayuda de autmatas nitos, el texto continuo en una secuencia de entidades, llamadas
token, por ejemplo, palabras claves, valores numricos, operadores, comentarios, etc.
Dr. Arno Formella TALF v6 68
Existen herramientas para el desarrollador que ayudan en la construccin de dichos aut-
matas, cuyas entradas suelen ser expresiones regulares y cdigo de accin y cuyas salidas
son programas que realizan la tarea del anlisis lexicogrco. Un ejemplo es lex para un
sistema Unix.
Bsqueda de palabras en texto: Existen herramientas para el desarrollador que ayudan en la
bsqueda de secuencias de texto descritas por expresiones regulares. Un ejemplo es grep
para un sistema Unix o comandos internos a editores como el vi o emacs.
Diagramas de estados en UML: El lenguaje UML (unied modeling language) se usa para la
descripcin durante el proceso de desarrollo de software. El lenguaje grco usa diferentes
tipos de diagramas para este n. Uno de ellos son los diagramas de estados que visualizan
el cambio de estados de los objetos debido al paso de mensajes entre ellos.
Dr. Arno Formella TALF v6 69
10. Lenguajes libres de contexto
Lenguajes que ya hemos visto:
L
ab
= a
n
b
n
[ n 0
L
abc
= a
n
b
n
c
n
[ n 0
L
pal
= w [ w 0, 1

, w = vv
R

L
dup
= w [ w 0, 1

, w = vv
L
quad
= 0
n
2
[ n nmero cuadrado
L
prim
= 0
n
[ n nmero primo
L
()
= w [ w (, )

, w correcto
Una gramtica libre de contexto es una cudrupla
G = (
N
,
T
, P, $)
donde

N
es un alfabeto de smbolos noterminales (o variables)

T
es un alfabeto de smbolos terminales (o constantes)
P
N
(
N

T
)
+
$ es un sistema de producciones (o reglas)
$
N
es el smbolo inicial
Es decir, la denicin de las gramticas libres de contexto nos da mucha libertad para el sistema
de producciones.
Por eso (y tambin para otros objetivos como por ejemplo mostrar que existe un tipo de autmata
que justamente acepta lenguajes libres de contexto como veremos en adelante) se ha desarrollado
formas normales de la representacin de gramticas libres de contexto, es decir, se transforma el
sistema de producciones de la gramtica de tal manera que no se vara el lenguaje generado pero
las reglas tengan cierta propiedad.
Especialmente la denicin arriba exluye reglas de forma X siendo X un smbolo no
terminal diferente a $. Sin embargo, si permitesemos tales producciones, es decir, permitir P

N
(
N

T
)

, obtendramos los mismos lenguajes, porque, como veremos a continuacin,


dichas producciones se pueden eliminar sin cambiar el lenguaje que genera la gramtica.
Dr. Arno Formella TALF v6 70
10.1. Forma Normal de Chomsky
Sea G = (
N
,
T
, P, $) una gramtica con P
N
(
N

T
)

y X
N
un smbolo
noterminal (o una variable). Podemos clasicar tales smbolos X en tres clases:
variables acesibles: si existe una derivacin desde el smbolo inicial que contiene X, es decir,
existe $

X donde ,

.
variables generativas: si existe una derivacin desde el la variable que produce una sentencia
w, es decir, existe X

w donde w

T
.
variables tiles: si existe una derivacin desde el smbolo inicial usando X que produce una
sentencia w, es decir, existe $

w donde ,

y w

T
.
(Nota: ser acesible y generativo no signica ser til, pero cada smbolo util es acesible y gener-
ativo.
Una gramtica est en forma normal de Chomsky (FNC)
si G (es decir, su
N
) solamente contiene variables tiles y
si todas las producciones de G (es decir, en su P) son
o bien de la forma X Y Z con X, Y, Z
N
o bien de la forma X con X
N
y
T
si $ (es decir, el smbolo inicial de G) no aparece al lado derecho de ninguna produccin,
tambin est permitido que $ P.
La tercera condicin es necesaria para poder derivar . Si $ aparece a la derecha, primero habr
que sustituir las producciones implicadas adecuadamente como lo vimos en la conversin de una
gramtica lineal por la derecha a una gramtica lineal por la izquierda.
Observamos:
la primera condicin garantiza que todas las variables son necesarias para derivar por lo
menos una sentencia.
la segunda condicin garantiza que un rbol de derivacin es un rbol binario.
Obviamente cualquier gramtica en forma normal de Chomsky es una gramtica libre de contexto
que se verica directamente analizando la forma de producciones permitidas.
Pero tambin es valido la otra direccin: para cualquier lenguaje libre de contexto existe una
gramtica en forma normal de Chomsky, que genera el mismo lenguaje.
Dr. Arno Formella TALF v6 71
La comprobacin de este hecho detallamos con la siguiente construccin, donde a partir de una
gramtica libre de contexto dada elaboramos una nueva gramtica en forma normal de Chomsky.
Sea L un lenguaje libre de contexto y G = (
N
,
T
, P, $) una gramtica que genere L (es decir
L = L(G)).
La construccin sigue 5 pasos (asumimos que / L, eso remediamos al nal):
1. eliminamos las variables intiles
2. modicamos las reglas para que no haya mezcla de variables y constantes en las partes
derechas de las producciones y para que todas las reglas con constantes tengan la forma
X
3. sustituimos las reglas cuya longitud de su parte derecha es > 2
4. sustituimos las reglas de tipo X
5. sustituimos las reglas de tipo X Y , las reglas unitarias.
Las gramticas despus de cada paso llamamos G = G
0
, G
1
, G
2
, . . . , G
5
= G
FNC
respectiva-
mente.
Usamos la siguiente gramtica inicial
G
0
= ($, A, B, C, D, E, F, G, a, b, c, P
0
, $)
donde P
0
contenga las siguientes producciones:
$ bDD [ Ca [ bc
A B [ aCC [ baD
B cBD [ [ AC
C bD [ aBA
D CD [ a [ EF
E Eb
F a [ G
G b [ F
como ejemplo para realizar todos los pasos.
1. Sabiendo que una variable es intil si es nogenerativa o inacesible realizamos dos subpa-
sos:
a) eliminamos primero el conjunto N de las variables nogenerativas (y todas las reglas
con ellas) llamando a la gramtica resultante G

1
,
Dr. Arno Formella TALF v6 72
b) eliminamos despus el conjunto I de las variables inacesibles (y todas las reglas con
ellas).
Para ello recorremos en forma estructurada las variables y reglas:
a) para calcular N empezamos con aquellas variables que producen directamente sen-
tencias (incluyendo ) y seguimos el uso de reglas con dichas variables para producir
as sucesivamente sentencias (o en otras palabras: seguimos las reglas desde el lado
derecho hacia el lado izquierdo para obtener as la informacin sobre las variables).
Una forma de realizar dicho recorrido es empezar con N =
N
y borrar del conjunto
todas aquellas variables que o bien directamente deriven una sentencia o bien lo hacen
indirectamente.
Se observa que solamente E es un smbolo nogenerativo, es decir, N = E, P

1
entonces es:
$ bDD [ Ca [ bc
A B [ aCC [ baD
B cBD [ [ AC
C bD [ aBA
D CD [ a
F a [ G
G b [ F
b) para calcular I empezamos con el smbolo inicial y veremos a cuales de las variables
se puede llegar directamente y seguimos el uso de reglas con dichas variables para
llegar as sucesivamente a nuevas variables (o en otras palabras: seguimos las reglas
para obtener as la informacin sobre las variables acesibles). Dicho algoritmo es
una exploracin de un grafo de dependencia parecido al algoritmo que vimos para
detectar estados noacesibles en un autmata nito.
Se observa que F, G son los smbolos inacesible, es decir, I = F, G, P
1
entonces
es:
$ bDD [ Ca [ bc
A B [ aCC [ baD
B cBD [ [ AC
C bD [ aBA
D CD [ a
Entonces G
1
no contiene smbolos intiles.
Dr. Arno Formella TALF v6 73
2. Aadimos para cada smbolo terminal una regla W

y sustituimos en todas las reglas


de P
1
, P
2
entonces es:
$ W
b
DD [ CW
a
[ W
b
W
c
A B [ W
a
CC [ W
b
W
a
D
B W
c
BD [ [ AC
C W
b
D [ W
a
BA
D CD [ W
a
W
a
a
W
b
b
W
c
c
Entonces P
2
solamente contiene reglas con partes derechas siendo , un smbolo terminal,
o una palabra de variables.
3. Sustituimos cada regla del tipo X Y
1
Y
1
. . . Y
k
con k > 2 por las reglas:
X Y
1
X
1
X
1
Y
2
X
2
.
.
.
.
.
.
X
k3
Y
k2
X
k2
X
k2
Y
k1
Y
k
donde las X
i
son nuevas variables, P
3
entonces es:
$ W
b
$
1
[ CW
a
[ W
b
W
c
$
1
DD
A B [ W
a
A
1
[ W
b
A
2
A
1
CC
A
2
W
a
D
B W
c
B
1
[ [ AC
B
1
BD
C W
b
D [ W
a
C
1
C
1
BA
D CD [ W
a
W
a
a
W
b
b
W
c
c
Dr. Arno Formella TALF v6 74
Entonces P
3
solamente contiene reglas con partes derechas siendo , un smbolo terminal,
o una palabra de una o dos variables.
4. Eliminamos las reglas que producen , ojo! tenemos que distinguir entre variables que
solamente producen y aquellas que entre otras cosas producen .
Entonces, el paso se realiza en 3 partes:
Calculamos los conjuntos de variables
E = V [ V

(las variables que posiblemente producen ) y


E

= V [ V

y no existe V

w con w ,= E (las variables que solo


producen ).
Se calculan los conjuntos aplicando el mismo algoritmo que usamos en el primer
paso para detectar variables nogenerativas.
Aadimos para cada regla del tipo X Y Z
X Y si Y / E

y Z E
X Z si Y E y Z / E

.
Eliminamos
todas las reglas de tipo X ,
todas las reglas de tipo X Y con Y E

, y
todas las reglas de tipo X Y Z con Y, Z E

.
En el ejemplo tenemos: E = A, B, C
1
, E

= , y por eso P
4
es:
$ W
b
$
1
[ CW
a
[ W
b
W
c
$
1
DD
A B [ W
a
A
1
[ W
b
A
2
A
1
CC
A
2
W
a
D
B W
c
B
1
[ AC [ C
B
1
BD [ D
C W
b
D [ W
a
C
1
[ W
a
C
1
BA [ A [ B
D CD [ W
a
W
a
a
W
b
b
W
c
c
5. Para eliminar las reglas unitarias, es decir, reglas de tipo X Y procedemos:
Dr. Arno Formella TALF v6 75
Calculamos el conjunto de las reglas unitarias U = (X, Y ) [ X

Y (ojo! no
basta con (X, Y ) U si X Y , hay que calcular la clausura transitiva). Dicho
clculo se realiza de forma parecida como lo vimos para el clculo de la clausura
transitiva de las transiciones en los AFND.
Partimos del conjunto que contiene todas las reglas unitarias del sistema de produc-
ciones, es decir
U
1
= (X, Y )[X Y P
Despus construimos U
2
insertando para cada par de parejas (X, Y ), (Y, Z) U
1
la pareja (X, Z), o en general, construimos U
i
insertando para cada par de parejas
(X, Y ), (Y, Z)

j<i
U
j
la pareja (X, Z).
Seguimos con el procedimiento hasta que encontremos U
i
vaca para cierto i, es decir,
no se ha aadido nada ms. (El ndice i de U
i
nos indica con cuantos saltos como
mucho podemos llegar.) El algoritmo termina (porque el nmero de producciones es
nito) y nalmente obtenemos
U =

_
i=1
U
i
Nota: El clculo de la clausura transitiva en un grafo dirigido es una operacin que
se necesita en muchos mbitos de la informtica (por ejemplo en bases de datos rela-
cionadas). Nosotros ya lo usamos en el contexto de los autmatas nitos. El algoritmo
especicado arriba tiene un tiempo de ejecucin cuadrtico en el nmero de produc-
ciones iniciales. Los mejores algoritmos tienen un comportamiento de O(ne +n+e)
en tiempo de ejecucin (donde n es el nmero de nodos y e el nmero de aristas en
el grafo), pero algunos de ellos se comportan en casos prcticos linealmente respecto
al tamao de entrada (nmero de arista).
Para cada (X, Y ) U y para cada regla Y que no es regla unitaria, aadimos
una regla X .
Eliminamos todas las reglas unitarias.
$ W
b
$
1
[ CW
a
[ W
b
W
c
$
1
DD
A B [ W
a
A
1
[ W
b
A
2
A
1
CC
A
2
W
a
D
B W
c
B
1
[ AC [ C
B
1
BD [ D
C W
b
D [ W
a
C
1
[ W
a
C
1
BA [ A [ B
Dr. Arno Formella TALF v6 76
D CD [ W
a
W
a
a
W
b
b
W
c
c
En el ejemplo tenemos:
U
1
= (A, B), (B, C), (B
1
, D), (C, W
a
), (C
1
, A), (C
1
, B), (D, W
a
)
U
2
= (A, C), (B, W
a
), (B
1
, W
a
), (C
1
, C)
U
3
= (A, W
a
), (C
1
, W
a
)
U
4
=
y por eso P
5
, el sistema de producciones nal, queda en:
$ W
b
$
1
[ CW
a
[ W
b
W
c
$
1
DD
A W
c
B
1
[ AC [ W
a
A
1
[ W
b
A
2
[ W
b
D [ W
a
C
1
[ a
A
1
CC
A
2
W
a
D
B W
c
B
1
[ AC [ W
b
D [ W
a
C
1
[ a
B
1
BD [ CD [ a
C W
b
D [ W
a
C
1
[ a
C
1
BA [ W
a
A
1
[ W
b
A
2
[ W
c
B
1
[ AC [ W
b
D [ W
a
C
1
[ a
D CD [ a
W
a
a
W
b
b
W
c
c
Observamos en la construccin:
En ningn paso hemos aadido variables intiles.
Si hemos borrado reglas, hemos asegurado que todas las variables siguen siendo tiles.
Despus de cada paso la gramtica resultante genera el mismo lenguaje, es decir, L(G
0
) =
L(G
1
) = . . . = L(G
5
).
Como se observa, la gramtica G
5
es en forma normal de Chomsky.
Dr. Arno Formella TALF v6 77
Si el lenguaje de partida L contiene la palabra vaca ( L) entonces se detecta en el pasa 4
que el smbolo inicial pertenece a E (o incluso a E

), en este caso eliminamos con un nuevo


smbolo, por ejemplo $

, la aparencia de $ en los lados derechos y aadimos la regla $ . Tal


gramtica sigue estando en forma normal de Chomsky y genera L.
Notas:
El clculo de los conjuntos N, I, E, E

, y U que se necesitan para sucesivamente modicar


los sistemas de producciones se realiza con un recorrido estructurado sobre las variables y
producciones.
Dado que durante el proceso hemos eliminado producciones, puede ser que tambin en
el alfabeto de los smbolos terminales
T
hay smbolos superuos, es decir, que no se
pueden producir con las producciones restantes. Dichos smbolos se pueden borrar de
T
sin que se cambie el lenguaje generado.
Cuando eliminamos las reglas unitarias hemos eliminado implctamente las reglas innece-
sarias de tipo X X que tambin se podran borrar ya antemano en un paso previo.
Existen otras fuentes que primero realizan la eliminacin de las reglas nulas y de las reglas
unitarias antes de demezclar y reducir las partes derechas de las reglas. Eso es posible
pero el clculo de E y E

es ms complejo y las reglas de ampliacin y eliminacin no se


limitan a dos, respectivamente tres, casos simples como descritos arriba en el paso 4.
10.2. Forma Normal de Greibach
Veremos otra posible normalizacin de gramticas que nos sirve ms adelante para construir
cierto tipo de autmatas.
Una gramtica es en forma normal de Greibach (FNG) si
G (es decir, su
N
) solamente contiene variables tiles
todas las producciones de G (es decir, en su P) son de la forma X donde
T
y

N
, es decir, todas las reglas tienen como primer smbolo en sus partes derechas un
smbolo terminal que es seguido por una palabra de variables.
(porque as no se podra derivar ) si $ (es decir, el smbolo inicial de G) no aparece al lado
derecho de una produccin, tambin est permitido que $ P
Obviamente cualquier gramtica en forma normal de Greibach es una gramtica libre de contexto
que se verica directamente analizando la forma de producciones permitidas.
Una interesante propiedad es: para cualquier lenguaje libre de contexto existe una gramtica en
forma normal de Greibach, que genera el lenguaje.
Dr. Arno Formella TALF v6 78
La comprobacin de este hecho detallamos con la siguiente construccin, donde a partir de una
gramtica libre de contexto dada elaboramos una nueva gramtica en forma normal de Greibach.
Sea L un lenguaje libre de contexto y G = (
N
,
T
, P, $) una gramtica que genere L (es decir
L = L(G)).
La construccin sigue 4 pasos (asumimos que / L, eso remediamos al nal):
1. construimos una gramtica equivalente en forma normal de Chomsky
2. sustituimos las reglas recursivas a la izquierda, es decir, reglas de tipo X XY
3. establecemos un orden en las variables, es decir
N
= X
1
, X
2
, . . . , X
n
de tal manera
que todas las reglas sern de tipo X
i
X
j
Y con i < j, Y
N
4. sustituimos las reglas que no tengan un smbolo terminal como primer smbolo en su parte
derecha.
Las gramticas despus de cada paso llamamos G = G
0
, G
1
, G
2
, . . . , G
4
= G
FNG
respectiva-
mente.
Usamos la misma gramtica inicial como en el apartado anterior
G
0
= ($, A, B, C, D, E, F, a, b, c, P
0
, $)
donde P
0
contenga las siguientes producciones:
$ bDD [ Ca [ bc
A B [ aCC [ baD
B cBD [ [ AC
C bD [ aBA
D CD [ a [ EF
E Eb
F a
como ejemplo para realizar todos los pasos.
1. La transformacin a FNC hicimos arriba. Entonces ya tenemos P
1
como
$ CW
a
[ W
b
$
1
[ W
b
W
c
$
1
DD
A AC [ W
c
B
1
[ W
a
A
1
[ W
b
A
2
[ W
b
D [ W
a
C
1
[ a
A
1
CC
Dr. Arno Formella TALF v6 79
A
2
W
a
D
B AC [ W
c
B
1
[ W
b
D [ W
a
C
1
[ a
B
1
BD [ CD [ a
C W
b
D [ W
a
C
1
[ a
C
1
AC [ BA [ W
a
A
1
[ W
b
A
2
[ W
c
B
1
[ W
b
D [ W
a
C
1
[ a
D CD [ a
W
a
a
W
b
b
W
c
c
solo reordenado, para que aparezcan las partes derechas con variables al principio al comien-
zo de las listas.
2. Para cada produccin recursiva a la izquierda, es decir, regla de tipo X X con
X
N
y se realiza los siguientes 3 pasos:
se sustitue X X por X Y siendo Y una nueva variable
se aade las reglas Y Y [
para cada regla X se aade X Y si no comienza con X
En P
1
hay una regla recursiva a la izquierda: A AC. Entonces, la sustituimos por
A CA
3
, aadimos A
3
CA
3
[ C y aadimos las dems reglas para A, y resulta el
conjunto P
2
:
$ CW
a
[ W
b
$
1
[ W
b
W
c
$
1
DD
A CA
3
[ W
c
B
1
[ W
a
A
1
[ W
b
A
2
[ W
b
D [ W
a
C
1
[ a [
W
c
B
1
A
3
[ W
a
A
1
A
3
[ W
b
A
2
A
3
[ W
b
DA
3
[ W
a
C
1
A
3
[ aA
3
A
1
CC
A
2
W
a
D
A
3
CA
3
[ C
B AC [ W
c
B
1
[ W
b
D [ W
a
C
1
[ a
B
1
BD [ CD [ a
C W
b
D [ W
a
C
1
[ a
C
1
AC [ BA [ W
a
A
1
[ W
b
A
2
[ W
c
B
1
[ W
b
D [ W
a
C
1
[ a
D CD [ a
W
a
a
W
b
b
Dr. Arno Formella TALF v6 80
W
c
c
Entonces las reglas en P
2
tienen de nuevo diferentes longitudes en sus partes derechas
(incluso puede ser que haya reglas unitarias).
3. (por incluir)
4. (por incluir)
Dado que con una gramtica en forma normal de Greibach se genera con cada produccin exac-
tamente un smbolo terminal, cada palabra derivable con tal gramtica tiene una derivacin igual
a la longitud de la palabra.
Ojo, eso no signica que se puede encontrar una derivacin en tiempo lineal, porque es posible
que en un momento se puede aplicar ms de una regla.
10.3. Lema de bombeo para lenguajes libres de contexto
Igual como lo hemos visto para lenguajes regulares existe una propiedad que todos los lenguajes
libres de contexto cumplen:
Lema (de bombeo para lenguajes libres de contexto): Sea L un lenguaje libre de contexto
(innito). Entonces existe un n IN de tal manera que cada palabra z L con [z[ n se puede
dividir en cinco partes, z = uvwxy cumplindose las tres propiedades:
1. [vx[ 1
2. [vwx[ n
3. para todos los k 0 : uv
k
wx
k
y L
Idea de la comprobacin:
partimos de la FNC de la gramtica, es decir, las reglas son de las formas X Y Z o
X
el rbol para una palabra (sucientemente larga) ser un rbol binario
si [z[ 2
k+1
entonces el rbol tiene una altura por lo menos de k+1, es decir, se encuentran
k + 1 variables en un camino desde la raz hacia alguna hoja
entonces, si hay solamente k variables en el alfabeto
N
, se tiene que repetir una variable,
sea X, en un camino desde la raz hasta una hoja
Dr. Arno Formella TALF v6 81
observamos los dos subrboles con dicha variable desde abajo
lblibre0
vemos: [vx[ 1 porque se tiene que derivar algo desde X dado que tenemos una FNC y
el rbol se bifurca en X
vemos: [vwx[ n porque la altura del subrbol hacia el segundo X es como mucho k
vemos: para todos los k 0 : uv
k
wx
k
y L porque podemos eliminar v y x o sustituir
cuantas veces como queremos el subrbol debajo de X adecuadamente
lblibre1
El uso del lema de bombeo es parecido a su uso en el caso de los lenguajes regulares, se puede
comprobar que ciertos lenguajes no son libres de contexto.
Ejemplo: Investigamos L
abc
= a
n
b
n
c
n
[ n 1.
Asumimos que L
abc
sea libre de contexto.
El lema de bombeo nos garantiza la existencia de un n tal que se cumplen las propiedades
para palabras z con [z[ n. (No conocemos n en concreto, solo su existencia.)
(Pensamos...): Elegimos z = a
n
b
n
c
n
. Obviamente z L
abc
y [z[ = 3n n.
El lema de bombeo nos garantiza la existencia de una particin z = uvwxy con [vx[ 1,
[vwx[ n, y k 0 : uv
k
wx
k
y L
abc
. (No conocemos la particin en concreto, pero sus
propiedades.)
(Pensamos...): Porque [vwx[ n el vwx no puede contener as, bs, y cs al mismo tiempo.
Entonces vx tampoco, es decir, vx contiene como mucho dos smbolos diferentes.
Porque [vx[ 1 la subpalabra vx contiene por lo menos un smbolo.
uv
0
wx
0
y = uwy L
abc
pero hemos borrado como mucho dos tipos de smbolos.
Eso es una contradiccin.
Entonces L
abc
no puede ser libre de contexto.
Dr. Arno Formella TALF v6 82
11. Autmatas nitos con pila (AFP)
11.1. Motivacin
Ya sabemos L
ab
= a
n
b
n
[ n IN no es regular (comprobamos con el lema de bombeo o con
el teorema de MyhillNerode).
Pero L
ab
es libre de contexto con la siguiente gramtica:
G = (
N
,
T
, P, $)
= ($, a, b, $ a$b [ , $)
Otro ejemplo parecido es: expresiones matemticamente correctas de diferentes tipos de parn-
tesis
T
= [, ], , ), (, ), por ejemplo, ( ( ] ] ) ) ) es incorrecto y [ ( [ ] ) ( ) ) ] es correcto.
L
()
= w [ w

T
, w es correcto
es libre de contexto, con el sistema de producciones
P = $ $$ [ ( $ ) [ [ $ ] [ $ ) [
L
()
no es regular, porque ya [
n
]
n
no es regular.
Podemos construir un tipo de autmata que acepta una palabra de L
()
?
Idea: usamos una pila para memorizar lo que se ha ledo:
Las parntesis que abren ponemos en la pila.
Si vemos una parentesis que cierre la cima de la pila tiene que ser su homloga y la quita-
mos de la pila.
Al nal, la pila tiene que estar vaca.
Eso era bastante fcil, ampliamos las posibilidades algo ms, permitimos
que el autmata pueda tener varios (nmero nito) estados (parecido a los AFD, pero
veremos que basta con un estado);
Dr. Arno Formella TALF v6 83
que el autmata sea nodeterminista (veremos que habr una diferencia entre AFPDs y
AFPNDs);
que exista la posibilidad de transiciones ;
que acepte con pila vaca o con estados nales (veremos que ambas formas son equiva-
lentes);
que existan ms smbolos para la pila;
que se apile ms de un smbolo a la vez;
que se disponga de un smbolo inicial en la pila.
11.2. Autmatas nitos con pila nodeterministas (AFPND)
Un autmata nito con pila nodeterminista (AFPND) es una sptupla
M = (, , Q, , q
0
, c
0
, F)
donde
es un alfabeto de entrada.
es un alfabeto de pila ( = es posible).
Q es un conjunto de estados, [Q[ < .
q
0
Q es el estado inicial.
c
0
es el smbolo inicial de la pila.
F es el conjunto de estados nales (puede ser el conjunto vaca).
es la funcin de transicin
: Q( W
<
(Q

)
donde W
<
sea el conjunto de subconjuntos nitos.
Es decir, el comportamiento del autmata depende en cada transicin
del estado actual
posiblemente del siguiente smbolo de la entrada
del smbolo en la cima de la pila
y se modica el autmata en el sentido que
Dr. Arno Formella TALF v6 84
se cambia (posiblemente) del estado
se consume (posiblemente) el siguiente smbolo de la entrada
se modica (posiblemente) el contenido de la cima de la pila.
Para el ejemplo de arriba obtenemos el autmata
M
()
= ((, ), , ), [, ], (, , [, #, q
0
, q
1
, , q
0
, #, )
con
(q
0
, (, ) = (q
0
, ()
(q
0
, , ) = (q
0
, )
(q
0
, [, ) = (q
0
, [)
(q
0
, ), () = (q
0
, )
(q
0
, ), ) = (q
0
, )
(q
0
, ], [) = (q
0
, )
(q
0
, , #) = (q
1
, )
Observa
que escribimos en las expresiones arriba el contenido de la pila como los rabes: desde la
derecha hacia la izquierda,
que el autmata no est completo, pero se podra completar aadiendo transiciones ade-
cuados en un estado sin salida que ya no vara la pila.
Tambin podemos dibujar autmatas con pila, por ejemplo de la siguiente manera:
afp
Es decir, dibujamos el grafo parecido como lo hemos hecho para los AFND: los vrtices del
grafo representan los estados del autmata y las aristas representan las transiciones. Ampliamos
las etiquetas de las aristas con los cambios en la cima de la pila.
Podemos pensar de un autmata con pila como un dispositivo que lee desde una cinta con sm-
bolos, realiza cambios de estados internamente, y maneja una pila de la forma descrita:
autopila
Otro ejemplo; construimos un AFP para el lenguaje
L
vv
R = w [ w 0, 1

, w = vv
R

es decir, los palndromos con longitud par.


Idea:
Dr. Arno Formella TALF v6 85
Adivinamos (nodeterminista) dnde acaba v.
Copiamos toda la palabra v a la pila.
Vericamos el resto de w, que debe ser v
R
, con el contenido de la pila, es decir, la pila
debe estar vaca una vez haber ledo toda la palabra w.
Un AFPND ser el siguiente:
M
vv
R = (0, 1, 0, 1, #, q
0
, q
1
, q
2
, , q
0
, #, )
con
(q
0
, 0, ) = (q
0
, 0)
(q
0
, 1, ) = (q
0
, 1)
(q
0
, , ) = (q
1
, )
(q
1
, 0, 0) = (q
1
, )
(q
1
, 1, 1) = (q
1
, )
(q
1
, , #) = (q
2
, )
afpvv
Cmo comprobamos que es correcto?
Dado que el contenido de la pila inuye en el comportamiento del autmata necesitamos una
notacin para describir los clculos del autmata.
La conguracin (o descripcin instantnea) C de un AFP M = (, , Q, , q
0
, c
0
, F) es la
tripla (q, u, v) donde
q Q es el estado actual
u

es lo que queda por leer de la entrada


v

es el contenido actual de la pila


La conguracin inicial C
0
entonces es (q
0
, w, c
0
).
Si el autmata est en conguracin C podemos denir que es una posible siguiente congu-
racin, es decir, despus de haber realizado un paso en el clculo.
C

= (q

, u, zv) es conguracin sucesora de C = (q, u, v) (es decir, es el siguiente


smbolo de la entrada y la cima de la pila), si (q

, z) (q, , ) y, para las transiciones ,


Dr. Arno Formella TALF v6 86
C

= (q

, u, zv) es conguracin sucesora de C = (q, u, v) (es decir, no se lee ningn smbolo


de la entrada y la cima de la pila), si (q

, z) (q, , ).
Observa, si la pila est vaca, no existe conguracin sucesora ninguna.
Escribimos C C

si C

es conguracin sucesora de C. Si existe una secuencia de congu-


raciones sucesoras de C hasta C

, es decir,
C = C
0
C
1
C
2
. . . C
n
= C

llamamos la secuencia un clculo del autmata y abreviamos con C

.
Un AFPND acepta una palabra w de entrada segn modus:
F = , es decir, acepta con pila vaca
M acepta w (q
0
, w, c
0
)

(q, , )
para cualquier estado q Q
F ,= , es decir, acepta en estado nal
M acepta w (q
0
, w, c
0
)

(f, , v)
con v

y f F.
El lenguaje aceptado por un autmata AFPND M es
L(M) = w [ M acepta w
En la siguiente seccin comprobamos que ambos mtodos de aceptacin son equivalentes para
los AFPND (pero no ser el caso para los AFPD, los autmatas nitos con pila deterministas,
que veremos ms adelante).
Comprobamos ahora que el M
vv
R es correcto, es decir, tenemos que comprobar que L(M
vv
R) =
L
vv
R.
Primero vericamos que M
vv
R acepta para cualquier palabra v 0, 1

la palabra w = vv
R
:
(q
0
, vv
R
, #)

(q
0
, v
R
, v
R
#)
(q
1
, v
R
, v
R
#)

(q
1
, , #)
(q
2
, , )
es decir, hemos encontrado un clculo y con eso sabemos que L
vv
R L(M
vv
R).
Luego comprobamos que M
vv
R solamente acepta palabras en L
vv
R.
(por incluir)
Dr. Arno Formella TALF v6 87
11.3. Equivalencia entre AFPNDs aceptando con pila vaca y acep-
tando en estado nal
Para cada AFPND M que acepta con pila vaca existe un AFPND M

que acepta en estado nal.


Idea de la comprobacin:
M

simula M
M

usa un nuevo smbolo c

0
como smbolo inicial de la pila
si despus de la simulacin de M dicho c

0
est en la cima de la pila, M

sabe que M
hubiese aceptado, es decir, M

acepta tambin yiendo a un estado nal.


Para el ejemplo de antes
L
vv
R = w [ w 0, 1

, w = vv
R

con el siguiente autmata que acepta con pila vaca


afpndpv
obtenemos el nuevo autmata que acepta en estado nal
afpndefpv
En general:
M = (, , Q, , q
0
, c
0
, )
M

= (, c

0
, Q q

0
, f,

, q

0
, c

0
, f)
con
q

0
, f / Q, es decir, son nuevos estados
c

0
/ , es decir, es un nuevo smbolo inicial

(q

0
, , c

0
) = (q
0
, c
0
c

0
), es decir, la primera transicin apila el antiguo smbolo inicial y
se va al antiguo estado inicial sin leer nada de la entrada
q Q, , :

(q, , ) = (q, , ),

(q, , ) = (q, , ), es decir, se simula


M
q Q :

(q, , c

0
) = (f, c

0
), es decir, si la pila solamente contiene el nuevo smbolo
inicial se va al estado nal.
Para cada AFPND M que acepta en estado nal existe un AFPND M

que acepta con pila vaca.


Idea de la comprobacin:
Dr. Arno Formella TALF v6 88
M

simula M
M

vaca desde cualquier estado nal de M su pila


tenemos que tener cuidado si M no termina en estado nal, pero su pila est vaca: colo-
camos antes de la simulacin un nuevo smbolo c

0
como smbolo inicial en la pila que no
se toca durante la simulacin de M.
Para el ejemplo
L = a
i
b
j
[ j i
con el siguiente autmata que acepta en estado nal
afpndef
(Primero observamos la consecuencia de la denicin de un clculo:
M acepta w (q
0
, w, c
0
)

(f, , v)
entonces, si sobran bs la pila estar vaca y no habr transicin ninguna, y por eso no llegamos a
con la entrada.)
Siguiendo la idea, obtenemos el nuevo autmata que acepta con pila vaca
afpndpvef
En general:
M = (, , Q, , q
0
, c
0
, )
M

= (, c

0
, Q q

0
, q

, q

0
, c

0
, )
con
q

0
, q

/ Q, es decir, son nuevos estados


c

0
/ , es decir, es un nuevo smbolo inicial

(q

0
, , c

0
) = (q
0
, c
0
c

0
), es decir, la primera transicin apila el antiguo smbolo inicial y
se va al antiguo estado inicial sin leer nada de la entrada
c

0
:

(q

, , ) = (q

, ), es decir, una vez en estado q

se vaca la pila sin


modicar la entrada
q Q, , :

(q, , ) = (q, , ), es decir, pasos normales de la simulacin


q QF, :

(q, , ) = (q, , ), es decir, se simula tambin las transiciones


mientras M no est en estado nal
q F, :

(q, , ) = (q, , ) (q

, ), es decir, saltamos al estado que vaca


la pila si ya estamos en estado nal
Dr. Arno Formella TALF v6 89
11.4. Equivalencia entre AFPNDs y gramticas libres de contexto
Para cada gramtica libre de contexto G existe un autmata nito con pila nodeterminista M
que acepta el mismo lenguaje, es decir, L(M) = L(G).
La comprobacin es constructiva.
Sea G = (
T
,
N
, P, $) una gramtica libre de contexto.
Podemos convertir la gramtica en su forma normal de Greibach (FNG), es decir todas las pro-
ducciones son del tipo: A con
T
y

N
o la produccin es $ si
L(G).
Construimos un AFPND M = (
T
,
N
, q, , q, $, ), (es decir, con un slo estado) que acepta
con pila vaca, donde
(q, ) (q, , A)
siempre que A sea una produccin en P y
(q, $) (q, , )
siempre que $ es una produccin en P.
Entonces, el autmata simula en un clculo la aplicacin de las reglas de la gramtica siempre
siguiendo la derivacin ms a la izquierda para la palabra en cuestin.
Ejemplo:
G = (a, b, $, A, B, C, P, $)
con
P = $ aBBC, A aAA [ b, B bBAC [ b, C b
que ya est en forma formal de Greibach, entonces el AFPND es:
M = (a, b, $, A, B, C, q, , q, $, )
con
(q, a, $) = (q, BBC)
(q, a, A) = (q, AA)
(q, b, A) = (q, )
(q, b, B) = (q, BAC), (q, )
(q, b, C) = (q, )
Dr. Arno Formella TALF v6 90
Para cada autmata nito con pila nodeterminista M existe una gramtica libre de contexto G
que genera el mismo lenguaje, es decir, L(G) = L(M).
La comprobacin es constructiva.
Sea M = (, , Q, , q
0
, c
0
, F) un AFPND.
Si F ,= podemos convertir el autmata en un AFPND que acepte con pila vaca.
Luego podemos asumir que todas las transiciones del autmata como mucho apilan dos smbo-
los a la pila, porque podemos introducir estados intermedios que apilan poco a poco todos los
smbolos necesarios sin leer ms de la entrada, en concreto,
sea (q, v) (p, , ) con v =
1

2
. . .
k
, , y k > 2 una transicin de tal tipo
aadimos los nuevos estados q
1
, q
2
, . . . , q
k2
a Q y sustituimos la transicin por
(q
1
,
k1

k
) (p, , )
(q
2
,
k2

k1
) (q
1
, ,
k1
)
. . .
(q,
1

2
) (q
k2
, ,
2
)
Observa que podemos realizar tal sustitucin igual en caso que el autmata ejecute una
transicin (es decir, arriba no se lee de la entrada sino ); entonces, para simplicar
escribimos

si leemos o bien un smbolo o bien .


En vez de introducir estados intermedios, tambin podemos introducir variables nuevos en
y realizar la operacin con transiciones que no leen de la entrada.
Entonces, asumimos que tengamos un AFPND que acepta con pila vaca y que apile en una
transicin como mucho dos smbolos a la vez.
Construimos una gramtica libre de contexto G = (,
N
, P, $), es decir, con los mismos sm-
bolos de entrada, y donde

N
est formado por las triplas [p, A, q] siendo p, q Q y A , y el smbolo $.
P es el conjunto de producciones donde aadimos
para cada estado q Q las reglas $ [q
0
, c
0
, q]
para cada transicin (q, ) (p,

, ) la regla [p, , q]

para cada transicin (q,


1
) (p,

, ) y cada estado r Q las reglas [p, , r]

[q,
1
, r]
Dr. Arno Formella TALF v6 91
para cada transicin (q,
1

2
) (p,

, ) y cada par de estados r, s Q las reglas


[p, , r]

[q,
1
, s][s,
2
, r]
observa que pueden existir reglas nulas en caso que

=
Entonces, la gramtica simula un clculo del autmata con una derivacin ms a la izquierda
para la palabra en cuestin.
Formalmente hay que comprobar la equivalencia
$

w (q
0
, w, c
0
)

(q, , )
es decir, si existe una derivacin tambin existe un clculo y al revs.
La comprobacin del lado izquierdo al lado derecho se realice mediante una induccin sobre la
longitud de una derivacin ms a la izquierda y la otra direccin mediante una induccin sobre la
longitud del clculo. El caso inicial, es decir, se aplica solamente una regla o se calcula solamente
una conguracin siguiente, se verica directamente a partir de la construccin.
Juntas ambas direcciones nos proporcionen la equivalencia entre las gramticas libres de
contexto y los autmatas nitos con pila nodeterministas.
En la primera parte de la comprobacin observamos que basta un solo estado en un AFPND
(si un AFPND tiene ms estados, podemos construir una gramtica equivalente, y despus
un AFPND con un solo estado).
En la segunda parte de la comprobacin observamos que basta con una gramtica en forma
normal de Greibach donde las producciones tengan como mucho 2 smbolos noterminales
en sus partes derechas (es decir, tambin en la FNG los rboles de derivacin pueden ser
rboles binarios como en la FNC).
11.5. Autmatas nitos con pila deterministas (AFPD)
Los AFPND, como el propio nombre ya dice, no son deterministas, es decir, pueden existir
varias posibles conguraciones siguientes, o en otras palabras, (q, , ) o (q, , ) son conjun-
tos conposiblementems de un elemento.
Para que un AFPND acepte una palabra de entrada w se ha exigido solamente la existencia de un
clculo que lee toda la palabra w y termina con pila vaca o en un estado nal.
Este hecho no es adecuado en la prctica, porque de alguna manera hay que comprobar todos
los posibles clculos para ver si existe uno que acepta. Por eso limitamos los autmatas para que
sean deterministas.
Podemos denir un autmata nito con pila determinista AFPD
Dr. Arno Formella TALF v6 92
M = (, , Q, , q
0
, c
0
, F)
igual que un AFPND introduciendo las siguientes restricciones
1. para cada q Q, , y permitimos como mucho una transicin, es decir:
[(q, , )[ +[(q, , )[ 1
Entonces, permitimos transiciones que son deterministas si consideramos la pila.
2. F ,= , es decir, el AFND acepta con estado nal.
Dado que para un AFPD existe como mucho una conguracin siguiente, es decir es una
funcin, los clculos se convierten en cadenas deterministas, y decimos, que el AFPD acepta una
palabra w si existe el clculo (q
0
, w, c
0
)

(f, , v) con f F.
Para AFPDs los dos criterios de parada no son equivalentes que se entiende analizando las com-
probaciones donde era escencial disponer de transiciones nodeterministas para saltar a un
estado adicional con el n de vaciar la pila.
Llamamos un lenguaje L libre de contexto determinista si L es aceptado por un autmata nito
con pila determinista.
Los lenguajes libres de contexto deterministas son un verdadero subconjunto de los lenguajes
libres de contexto, es decir, existen lenguajes que son libres de contexto pero no libres de contexto
determinista.
Ejemplo:
El lenguaje L = w [ w 0, 1, #, w = v#v
R
y v no contiene # es libre de contexto de-
terminista, porque se apila hasta encontrar el centro (que hemos marcado con #) y despus se
verica el resto de w con el contenido de la pila.
El lenguaje L = w [ w 0, 1, w = vv
R
es libre de contexto, como ya vimos, pero no es libre
de contexto determinista, porque, para decirlo de alguna manera, se necesita el nodeterminismo
para encontrar el centro, o en otras palabras, hay que comprobar todos los posibles clculos
vericando si uno de ellos llega a una aceptacin.
Obviamente los lenguajes regulares tambin son libres de contexto deterministas, porque si no
usamos la pila justamente un AFPD es un AFD.
Dr. Arno Formella TALF v6 93
12. Propiedades, algoritmos de decisin,
y aplicaciones para lenguajes libres de con-
texto
12.1. Propiedades de lenguajes libre de contexto
Sean L
1
y L
2
dos lenguajes libres de contexto. Asumimos que sus conjuntos de variables no
contengan smobolos comunes (si eso fuera el caso renombraramos adecuadamente).
Unin: L = L
1
L
2
es libre de contexto, porque podemos construir a partir de las gramticas
G
1
= (
1
T
,
1
N
, P
1
, $
1
) y G
2
= (
2
T
,
2
N
, P
2
, $
2
) con L
1
= L(G
1
) y L
2
= L(G
2
) la
gramtica G = (
1
T

2
T
,
1
N

2
N
, P
1
P
2
$ $
1
, $ $
2
, $) que es una
gramtica libre de contexto y obviamente genera todas las palabras tanto en L
1
como en
L
2
.
Eso no es el caso si nos limitamos a los lenguajes libres de contexto deterministas.
Concatencin: L = L
1
.L
2
es libre de contexto, porque podemos construir a partir de las
gramticas G
1
= (
1
T
,
1
N
, P
1
, $
1
) y G
2
= (
2
T
,
2
N
, P
2
, $
2
) con L
1
= L(G
1
) y L
2
=
L(G
2
) la gramtica G = (
1
T

2
T
,
1
N

2
N
, P
1
P
2
$ $
1
$
2
, $) que es una
gramtica libre de contexto y obviamente genera todas las palabras en L.
Eso no es el caso si nos limitamos a los lenguajes libres de contexto deterministas.
Clausura: L = L

1
es libre de contexto, porque podemos construir una gramtica libre de con-
texto a partir de la gramtica para L
1
, simplemente aadimos las producciones $

, $

$ siendo $ el nuevo smbolo inicial.


Interseccin: L = L
1
L
2
no es libre de contexto (en general), como demuestra el ejemplo:
L
1
= a
i
b
i
c
j
[ i, j > 0 y L
2
= a
i
b
j
c
j
[ i, j > 0 nos lleva a L = L
1
L
2
= a
i
b
i
c
i
[ i >
0 que no es libre de contexto como ya vimos.
Si connamos L
2
a lenguajes regulares, entonces la interseccin produce lenguajes libres
de contexto. El argumento es igual de constructivo como en el caso de dos lenguajes regu-
lares.
Complemento: L = L
1
=

L
1
no es libre de contexto (en general), porque si asumimos
que lo fuera y sabiendo que la unin lo es podramos derivar L
1
L
2
= L
1
L
2
como
libre de contexto, pero ya sabemos que la interseccin no genera siempre tal lenguajes.
Para los lenguajes libres de contexto determinista, el complemento genera un lenguaje libre
de contexto determinista, porque es fcil invertir un autmata determinista.
Dr. Arno Formella TALF v6 94
Diferencia: L = L
1
L
2
no es libre de contexto (en general), porque L =

L
2
= L
2
no es
libre de contexto.
12.2. Algoritmos de decisin de lenguages libres de contexto
Pertenencia: w L? s, se puede contestar la pregunta (es decir, es un problema computable)
porque
construimos un autmata que acepte L (por ejemplo en estado nal)
simulamos su comportamiento leyendo la palabra w
si acabamos en un estado nal, w est en L, sino w no est en L
dicha simulacin puede tener tiempo de clculo exponencial, otra posibilidad es
construimos una gramtica en forma normal de Greibach
dado que sus producciones siempre generan un smbolo basta con probar todas las
posibilidades de aplicar reglas hasta la longitud de la palabra
dicho proceso puede tener tiempo de clculo exponencial, otra posibilidad es
construimos una gramtica en forma normal de Chomsky
aplicamos el algoritmo de Cocke-Younger-Kasami que resuelve el problema en tiem-
po de orden O(n
3
).
Vaciedad: L = ? s, se puede contestar la pregunta (es decir, es un problema computable)
porque
construimos una gramtica que genere L
analizamos si el smbolo inicial es til, si es til, entonces L no es vaco, sino L es
vaco
Cardinalidad: [L[ < ? s, se puede contestar la pregunta (es decir, es un problema com-
putable) porque
construimos una gramtica que genere L en su forma normal de Chomsky
analizamos el grafo de posibles sustituciones de smbolos para averigar si existe un
ciclo
si existe tal ciclo, entonces L es innito, sino L es nito
Igualidad: L
1
= L
2
? no, no se puede contestar la pregunta (es decir, es un problema no com-
putable).
antes de entender dicha respuesta negativa, hay que estudiar ms a fondo la teora de
las Mquinas de Turing.
Dr. Arno Formella TALF v6 95
12.3. Aplicaciones para lenguajes libres de contexto
Anlisis semntico (basado en bloques estructurados): La aplicacin ms importante de los
lenguajes libres de contexto es claramente la denicin y el anlisis de informacin es-
tructurado en bloques anidados como suele ocurrir en los lenguajes de programacin (re-
cuerda los bloques beginend en PASCAL) o las marcas en un chero XML (extended
markup language).
Dr. Arno Formella TALF v6 96
13. Mquinas de Turing (MT)
(por incluir)
Dr. Arno Formella TALF v6 97
14. Resumen
(por incluir)
Dr. Arno Formella TALF v6 98
15. Bibliografa
15.1. Bibliografa bsica
1. P. Isasi, P. Martnez, D. Borrajo. Lenguajes, Gramticas y Autmatas. Un enfoque prctico.
Addison-Wesley, ISBN 84-7829014-1, 1997-2001.
2. M. Alfonseca, J. Sancho, M. Martnez Orga. Teora de Lenguajes, Gramticas y Aut-
matas. Promo-soft Publicaciones, R.A.E.C. ISBN 84-605-6092-9, 1997.
15.2. Bibliografa usada para la preparacin
1. A. Snchez Lpez. Teora de Autmatas y Lenguajes Formales. Apuntes de clase, comu-
nicacin personal, 2004.
2. R. Fernndez Muoz. Teora de Autmatas y Lenguajes Formales. Proyecto n de carrera,
INX-380, Biblioteca de la Universidad de Vigo, Campus Ourense, 2003.
3. G. Hotz, K. Estenfeld. Formale Sprachen. B.I. Wissenschaftsverlag, ISBN 3-411-01626,
1981.
4. Th. Schwentick. Theoretische Informatik. Vorlesungsfolien, Internet, comunicacin per-
sonal, 2004.
5. Uwe Schnfeld

También podría gustarte