Documentos de Académico
Documentos de Profesional
Documentos de Cultura
01 - Talf PDF
01 - Talf PDF
Versin 11
Dr. Arno Formella
Universidade de Vigo
Escola Superior de Enxeara Informtica
Departamento de Informtica
rea de Linguaxes e Sistemas Informticos
E-32004 Ourense
http://www.ei.uvigo.es/formella
formella@ei.uvigo.es
Junio 2010
Dr. Arno Formella 2
ndice
1. Curso 5
1.1. Administracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Tutoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Evaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1. Asistentes y no asistentes . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2. Entregas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5. Exmenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Gua docente 10
3.1. Contextualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1. Perfil de los crditos de la asignatura . . . . . . . . . . . . . . . . . . . . 10
3.1.2. Ubicacin y relacin con el Plan de Estudios . . . . . . . . . . . . . . . 10
3.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1. Objetivos generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2. Competencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Prerrequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4. Resumen del contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4.1. Descriptor de la asignatura (BOE) . . . . . . . . . . . . . . . . . . . . . 12
3.4.2. Teora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4.3. Prctica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.5. Metodologas y estrategias de aprendizaje . . . . . . . . . . . . . . . . . . . . . 13
3.6. Plan de trabajo del alumnado presencial . . . . . . . . . . . . . . . . . . . . . . 13
3.7. Evaluacin de los procesos y resultados de aprendizaje.
Criterios de evaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.7.1. Criterios de evaluacin para asistentes . . . . . . . . . . . . . . . . . . . 13
3.7.2. Criterios de evaluacin para no asistentes . . . . . . . . . . . . . . . . . 14
3.8. Observaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4. Introduccin 15
4.1. Reglas de sustitucin para formar secuencias . . . . . . . . . . . . . . . . . . . 16
4.2. Autmatas que aceptan secuencias . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3. Lenguajes y autmatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4. Mquinas de Turing universales . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Dr. Arno Formella 3
5. Conceptos bsicos 20
5.1. Alfabetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2. Palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4. Producciones y Derivaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.5. Relaciones de equivalencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.6. Relacin de equivalencia de lenguajes . . . . . . . . . . . . . . . . . . . . . . . 28
6. Gramticas generativas 29
6.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.2. Abreviacin de Backus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.3. rbol de derivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.4. Jerarquia de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.5. Equivalencia y ambigedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7. Autmatas finitos 37
7.1. Autmatas finitos deterministas (AFD) . . . . . . . . . . . . . . . . . . . . . . . 37
7.2. Autmatas finitos no-deterministas (AFND) . . . . . . . . . . . . . . . . . . . . 40
7.3. Equivalencia entre AFD y AFND . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.4. Autmatas finitos no-deterministas con transiciones
(AFND-) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.5. Equivalencia entre AFND y AFND- . . . . . . . . . . . . . . . . . . . . . . . . 49
7.6. Existencia de autmatas finitos mnimos . . . . . . . . . . . . . . . . . . . . . . 51
7.7. Ejemplos de uso del teorema de Myhill y Nerode . . . . . . . . . . . . . . . . . 53
7.8. Algoritmo de minimizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8. Expresiones regulares 57
8.1. Sintaxis y semntica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.2. Equivalencia entre autmatas finitos y expresiones regulares . . . . . . . . . . . 59
8.3. Abreviaciones para el uso de expresiones regulares . . . . . . . . . . . . . . . . 62
8.4. Smbolos y meta-smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9. Lenguajes regulares 64
9.1. Equivalencia entre gramticas lineales por la derecha y autmatas finitos . . . . . 64
9.2. Equivalencia entre gramticas lineales por la derecha y lineales por la izquierda . 66
9.3. Lema de bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1. Curso
1.1. Administracin
1.2. Clases
Lunes Martes Viernes
10-11 TALF [22] TALF [22]
11-12 TALF [22]
12-13 TALF1 [SO5]
13-14 TALF3 [SO5]
16-17 TALF2 [SO5]
1.3. Tutoras
Lunes Mircoles
11-12 Teora
12-13 Teora
13-14 Teora
16-17
17-18 Teora/Prcticas
18-19 Teora Prcticas
19-20 Teora Prcticas
1.4. Evaluacin
Un no asistente es alguien que i) no participa en la evaluacin continua, y que ii) quiere realizar
solamente los exmenes, tanto de teora como de prcticas, (claro tendr todo el apoyo tanto en
clase como en tutoras).
Cundo uno es asistente y cuando no asistente? Pues muy simple:
Consecuencias: Quien no realiza examen de prcticas, asume evaluacin continua tanto en teora
como en prcticas.
Se asume por defecto que el alumno quiere ser asistente, sino quiere ser lo, lo comunica
como muy tardeal principio del examen de junio.
1.4.2. Entregas
Las entregas se realizan de forma personal el siguiente martes con clases presenciales.
Una entrega consiste en una hoja escrito a mano (es decir, ni impreso ni copia) personal-
mente.
Dicha hoja lleva en la parte derecha arriba los apellidos, el nombre y el DNI. (Hojas que
no cumplen con eso no sern ni mirados desde lejos!)
El alumno debe autoevaluarse con las soluciones publicadas, la copia de la entrega guar-
dada y mejor en grupo de compaeros.
1.5. Exmenes
Convocatoria Fecha Hora Aula
Junio 15.06.10 10:00 Magna
Septiembre 06.09.10 16:00 Magna
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
contienen apartados que no se han dado en todos los cursos. Siendo clases presenciales,
los estudiantes ya sabrn distinguir.
Los apuntes se han escrito sin el uso de una enumeracin explcita de las definiciones, lemas,
y teoremas, como se suele usar en tal contexto. Se anima al lector que estructure su novela
individual con annotaciones en los mrgenes para enumerar las definiciones, lemas, y teoremas
y relacionar as de mejor manera las diferentes partes.
Versin 11
Versin 10
Versin 9
Versin 8
Versin 7
Versin 6
Versin 5
Dr. Arno Formella 9
Versin 4
Versin 3
Versin 2
P = {q0 aq0 |a|bq1 |b|cq2 |c|, q1 bq1 |b|cq2 |c, q2 cq2 |c}
3. Gua docente
3.1. Contextualizacin
Los crditos de la materia son tericos, matemticos, y fundamentales con una fuerte aplicabili-
dad en todos los mbitos de la informtica.
3.2. Objetivos
Comprender los fundamentos bsicos de los lenguajes formales, sus propiedades y meca-
nismos de representacin.
Relacionar tipos de lenguajes con autmatas y gramticas, sobre todo para lenguajes regu-
lares y lenguajes libres de contexto.
3.2.2. Competencias
Competencias especficas:
1. Conocer, comprender y aplicar los mtodos, teoras y tecnologas propias de los fun-
damentos de las estructuras de datos, programacin y sistemas para analizar modelar,
manipular, disear y desarrollar sistemas informticos a nivel bsico.
2. Aplicar metodologas de desarrollo en el anlisis y diseo detallado de los sistemas
informticos.
3. Asesorar a los programadores en los problemas que se les plantean con la programa-
cin de los sistemas.
4. Conocer, comprender y aplicar teoras, mtodos, tcnicas y herramientas de la mate-
mtica discreta, la lgica, el lgebra y el anlisis matemtico para analizar, modelar,
manipular y disear elementos y sistemas informticos.
5. Encontrar soluciones algortmicas a problemas, comprendiendo la idoneidad y com-
plejidad de las soluciones propuestas.
6. Definir, describir y especificar interfaces de usuario y relacionarlas con las caracte-
rsticas especficas de los procesos y los sistemas informticos
Competencias transversales:
instrumentales:
1. Capacidad de anlisis, sntesis y evaluacin
2. Capacidad de organizacin y planificacin
3. Comunicacin oral y escrita en la lengua nativa
4. Capacidad de abstraccin: capacidad de crear y utilizar modelos que reflejen
situaciones reales
5. Capacidad de disear y realizar experimentos sencillos y analizar e interpretar
sus resultados
6. Capacidad de buscar, relacionar y estructurar informacin proveniente de diver-
sas fuentes y de integrar ideas y conocimientos
7. Resolucin de problemas
8. Capacidad de tomar decisiones
9. Capacidad para argumentar y justificar lgicamente las decisiones tomadas y las
opiniones
personales:
1. Capacidad de actuar autnomamente
2. Capacidad de relacin interpersonal
Dr. Arno Formella 12
sistmicas:
1. Razonamiento crtico
2. Aprendizaje autnomo
3. Creatividad
4. Tener iniciativa y ser resoluto
5. Tener motivacin por la calidad y la mejorar continua
3.3. Prerrequisitos
3.4.2. Teora
3.4.3. Prctica
En las prcticas se ver el uso de lenguajes formales, autmatas y expresiones regulares en he-
rramientas didcticas (JFLAP) que permitan explorar y ejercitar los conceptos y procedimientos
recogidos en el temario de la teora. Se ver herramientas en el mbito de la aplicacin de la
informtica (por ejemplo: bsquedas en el sistema operativo, bsquedas y sustituciones en edi-
tores de texto, especificacin formal de contenidos de ficheros, etc.). Adems se implementar
algunos de los algoritmos bsicos que se estudian en la teora.
Dr. Arno Formella 13
Este plan varia en cierto modo del plan de trabajo del programa porque considera las semanas
reales con sus festivos del calendario.
1. La evaluacin de la Teora constar de un examen final (50 % de la nota final) y una eva-
luacin con mostreo aleatorio de 3 de 13 entregas durante el curso (15 % de la nota final).
Dr. Arno Formella 14
2. La evaluacin de las Prcticas (30 % de la nota final) constar de una evaluacin continua
durante las clases en el laboratorio para la convocatoria de junio.
5. Para aprobar la asignatura hay que aprobar la parte de Teora (es decir, llegar a un 50 % de
los puntos del examen de Teora) y llegar en la nota ponderada a un mnimo de un 5.
4. Para aprobar la asignatura hay que aprobar la parte de Teora (es decir, llegar a un 50 % de
los puntos del examen de Teora) y llegar en la nota ponderada a un mnimo de un 5.
3.8. Observaciones
Se ha observado en los aos anteriores que la falta de constancia durante el curso es la causa
principal de muchos malos resultados. TALF es una asignatura cual, por la naturaleza de su con-
tenido, no se puede aprender en 15 das de estudios aislados antes de un examen. Dado que en
el segundo cuatrimestre no se puede esperar de empezar las actividades acadmicas de la asigna-
tura antes del 22 de febrero y se tiene que terminar en junio, se dispone solamente de unos tres
meses y medio para la distribucin de los crditos ETCS que conlleva que como mucho se puede
planificar unas 100 horas para no sobrecargar el alumno en el conjunto de actividades durante el
perodo lectivo. El alumno debe distribuir las horas restantes en los periodos no lectivos.
Dr. Arno Formella 15
4. Introduccin
Hoy en da aparecen cada vez ms smbolos (llamados iconos) con el propsito de simplificar
sobre todo las interfaces al usuario, es decir, se quiere transmitir una semntica a partir de un
smbolo. Como ejercicio para reflexionar y criticar el uso excesivo de tal moda, se pide: intenta
averiguar el significado de los siguientes smbolos (relacionados semnticamente entre si) que
estn en uso desde hace cientos de aos por una gran parte de la humanidad:
ejemplos son: reloj mecnico o electrnico, mquina para lavar, todo un ordenador, el
cerebro?
ya se han construido relojes biolgicos con trozos de DNA artificial y sntesis de protenas
que visualizan su cambio de estado con luz fluorescente
En el contexto de esta asignatura autmatas sern mquinas matemticas con estados y funciones
de transicin (donde se puede aadir entrada, salida, memoria interna modificable, etc.).
Es decir, la Teora de los Lenguajes Formales (y de los Autmatas) permite responder a preguntas
escenciales de la Informtica. Dos observaciones importantes:
Tesis de Church: Todo lo que es computable se puede calcular con una Mquina de Turing.
Resumen: Sin TALF no hay lenguajes, no hay compiladores, no hay programas, no hay orde-
nadores, no hay red, no hay nada.
favoritas
Con este diagrama podemos formar unas reglas para sustituir smbolos:
$ AB A esas A B CD
C son D EF E GH G mis
G H IJ I clases J favoritas
J F en informatica F
$ AB
esasB
esasCD
esas sonD
esas sonEF
esas sonGHF
esas sonHF
esas sonH
esas sonIJ
esas son clasesJ
esas son clases
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 ms sencillo.
Usamos las reglas $ ab$ y $ para generar palabras del tipo ab, abab, ababab etc.
Podemos derivar una palabra:
siempre aplicando alguna de las reglas hasta tal punto que ya no se puede aplicar ninguna regla.
Hemos usado el smbolo para decir que no sustituimos por nada (juega el mismo papel que el
0 para nmeros).
Construimos un autmata que acepta una palabra del tipo mencionado anteriormente. Entende-
mos por aceptar que el autmata llega a un estado final. Consumimos para cada transicin de
estado una letra de la palabra. Podemos dibujar un autmata:
Dr. Arno Formella 18
automata
donde el estado inicial (o de comienzo) est marcado con una flecha, el estado final est marcado
con un doble crculo. Las transiciones estn visualizadas con flechas 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 final 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 final del curso tendremos algunos conocimientos sobre una jerarqua de lenguajes y las
equivalencias entre:
Dicha clasificacn es algo gruesa considerando avances modernas en la teora de lenguajes for-
males: los lenguajes tipo 2 se dividen en dos: deterministas y no-deterministas que se aceptan
con autmatas de pila deterministas y no-deterministas respectivamente. Luego, los lenguages
Tipo 1 ya se dividen en tres subclases que se aceptan con autmatas con cierto tipo de multi-pila.
4. es la funcin de transicin
la cinta al comienzo contiene a parte de la entrada solamente casillas con el smbolo del
blanco (un nmero infinito)
Dada una entrada la mquina realiza transiciones hasta que llegue a un estado final.
Con el concepto de simulacin, es decir, una mquina M simula otra mquina M 0 reproducien-
do la misma salida con la misma entrada se puede construir una mquina de Turing universal.
Dicha mquina, que aparte de la entrada tambin dispone de la descripcin (en una codificacin
adecuada) de la mquina M a simular en la cinta, es capaz de simular cualquier otro mquina.
Con unos arreglos tcnicos se puede construir tal mquina de Turing universal (MTU) con solo
2 smbolos de cinta y 7 estados, o con 5 smbolos de cinta y 2 estados. Es decir, pueden ser
sorprendentemente pequeos teniendo en cuenta que sirven para simular cualquier otra mquina.
(En 2007 se comprob que tambin existe una MTU con solo 3 smbolos de cinta y 2 estados,
pero la comprobacin todava est discutida.)
Ms informacin sobre mquinas de Turing pequeas, por ejemplo, en
http://www.mathrix.org/experimentalAIT/TuringMachine.html
donde hay una MTU en C/C++ con 285 characteres de cdigo fuente.
Dr. Arno Formella 20
5. Conceptos bsicos
5.1. Alfabetos
1 = {0, 1}
2 = {a, b}
3 = {na, pa, bra, la}
4 = {<HTML>, </HTML>, <BODY>, </BODY>, . . .}
5 = {|}
6 = {a, ab, aab}
Usamos meta-smbolos (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 meta-smbolo.
Usamos subndices para distinguir diferentes alfabetos.
Usamos normalmente las minsculas como alfabeto = {a, . . . , z}, en los ejemplos nor-
malmente letras desde el principio del alfabeto.
Cardinalidad del alfabeto (nmero de elementos del alfabeto): || > 0, || <
5.2. Palabras
Una secuencia finita de smbolos de un alfabeto es una palabra sobre dicho alfabeto.
Escribimos la palabra vaca, es decir, la palabra que no contiene ningn smbolo, como .
Dr. Arno Formella 21
Usamos normalmente letras minsculas para anotar palabras, preferiblemente desde el fi-
nal del alfabeto.
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.
|| = 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 ()
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).
ww = w2 , www = w3 , w . . w} = wi , i IN = {0, 1, 2, }
| .{z
i-veces
w1 = w, w0 =
|wi | = i |w|
|w0 | = || = 0 = 0 |w| = |w0 |
wm+n = wm .wn
|wm+n | = (m + n) |w| = m |w| + n |w| = |wm | + |wn |
|w| = |wR |
= R
Dr. Arno Formella 23
5.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 vacio (que no contiene ninguna palabra), |L| = 0
L = {} es el lenguaje que solamente contiene la palabra vacio, |L| = 1
son independientes del alfabeto y por eso son lenguajes sobre cualquier alfabeto.
sea = {a, b}
L1 = {, a, b}
Lab = {an bn | n IN} es decir, el lenguaje que contiene todas las palabras con un
nmero de as seguidos por el mismo nmero de bs.
Lpal = {wwR | w } es decir, palndromos
2
Lquad = {an | n IN>0 }
Unin:
L1 L2 = {w | w L1 o w L2 }
Propiedades (unos ejemplos):
Conmutatividad: L1 L2 = L2 L1
Asociatividad: (L1 L2 ) L3 = L1 (L2 L3 )
Idempotencia: LL=L
Operacin con : L=L=L
Operacin con : L = = L
Interseccin:
L1 L2 = {w | w L1 y w L2 }
Propiedades (unos ejemplos):
Conmutatividad: L1 L2 = L2 L1
Asociatividad: (L1 L2 ) L3 = L1 (L2 L3 )
Idempotencia: LL=L
Operacin con : L = = L1
Operacin con : L = L = L
Dr. Arno Formella 24
Complemento:
L = {w | w y w
/ L}
L1 L2 = {w | w L1 pero w
/ L2 }
L1 .L2 = {w | w = w1 .w2 y w1 L1 y w2 L2 }
Li = L
| .{z
. . L} i IN
i-veces
Reflexin (o inverso):
L = {w | wR L}
Homomorfismo: Sean , dos alfabetos. Sea : una funcin que asigna a cada
smbolo de una palabra sobre . Podemos ampliar la funcin a un homomorfismo
: , 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
(L) = {(w) | w L}
1 (L) = {w | 1 (w) L}
es un lenguaje sobre .
Definimos algunas notaciones para describir reglas de sustitucin, es decir, como derivar una
palabra con las producciones de la gramtica:
Una produccin p es una dupla (pareja) de un conjunto cartesiano sobre dos universos (que
pueden ser el mismo), es decir, p = (A, B) 1 2 .
Sea (A, B) una produccin, en vez de duplas 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.
Dr. Arno Formella 26
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
w1 = 1010 aplicando la primera produccin, y w2 = 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
w1 = 0011, es decir, v w1 aplicando v = 1000 1010 0110 0101 0011 =
w1 , o tambin w2 = 0001 aplicando v = 1000 0100 0010 0001 = w2 . 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 len-
guajes formales se realiza mediante induccin sobre: longitud de la palabra, longitud de la deri-
vacin, (o luego tambin longitud del 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.
R0 = {(x, x) | x }
RS = {(x, y) | z : xRz y zSy}
Rn+1 = RRn
[
R+ = Rn
n1
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,
cuyo nmero es finito o infinito. La interseccin de dos clases es vaca, es decir, [xi ] [xj ] =
si i 6= 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 finito.
xRL y (z : xz L yz L)
es decir, x es equivalente a y, si, aadiendo cualquier sufijo, 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:Verifica que RL es una relacin de equivalencia!
Dr. Arno Formella 29
6. Gramticas generativas
G = (N , T , P, $)
donde
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 30
6.1. Ejemplos
L1 = {, a, b}
G1 = ({$}, {a, b}, {$ , $ a, $ b}, $)
obviamente L(G1 ) = L1
para lenguajes finitos es fcil generar una gramtica, basta con derivar directamente cada
palabra desde el smbolo inicial (aunque se puede usar un sistema de producciones ms
sofisticado)
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 infinito, si la gramtica es recursiva sobre una palabra
v y que a su vez es derivable desde el smbolo inicial.
P = {$ , $ ABC, A , A aA,
B , B bB, C , C cC}
N = {$, A, B, C}
Obviamente podemos derivar cualquier elemento de Labc con esa gramtica, por ejemplo:
Parece que la gramtica GTest es demasiado amplia. De alguna manera deberamos cons-
truir 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 capaz de derivar desde ak Xbk ck la secuencia ak+1 Xbk+1 ck+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 no-terminales 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
Yb bY, para ir hacia las cs
Yc 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 32
Se puede comprobar formalmente con induccin sobre k que la gramtica dada genera
exactamente el lenguaje deseado, es decir L(Gabc ) = Labc .
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 no-terminal 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
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 33
Definimos una gramtica que genere lo que se usa en programas, por ejemplo:
((a + b) (c + d)) (e + f )
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
Gexpr = ({$, E}, T , P, $)
Para 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.
Segn Chomsky se clasifica 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 finito y que se clasifica
en los siguientes tipos:
Dr. Arno Formella 34
P .N .
P {xAy xvy | x, y , A N , v + } {$ }
P N + {$ }
P N (N .T T ) {$ }
es decir, lineales a la izquierda (porque los smbolos no-terminales aparecen en una deri-
vacin siempre a la izquierda de la palabra)
P N (T .N T ) {$ }
es decir, lineales a la derecha (porque los smbolos no-terminales aparecen en una deriva-
cin siempre a la derecha de la palabra)
Retomamos la clasificacin de las gramticas hacia final del curso (por ejemplo, respon-
demos a la pregunta si son de verdad clases separadas).
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.
Dr. Arno Formella 35
ambitree
La ambigedad introduce cierto grado de no-determinismo 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
no-ambigua es un problema no-computable.)
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):
Dr. Arno Formella 36
E E+T |T
T T F |F
F (E) | V
V a | b | ... | z
7. Autmatas finitos
Describimos autmatas finitos con unas definiciones matemticas. Nos limitamos al principio a
autmatas solamente con entrada.
M = (, Q, , q0 , F )
donde
es un alfabeto (sabemos
/ )
: Q Q ; (q, ) = p
q0 Q es el estado inicial.
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 atribuida
con un smbolo entre dos nodos si existe una transisin correspondiente:
compauto
es decir, el estado inicial est marcado por una flecha y los estados finales 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 38
entonces
M = ({0, 1}, {q0 , q1 , q2 , q3 }, , q0 , {q0 })
0 1
= ?q0 q3 q1
q1 q2 q0
q2 q1 q3
q3 q0 q2
Determinista significa que no tenemos opcin ninguna para eligir, es una funcin.
Si es una funcin total llamamos el autmata completo, es decir, existe para cada estado
y cada smbolo una transicin.
Para definir el lenguaje aceptado por un AFD ampliamos la funcin a una funcin para que
trabaja sobre palabras:
: Q Q
(q, ) = q
(q, w) = ((q, ), w) , w
Observamos:
Ampliamos un poco las posibilidades de las transiciones de un autmata finito, es decir, cambia-
mos la funcin .
Un autmata finito no-determinista (AFND) es una quntupla
M = (, Q, , q0 , F )
donde
es un alfabeto.
q0 Q es el estado inicial.
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
= q0 {q0 , q3 } {q0 , q1 }
q1 {q2 }
q2 {q2 } {q2 }
q3 {q4 }
q4 {q4 } {q4 }
Dr. Arno Formella 41
: Q P(Q)
(q, ) = {q}
(q, w) = {p | p Q, r (q, ) : p (r, w)}
, w
[
= (r, w)
r(q,)
es decir, coincide con para smbolos del alfabeto y en general enumera los estados alcanza-
bles con la palabra.
Un autmata finito no-determinista M = (, Q, , q0 , F ) acepta una palabra w si (q0 , w)
F 6= donde es la ampliacin de la relacin de transicin .
O en otras palabras, M acepta w, si (q0 , w) contiene un estado final del autmata.
El lenguaje aceptado por un autmata finito no-determinista M es el conjunto de palabras
aceptadas por M :
L(M ) = {w | w , M acepta w}
afndafd
Para el caso general tenemos:
Sea M = (, Q, , q0 , F ) un AFND, construimos un AFD M 0 = (, Q0 , 0 , q00 , F 0 ) con
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 finalmente 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 0 (sien-
do el AFD construido) tambin lo acepta; y si M 0 acepta w, entonces M tambin lo hace, es
decir, que L(M ) = L(M 0 ).
Pues, sea M un AFND y M 0 el AFD correspondiente.
Sea w = x0 x1 x2 . . . xn L(M ) cualquier palabra aceptada por M .
Comprobamos que w L(M 0 ), es decir, L(M ) L(M 0 ):
Definimos los siguientes diagramas
i x
p q
i x
P Q
x
0 x
1 x
2 xn1 x
n
q0 q1 q2 qn qn+1 F
x x x xn1 x
0
Q0 1
Q1 2
Q2 n
Qn Qn+1 F 0
Dr. Arno Formella 43
donde la construccin va desde la izquierda, es decir, del estado inicial, hacia la derecha, es decir,
a un estado final. Dado que M acepta w, qn+1 es un estado final y siendo miembro de un conjunto
Qn+1 , este ser un estado final de M 0 .
Entonces hemos comprobado que M 0 acepta w, y por eso L(M ) L(M 0 ).
Ahora, sea w = x0 x1 x2 . . . xn L(M 0 ) cualquier palabra aceptada por M 0 .
Comprobamos que w L(M ), es decir, L(M ) L(M 0 ):
Definimos los siguientes diagramas
i x
P
3 Q
3
i x
p q
x
0 x
1 x
2 xn1 x
n
q0 q1 q2 qn qn+1 F
donde la construccin va ahora desde la derecha, es decir, un estado final, hacia la izquierda,
es decir, al estado inicial. Dado que M 0 acepta w, Qn+1 es un estado final y un conjunto no
vaco, entonces existe un miembro qn+1 que tambin es elemento de F y por consecuencia un qn
aplicando el diagrama y asi succesivamente hasta llegar a q0 .
Entonces hemos comprobado que M acepta w, y por eso L(M ) L(M 0 ).
Finalmente tenemos L(M ) L(M 0 ) y L(M ) L(M 0 ) y por eso L(M ) = L(M 0 ).
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:
2. Son necesarios tantos estados (o existe una mejor forma de realizar la conversin)?
Dr. Arno Formella 44
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 Ln porque el lenguaje es
finito (|Ln | = 22n 2n ).
En un libro (HotzEstenfeld) se encuentra el siguiente AFND que acepta L3 (dejan la comproba-
cin al lector)
afndln
Bueno, con un poco de trabajo se puede comprobar (enumerando todos los caminos desde el
estado inicial hasta el estado final) 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 n2 (si inspeccio-
namos la construccin vemos la suma de 1 hasta 2n).
Tambin construeron un AFD para L3 :
afdln
Manifestan que dicho autmata es mnimo, y teniendo ms de 2n estados concluyen que la cons-
truccin de un AFND a un AFD puede incrementar el nmero de estados exponencialmente.
Veremos: Ambas construcciones tienen sus deficiencias, aunque el hecho en si es correcto!
Primero, no dan un esquema cmo construir un autmata que reconozca Ln para cualquier n
(puede ser que hay buena suerte en el caso de L3 ).
Segundo, el AFD dado no es mnimo, una simplificacin 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 w1 .
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 Ln sistemticamente.
Dr. Arno Formella 45
Idea: En cada uno de los caminos reconociendo w1 siempre tiene que existir una arista con una
a (o una b) donde en la misma posicin para reconocer w2 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
Xn n1
X
= 1+2 i+1+2 i
i=1 i=1
= 1 + n(n + 1) + 1 + (n 1)n
= 2(n2 + 1)
Como vemos, incluso hemos reducido el nmero de estados comparando con el autmata del
libro: el AFND para aceptar L3 tiene solamente 20 estados.
La construccin de un AFD sigue el mismo argumento dado arriba: se necesita construir todas
las posibles palabras w1 en el lado izquierdo y por eso el AFD tiene por lo menos 2n estados
(los 2n 1 para enumerar los w1 y por lo menos un estado final en el lado derecho.
Hasta ahora slo hemos comprobado la explosin del nmero de estados para lenguajes finitos.
Existe tal crecimiento exponencial tambin para lenguajes infinitos?
Otro ejemplo para mostrar las capacidades de un AFND (y el crecemiento exponencial necesario
del AFD equivalente):
Usamos = {0, 1} como alfabeto. Definimos los siguientes lenguajes (que dependen del nme-
ro n IN):
qi (q0 , w) = xi = 1
es decir:
Entones el AFD contiene por lo menos 2|Q|1 = 2n estados (todos aquellos que codifican
subconjuntos conteniendo q0 ).
L = {ai bj ck | i, j, k IN}
Si fuesemos capaz 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 finito no-determinista con transiciones (AFND-) es una quntupla
Dr. Arno Formella 47
M = (, Q, , q0 , F )
donde
es
Observamos que aadir ms aristas con obviamente no cambia el comportamiento del autma-
ta:
AUTaibjckepstrans
Podemos tratar las transiciones con como una relacin T sobre el conjunto de estados, es decir
T = T1 = {(q, p) | (q, ) = p} Q Q
En el ejemplo tenemos
T1 = {(q0 , q1 ), (q1 , q2 )}
Esta relacin podemos ampliar para que sea reflexiva, es decir, que todas las parejas (q, q) con
q Q formen parte de la relacin, es decir, formamos
T0 = {(q, q) | q Q}
y con eso
T = T0 T1
entonces T por construccin es una relacin reflexiva. En el ejemplo tenemos
y con eso
T = {(q0 , q0 ), (q0 , q1 ), (q1 , q1 ), (q1 , q2 ), (q2 , q2 )}
y con eso
T = T0 T1 T2
en el ejemplo tenemos
T2 = {(q0 , q2 )}
y as sucesivamente
i1
[ i1
[
Ti = {(q, p) | r Q : (q, r), (r, p) Tj y (q, p)
/ Tj }
j=0 j=0
Finalmente definimos
[
T = T0 T1 T2 . . . = Ti
i=0
cl(q) = {p | (q, p) T }
En el ejemplo:
cl(q0 ) = {q0 , q1 , q2 }
cl(q1 ) = {q1 , q2 }
cl(q2 ) = {q2 }
AUTaibjckafnd
hemos aadido q0 a los estados finales F porque existe un estado final que pertenece a la
clausura- de q0 , es decir, L
Entonces podemos formalizar el lenguaje aceptado por un AFND- (parecido a lo que hicimos
para un AFND).
Primero definimos 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 P(Q)
1.
(q, ) = cl(q)
es decir, nos quedamos en la clausura- si hemos alcanzado el final de la palabra
2.
(q, w) = {p | p Q y r (q, w) tal que p cl((r, ))}
[
= cl((r, ))
r (q,w)
(q0 , w) enumera entonces todos los estados alcanzables desde q0 leyendo la palabra w.
Observa: Hemos dado una definicin recursiva desde la izquierda, es decir, aadimos un smbolo
a la derecha. Hubiese sido posible definir para un AFND de la misma manera.
Un autmata no-determinista con transiciones M acepta una palabra w sobre el alfabeto
, es decir, w , si
(q0 , w) F 6=
donde sea la ampliacin de la funcin dada arriba.
El lenguaje aceptado por M es (como siempre)
L(M ) = {w | M acepta w}
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, , q0 , F ) un AFND-.
Un AFND equivalente es el autmata M 0 = (, Q0 , 0 , q00 , F 0 ) donde
Dr. Arno Formella 50
Q0 = Q
[
0 (q, ) = cl((r, )) (podemos escribir solo q porque Q0 = Q)
rcl(q)
q00 = q0
0 F si F cl(q0 ) =
F =
F q0 si F cl(q0 ) 6=
es decir, aadimos q0 como estado final, si algn estado final 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
q0 {q0 } {q1 } {q0 , q1 , q2 }
q1 {q1 } {q2 } {q1 , q2 }
q2 {q2 } {q2 }
a b c cl
cl(q0 ) {q0 } {q1 } {q2 } {q0 , q1 , q2 }
cl(q1 ) {q1 } {q2 } {q1 , q2 }
cl(q2 ) {q2 } {q2 }
a b c
q00 {q0 , q1 , q2 } {q1 , q2 } {q2 }
q10 {q1 , q2 } {q2 }
q20 {q2 }
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 amplia (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 no-deterministas y autmatas
no-deterministas con transiciones .
Ya vimos que hay varias posibilidades para construir un autmata finito 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 finito 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 equi-
valencia.
Ya vimos que para cada lenguaje L podemos construir una relacin de equivalencia sobre
:
xRL y (z : xz L yz L)
es decir, x es equivalente a y, si, aadiendo cualquier sufijo, 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 RL es finito, es decir, la relacin
tiene solamente un nmero finito de clases de equivalencia (Teorema de Myhill y Nerode).
Comprobamos primero la direccin =, es decir, si el lenguaje es regular, entonces el ndice
de la relacin es finito:
L es regular, entonces existe un AFD que acepta L.
Dr. Arno Formella 52
xz L (q0 , xz) F
( (q0 , x), z) F
( (q0 , y), z) F
(q0 , yz) F
yz L
Indice(RL ) Indice(RM )
= nmero de estados acesibles desde q0
|Q|
<
Construimos un AFD que contiene justamente tantos estados como hay clases:
M = (, Q, , q0 , F )
donde
F = {[x] | x L}, es decir, existen tantos estados finales como hay clases de equivalencia
perteneciendo a L.
x L(M ) (q0 , x) F
([], x) F
[x] F
xL
[ab] = L
[a2 b]= {a2 b, a3 b2 , a4 b3 , . . .}
...
[a b] = {ak+i1 bi | i 1}
k
verificamos que son clases de equivalencia, porque si ak+j1 bj [ak b] y ak+l1 bl [ak b] enton-
ces o bien ak+j1 bj z, ak+l1 bl z L (si z = bk1 ) o bien ak+j1 bj z, ak+l1 bl z
/ L (si z 6= bk1 ).
Por eso el nmero de clases de RL es infinito, es decir, Indice(RL ) = .
Observa que no hemos clasificado todas las palabras de , sino solamente algunas palabras
posibles:
= L [a2 b] . . . [ak b] . . . . . . las dems clases
| {z } |{z}
ya son un nmero infinito
es decir, para comprobar que un lenguaje no es regular basta con encontrar un nmero infinito de
clases de equivalencia (respecto a la relacin RL ).
Investigamos el lenguaje
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}
0 1
= [] [0] []
[0] [00] []
?[00] [00] []
o como diagrama:
equiafd
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 finitos deterministas y completos que aceptan el mismo lenguaje, porque un
tal autmata M 0 definira un refinamiento de RM 0 RL , es decir, Indice(RM 0 ) Indice(RL )
y el AFD de las clases de equivalencia M representa las mismas clases RL = RM , entonces
Indice(RM 0 ) Indice(RL ) = Indice(RM ).
Una pregunta surge: Cmo sabemos si un AFD M ya es mnimo?
Pues, M no es mnimo, si
w p, q Q, p 6= q : (p, w) F (q, w) F
es decir, llegamos con alguna palabra w desde ambos estados siempre o bien a un estado final, o
bien a un estado no-final.
En tal caso, podemos unir los dos estados en un nico estado.
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 continua-
cin.
Dr. Arno Formella 55
Decimos que dos estados p y q son distinguibles (o no-equivalentes) si existe una palabra w que
nos lleva desde p a un estado final pero no desde q, o al revs, es decir:
p 6 q ( (p, w) F y (q, w)
/ F ) o ( (p, w)
/ F y (q, w) F )
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 - - - - -
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 - - - - -
Dr. Arno Formella 56
a b c d e
a - 2 3 1
b - - 4 1
4.
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 co-
rreccin 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 eficiente. 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.
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. Si se marca una pareja, recursivamente se marcan tambin todas las entradas en las
listas.
Con est mejora el algoritmo tiene complejidad O(|Q|2 ||).
Dr. Arno Formella 57
8. Expresiones regulares
Hasta ahora era difcil describir lenguajes aceptados por autmatas. Siempre tenamos que apro-
vechar de una notacin como
Por ejemplo, si queramos desarrollar un autmata que comprobase que una cadena codificase
una direccin de correo electrnico vlida tendramos como propiedades:
6. delante de la @ por lo menos una palabra que empieza con una letra,
Sea un alfabeto. Una expresin regular sobre se define con las siguientes reglas (induc-
tivas):
Con eso hemos definido una sintaxis de expresiones regulares, pero cul ser su semntica?
Para cada expresin regular definimos un lenguaje correspondiente (basado en las reglas).
El lenguaje L() definido por una expresin regular se define:
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())
(1 + ).(0.1) .(0 + )
Dr. Arno Formella 59
q Q, : q0
/ (q, ) (q, )
M tiene exactamente un estado final del cual no sale ninguna transicin, es decir,
|F | = 1 y , f F : (f, ) (f, ) =
1. a) =
regexprafnde1
b) =
regexprafnde2
c) = a
regexprafnde3
2. a) =
regexprafnde4
b) = ( + )
regexprafnde5
3. a) = ()
regexprafnde6
Dr. Arno Formella 60
b) = ()
regexprafnde7
a) para cada pareja de aristas (p, , q) y (q, , r) y arista reflexiva (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)
(Observa: si q0 F entonces existe una arista con entre q0 y f , por eso, L(), y entonces
no hay que considerar un caso especial para contemplar lazos reflexivos en q0 porque + =
.)
Dr. Arno Formella 61
Asociatividad:
( + ( + )) (( + ) + )
.(.) (.).
Conmutatividad:
( + ) ( + )
Elementos neutros:
( + ) ( + )
(.) (.)
Eliminacin:
(.) (.)
Distributividad:
.( + ) (. + .)
( + ). (. + .)
Dr. Arno Formella 62
Simplificacin:
(() ) ()
()
()
Con eso y un poco de mpetu podemos transformar sucesivamente la expresin regular obtenida
para obtener al final la expresin regular que era la base para el autmata finito 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 an ms
complejos que los problemas de la clase NP que (a lo mejor) veremos hacia el final del curso (un
problema NP es el problema del viajante). Aqu nos basta constatar que existen EE.RR. tal que
un algoritmo determinista que resuelve el problema necesita un tiempo que crece por lo menos
exponencial en la longitud de las expresiones regulares.
n :
| .{z
. . }
nveces
(usando tales ns en varias posiciones y exigiendo que tenga en todos los sitios el mismo
valor se pueden describir lenguajes ya no regulares)
= [a zA Z][a zA Z0 9\ _]
= (\.) @(\.)+ [a zA Z]{2,4}
9. Lenguajes regulares
Sea M = (, Q, , q0 , F ) un AFD.
Construimos una gramtica lineal por la derecha G con L(G) = L(M ), es decir, genera el mismo
lenguaje que el AFD acepta.
G = (N , T , P, $) = (Q, , P, q0 )
es decir
Ejemplo:
afdabc
a b c
= ?q0 q0 q1 q2
?q1 q1 q2
?q2 q2
Dr. Arno Formella 65
M = (, Q, , q0 , F ) = (T , N {f }, , $, {f })
es decir,
Observamos que el autmata construido es un autmata finito no-determinista (AFND) que po-
demos 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 66
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 G0 = (0N , T , P 0 , $) lineal por la izquierda con el siguiente algorit-
mo en cuatro pasos:
Siendo a b una expresin regular, podemos construir un autmata finito que acepta el lenguaje
as definido, tambin podemos construir para cualquier n IN fijo un autmata finito adecuado
(an bn sera una expresin regular extendida que define el lenguaje correspondiente que contiene
una sola palabra).
Pero no podemos construir un autmata finito que acepte el lenguaje:
donde el parmetro n no es fijo, sino se quiere que haya tantas as como bs.
Por qu no podemos construir tal autmata?
asumimos que tengamos un autmata finito M con k estados que acepta Lab
Dr. Arno Formella 68
anotamos los estados de M despus de haber ledo las palabras ai para i = 0, . . . , k (son
k + 1 palabras)
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)
Entonces:
(q0 , ai bj ) = ( (q0 , ai ), bj )
= ( (q0 , aj ), bj )
= (q0 , aj bj ) F
Entonces asumimos mal, es decir, no existe un autmata que acepte Lab , o en otras pala-
bras, Lab no es regular.
w0 = 110 10
w1 = 110 010 10
w2 = 110 010010 10
w3 = 110 010010010 10
...
wk = x yk z
Lema (de bombeo para lenguajes regulares): Sea L un lenguaje regular (infinito). 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 6=
2. |xy| n
Sea w una palabra con |w| n (tal palabra existe porque L es infinito).
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 6= 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.
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 Lab no es regular, ahora usando el lema de bombeo:
El lema de bombeo nos garantiza la existencia de un n tal que se cumplen las propiedades
para palabras w con |w| n.
Tanto xz = xy 0 z Lab como xy 1 z Lab pero xz contiene por lo menos una a menos que
xyz (hemos quitado y).
Dado un lenguaje L.
Podemos describir dicha receta tambin como un juego para dos personas:
Jugador 1 selecciona n.
Jugador 2 selecciona k.
si xy k z
/ L gana jugador 2, sino gana jugador 1.
es decir, todas las cadenas de ceros que tienen un nmero cuadrado de smbolos.
El lema de bombeo nos garantiza la existencia de un n tal que se cumplen las propiedades
para palabras w con |w| n.
2
(Pensamos...): Elegimos w = 0n . Obviamente w Lquad y |w| = n2 n.
Tenemos entonces:
n2 = |xyz| porque es w
< |xy 2 z| porque y tiene una longitud > 0
= |xyz| + |y|
n2 + n porque si |xy| n tambin |y| n
< n2 + 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.
Este lema de bombeo solo garantiza una propiedad para lenguajes regulares, es decir, todos
los lenguajes regulares (infinitos) 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 72
Reglas de mano:
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 finito, una expresin regular, o una
grmatica de tipo 3.
Pero ojo, existen lenguajes regulares que tienen que ver con nmeros:
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.
Unin: L = L1 L2 es regular, porque podemos construir una expresin regular para L, teniendo
las expresiones regulares para L1 y L2 , ms preciso: con L1 = L() y L2 = L() tenemos
L = L(( + ))
Dr. Arno Formella 73
Concatencin: L = L1 .L2 es regular, porque podemos construir una expresin regular para L,
teniendo las expresiones regulares para L1 y L2 , ms preciso: con L1 = L() y L2 = L()
tenemos L = L()
Clausura: L = L1 es regular, porque podemos construir una expresin regular para L, teniendo
la expresin regular para L1 , ms preciso: con L1 = L() tenemos L = L(() )
Complemento: L = L1 = L1 es regular, porque podemos construir, dado un AFD com-
pleto M1 que acepta L1 , un AFD M que acepta L simplemente invertiendo sus esta-
dos finales, es decir, los estados no finales de M1 sern los estados finales de M y los
finales se convierten en los no finales, entonces, si M1 = (, Q, , q0 , F ) construimos
M = (, Q, , q0 , Q F ).
Interseccin: L = L1 L2 es regular, porque con las reglas de DeMorgan obtenemos L =
L1 L2 = L1 L2 . Complemento y unin producen lenguajes regulares, como visto
antes. Dicha construccin es bastante laborosa, abajo vemos una construccin directa y
simple.
Diferencia: L = L1 L2 es regular, porque se puede expresar la diferencia como L = L1 L2 =
L1 L2 = L1 ( L2 ) 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 = L1 L2 .
La idea principal es, simular en paralelo en un solo autmata (digamos autmata de producto)
las transiciones de los dos autmatas (por ejemplo finitos deterministas y completas) para L1 y
L2 .
Entonces sean M1 = (1 , Q1 , 1 , q1 , F1 ) y M2 = (2 , Q2 , 2 , q2 , F2 ) los dos AFDs completos
que aceptan L1 y L2 , es decir, L1 = L(M1 ) y L2 = L(M2 ).
Construimos el AFD completo M que acepta L = L1 L2 = L(M ) como
M = (, Q, , q0 , F )
donde
F = F1 F2 , es decir, todas las parejas donde ambos estados son estados finales de ambos
autmatas.
Ejemplo:
afdprod
Obviamente la construccin funciona igual con autmatas finitos nodeterministas (AFND).
Cardinalidad: |L| < ? s, se puede contestar la pregunta (es decir, es un problema compu-
table) porque
Diagramas de estados en UML: El lenguaje UML (unified modeling language) se usa para la
descripcin durante el proceso de desarrollo de software. El lenguaje grfico usa diferentes
tipos de diagramas para este fin. 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 76
Lab = {an bn | n 0}
Labc = {an bn cn | n 0}
Lpal = {w | w {0, 1} , w = vv R }
Ldup = {w | w {0, 1} , w = vv}
2
Lquad = {0n | n nmero cuadrado}
Lprim = {0n | n nmero primo}
L() = {w | w {(, )} , w correcto}
Es decir, la definicin 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 definicin 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 77
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 $ X w donde , y w T .
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.
Obviamente cualquier gramtica en forma normal de Chomsky es una gramtica libre de contexto
que se verifica 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.
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.
Dr. Arno Formella 78
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 final):
2. modificamos 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
$ bDD | Ca | bc
A B | aCC | baD
B cBD | | AC
C bD | aBA
D CD | a | EF
E Eb
F a
1. Sabiendo que una variable es intil si es no-generativa o inacesible realizamos dos subpa-
sos:
a) eliminamos primero las variables no-generativas N (y todas las reglas con ellas) lla-
mando a la gramtica resultante G01 ,
b) eliminamos despus las variables inacesibles I (y todas las reglas con ellas).
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 no-generativo, es decir, N = {E}, P10
entonces es:
$ bDD | Ca | bc
A B | aCC | baD
B cBD | | AC
C bD | aBA
D CD | a
F a
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 no-acesibles en un autmata finito.
Se observa que solamente F es un smbolo inacesible, es decir, I = {F }, P1 entonces
es:
$ bDD | Ca | bc
A B | aCC | baD
B cBD | | AC
C bD | aBA
D CD | a
2. Aadimos para cada smbolo terminal una regla W y sustituimos en todas las reglas
de P1 , P2 entonces es:
$ Wb DD | CWa | Wb Wc
A B | Wa CC | Wb Wa D
B Wc BD | | AC
Dr. Arno Formella 80
C Wb D | Wa BA
D CD | Wa
Wa a
Wb b
Wc c
Entonces P2 solamente contiene reglas con partes derechas siendo , un smbolo terminal,
o una palabra de variables.
3. Sustituimos cada regla del tipo X Y1 Y1 . . . Yk con k > 2 por las reglas:
X Y1 X1
X1 Y2 X2
.. .
. ..
Xk3 Yk2 Xk2
Xk2 Yk1 Yk
$ Wb $1 | CWa | Wb Wc
$1 DD
A B | Wa A1 | Wb A2
A1 CC
A2 Wa D
B Wc B1 | | AC
B1 BD
C Wb D | Wa C1
C1 BA
D CD | Wa
Wa a
Wb b
Wc c
Entonces P3 solamente contiene reglas con partes derechas siendo , un smbolo terminal,
o una palabra de una o dos variables.
Dr. Arno Formella 81
4. Eliminamos las reglas que producen , ojo! tenemos que distinguir entre variables que
solamente producen y aquellas que tambin producen .
Entonces, el paso se realiza en 3 partes:
$ Wb $1 | CWa | Wb Wc
$1 DD
A B | Wa A1 | Wb A2
A1 CC
A2 Wa D
B Wc B1 | AC | C
B1 BD | D
C Wb D | Wa C1 | Wa
C1 BA | A | B
D CD | Wa
Wa a
Wb b
Wc c
$ Wb $1 | CWa | Wb Wc
$1 DD
A B | Wa A1 | Wb A2
A1 CC
A2 Wa D
B Wc B1 | AC | C
B1 BD | D
C Wb D | Wa C1 | Wa
C1 BA | A | B
D CD | Wa
Dr. Arno Formella 83
Wa a
Wb b
Wc c
En el ejemplo tenemos:
U1 = {(A, B), (B, C), (B1 , D), (C, Wa ), (C1 , A), (C1 , B), (D, Wa )}
U2 = {(A, C), (B, Wa ), (B1 , Wa ), (C1 , C)}
U3 = {(A, Wa ), (C1 , Wa )}
U4 =
$ Wb $1 | CWa | Wb Wc
$1 DD
A Wc B1 | AC | Wa A1 | Wb A2 | Wb D | Wa C1 | a
A1 CC
A2 Wa D
B Wc B1 | AC | Wb D | Wa C1 | a
B1 BD | CD | a
C Wb D | Wa C1 | a
C1 BA | Wa A1 | Wb A2 | Wc B1 | AC | Wb D | Wa C1 | a
D CD | a
Wa a
Wb b
Wc c
Observamos en la construccin:
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(G0 ) =
L(G1 ) = . . . = L(G5 ).
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
Obviamente cualquier gramtica en forma normal de Greibach es una gramtica libre de contexto
que se verifica 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 85
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 final):
4. sustituimos las reglas que no tengan un smbolo terminal como primer smbolo en su parte
derecha.
$ bDD | Ca | bc
A B | aCC | baD
B cBD | | AC
C bD | aBA
D CD | a | EF
E Eb
F a
$ CWa | Wb $1 | Wb Wc
$1 DD
A AC | Wc B1 | Wa A1 | Wb A2 | Wb D | Wa C1 | a
A1 CC
Dr. Arno Formella 86
A2 Wa D
B AC | Wc B1 | Wb D | Wa C1 | a
B1 BD | CD | a
C W b D | W a C1 | a
C1 AC | BA | Wa A1 | Wb A2 | Wc B1 | Wb D | Wa C1 | a
D CD | a
Wa a
Wb b
Wc c
solo reordenado, para que aparezcan las partes derechas con variables al principio al co-
mienzo de las listas.
$ CWa | Wb $1 | Wb Wc
$1 DD
A CA3 | Wc B1 | Wa A1 | Wb A2 | Wb D | Wa C1 | a |
Wc B1 A3 | Wa A1 A3 | Wb A2 A3 | Wb DA3 | Wa C1 A3 | aA3
A1 CC
A2 Wa D
A3 CA3 | C
B AC | Wc B1 | Wb D | Wa C1 | a
B1 BD | CD | a
C Wb D | Wa C1 | a
C1 AC | BA | Wa A1 | Wb A2 | Wc B1 | Wb D | Wa C1 | a
D CD | a
Wa a
Wb b
Dr. Arno Formella 87
Wc c
Entonces las reglas en P2 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 significa que se puede encontrar una derivacin en tiempo lineal, porque es posible
que en un momento se puede aplicar ms de una regla.
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
(infinito). 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
Idea de la comprobacin:
si |z| 2k+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 88
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
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 Labc = {an bn cn | n 1}.
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.)
El lema de bombeo nos garantiza la existencia de una particin z = uvwxy con |vx| 1,
|vwx| n, y k 0 : uv k wxk y Labc . (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.
uv 0 wx0 y = uwy Labc pero hemos borrado como mucho dos tipos de smbolos.
12.1. Motivacin
Ya sabemos Lab = {an bn | n IN} no es regular (comprobamos con el lema de bombeo o con
el teorema de MyhillNerode).
Pero Lab 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 = {[, ], h, i, (, )}, por ejemplo, ( ( ] ] ) i ) es incorrecto y [ ( [ ] ) h ( ) i ] es correcto.
L() = {w | w T , w es correcto}
Si vemos una parentesis que cierre la cima de la pila tiene que ser su homloga y la quita-
mos de la pila.
Eso era bastante fcil, ampliamos las posibilidades algo ms, permitimos
que el autmata pueda tener varios (nmero finito) estados (parecido a los AFD, pero
veremos que basta con un estado);
que el autmata sea no-determinista (veremos que habr una diferencia entre AFPDs y
AFPNDs);
que acepte con pila vaca o con estados finales (veremos que ambas formas son equivalen-
tes);
Dr. Arno Formella 90
M = (, , Q, , q0 , c0 , F )
donde
es un alfabeto de entrada.
q0 Q es el estado inicial.
es la funcin de transicin
: Q ( {} W< (Q )
con
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
LvvR = {w | w {0, 1} , w = vv R }
Verificamos 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.
con
afpvv
Cmo comprobamos que es correcto?
Dado que el contenido de la pila influye en el comportamiento del autmata necesitamos una
notacin para describir los clculos del autmata.
La configuracin (o descripcin instantnea) C de un AFP M = (, , Q, , q0 , c0 , F ) es la
tripla (q, u, v) donde
q Q es el estado actual
C = C0 p C1 p C2 p . . . p Cn = C 0
con v y f F .
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 de ls AFPD, los autmatas finitos con pila deterministas, que
veremos ms adelante).
Comprobamos ahora que el MvvR es correcto, es decir, tenemos que comprobar que L(MvvR ) =
LvvR .
Primero verificamos que MvvR acepta para cualquier palabra v {0, 1} la palabra w = vv R :
(q0 , vv R , #) (q0 , v R , v R #)
(q1 , v R , v R #)
(q1 , , #)
(q2 , , )
es decir, hemos encontrado un clculo y con eso sabemos que LvvR L(MvvR ).
Luego comprobamos que MvvR solamente acepta palabras en LvvR .
(por incluir)
Dr. Arno Formella 94
Para cada AFPND M que acepta con pila vaca existe un AFPND M 0 que acepta en estado final.
Idea de la comprobacin:
M 0 simula M
M = (, , Q, , q0 , c0 , )
M 0 = (, {c00 }, Q {q00 , f }, 0 , q00 , c00 , {f })
con
q00 , f
/ Q, es decir, son nuevos estados
c00
/ , es decir, es un nuevo smbolo inicial
0 (q00 , , c00 ) = {(q0 , c0 c00 )}, 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 : 0 (q, , c00 ) = {(f, c00 )}, es decir, si la pila solamente contiene el nuevo smbolo
inicial se va al estado final.
Para cada AFPND M que acepta en estado final existe un AFPND M 0 que acepta con pila vaca.
Idea de la comprobacin:
Dr. Arno Formella 95
M 0 simula M
M 0 vaca desde cualquier estado final de M su pila
tenemos que tener cuidado si M no termina en estado final, pero su pila est vaca: colo-
camos antes de la simulacin un nuevo smbolo c00 como smbolo inicial en la pila que no
se toca durante la simulacin de M .
Para el ejemplo
L = {ai bj | j i}
con el siguiente autmata que acepta en estado final
afpndef
(Primero observamos la consecuencia de la definicin de un clculo:
M acepta w (q0 , w, c0 ) p (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, , q0 , c0 , )
M 0 = (, {c00 }, Q {q00 , q 0 }, 0 , q00 , c00 , )
con
q00 , q 0
/ Q, es decir, son nuevos estados
c00
/ , es decir, es un nuevo smbolo inicial
0 (q00 , , c00 ) = {(q0 , c0 c00 )}, es decir, la primera transicin apila el antiguo smbolo inicial y
se va al antiguo estado inicial sin leer nada de la entrada
{c00 } : 0 (q 0 , , ) = {(q 0 , )}, es decir, una vez en estado q 0 se vaca la pila sin
modificar la entrada
q Q, , : 0 (q, , ) = (q, , ), es decir, pasos normales de la simulacin
q Q F, : 0 (q, , ) = (q, , ), es decir, se simula tambin las transiciones
mientras M no est en estado final
q F, : 0 (q, , ) = (q, , ) {(q 0 , )}, es decir, saltamos al estado que vaca la
pila si ya estamos en estado final
Dr. Arno Formella 96
Para cada gramtica libre de contexto G existe un autmata finito con pila no-determinista 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, , )
con
P = {$ aBBC, A aAA|b, B bBAC|b, C b}
que ya est en forma formal de Greibach, entonces el AFPND es:
con
Para cada autmata finito con pila no-determinista 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, , q0 , c0 , F ) un AFPND.
Si F 6= 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,
(q1 , k1 k ) (p, , )
(q2 , k2 k1 ) (q1 , , k1 )
...
(q, 1 2 ) (qk2 , , 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 simplificar
escribimos 0 si leemos o bien un smbolo o bien .
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
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 (q0 , w, c0 ) p (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 configuracin siguiente, se verifica directamente a partir de la construccin.
Juntas ambas direcciones nos proporcionen la equivalencia entre las gramticas libres de
contexto y los autmatas finitos con pila no-deterministas.
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 no-terminales
en sus partes derechas (es decir, tambin en la FNG los rboles de derivacin pueden ser
rboles binarios como en la FNC).
Los AFPND, como el propio nombre ya dice, no son deterministas, es decir, pueden existir va-
rias posibles configuraciones siguientes, o en otras palabras, (q, , ) o (q, , ) son conjuntos
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 final.
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 definir un autmata finito con pila determinista AFPD
M = (, , Q, , q0 , c0 , F )
|(q, , )| + |(q, , )| 1
Dado que para un AFPD existe como mucho una configuracin siguiente, es decir p es una
funcin, los clculos se convierten en cadenas deterministas, y decimos, que el AFPD acepta una
palabra w si existe el clculo (q0 , w, c0 ) p (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 no-deterministas para saltar a un es-
tado adicional con el fin de vaciar la pila.
Llamamos un lenguaje L libre de contexto determinista si L es aceptado por un autmata finito
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 determi-
nista, porque se apila hasta encontrar el centro (que hemos marcado con #) y despus se verifica
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 no-determinismo
para encontrar el centro, o en otras palabras, hay que comprobar todos los posibles clculos
verificando 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 AFP es un AFD.
Concatencin: L = L1 .L2 es libre de contexto, porque podemos construir a partir de las gra-
mticas G1 = (1T , 1N , P 1 , $1 ) y G2 = (2T , 2N , P 2 , $2 ) con L1 = L(G1 ) y L2 = L(G2 )
la gramtica G = (1T 2T , 1N 2N , 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 = L1 es libre de contexto, porque podemos construir una gramtica libre de con-
texto a partir de la gramtica para L1 , simplemente aadimos las producciones {$0
$0 $0 , $0 $} siendo $ el nuevo smbolo inicial.
Cardinalidad: |L| < ? s, se puede contestar la pregunta (es decir, es un problema compu-
table) porque
antes de entender dicha respuesta negativa, hay que estudiar ms a fondo la teora de
las Mquinas de Turing.
14. Bibliografa