You are on page 1of 314

Introducci on a la

teora de la computaci on
(Aut omatas y lenguajes formales)
Elisa Viso G.
Facultad de Ciencias, UNAM

Indice general
1. Fundamentos 1
1.1. Motivaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Cadenas y lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1. Operaciones con cadenas . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2. Propiedades de la concatenaci on . . . . . . . . . . . . . . . . . . . 7
1.2.3. Operaciones con lenguajes . . . . . . . . . . . . . . . . . . . . . . 8
1.3. Conjuntos regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Modelos matem aticos de proceso de cadenas . . . . . . . . . . . . . . . . 15
1.4.1. Aceptadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.2. Generadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.3. Transductores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5. Relaci on entre aut omatas y lenguajes . . . . . . . . . . . . . . . . . . . . . 19
2. M aquinas con un n umero nito de estados 21
2.1. Denici on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. Aplicaciones e instrumentaci on . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.1. Dise no de aut omatas nitos . . . . . . . . . . . . . . . . . . . . . 32
2.3. Equivalencia de aut omatas nitos . . . . . . . . . . . . . . . . . . . . . . . 34
2.4. Minimizaci on de aut omatas nitos . . . . . . . . . . . . . . . . . . . . . . 39
2.5. Relaci on entre modelos de aut omatas . . . . . . . . . . . . . . . . . . . . . 50
2.5.1. Aut omatas nitos no-deterministas . . . . . . . . . . . . . . . . . 50
2.6. Traductores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.6.1. Aut omatas nitos con respuesta asignada por estado . . . . . . . . 57
2.6.2. Aut omatas con respuesta asignada durante la transici on . . . . . . . 59
2.6.3. Equivalencia entre aut omatas de Moore y Mealy . . . . . . . . . . 60
2.6.4. Traducciones correctas . . . . . . . . . . . . . . . . . . . . . . . . 63
3. Gram aticas y lenguajes formales 65
3.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2. Conceptos b asicos de gram aticas . . . . . . . . . . . . . . . . . . . . . . . 66
3.3. Gram aticas formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
IV
3.3.1. Clasicaci on de gram aticas . . . . . . . . . . . . . . . . . . . . . . 73
3.4.

Arboles de derivaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.1. Ambig uedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4. Aut omatas nitos y lenguajes tipo 3 83
4.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2. Propiedades de los lenguajes regulares . . . . . . . . . . . . . . . . . . . . 90
4.3. Aut omatas nitos y expresiones regulares . . . . . . . . . . . . . . . . . . 97
4.3.1. Expresiones regulares a aut omatas nitos . . . . . . . . . . . . . . 101
4.4. Decidibilidad en lenguajes regulares . . . . . . . . . . . . . . . . . . . . . 104
4.4.1. Ambig uedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.4.2. Vacuidad, nitud e innitud . . . . . . . . . . . . . . . . . . . . . 108
4.4.3. Equivalencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.5. Lenguajes que no son regulares . . . . . . . . . . . . . . . . . . . . . . . . 111
4.5.1. Uso de las propiedades de cerradura . . . . . . . . . . . . . . . . . 112
4.6. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.6.1. Analizadores lexicogr acos . . . . . . . . . . . . . . . . . . . . . 115
4.6.2. Editores de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.6.3. Correctores de ortografa . . . . . . . . . . . . . . . . . . . . . . . 116
4.6.4. Biologa molecular . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5. Aut omatas con pila 121
5.1. Denici on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2. Formalizaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.3. Traducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.4. Ciclos en los AFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.5. AFS de un estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6. Lenguajes libres del contexto 153
6.1. Recapitulaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2. Manipulaci on de GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.2.1. Producciones vacas o producciones- . . . . . . . . . . . . . . . . 159
6.3. Dise no de gram aticas libres del contexto . . . . . . . . . . . . . . . . . . . 167
6.4. Forma normal de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.5. Forma normal de Greibach . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.6. Equivalencia de AFS y LLC . . . . . . . . . . . . . . . . . . . . . . . . . 186
7. Propiedades de los LLC 189
7.1. Lema de Bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.1.1. Aplicaciones del lema de bombeo . . . . . . . . . . . . . . . . . . 192
7.2. Lema de Ogden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.3. Propiedades de cerradura de LLC . . . . . . . . . . . . . . . . . . . . . . . 196
V
7.3.1. Operaciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . 199
7.4. Decidibilidad en LLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.4.1. Membresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.4.2. Determinismo y no determinismo . . . . . . . . . . . . . . . . . . 207
7.4.3. Ambig uedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
7.4.4. No decidibilidad en LLC . . . . . . . . . . . . . . . . . . . . . . . 208
7.5. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
8. M aquinas de Turing 213
8.1. Motivaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.2. Deniciones y notaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.3. Construcci on de MT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.3.1. Almacenamiento en el control nito . . . . . . . . . . . . . . . . . 222
8.3.2. M etodo de pistas m ultiples . . . . . . . . . . . . . . . . . . . . . . 224
8.3.3. M etodo de tachar smbolos . . . . . . . . . . . . . . . . . . . . . . 227
8.3.4. M etodo de corrimiento . . . . . . . . . . . . . . . . . . . . . . . . 229
8.3.5. M etodo de subrutinas . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.4. La MT como procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.5. Distintos tipos de MT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
8.5.1. M aquina de Turing con cinta innita en ambos sentidos . . . . . . . 233
8.5.2. M aquinas de Turing con la opci on de no mover la cabeza . . . . . . 236
8.5.3. M aquinas de Turing con m as de una cinta . . . . . . . . . . . . . . 236
8.5.4. M aquinas de Turing fuera de lnea (off-line) . . . . . . . . . . . . . 237
8.5.5. M aquinas de Turing multidimensionales . . . . . . . . . . . . . . . 240
8.5.6. M aquinas de Turing no-deterministas . . . . . . . . . . . . . . . . 242
8.6. La m aquina universal de Turing . . . . . . . . . . . . . . . . . . . . . . . 248
8.7. Aut omatas linealmente acotados . . . . . . . . . . . . . . . . . . . . . . . 250
9. La jerarqua de Chomsky 253
9.1. Recursivo vs recursivamente enumerable . . . . . . . . . . . . . . . . . . . 253
9.1.1. M aquinas de Turing como generadores . . . . . . . . . . . . . . . 254
9.1.2. Lenguajes que no son recursivamente enumerables . . . . . . . . . 257
9.1.3. Lenguajes recursivamente enumerables no recursivos . . . . . . . . 259
9.2. Gram aticas sin restricciones . . . . . . . . . . . . . . . . . . . . . . . . . 260
9.2.1. Lenguajes generales y m aquinas de Turing . . . . . . . . . . . . . 260
9.2.2. Lenguajes dependientes del contexto y aut omatas linealmente
acotados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
10. Introducci on a decidibilidad 275
10.1. Signicado del concepto de indecidibilidad . . . . . . . . . . . . . . . . . 275
10.2. El problema de la detenci on . . . . . . . . . . . . . . . . . . . . . . . . . 277
10.3. Reducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
VI
10.4. Otros problemas indecidibles . . . . . . . . . . . . . . . . . . . . . . . . . 282
10.4.1. El problema de la cinta en blanco . . . . . . . . . . . . . . . . . . 283
10.4.2. El problema de alcanzar un estado . . . . . . . . . . . . . . . . . . 285
10.4.3. Una funci on no computable . . . . . . . . . . . . . . . . . . . . . 286
10.4.4. Es L(M) =

? . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10.4.5. Problema de membresa (w L(M)?) . . . . . . . . . . . . . . . 288
10.4.6. Problema de vacuidad (L(M) = ?) . . . . . . . . . . . . . . . . 290
10.5. De la indecidibilidad de los problemas sobre las MT . . . . . . . . . . . . . 290
10.5.1. El teorema de Rice . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.6. Problemas indecidibles que no se reeren a MT . . . . . . . . . . . . . . . 294
Bibliografa 297
Nomenclatura 299

Indice de guras
1.1. M aquina aceptadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2. M aquina generadora . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3. M aquina transductora . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1. Vericador de paridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2. Vericador de paridad para ambos smbolos . . . . . . . . . . . . . . 28
2.3. Diagrama y tabla de transiciones para el ejemplo 2.2.b . . . . . . . . 29
2.4. Iteraciones en la conformaci on de la matriz de equivalencias . . . . 48
2.5. Ejemplo de aut omata nito no-determinista . . . . . . . . . . . . . . 51
2.6. Transiciones posibles ante la cadena 0100 . . . . . . . . . . . . . . . 52
2.7. Aut omata de Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.8. Retraso de la entrada en una m aquina de Mealy . . . . . . . . . . . 61
2.9. Conversi on de m aquina de Moore a Mealy . . . . . . . . . . . . . . . 63
2.10. Conversi on de m aquina de Mealy a Moore . . . . . . . . . . . . . . . 63
3.1.

Arbol de derivaci on para una oraci on . . . . . . . . . . . . . . . . . . 68
3.2. Contenci on entre los tipos de gram aticas . . . . . . . . . . . . . . . . 75
3.3.

Arbol de derivaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.4. Gr acas para derivaciones en lenguajes tipo 1 o 0 . . . . . . . . . . 78
3.5. Dos arboles de derivaci on para la cadena ababab . . . . . . . . . . . 78
3.6. Derivaciones distintas para 10101 . . . . . . . . . . . . . . . . . . . . 80
3.7. Derivaciones distintas para 100 . . . . . . . . . . . . . . . . . . . . . 80
3.8. Derivaciones distintas para a b + c . . . . . . . . . . . . . . . . . . . 81
4.1. Aut omata con transiciones- . . . . . . . . . . . . . . . . . . . . . . . 98
4.2. Aut omatas para expresiones regulares sin operadores . . . . . . . . 101
4.3. Uni on de expresiones regulares . . . . . . . . . . . . . . . . . . . . . 102
4.4. Concatenaci on de expresiones regulares . . . . . . . . . . . . . . . . 103
4.5. Construcci on de un AF para la cerradura de Kleene de expresiones
regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.6. Aut omata nito con ambig uedad presente . . . . . . . . . . . . . . . 105
4.7. Derivaciones para la cadena 10001 . . . . . . . . . . . . . . . . . . . 107
VIII
4.8. Estados alcanzables y abandonables . . . . . . . . . . . . . . . . . . 108
4.9. Aut omata M(L) correspondiente a L . . . . . . . . . . . . . . . . . . 118
5.1. Reconocimiento de aabb . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.2. Reconocimiento de abba . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.1. AF para determinar sustituci on de producciones unitarias . . . . . . 165
6.2. Derivaciones con la gram atica original y modicada. . . . . . . . . . 177
7.1. Derivaci on en un solo paso . . . . . . . . . . . . . . . . . . . . . . . . 190
7.2. Derivaci on en m as de un paso . . . . . . . . . . . . . . . . . . . . . . 191
7.3. Lema del bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.4. Regiones en la cadena a
k
b
k
a
k
b
k
. . . . . . . . . . . . . . . . . . . . . 193
7.5.

Arbol de derivaci on para el lema de Ogden . . . . . . . . . . . . . . 195
7.6. Regiones en la palabra t = 10
k
#1
k
= 0
k
1
k
. . . . . . . . . . . . . . . 202
7.7. Gr aca de la gram atica G . . . . . . . . . . . . . . . . . . . . . . . . . 205
7.8. Gr aca de la gram atica G con ciclos . . . . . . . . . . . . . . . . . . 206
7.9. Una doble h elice de ADN . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.10. El plegamiento de una mol ecula de ARN . . . . . . . . . . . . . . . . 212
8.1. Esquema de una M aquina de Turing . . . . . . . . . . . . . . . . . . 218
8.2. Representaci on de una MT en diagrama de transiciones . . . . . . . 221
8.3. M
2
con cinta innita en ambas direcciones . . . . . . . . . . . . . . . 233
8.4. M
1
con cinta innita s olo hacia la derecha . . . . . . . . . . . . . . . 234
8.5. MT con una cinta simulando a una con varias cintas . . . . . . . . . 237
8.6. M aquina de Turing fuera de lnea . . . . . . . . . . . . . . . . . . . . 238
8.7. Simulaci on de M
F
utilizando una M
s
. . . . . . . . . . . . . . . . . . 239
8.8. MT bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
8.9. Posiciones en una MT bidimensional . . . . . . . . . . . . . . . . . . 241
8.10. Representaci on de la cinta de una MT bidimensional . . . . . . . . . 241
8.11. Ejecuci on de la MT que reconoce a ww = aabaab . . . . . . . . . . . 244
8.12. MT no determinista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
8.13. Ejecuci on determinista de una MT no determinista . . . . . . . . . . 247
8.14. Esquema de una m aquina universal de Turing . . . . . . . . . . . . . 249
8.15. ALA que acepta a
n!
[ n 0 . . . . . . . . . . . . . . . . . . . . . . . 251
9.1. Enumeraci on para lenguajes recursivamente enumerables . . . . . 256
9.2. Representaci on binaria de subconjuntos . . . . . . . . . . . . . . . . 258
9.3. Jerarqua de lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . 274
10.1. Ejecuci on de H frente a w
M
w . . . . . . . . . . . . . . . . . . . . . . . 278
10.2. Ejecuci on de H

frente a w
M
w . . . . . . . . . . . . . . . . . . . . . . . 278
10.3. Ejecuci on de

H frente a w . . . . . . . . . . . . . . . . . . . . . . . . 279

INDICE DE FIGURAS IX
10.4. Ejecuci on de

H frente a s misma . . . . . . . . . . . . . . . . . . . . 280
10.5. Construcci on de pruebas por reducci on de Turing . . . . . . . . . . . 283
10.6. Reducibilidad de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . 283
10.7. Construcci on de M
w
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
10.8. Reducci on de H a H
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . 284
10.9. Construcci on de M
q
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.10. Reducci on de H a H
q
. . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10.11. Reducci on de f al problema de la cinta en blanco . . . . . . . . . . . 287
10.12. Construcci on de M
w
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
10.13. Reducci on de H a H

. . . . . . . . . . . . . . . . . . . . . . . . . . 288
10.14. Construcci on de

M
w
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.15. Reducci on de H a H

. . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.16. Reducci on de H

a H

. . . . . . . . . . . . . . . . . . . . . . . . . . 290
10.17. Construcci on de M

en el teorema de Rice . . . . . . . . . . . . . . . 293


10.18. Reducci on de H a H
P
. . . . . . . . . . . . . . . . . . . . . . . . . . . 293
10.19. Un problema de enlosado . . . . . . . . . . . . . . . . . . . . . . . . . 295
Fundamentos
1
En este captulo se presenta una introducci on al tema de los aut omatas y len-
guajes formales, revisando brevemente la historia de los conceptos fundamen-
tales del tema de teora de la computaci on. A continuaci on se dan las denicio-
nes b asicas de los elementos con que vamos a trabajar, como lo son smbolos,
cadenas, alfabetos, lenguajes y las operaciones denidas para estos. Se ter-
mina el captulo mostrando una relaci on entre distintos tipos de lenguajes y
m aquinas procesadoras de cadenas.
1.1. Motivaci on
En una primera pl atica respecto al material del curso, siempre van a escucharme decir
que este material es muy bonito porque es te orico; porque nos encontramos teoremas y
demostraciones, y porque las demostraciones son, la mayora de las veces, constructivas:
no s olo decimos que existe, sino que adem as damos las reglas o el m etodo para construir al
objeto en cuesti on.
Pero por mucho gusto que tengamos por la teora, y no importa que tanto nos veamos
inuidos por la belleza de las matem aticas (posiblemente una deformaci on profesional),
la teora de la computaci on es importante por muchas otras razones.
Estudiamos Teora de la Computaci on para entender mejor los principios fundamentales
que permiten y posibilitan aplicaciones pr acticas de computaci on.
Podramos decir que estudiamos teora de la computaci on para responder a la pregunta:
2 Fundamentos
Cu ales son las capacidades y limitaciones fundamentales
de las computadoras?
Y dije podramos, porque si bien esta es la pregunta recurrente en teora de la com-
putaci on, el haberla planteado como lo hice podra darnos la idea de que es una pregunta
que nace con las computadoras modernas, principalmente en la segunda mitad del siglo
XX. Y no es as. El objetivo principal de las computadoras es que resuelvan problemas,
algunos m as sencillos o mec anicos que otros. Nuestra preocupaci on se centra, entonces, en
m etodos, procedimientos, programas, algoritmos para resolver problemas, y en una segun-
da instancia, m as concreta pero no en este material, en saber si estos algoritmos pueden o
no ser ejecutados ecientemente por una computadora.
Para responder, entonces, a esta pregunta, tratemos de abstraer lo que es una compu-
tadora y la manera que vamos a tener de ejecutar un procedimiento en ella, precisando
primero qu e es lo que queremos decir con abstracci on:

La abstracci on consiste fundamentalmente en capturar comportamiento observado


de la manera m as simple, utilizando para ello herramientas matem aticas.

Obtener la denici on o modelo preciso que capture la esencia del principio en cues-
ti on con la menor cantidad posible de carga que le sea ajena al asunto.
Queremos abstraer el concepto de computadora y para ello podemos pensar en ella
como una funci on, cuyo trabajo es recibir un cierto conjunto de argumentos y producir
un resultado que dependa de esos argumentos. Pero si estamos hablando de funciones y
c alculos (c omputos) surgen naturalmente las siguientes preguntas:

Qu e quiere decir que una funci on sea computable?

Existe alguna funci on interesante que no sea computable?

C omo est an relacionadas las construcciones en lenguajes de programaci on


con el poder de c omputo?

Por qu e algunos problemas computacionalmente difciles, duros de resol-


ver y otros no?

Podemos caracterizar a las funciones que no pueden ser calculadas ecien-


temente?
Es importante saber que la comunidad matem atica ha estado preocupada por pregun-
tas de esta naturalezadesde antes de que surgieran las primeras computadoras como las
conocemos actualmente.
Entre los 23 problemas planteados por Hilbert en el a no de 1900 para denir el futuro
de la matem atica, se encontraba el de las ecuaciones diofantinas, que se divida realmente
1.1 Motivaci on 3
en dos partes: en la primera de ellas se preguntaba si dada una ecuaci on diofantina exista
alg un procedimiento mec anico que pudiera decir si la ecuaci on tena soluci on o no; si este
procedimiento mec anico existiese, entonces al responder positivamente frente a una deter-
minada ecuaci on se poda proceder, combinatoriamente, a encontrar la soluci on. Tambi en
estaba Hilbert preocupado por hallar alg un mecanismo m as eciente que el combinatorio
para encontrar la soluci on, si es que esta exista.
David Hilbert introdujo en la d ecada de 1920 la noci on de sistema formal. Un sistema
formal consiste de un lenguaqje formal; f ormulas escritas en este lenguaje; un subconjun-
to de estas f ormulas que son v alidas y que corresponden a los axiomas; y, nalmente, un
conjunto de reglas de inferencia que permite la derivaci on de nuevas f ormulas v alidas, lla-
madas teoremas. As planteado, demostrar un teorema de matem aticas debera reducirse a
formalizar el sistema y aplicar las reglas de inferencia para derivar nuevas f ormulas v alidas.
Al respecto, Kurt G odel en 1931 public o un artculo en el que planteaba lo siguiente:
1. Si se tiene una teora T que formaliza a la aritm etica de Peano y T es consistente,
esto es, dentro de T no se puede demostrar al mismo tiempo la validez de un f ormula
y de su negaci on, entonces hay un enunciado en el lenguaje de esa teora, L
T
, tal
que ni ni la negaci on de son derivables en T; esto es, existe al menos una f ormula
indecidible.
2. La teora T no puede probar su propia consistencia, en caso de que sea consistente.
Esto contradijo la idea de Hilbert de que poda construir un cuadro completo de axiomas
a partir del cual se pudiera decidir la validez o no de cualquier enunciado aritm etico. A
partir de este resultado de G odel, ning un matem atico puede decir que tiene un cuadro de
axiomas para la aritm etica que sea consistente y completo.
Estos trabajos de Hilbert y G odel son, como ya mencionamos, relativos a sistemas
formales, donde los smbolos se despojan de signicado y se trabaja exclusivamente con la
sintaxis. La raz on por la que se menciona a Hilbert en este contexto de las ciencias de la
computaci on es que Hilbert quera procedimientos mec anicos para resolver problemas, lo
que nos lleva al concepto de algoritmo.
A partir de esta preocupaci on, en las d ecadas de 1930 y 1940, se plantean diferentes
modelos de computabilidad, algunos de ellos de manera independiente. Mencionamos a
los que m as han inuido en la teora de la computaci on en la tabla 1.1, en el orden en que
fueron apareciendo. La mayora de ellos se reere a sistemas formales y la mecanizaci on
de procesos de soluci on.
A lo largo de la segunda mitad del siglo XX, y a un un poco antes, ha habido m ultiples
renamientos de estas abstracciones. En este texto intentaremos presentar algunos de ellos.
4 Fundamentos
Tabla 1.1 Principales modelos de funciones computables
G odel Funciones recursivas primitivas
(1931) Herramienta fundamental para estudiar compu-
tabilidad; mecanismo inductivo para la deni-
ci on de funciones.
Hedrbrand Funciones recursivas generales
(1931) Introducci on de la minimalidad en las funcio-
nes recursivas primitivas extendi endolas a fun-
ciones primitivas parciales.
Kleene Funciones recursivas parciales
(1936) L ogica ecuacional y manejo de cuanticadores;
mecanismo ecuacional con cuanticadores en
l ogica
Alonzo Church C alculo lambda
(1936) Relaciona el trabajo de G odel y Kleene, con
deniciones inductivas restringidas; inspiraci on
de lenguajes como LISP
Alan Turing M aquina de Turing
(1936) herramienta est andar para complejidad; modelo
mecanicista de soluci on de problemas
Emil Post Sistemas de Post
(1943) Mecanismos deductivos; modelos de algorit-
mos, desarrollados con gram aticas
A. A. Markov Cadenas de Markov
(1954) Modelo de algoritmos; similar a las gram aticas
formales
Noam Chomsky Jerarqua de Chomsky
(1958) Modelo de lenguajes y jerarquizaci on de los
mismos; utilizado para gram aticas formales
Shepherdson y Sturgis M aquinas de acceso directo
(1963) Modelo explcito de computadoras modernas;
utilizado en complejidad, para medir pasos
elementales
1.2 Cadenas y lenguajes 5
1.2. Cadenas y lenguajes
Como ya mencionamos, estamos preocupados con resolver problemas. Un tipo de pro-
blemas que nos va a interesar son problemas de decisi on o decidibilidad. Un problema de
decidibilidad es una funci on que produce como resultado uno de dos valores: s o no.
Son problemas tpicos de decidibilidad los que se reeren a pertenencia de un elemento a un
conjunto, el si un objeto tiene o no una determinada propiedad, si un conjunto puede o no
particionarse en clases de equivalencia, etc. Dadas las preguntas que planteamos al inicio,
nos interesan este tipo de problemas, fundamentalmente porque dada una jerarquizaci on
de distintos modelos de funciones computables con distintas caractersticas y propiedades,
nos va a interesar a cu al de los niveles de esa jerarqua pertenece nuestro objeto.
Cuando decimos que un problema es decidible, quiere decir que podemos describir a
todos los posibles argumentos a la funci on, y podemos especicar tambi en el subconjunto
de entradas para las que la funci on responder a armativamente. Pasemos a formalizar el
concepto de entradas en el contexto de la teora de la computaci on.
En general vamos a considerar que las entradas son cadenas de smbolos.
Denici on 1.1 Un smbolo es un objeto indivisible. Vamos a utilizar para representar a
los smbolos las letras min usculas al frente del alfabeto (a, b, c) y los dgitos (0 . . . 9).
Denici on 1.2 Un alfabeto es un conjunto de smbolos, que puede ser nito o innito.
A lo largo de este texto utilizaremos siempre alfabetos nitos. En general se usa la letra
griega . Tambi en se utilizan las letras may usculas hacia el nal del alfabeto (V, X, Y, Z).
Denici on 1.3 Una cadena (cuerda, palabra, frase) es una sucesi on nita de smbolos,
tomados estos de un alfabeto tambi en nito. Se utilizan las letras min usculas hacia el nal
del alfabeto para denotar cadenas (x, y, w, . . .).
Es importante notar que todas estas deniciones tienen la palabra nito(a). Las caracte-
rizaciones pueden cambiar mucho si hablamos de cadenas innitas o de alfabetos innitos.
Decimos que x es una cadena sobre si x est a formada con smbolos tomados del alfabe-
to .
Sea x = a
1
a
2
. . . a
k
una cadena sobre tal que a
i
, i = 1, . . . , k. La longitud de x es
k, el n umero de smbolos en x y lo denotamos con [x[.
[x[ = k x = a
1
a
2
. . . a
k
, a
i
, i = 1, . . . , k
6 Fundamentos
Ejemplo 1.1:
Sea = 0, 1 y x = 0011001. x es una cadena sobre de longitud 7.
Ejemplo 1.2:
Sea = a, b, c y x = acb. x es una cadena sobre de longitud 3.
Una cadena mucho muy importante es la cadena de longitud 0, a la que denotamos
con . Nos vamos a referir a esta cadena como la palabra vaca. Algunos autores usan
para denotar a la palabra vaca.
Denotamos por W
k
al conjunto de todas las cadenas de longitud k sobre un alfabeto V .
W
k
= w [ [w[ = k y w = a
1
a
2
. . . a
k
, a
i
V
Entonces
W
0
= y lo denotamos con
Al conjunto de todas las cadenas nitas posibles sobre un alfabeto lo denotamos
W =

_
k=0
W
k
1.2.1. Operaciones con cadenas
La operaci on fundamental entre cadenas es la concatenaci on, algunas veces identicada
tambi en como producto de cadenas. Es una operaci on binaria en el conjunto W:
m : W W W
El efecto de concatenar la cadena x con la cadena z se logra haciendo seguir a la cadena x
con los smbolos de z.
Si x = a
1
a
2
. . . a
i
, z = b
1
b
2
. . . b
j
entonces m(x, z) = a
1
a
2
. . . a
i
b
1
b
2
. . . b
j
.
Denotamos m(x, z) por x z o simplemente xz.
Denici on 1.4 Sea w = xz. Entonces,

x es un prejo de w.

x es un prejo propio de w, si z =

z es un sujo de w.

z es un sujo propio de w si x = .

Si w = xyz, x, y y z son subcadenas de w.


1.2 Cadenas y lenguajes 7
1.2.2. Propiedades de la concatenaci on
Propiedad 1.1 (CERRADURA:) x, y W, xy W
Propiedad 1.2 (ASOCIATIVIDAD:) Para x, y, z W, (xy)z = x(yz)
Propiedad 1.3 (IDENTIDAD:) Para w W, w = w = w
Propiedad 1.4 (LONGITUD:) Para w, x W, [wx[ = [w[ +[x[
Debemos notar, sin embargo, que la concatenaci on no es necesariamente conmutativa,
ya que no necesariamente wx = xw
Denotamos con w
k
a w concatenado consigo mismo k veces.
k veces
..
ww. . . w
w
R
es el reverso de w. Si w = a
1
a
2
. . . a
i
entonces w
R
= a
i
a
i1
. . . a
1
Es importante notar que tanto el alfabeto como las cadenas tienen un n umero nito de
smbolos.
Teorema 1.1 Si V es un alfabeto no vaco con n smbolos, entonces el conjunto W de
todas las cadenas sobre V es enumerable.
Demostraci on:
Construimos una funci on biyectiva f : W Z
+
de la siguiente manera:
Denimos
h : V N
una funci on inyectiva que asocia un entero 1 h(a) n a cada smbolo de V ; y
denimos, para cadenas arbitrarias de longitud nita una funci on f : W Z
+
de la
siguiente manera:
f() = 0
f(xa) = n f(x) +h(a) para x W y a V
La funci on f asocia a cada cadena un entero, con representaci on en base n, en la cu al
cada dgito es la codicaci on de alguno de los smbolos en V , dada por la transformaci on
h. Dado que los enteros son enumerables y estamos transformando a un subconjunto de
los enteros, tambi en W es enumerable.
8 Fundamentos
1.2.3. Operaciones con lenguajes
Denici on 1.5 Un lenguaje es un conjunto de cadenas sobre un alfabeto V (es un sub-
conjunto de W).
La clase de todos los lenguajes sobre un alfabeto V es el conjunto de todos los subconjuntos
de W, o sea, el conjunto potencia de W (

(W)).
Ejemplo 1.3:
Sea V = a
0
, a
1
. Entonces
L = a
0
a
i
1
a
i
2
. . . a
in
[ a
i
k
V, k 0
es un lenguaje. En particular es el lenguaje de combinaciones de a
0
y a
1
tales que empiezan
con a
0
.
Ejemplo 1.4:
Sea V = a, L = a
k
[ k > 0
consiste de todas las cadenas de a de longitud nita.
Ejemplo 1.5:
Sea V = 0, 1 , L = xx
R
[ x = a
1
a
2
. . . a
k
, a
i
V, k > 0
L es el conjunto de palndromas formadas con ceros y unos.
Dado que los lenguajes son conjuntos, las operaciones entre lenguajes son las mismas
que las operaciones entre conjuntos. Tenemos, por lo tanto, la uni on, intersecci on y com-
plemento (respecto a un alfabeto) de lenguajes. De donde, si A y B son lenguajes:
A B = w [ w A o bien w B
A B = w [ w A y w B
A = w [ w , A y w = a
1
a
2
. . . a
k
, a
i
V
Denimos adem as la concatenaci on de dos lenguajes de la siguiente manera:
Sean A y B lenguajes; entonces
A B = AB = wx [ w A y x B
En la concatenaci on de lenguajes podemos observar:
Propiedad 1.5 La cardinalidad de la concatenaci on de dos lenguajes es menor o igual
que el producto de las cardinalidades de cada uno de ellos.
1.2 Cadenas y lenguajes 9
Ejemplo 1.6:
En este ejemplo denotaremos con [A[ al n umero de elementos del conjunto A.
A = a, ab, B = c, bc, AB = ac, abc, abbc
[A[ = 2, [B[ = 2 [AB[ = 3 < [A[ [B[ = 4
Propiedad 1.6 (IDENTIDAD) El conjunto = es la identidad en la concatenaci on
de lenguajes.
Veamos por qu e:
A = wx [ w A, x
pero lo unico en es , de donde
A = w [ w A
y como w = w = w tenemos A = A = A
Propiedad 1.7 (ELEMENTO NULO) El conjunto vaco es el elemento nulo en la concate-
naci on de lenguajes.
Propiedad 1.8 (ASOCIATIVIDAD) A(BC) = (AB)C
Propiedad 1.9 (DISTRIBUTIVIDAD FRENTE A LA UNI

ON)
A(B C) = AB AC
Cabe preguntarse frente a estas operaciones, es la concatenaci on de lenguajes distri-
butiva frente a la intersecci on? La respuesta es que no siempre y para mostrarlo damos un
contraejemplo:
Sean A = , a, b, B = , d y C = ad, bd. Entonces,
A (B C) = , a, b (, d ad, bd)
= , a, b
=
A B A C = , a, b , d , a, b ad, bd
= , a, b, d, ad, bd ad, bd, aad, bbd, bad, bbd
= ad, bd
,= !
10 Fundamentos
Denici on 1.6 Sea V un alfabeto y A W un lenguaje sobre V . Denimos los conjun-
tos A
k
, k 0, de la siguiente manera:
A
0
=
.
.
.
A
k
= A
k1
A
Cada uno de estos conjuntos es un subconjunto de W, pues en W hay cerradura bajo
concatenaci on.
Denici on 1.7 La cerradura de A en W, denotada por A
*
es
A
*
=

_
k=0
A
k
Al operador se le conoce como Estrella de Kleene o cerradura de Kleene.
Ejemplo 1.7:
Sea A = a, ab, ac
A
3
= A A A = aaa, aaab, aaac, aaba, aabab, aabac,
aaca, aacab, aacac, abaa, abaab, abaac,
ababa, ababab, ababac, abaca, abacab,
abacac, acaa, acaab, acaac, acaba,
acabab, acabac, acaca, acacab, acacac
Ejemplo 1.8:
Sea A = a. Entonces A

= , a, aa, aaa, aaaa, . . . . . .


Ejemplo 1.9:
Sea B = 0, 1, 00, 01. Entonces
B
*
= , 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, . . .
Sea V un alfabeto. De la denici on que dimos de W
k
podemos ver que
W
k
= V
k
y W = V
*
En adelante usaremos V
*
para denotar al universo de todas las cadenas sobre V .
1.3 Conjuntos regulares 11
Ejemplo 1.10:
Sea L un lenguaje. Entonces
L
R
= w
R
[ w L
Consideremos ahora L = ww
R
[ w V
*
. A este tipo de lenguaje se le conoce como
lenguaje espejeado. N otese que cada cadena en el lenguaje es una imagen de s misma. Si
cada cadena en un lenguaje es su propio inverso entonces L = L
R
. Sin embargo, lo inverso
no es cierto si L = L
R
no forzosamente el lenguaje contiene a cada cadena y su inverso);
por ejemplo L = 01, 10 y L
R
= 10, 01 y sin embargo 01 no es imagen de s misma,
como tampoco lo es 10.
Es conveniente poder denotar lenguajes en t erminos de las operaciones de uni on, conca-
tenaci on y/o cerradura de los smbolos de su alfabeto. Por ejemplo si V
1
= 0 y V
2
= 1,
el lenguaje
L = (00 01)
*
denota al conjunto de cadenas que resulta de concatenar 00 y 01 un n umero arbitrario de
veces.
L = , 00, 01, 0000, 0001, 0100, 0101, . . . ..
y se denota m as com unmente como
L = (0(0 + 1))
*
Ejemplo 1.11:
Describir el lenguaje denotado por (1 +)(0 + 1)
Respuesta: L = 0, 1, 10, 11.
Ejemplo 1.12:
Describir el lenguaje denotado por 1(0 + 1)
Respuesta: L = 10, 11
Ejemplo 1.13:
Describir el lenguaje denotado por (1 +)(0 + 1)
*
Respuesta: L = , 0, 1, 10, 11, 100, 101, 110, 111, . . .
1.3. Conjuntos regulares
Tenemos ya identicadas las principales operaciones entre cadenas, la uni on, conca-
tenaci on y cerradura (estrella de Kleene). Con estas operaciones se pueden construir len-
guajes (conjuntos de cadenas) que se obtienen a partir de un alfabeto nito y estas tres
12 Fundamentos
operaciones y que se conocen como expresiones o conjuntos regulares. Daremos una de-
nici on inductiva de estos conjuntos, usando + para la uni on, o nada para la concatenaci on
y el asterisco () para la cerradura.
Denici on 1.8 (EXPRESIONES REGULARES) Sea un alfabeto nito.Las expresiones
regulares sobre se denen de la siguiente manera:
1. es una expresi on regular (en adelante, ER).
2. Cualquier smbolo de es una ER.
3. es una ER.
4. Si R y S son ER, entonces
(a) (RS) (o (R S)) es una ER.
(b) (R +S) (o (R S)) es una ER.
(c) (R) es una ER.
5. S olo las expresiones formadas con estas reglas son expresiones regulares.
Este tipo de deniciones nos sirven no unicamente para mostrar que una expresi on es
regular, sino tambi en para analizarla.
Evaluar una expresi on regular quiere decir efectuar las operaciones indicadas en ella.
Para ello necesitamos tener precedencia entre los distintos operadores, la que listamos de
mayor a menor: , , +.
Se utilizan par entesis para alterar la precedencia natural dada por los operadores, de la
misma manera en que lo haramos para expresiones aritm eticas.
Deseo insistir en que la expresi on regular denota a un lenguaje L(R) y por lo tanto
a un conjunto. Se mantienen, entonces, las propiedades que dimos para lenguajes y sus
operaciones. Por lo tanto, es claro que:
L(R

) = (L(R))

L(RS) = L(R)L(S) L(R +S) = L(R) L(S).


Ejemplo 1.14:
Demostrar que (ab +ab a) es una ER.
Respuesta:
i. a y b (regla 2) son ER
ii. b (regla 4c) es ER
iii. ab y ab a (regla 4a) es una ER (se aplic o la concatenaci on dos veces).
iv. ab (regla 4a es una ER.
v. ab +ab a (regla 4b) es una ER y tambi en (ab +ab

a).
vi. Por ultimo, (ab +ab a) (regla 4c) es una ER.
1.3 Conjuntos regulares 13
Como la expresi on se construy o utilizando unicamente las reglas de construcci on dadas
en la denici on 1.8, lo que se obtiene es una expresi on regular.
Ejemplo 1.15:
Describir al lenguaje representado por la ER (0( + 1)) .
Respuesta: La estrella al nal indica que est a en el lenguaje por la iteraci on 0. La ite-
raci on 1 nos entrega 0 = 0 y 01. La segunda nos da 00, 001,010 y 0101. La tercera nos
entrega 000,0001, 0010, 00101, 0100, 01001, 01010, 010101. Pueden observar que estamos
utilizando las siguientes deniciones:
L =

_
k=0
L
k
= L
0
+L +L
2
+L
3
+. . .
L
k
= L
k
L
Como el lenguaje es innito, no vale la pena seguir enumerando las cadenas. Lo unico que
podemos decir de ellas es que nunca aparecen dos 1s seguidos; el n umero de 1s es siempre
menor o igual al n umero de 0s; las cadenas empiezan siempre con 0. Existe alguna cadena
que est e descrita por estas reglas y que no pertenezca a la ER dada?
Ejemplo 1.16:
A continuaci on listamos algunas ER y los conjuntos a los que denotan.
i. 00 denota al conjunto 00.
ii. (0 + 1) denota a todas las cadenas de ceros y unos.
iii. (0 + 1) 00(0 + 1) denota a todas las cadenas de ceros y unos con al menos dos
ceros consecutivos.
iv. (1 + 10)

denota a todas las cadenas de 0 y 1 que empiezan con 1 y que no tienen


dos 0 consecutivos.
v. (0 + 1)

011 denota a todas las cadenas de 0 y 1 que terminan en 011.


vi. 0

denota un n umero arbitrario de 0 seguidos de un n umero arbitrario de 1


seguido de un n umero arbitrario de 2.
vii. Supongamos que tenemos L = abc, ab, abd, cabc, cab, cabd. La siguiente expre-
si on denota a este conjunto:
(c +)ab( +c +d)
14 Fundamentos
Denici on 1.9 (EQUIVALENCIA DE EXPRESIONES REGULARES) Dos expresiones regu-
lares son equivalentes si y s olo si denen al mismo lenguaje.
R S L(R) = L(S)
Como los lenguajes son conjuntos, para demostrar la equivalencia entre dos expresiones
regulares debemos demostrar que R S y que S R. En algunas ocasiones esto se
hace informalmente, argumentando que todas las cadenas que se pueden producir en uno
se pueden producir en el otro y viceversa. Hay algunas equivalencias que nos pueden ser
utiles para transformar (simplicar) expresiones regulares, de tal manera que si partiendo de
una obtenemos la otra, la equivalencia queda demostrada. Tambi en, una reescritura de las
expresiones regulares nos puede ser util para facilitar su an alisis. En la tabla 1.2 podemos
ver algunas de estas equivalencias. Sean R, S y T ER cualesquiera.
Tabla 1.2 Equivalencias entre expresiones regulares
1. R(ST) = (RS)T (Asociatividad)
2. R + (S +T) = (R +S) +T (Asociatividad)
3. R +S = S +R (conmutatividad)
4. R(S +T) = RS +RT
5. (R +S)T = RT +ST
6. (R +S)

= (R

+S

= (R

7. R

= ( +R)
k1
(R
k
)

Para k = 1, . . .
8. RR

= R
+
9. R
+
+ = R

10. R = R = R (elemento identidad)


11.

=
12. +R = R
13. R = R =
14.

=
La validez de estas equivalencias se pueden demostrar desenrollando cada uno de las
expresiones a los lados de la igualdad. Haremos una como ejemplo.
Ejemplo 1.17:
Demostrar la equivalencia 6 de la tabla 1.2.
1.4 Modelos matem aticos de proceso de cadenas 15
Demostraci on:
Desarrollamos cada uno de los t erminos:
(R +S) = + (R +S) + (R +S)
2
+. . .
= +R +S +R
2
+RS +SR +S
2
+. . .
(R S) = +R S +(R S R S) +. . .
= +R +S +R
2
+S
2
+RS +SR +. . .
Si reorganizamos el ultimo rengl on de cada uno de los t erminos veremos que representan
al mismo conjunto.
1.4. Modelos matem aticos de proceso de cadenas
Con el advenimiento de la computadora, el hombre se interesa met odicamente por el
estudio de la informaci on. Uno de los primeros que formaliza el concepto de una m aquina
abstracta de informaci on es A. M. Turing, en 1936. Su objetivo era explorar los lmites
de la habilidad del hombre para formalizar m etodos para la soluci on de problemas. Turing
hizo explcito y preciso el t ermino algoritmo caracteriz andolo como un procedimiento que
pudiera ser llevado a cabo precisamente por un tipo de aut omata, llamado en su honor la
m aquina de Turing. De manera paralela al trabajo de Turing (inclusive un poco antes, como
es el caso del c alculo lambda de Church), se desarrollaron otros modelos matem aticos que
tienen que ver con computabilidad, o sea, la posibilidad de dar o no un m etodo de soluci on
(algoritmos) para problemas de tipo matem atico.
Las relaciones entre lenguajes y aut omatas est an dadas en el estudio de tres tipos distin-
tos de aut omatas: aceptadores, generadores y transductores. Nos interesa de estos modelos:

El estudio matem atico de estas m aquinas, poniendo especial inter es en:


1. Sus capacidades, o sea, las caractersticas de sus dominios, qu e clase de objetos
pueden manejar.
2. Su sntesis, o sea, dadas las actividades que van a realizar como acoplar distintos
modelos de ellas.

La aplicaci on de esta teora en el dise no de procesadores de cadenas (lenguajes)


editores, formateadores, compiladores, int erpretes incluyendo:
1. La capacidad de expresar el dise no de un compilador como la interconexi on de
varios de estos modelos.
2. Implantar o simular a estos modelos con programas de computadora.
16 Fundamentos
1.4.1. Aceptadores
Un aceptador M es un aut omata o m aquina dise nada fundamentalmente para aceptar
o rechazar a sucesiones o cadenas de smbolos. Conceptualmente, un aceptador es una
m aquina a la que se le presenta o alimenta una sucesi on de smbolos, escogidos estos de
un conjunto nito llamado el alfabeto de entrada. Suponemos tambi en que M se encuentra,
al principio de la operaci on, en un estado de existencia predeterminado y conocido, llamado
estado inicial, y tal que siempre que la m aquina se enciende o arranca, est a en ese mismo
estado.
Suponemos que la m aquina funciona de forma determinista, esto es, que siempre que
estando en el estado inicial o alg un otro estado, se le alimente un mismo smbolo, la res-
puesta de la m aquina es la misma
1
. Esto quiere decir que la respuesta de la m aquina
depende exclusivamente (es funci on ) de la sucesi on que se le alimente y el estado inicial.
La m aquina cuenta con un sistema de respuesta binario tal que a cada smbolo que
se le presenta responde con s o no, dependiendo de si acepta o rechaza a la sucesi on
presentada hasta ese momento. Lo m as sencillo es pensar en un foco que se prende o apaga
respectivamente.
De lo anterior, podemos tratar de formalizar a una m aquina aceptadora de la siguiente
manera:
M = (Q, , , q
0
, F) donde:
Q es el conjunto posible de estados por los que
puede pasar la m aquina
es el alfabeto de entrada
da las condiciones para cambios de estado en la
m aquina (mejor conocida por funci on de
transici on)
: Q Q determinista
q
0
es la descripci on del estado inicial
F las condiciones (o estados) que hacen que la
respuesta de la m aquina sea s.
En la gura 1.1 podemos ver un esquema de este tipo de m aquinas, donde s
i
,
Inicializa coloca a M en el estado q
0
y F = estados que prenden el foco.
Este tipo de m aquina clasica a todas las sucesiones posibles sobre un alfabeto en dos
clases ajenas, de acuerdo al estado del foco al terminar de alimentarle el ultimo smbolo de
la sucesi on:
1
En realidad podramos suponer que la m aquina trabaja de forma no determinista, lo que querra decir
que explora varios caminos para ver si alguno de ellos lo lleva a una respuesta armativa.
1.4 Modelos matem aticos de proceso de cadenas 17
i. Aqu ellas que dejan al foco de M prendido.
ii. Aqu ellas que dejan al foco de M apagado.
Figura 1.1 M aquina aceptadora
s
t+1
s
t
. . . s
1
canal de salida canal de entrada
inicia
/
Decimos que M acepta a cada sucesi on de la primera clase y rechaza a cada sucesi on
del segundo conjunto. Si decimos que las sucesiones de la primera clase constituyen un
lenguaje L, entonces M acepta a L, o L es aceptada por M, y lo denotamos por
L(M) = w
*
[ se prende al foco al terminar.
1.4.2. Generadores
En este tipo de aut omata suponemos tambi en un cierto estado inicial. Cuando el ge-
nerador es arrancado o prendido, empieza a generar (escupir) smbolos de un alfabeto
nito, llamado el alfabeto de salida. Si este modelo funcionara como el anterior, de forma
determinista, generara siempre la misma sucesi on cada vez que se le pusiera a funcionar.
Si permitimos a M tener una conducta no-determinista (sin querer decir esto aleatoria o
sin sentido) produce distintas sucesiones cada vez que funciona. En este caso, el lenguaje
generado por M, L(M), es el conjunto de todas las sucesiones que puede producir M.
Formalmente: M = (Q, O, , q
0
) donde
O es el alfabeto de salida
Q y q
0
est an denidas como en el modelo anterior y
es una funci on no-determinista : Q O

Se muestra este modelo esquem aticamente en la gura 1.2.


18 Fundamentos
Figura 1.2 M aquina generadora
/
canal de salida
inicia
r
k+1
r
k
. . . r
j
. . . r
1
con r
i
O
1.4.3. Transductores
Las m aquinas transductoras son realmente las m as interesantes en relaci on con la tra-
ducci on de lenguajes, y por lo tanto, en el dise no de compiladores. De estas m aquinas nos
interesan las que operan de forma determinista
2
. Al alimentarles una sucesi on
s
t
s
t1
. . . s
i
. . . s
2
s
1
de un alfabeto de entrada, produce como respuesta otra sucesi on
r
k
r
k1
. . . r
j
. . . r
2
r
1
donde cada smbolo es elemento de un alfabeto de salida. En el caso de las no determinis-
tas la salida correspondiente a una entrada consiste de un conjunto de salidas. Al conjunto
de sucesiones de entrada lo identicamos como lenguaje de entrada (o lenguaje fuente en
programaci on) y al conjunto de sucesiones de salida como lenguaje de salida(o lenguaje
objeto, en programaci on). Si L es el lenguaje de entrada, al conjunto de respuestas propor-
cionadas por M al alimentarle L se le conoce como transducci on (o traducci on) de L por
M, T = L(M)
Formalmente M = (Q, , O, , q
0
), donde cada conjunto est a constituido como su corres-
pondiente en los modelos anteriores, con una funci on determinista,
: Q QO

El esquema de este tipo de m aquina se encuentra en la gura 1.3.


2
Las no deterministas nos podran entregar varios resultados, uno por cada posible camino que hayan
tomado, lo que no sera muy util.
1.5 Relaci on entre aut omatas y lenguajes 19
Figura 1.3 M aquina transductora
s
t+1
s
t
. . . s
1
canal de entrada
inicia
/
canal de salida
r
k+1
r
k
. . . r
j
. . . r
1
1.5. Relaci on entre aut omatas y lenguajes
Como se ha podido ver de la exposici on anterior, los lenguajes y los aut omatas son
aspectos distintos de un mismo objeto. De lo que se trata es de caracterizar y formalizar, en
general, a los procesadores de lenguajes, y en particular, a los procesadores de lenguajes de
programaci on, logrando a la vez establecer lmites te oricos para estos procesos. Adem as,
ni los aut omatas ni los lenguajes son unicos, sino que presentan modelos matem aticos de
mayor o menor complicaci on, m as o menos manejables. No es sorprendente que exista una
jerarqua de aut omatas que corresponde a una jerarqua de clases de lenguajes denidos por
aqu ellos. En esta correspondencia de aut omatas y lenguajes, uno esperara que se asocie un
modelo de m aquina m as poderoso con una clase menos restringida de lenguajes, y as es
en efecto.
Entre estas categoras de lenguajes y m aquinas cada rengl on est a contenido propia-
mente en los renglones inferiores. Asimismo, como veremos m as adelante, los conjuntos
recursivos est an contenidos propiamente en los conjuntos recursivamente enumerables.
Como podemos ver en la tabla 1.4, la m aquina menos poderosa y que corresponde al
lenguaje m as restringido es la m aquina con un n umero nito de estados y la clase de lengua-
jes es la de los lenguajes regulares. En cada nivel de complejidad encontramos problemas
que est an m as all a de las capacidades de las m aquinas de ese nivel. Excepto con la M aqui-
na de Turing, que es una generalizaci on que, si aceptamos la tesis de Church-Turing, no se
puede extender m as. Si bien han habido esfuerzos por dise nar m aquinas m as poderosas que
la de Turing, la actuaci on de estas m aquinas resulta violar algunas de las hip otesis b asicas.
Cada vez que se sube de nivel se extienden las capacidades del aut omata. Sin embargo, se
debe tener claro que hay una clase muy rica de problemas m as all a de la capacidad de la
m aquina de Turing.
20 Fundamentos
Tabla 1.4 Niveles de lenguajes y m aquinas
Lenguajes generales M aquinas de Turing
3
Conjuntos
recursivamente
enumerables y
recursivos
Lenguajes dependientes del
contexto
Aut omatas linealmente
acotados
(sin concepto
matem atico)
Lenguajes libres del contexto M aquinas con una pila
(sin concepto
matem atico)
Lenguajes regulares
Aut omatas nitos
Conjuntos
regulares
Es importante hacer notar que existen una cantidad no enumerable de conjuntos que se
escapan a esta clasicaci on, ya que no cuentan con especicaciones formales en t erminos
de m aquinas de Turing o lenguajes formales.
Con esto damos por terminada una breve presentaci on de los temas que vamos a revisar
a lo largo de estas notas.
3
Sin garantizar que la m aquina de Turing se detenga para todas las cadenas en los lenguajes recursiva-
mente enumerables.
M aquinas con un
n umero nito de
estados
2
Presentamos ahora al modelo aceptador de cadenas m as sencillo, el aut omata
con un n umero nito de estados (aut omata nito) y el concepto de un aut oma-
ta mnimo y c omo obtenerlo. Revisamos los conceptos de no determinismo y
determinismo en estos aut omatas y demostramos la equivalencia de estos dos
modelos. Finalmente incursionamos en el tema de traducci on de lengtuajes
con aut omatas nitos.
2.1. Denici on
Iniciaremos nuestro estudio de aut omatas con el modelo m as sencillo: el aut omata con
un n umero nito de estados (a quien denominaremos aut omata nito). Cuando decimos
aut omata nos referimos a un modelo matem atico, cuyas propiedades y comportamiento po-
demos observar y que podemos simular con un programa de computadora. Estos aut omatas
han sido estudiados en muy diversas disciplinas como dise no de computadoras, neurosio-
loga, comunicaciones, ling ustica y la teora de computaci on. Son bastante conocidos y
22 M aquinas con un n umero nito de estados
comprendidos. Este modelo surge en situaciones fsicas en las cuales se procesan se nales
que conllevan informaci on.
En particular, son muy utiles en el dise no de Compiladores porque tienen las siguientes
caractersticas:
a. Los aut omatas nitos son capaces de ejecutar algunas de las tareas sencillas de un
compilador. En particular, la fase lexicogr aca se puede basar, casi siempre, en un
aut omata nito.
b. Dado que las operaciones de un aut omata nito son pocas y f aciles de simular, un
simulador de este tipo opera r apida y econ omicamente.
c. Se necesita una cantidad ja de memoria para simular a un aut omata nito, por lo que
su uso simplica al compilador y al sistema operativo problemas de uso y asignaci on
de memoria.
d. Tenemos bastantes resultados te oricos que nos permiten construir y simplicar aut o-
matas nitos.
El t ermino aut omata nito se usa en muchos sentidos y tiene asociada distintas deni-
ciones formales. Todas estas deniciones tienen en com un aceptar que los aut omatas nitos
pretenden modelar instrumentos de c omputo que tienen una cantidad ja de memoria y que
leen sucesiones construidas a partir de un conjunto nito de smbolos. La discrepancia sur-
ge de denir lo que produce el aut omata como salida, pues hay tres posibilidades, como ya
vimos.
Denici on 2.1 Un aut omata nito consiste de un conjunto de estados Qy un conjunto de
transiciones de estado a estado que ocurren cuando al aut omata se le alimentan smbolos
de un alfabeto . El aut omata nito es determinista, esto es, que de cada estado y al leer
un smbolo dado, hay una transici on unica a otro estado (que puede ser en el que estaba).
El aut omata tiene un estado inicial, q
0
, en el cu al el aut omata arranca siempre. Algunos
estados son designados como estados nales o estados que aceptan.
Formalmente, un aut omata nito M es un quntuplo M = (Q, , , q
0
, F) donde
: Alfabeto nito de entrada
Q Conjunto nito de estados
Una funci on de transici on que asigna un nuevo estado a cada pareja de
la forma (estado, smbolo)
: Q Q
q
0
Es el estado inicial, q
0
Q
F Subconjunto de estados designados como nales o
que aceptan, F Q
Podemos pensar en el funcionamiento del aut omata como una sucesi on de movimien-
tos (o transiciones) cada una de ellas en un instante dado de tiempo t. t = 0 representa el
2.1 Denici on 23
momento en que el aut omata no ha empezado a un a trabajar. La distancia entre t = i y
t = i + 1 es arbitraria. En t = 0 el aut omata es inicializado a un estado inicial. En cada
momento t, M recibe un smbolo s en . La capacidad de la m aquina para retener infor-
maci on respecto a smbolos anteriores reside en el conjunto de estados. En este sentido, lo
que recuerda el aut omata respecto al pasado es que lo que ha visto lo oblig o a entrar en un
cierto estado. Cuando se le alimenta un smbolo al aut omata se produce en el un cambio de
estado, que depende exclusivamente del estado en el que est a y el smbolo que est a viendo.
A este cambio de estado se le llama una transici on.
Si al terminar de alimentarle al aut omata una sucesi on, la ultima transici on fue a un
estado q F, entonces decimos que el aut omata acepta a la sucesi on. Si, por el contrario,
q , F, decimos que el aut omata rechaza a la sucesi on.
Al dar la descripci on del aut omata se deber a listar, por supuesto, cada uno de los con-
juntos que forman el quntuplo. Trabajemos con un ejemplo para ver c omo se hace:
Ejemplo 2.1:
Problema: Dise nar un aut omata nito que funcione como un vericador de paridad; esto
es, que acepte a todas aquellas sucesiones con un n umero par de unos.
Respuesta:
Sea M = (Q, , , q
0
, F) denidos de la siguiente manera:
= 0, 1
pues las cadenas que se le van a alimentar al aut omata est an formadas por ceros y
unos.
Dado que la memoria de la m aquina est a dada por sus estados, qu e es lo m as impor-
tante que hay que recordar si estamos contando unos? Se ocurre que debo recordar
si he visto un n umero non de unos o si he visto un n umero par de unos. Empece-
mos entonces por dise nar nuestro aut omata nito con dos estados: NON y PAR, de
donde
Q = NON, PAR
Para especicar la funci on de transici on contamos con tres m etodos, el primero de
los cu ales, dado que se trata de un conjunto de reglas de transici on, consiste en
enumerarlas, dando en cada caso lo que sucede al aplicar la funci on de transici on a
cada una de las parejas de la forma
(estado, smbolo)
24 M aquinas con un n umero nito de estados
Las parejas posibles de esta forma son:
(NON, 0)
(NON, 1)
(PAR, 0)
(PAR, 1)
Si estoy en el estado NON, quiere decir que llevo vistos un n umero non de unos, por
lo que al ver un cero, sigo habiendo visto un n umero non de unos:
(NON, 0) = NON
Con un razonamiento equivalente (PAR, 0) = PAR. En cambio, si estando en el
estado NON, habiendo visto un n umero non de unos hasta ese momento, veo un
uno, debo, en el siguiente instante de tiempo, recordar que ya vi un n umero par de
unos, por lo que
(NON, 1) = PAR
y similarmente
(PAR, 1) = NON
Resumiendo, es tal que
(NON, 0) = NON
(NON, 1) = PAR
(PAR, 0) = PAR
(PAR, 1) = NON
Decidamos ahora cu al es el estado inicial del aut omata. Si el aut omata no ha visto
ning un smbolo,ha visto un n umero non o un n umero par de unos? Resolveremos
esto por convenci on, diciendo que cero unos es un n umero par de unos. Adem as, si
despu es de ser arrancado el aut omata recibe un uno, tiene que pasar al estado NON,
por lo que
q
0
= PAR
Nos falta unicamente por denir F Q, y queremos que si M termina en q F,
entonces decir que aceptamos la sucesi on, y si termina en q , F, decir que no la
aceptamos. Claramente PAR F, pues si estamos en el estado PAR, vimos un
n umero par de unos:
F = PAR
2.1 Denici on 25
De todo lo anterior, M = (Q, , , q
0
, F) con:
= 0, 1
Q = NON, PAR
= (NON, 0) = NON,
(NON, 1) = PAR,
(PAR, 0) = PAR,
(PAR, 1) = NON
q
0
= PAR
y F = PAR
Pero habl abamos de que tenemos tres formas para describir a la funci on de transici on.
Una, la que ya vimos, es la de enumerar los distintos valores que toma ante las distintas
parejas (q, a). Sin embargo, este tipo de notaci on es poco eciente, sobre todo si crece el
n umero de estados o el n umero de smbolos en el alfabeto. La segunda forma de especicar
a , es mediante lo que se conoce como la tabla de transiciones. La tabla de transiciones se
construye de la siguiente manera:
1. Las columnas de la tabla se etiquetan con cada uno de los smbolos de .
2. Los renglones se etiquetan con cada uno de los estados de Q.
3. El elemento (q
i
, a) de la tabla es el estado al que pasa M si, estando en el estado q
i
,
ve el smbolo a. La entrada del rengl on q
i
columna a es q
j
sii (q
i
, a) = q
j
.
4. El estado inicial, q
0
, es el primer rengl on de la tabla.
5. Se utiliza alguna convenci on para marcar, en la tabla, a los estados nales. Una forma
de hacerlo sera, por ejemplo, adicionarle a la tabla una columna, y en ella, si el
estado es nal poner un uno, y si el estado no es nal poner un cero. Otra opci on
sera acompa nar al nombre del estado con un asterisco si es estado nal y nada si
no lo es. Una tercera opci on podra ser rodear a los nombres de los estados nales
con un crculo. En n, hay innumerables formas de marcar a los estados nales.
La tabla de transici on correspondiente al vericador de paridad quedara como se ve en la
tabla 2.1.
Una tercera forma de representar las transiciones de un aut omata nito es mediante
un diagrama de transiciones, que se basa en una gr aca dirigida o digr aca. Por cierto
que cuando se dise nan aut omatas nitos m as complicados que el que estamos viendo, las
digr acas resultan ser el m etodo m as natural para plantear la primera aproximaci on en
nuestro dise no.
26 M aquinas con un n umero nito de estados
Tabla 2.1 Transiciones para el vericador de paridad
Vericador de Paridad
Q

F
0 1
PAR PAR NON 1
NON NON PAR 0
Para construir los diagramas de transici on, seguimos las siguientes reglas:
1. Se dibuja un nodo de la digr aca por cada es-
tado en Q, y se etiqueta el nodo con el nombre
del estado.
q
2. Al estado inicial se le marca de alguna forma
que lo distinga, como por ejemplo con una e-
cha etiquetada con la palabra empieza (start).
q
empza
3. A los estados nales tambi en se les marca es-
pecialmente. Lo m as com un es poner doble la
delimitaci on del nodo.
q
4. Se traza un arco dirigido del estado q
i
al estado
q
j
y se etiqueta ese arco con el smbolo a sii
(q
i
, a) = q
j
.
q
i
q
j
a
El diagrama de transici on del vericador de paridad se encuentra en la gura 2.1:
Figura 2.1 Vericador de paridad
PAR NON
empza
1
1
0 0
2.1 Denici on 27
Durante un reconocimiento, representamos una transici on del estado q al estado p al leer el
smbolo a como:
q
a
p
Por ejemplo, en el vericador de paridad, podemos representar la siguiente transici on:
PAR
1
NON
Podemos usar la misma notaci on para representar una sucesi on de transiciones.
PAR
1
NON
1
PAR
0
PAR
1
NON
Este esquema muestra el efecto de alimentarle a la m aquina la sucesi on 1101. Queremos
extender nuestra notaci on de la funci on de transici on de tal forma que nos pueda responder
en que estado queda el aut omata nito despu es de alimentarle una cadena. Para el ejemplo
anterior podramos extender nuestra notaci on a sucesiones de smbolos en

y escribir
(PAR, 1101) = NON
pues NON es el estado en el que queda el aut omata si, saliendo del estado PAR le
es alimentada la sucesi on 1101. En este caso podramos decir que la sucesi on 1101 es
rechazada (tiene un n umero non de unos) pues el aut omata nito queda en un estado que
no acepta (NON).
Formalmente extendemos a la funci on de transici on de la siguiente manera:
1.

(q, ) = q y
2. Para toda w

, a ,

(q, wa) = (

(q, w), a)
La primera regla nos dice que el aut omata no puede ejecutar una transici on sin leer ning un
smbolo. La segunda extiende para aplicarla a cadenas. Si w=, entonces es consistente
con su denici on original:

(q, a) =

(q, a) = (

(q, ), a) = (q, a)
(Para no introducir nomenclatura nueva que no es realmente necesaria, usaremos indistin-
tamente

y ).
Extendida de esta forma, podemos formalizar tambi en la noci on de un lenguaje acepta-
do por un aut omata nito.
Denici on 2.2 Sea M = (Q, , , q
0
, F) un aut omata nito y L(M) el lenguaje aceptado
por M. Entonces
L(M) = w

[ (q
0
, w) = q
i
, q
i
F
28 M aquinas con un n umero nito de estados
Ejemplo 2.2:
(a) Denotemos al aut omata nito que acepta a las cadenas de ceros y unos que tienen un
n umero par de ceros y un n umero par de unos.
Respuesta:
Sea M = (Q, , , q
0
, F) denida como sigue:
= 0, 1
Q = P0P1, P0N1, N0P1, N0N1
(donde P indica par y N indica non).
La tabla de transiciones se muestra en la tabla 2.2.
Tabla 2.2 Transiciones para el vericador de paridades
Vericador de Paridades
Q

F
0 1
P0P1 N0P1 P0N1 1
P0N1 N0N1 P0P1 0
N0P1 P0P1 N0N1 0
N0N1 P0N1 N0P1 0
El diagrama de transiciones correspondiente se encuentra en la gura 2.2.
Figura 2.2 Vericador de paridad para ambos smbolos
P0P1 P0N1
N0P1 N0N1
empza
1
1
0 0
1
1
0 0
2.2 Aplicaciones e instrumentaci on 29
(b) Sea M = (Q, , , q
0
, F) denida de la siguiente manera:
= a, b
Q = 1, 2, E
denida por la tabla de transici on en la gura 2.3, a la que equivale el diagrama en
la misma gura.
Figura 2.3 Diagrama y tabla de transiciones para el ejemplo 2.2.b
Reconocedor
Q

F
a b
1 1 2 1
2 E 1 0
E E E 0
(a) Tabla de transiciones
1
E
2
empza
b
b
a
a
a, b
(b) Diagrama de transiciones
Qu e tipo de secuencias, cadenas o sucesiones acepta?
Respuesta: Las cadenas de a y b tales que hay un n umero par de b consecutivas.
Ejemplos: aaaa, abbbbaaaaabb, bb
2.2. Aplicaciones e instrumentaci on
Los aut omatas nitos son una buena base para reconocer cierto tipo de secuencias de un
compilador. Una forma de utilizarlos sera poni endolos al servicio de un programa maestro
o supervisor que le entregara cadenas al aut omata y posteriormente observara al aut omata
nito para ver si, al terminar de procesar la cadena, la reporta como aceptada o no. Sin em-
bargo, muchas veces se requiere que el reconocedor decida por s mismo cu ando acab o de
examinar una cadena, y se requiere de el que d e una respuesta. Por ejemplo, en el caso
30 M aquinas con un n umero nito de estados
de las cadenas de a y b con un n umero par de b consecutivas, el aut omata, si est a viendo
una b, no puede tomar decisiones y avisar que no acepta, hasta esperar a ver si la cadena
contin ua o no. Se ve l ogico el agregarle a las cadenas un smbolo que no forme parte del
alfabeto de entrada del aut omata, tal que funcione como marca de n de cadena y que al
verlo el aut omata sepa que ya no vienen m as smbolos y otorgue una calicaci on de acep-
tada o rechazada a la cadena que acaba de ver. En el mundo real esto sera equivalente, por
ejemplo, a las marcas de n de archivo o a las tarjetas que marcan el n de un proceso o,
m as com unmente, a los separadores que se presentan entre dos enunciados de un lenguaje
de programaci on. La ventaja de contar con esta marca en el contexto de un compilador es
que podemos pensar en transferencias a un estado que represente realmente a una rutina,
de tal forma que, al encontrar el n de cadena, el aut omata ejecute alguna tarea.
En el ambiente de compilaci on debemos suponer que la entrada se presenta siempre
con marcas nales, por lo que dise naremos con esto en mente.
Un procedimiento para pasar de un aut omata nito sin marca nal al equivalente con
marca nal es el siguiente:
1. Se agrega una columna etiquetada con el smbolo elegido como marca.
2. En los renglones correspondientes a estados no nales, ponemos el nombre de una
rutina a ejecutar en el caso de rechazar una cadena (por ejemplo NO), y en los corres-
pondientes a estados nales, ponemos el nombre de una rutina a ejecutar en caso de
que la cadena sea aceptada (por ejemplo, S

I).
En el caso de la columna correspondiente a la marca nal, las entradas corresponden a
rutinas a ejecutarse y no a estados para hacer la transici on. Esto, como se puede ver, es f acil
de simular en la computadora. Para el caso del Ejemplo (b) de la ultima secci on, la tabla de
transici on queda como se muestra en la tabla 2.3.
Tabla 2.3 Transiciones que incluyen subrutinas
Reconocedor con marcas de n
Q

F
a b
1 1 2 SI 1
2 E 1 NO 0
E E E NO 0
Otra situaci on por la que querramos ejecutar rutinas en lugar de hacer transiciones,
es en los casos que, sin que el aut omata acabe de leer toda la sucesi on, pueda decidir si
la acepta o la rechaza. Por ejemplo, si queremos un aut omata nito que acepte todas las
2.2 Aplicaciones e instrumentaci on 31
cadenas de ceros y unos que empiecen con 110, no importa que tan larga sea la cadena,
necesita leer a lo m as tres smbolos para decidir si la acepta o la rechaza.
El aut omata estara denido como sigue:
M = (Q, , , q
0
, F), con = 0, 1
y la tabla de transici on denida como se muestra en la tabla 2.4.
Tabla 2.4 Reconocedor con rutinas en las transiciones
Reconocedor de cadenas que empiezan con 110
Q

F
0 1
q
0
error 1uno NO 0
1uno error 2uno NO 0
2uno 1cero error NO 0
1cero 1cero 1cero S

I 1
error error error NO 0
En este caso, una vez que llegamos al estado 1cero podramos, desde ya, avisar que
aceptamos. As mismo, una vez que caemos en el estado de error podemos avisar que no
aceptamos. En lugar de transferencias a estados, podemos sustituir por salidas a las rutinas
S

I y NO, quedando la tabla de transici on como se muestra en la tabla 2.5.


Tabla 2.5 Reconocedor que reacciona lo antes posible
Reconocedor de cadenas que empiezan con 110
Q

F
0 1
q
0
NO 1uno NO 0
1uno NO 2uno NO 0
2uno 1cero NO NO 0
1cero S

I S

I S

I 1
Como se ve, mediante este procedimiento se elimin o el estado de error, pues ya no hay
necesidad de transferencias a el. Cuando un aut omata nito procesa informaci on bajo esta
modalidad, se dice que el aut omata detecta una cierta situaci on a un antes de terminar de
examinar su entrada.
32 M aquinas con un n umero nito de estados
2.2.1. Dise no de aut omatas nitos
Trataremos de dar a continuaci on una heurstica para el dise no de las tablas de transi-
ci on de los aut omatas nitos. A este m etodo se le conoce como etiquetar smbolos. Nos
centraremos en un ejemplo de compiladores para, de paso, corroborar la utilidad de los
aut omatas en este campo.
Dise nemos un aut omata capaz de aceptar (o reconocer) las declaraciones de enteros en
FORTRAN.
1. Como primer paso de nuestro procedimiento escribimos ejemplos relativamente com-
plejos de las expresiones que queremos reconocer:
INTEGER A
INTEGER X, I(3)
INTEGER C(3,J,4), B
2. De estos ejemplos podemos identicar a nuestro alfabeto de entrada que consiste de
5 smbolos que son:
v c , ( )
donde v es cualquier variable y c es cualquier constante entera
3. El siguiente paso consiste en etiquetar (con n umeros enteros del 2 en adelante), den-
tro de los ejemplos, las distintas presencias de los smbolos de entrada. Si percibi-
mos, usando nuestro conocimiento intuitivo de las secuencias a reconocer, que hay
dos smbolos tales que el conjunto de secuencias que pueden seguir al primer smbo-
lo es el mismo que el conjunto de secuencias que pueden seguir al segundo smbolo,
entonces a los dos smbolos se les da la misma etiqueta. Estas etiquetas representan,
en alguna forma, el concepto de usos que ser an m as adelante los estados del aut omata
nito.
El resultado de aplicar este paso al ultimo ejemplo que dimos (que es el m as comple-
to) se da a continuaci on:
expresi on INTEGER C ( 3 , J , 4 ) , B
etiquetas 2 3 4 5 6 5 4 7 8 2
y la etiqueta 1 se antepone a la secuencia, para utilizarla despu es como estado inicial,
en el que no se ha observado (o ledo) nada todava.
N otese que las dos comas dentro del par entesis fueron etiquetadas con el mismo
entero, pues ambas pueden ser seguidas por una lista de elementos o por un elemento.
2.2 Aplicaciones e instrumentaci on 33
Tanto C como B fueron tambi en etiquetadas igual porque ambas podran ser seguidas
por expresi on entre par entesis o por nada. Sin embargo, la , etiquetada con un
8 es denitivamente distinta que las etiquetadas con un 5, porque las etiquetadas
con 5 exigen en alguna forma que no la siga ning un par entesis izquierdo antes de
cerrar el par entesis derecho; si la continuaci on de 8 fuera puesta a continuaci on de 5,
obtendramos
C(3,4,B
una expresi on inv alida.
En la tabla 2.6 se encuentra una descripci on m as explcita de los usos, que manejamos
hasta ahora intuitivamente.
Tabla 2.6 Descripci on de etiquetas en el m etodo de marcas
Usos encontrados en los ejemplos
etiqueta descripci on del uso
1 estado inicial
2 nombre de variable a ser entera
3 par entesis izquierdo
4 constante entera para dimensionar
5 coma que separa dimensiones
6 variable dando dimensi on ajustable
7 par entesis derecho
8 coma que separa declaraciones
Podramos tratar de probar con otras secuencias para ver si no aparece alg un otro uso,
pero el ejemplo es lo sucientemente rico como para contener toda la informaci on
necesaria (o por lo menos as lo creemos).
4. Teniendo identicados los distintos usos, la construcci on del reconocedor se describe
a continuaci on:
a) Introducir un estado inicial (el de uso 1) y un estado de error.
b) Asignar un estado a cada uso.
c) Crear una transici on de un estado a otro si los usos correspondientes pueden
aparecer el segundo a continuaci on del primero.
34 M aquinas con un n umero nito de estados
d) Completar la tabla de transiciones con transiciones al estado de error.
e) Marcar a un estado como nal si su uso correspondiente puede terminar correc-
tamente una expresi on.
Tabla 2.7 Reconocimiento de declaraciones en FORTRAN
Reconocedor de declaraciones
Q

F
v c , ( )
1 2
2 8 3
3 6 4
4 5 7
5 6 4
6 5 7
7 8
8 2
E
Aplicando el plan en nuestro ejemplo, obtenemos, de los pasos 4a y 4b:
Q = 1, 2, 3, 4, 5, 6, 7, 8, E donde q
0
= 1
Aplicando el paso 4c, obtenemos la tabla de transiciones parcial que se encuentra en
la tabla 2.7.
Aplicando el paso 4d, y pensando que s olo hay 2 formas v alidas de terminar la expre-
si on, que son un ) (uso 7) o con una variable de identicador (uso 2), obtenemos las
transiciones que se encuentran en la tabla 2.8.
Una desventaja de este m etodo de construcci on es que no garantiza que el aut omata
sea eciente o econ omico. Esto se reere a que a lo mejor podramos haber dise nado un
aut omata con menos estados. A continuaci on veremos m etodos para reducir a un aut omata
nito a uno que sea mejor, m as econ omico, mnimo.
2.3. Equivalencia de aut omatas nitos
Cuando hablamos de m aquinas como reconocedoras o aceptadoras, podemos decir que
dos m aquinas M
1
y M
2
son equivalentes si L(M
1
) = L(M
2
). Sin embargo, en la pr actica no
2.3 Equivalencia de aut omatas nitos 35
Tabla 2.8 Reconocimiento de declaraciones en FORTRAN
Reconocedor completo de declaraciones
Q

F
v c , ( )
1 2 E E E E N 0
2 E E 8 3 E A 1
3 6 4 E E E N 0
4 E E 5 E 7 N 0
5 6 4 E E E N 0
6 E E 5 E 7 N 0
7 E E 8 E E A 1
8 2 E E E E N 0
E E E E E E N 0
siempre se puede demostrar o vericar la equivalencia con este criterio, pues ello implicara
en algunos casos vericar que su comportamiento fuera el mismo (aceptara o rechazara)
para todas las cadenas posibles del lenguaje.
En el caso de los aut omatas nitos s es decidible la pregunta de si dos aut omatas nitos
son o no equivalentes.
Al resolver el problema de la equivalencia de dos aut omatas, se resuelven tambi en las
siguientes preguntas, que surgen naturalmente en el proceso de dise no:
1. Dado el diagrama de transici on de un aut omata, es posible, primero detectar y poste-
riormente eliminar, estados redundantes, sin que esto altere el comportamiento b asico
del aut omata?
2. Es posible, mediante la eliminaci on de estados redundantes, obtener una m aquina
mnima unica equivalente a la original?
Como veremos en esta secci on, la respuesta es armativa en ambos casos.
Es importante la eliminaci on de estados redundantes en un aut omata pues el costo de
instrumentarlo es proporcional al n umero de estados. Empecemos entonces por tratar de
determinar cu ando alg un estado es redundante. Para esto, siguiendo nuestro modelo de
aut omata nito aceptador (o reconocedor), tenemos que contar con la posibilidad de ver,
con cada smbolo que el aut omata lee, si el estado al que se transere es nal o no. Si regre-
samos al modelo del aut omata con una luz para decir si acepta o no, deberemos anotar, con
cada smbolo que el aut omata lee, la respuesta de la luz. Esta cadena de respuestas puede
ser vista como la salida que da la m aquina, y si escogemos dos smbolos para representar
36 M aquinas con un n umero nito de estados
respectivamente prendido y apagado (por ejemplo el 0 y el 1), tendremos cadenas como
salida del aut omata. Llamemos a esta salida la respuesta del aut omata. Denot emosle como
la funci on T de salida, denida como sigue:
T(q, ) =
_
0 si q , F
1 si q F
T(q, aw) = T(q, ) T(p, w) donde (q, a) = p
Seguiremos usando la F may uscula para denotar la respuesta, pues la cadena de respuesta
es el resultado, sencillamente, de observar si el estado por el que va pasando el aut omata es
nal o no.
Resuelto el punto de poder observar el comportamiento sucesivo del aut omata, proce-
damos a sentar las bases para poder eliminar estados redundantes en un aut omata.
Denici on 2.3 Dos estados p y q de un aut omata nito M son distinguibles si y s olo si
existe una cadena de entrada, de longitud nita, tal que, cuando se le aplica a M, causa
diferentes respuestas, dependiendo de si p es el estado inicial o q es el estado inicial.
Formalmente:
Sea M = (Q, , , q
0
, F) tal que q
i
y q
j
Q
Entonces
q
i
y q
j
son distinguibles w

tal que T(q


i
, w) ,= T(q
j
, w)
(Si este es el caso, se dice que w distingue a q
i
y q
j
).
Denici on 2.4 q
i
y q
j
son k-distinguibles si existe una cadena w de longitud k que dis-
tingue a q
i
y q
j
.
Nos interesa no nada m as que dos estados sean k-distinguibles, sino tambi en cu al es la
menor k para la que eso se determina. Por lo tanto, cuando digamos que dos cadenas son
k-distinguibles, supondremos que estamos hablando de la menor k que las distingue; esto
es, ninguna cadena de longitud menor a k logra distinguirlas.
Consideremos el ejemplo del reconocedor de declaraciones de FORTRAN que cons-
truimos. Los estados 1 y 2 son 0-distinguibles, pues la cadena vaca los distingue ya que
uno es estado nal y el otro no.
Los estados 3 y 4 son 1distinguibles. No son 0-distinguibles pues ninguno de los dos
es estado nal, y tenemos que
T(3,

) = T(3, ) T((3,

), ) = 0 T(E, ) = 00 y
T(4,

) = T(4, ) T((4,

), ) = 0 T(7, ) = 01
2.3 Equivalencia de aut omatas nitos 37
Los estados 2 y 7 son 3-distinguibles. Para probar esta aseveraci on hay que encontrar una
cadena de longitud nita que distinga a los estados 2 y 7.
Ejemplo 2.3:
Compruebe que la cadena (v) distingue a los estados 2 y 7 y que no hay cadena de
longitud menor que los distinga:
Respuesta:
1. Los estados 2 y 7 no son 0-distinguibles pues ambos son estados nales.
T(2, ) = T(7, ) = 1
2. Por demostrar: que los estados 2 y 7 no son 1distinguibles.
T(2, v) = T(2, ) T((2, v), ) = 1 T(E, ) = 10
T(7, v) = T(7, ) T((7, v), ) = 1 T(E, ) = 10
T(2, c) = T(2, ) T((2, c)), ) = 1 T(E, ) = 10
T(7, c) = T(7, ) T((7, c)), ) = 1 T(E, ) = 10
T(2, () = T(2, ) T((2, , )), ) = 1 T(8, ) = 10
T(7, () = T(7, ) T((7, )), ) = 1 T(8, ) = 10
T(2, , ) = T(2, ) T((2, , ), ) = 1 T(3, ) = 10
T(7, , ) = T(7, ) T((7, , ), ) = 1 T(E, ) = 10
T(2, )) = T(2, ) T((2, )), ) = 1 T(E, ) = 10
T(7, )) = T(7, ) T((7, )), ) = 1 T(E, ) = 10
3. De la tabla anterior vemos que ya no tiene caso examinar a todas las cadenas de lon-
gitud 2, pues, por como est an dadas las transiciones, las unicas cadenas que pueden
llegar a distinguir a estos estados son las que empiezan con ( ya que todas las otras
cadenas de longitud 1 provocan transiciones, cada una de ellas, al mismo estado, y
como la respuesta est a dada por el estado, las cadenas que empiezan con estos smbo-
los, una vez habi endose transferido al mismo estado no podr an separarse despu es.
Veamos entonces qu e pasa con la respuesta de las cadenas que empiezan con ( y
tienen longitud 2.
T(2, (v) = T(2, )T((2, (), v) = 1F(3, )T((3, v), )
= 10T(6, ) = 100
T(7, (v) = T(7, )T((7, (), v) = 1F(E, )T((E, v), )
= 10T(E, ) = 100
T(2, (c) = T(2, )T((2, (), c) = 1F(3, )T((3, c), )
= 10F(6, ) = 100
38 M aquinas con un n umero nito de estados
T(7, (c) = T(7, )T((7, (), c) = 1F(E, )T((E, c), )
= 10F(E, ) = 100
T(2, (, ) = T(2, )T((2, (), , ) = 1F(3, )T((3, , ), )
= 10F(E, ) = 100
T(7, (, ) = T(7, )T((7, (), , ) = 1F(E, )T((E, , ), )
= 10F(E, ) = 100
T(2, (() = T(2, )T((2, (), () = 1F(3, )T((3, (), )
= 10F(E, ) = 100
T(7, (() = T(7, )T((7, (), () = 1F(E, )T((E, (), )
= 10F(E, ) = 100
T(2, ()) = T(2, )T((2, (), )) = 1F(3, )T((E, )), )
= 10F(E, ) = 100
T(7, ()) = T(7, )T((7, (), )) = 1F(E, )T((E, )), )
= 10F(E, ) = 100
Como se ve, ninguna cadena de dos car acteres logra distinguir a los estados 2 y 7.
4. De la tabla anterior vemos que para que una cadena de longitud 3 distinga a los
estados 2 y 7, deber a empezar con (v o bien con (c pues las otras cadenas de longitud
2, se transeren a los mismos estados para cada una de las cadenas y partiendo del
estado 2 y 7. Como ya demostramos que ninguna cadena de longitud menor que
tres distingue a 2 y 7, s olo falta encontrar alguna de longitud 3 que lo haga, para
demostrar que 2 y 7 son 3-distinguibles. Propusimos la cadena (v).
T(2, (v)) = T(2, )T((2, (), v)) = 1F(3, )T((3, v), ))
= 10F(6, )T((6, )), ) = 100F(7, ) = 1001
T(7, (v)) = T(7, )T((7, (), v)) = 1F(E, )T((E, v), ))
= 10F(E, )T((E, )), ) = 100T(E, ) = 1000
El concepto de k-distinguibilidad nos lleva directamente al concepto de k-equivalen-
cia. Si dos estados no son k-distinguibles, entonces son k-equivalentes. Es claro que si
dos estados son k-distinguibles, entonces siempre existen cadenas de longitud r que los
distinguen, para toda r > k. Si, por el contrario, dos estados son k-equivalentes, entonces
son m-equivalentes para toda m k.
2.4 Minimizaci on de aut omatas nitos 39
Denici on 2.5 Los estados q
i
y q
j
de una m aquina M son equivalentes si y s olo si pa-
ra toda posible cadena de entrada de longitud nita, se produce la misma respuesta, sin
importar si el estado inicial es q
i
o q
j
.
En otras palabras, q
i
y q
j
son equivalentes si son k-equivalentes para toda k. En cambio,
q
i
y q
j
son distinguibles si son k-distinguibles para alguna k. Demostraremos que s olo hay
que probar la k-distinguibilidad para k n-1, donde n es el n umero de estados en el
aut omata. De esto, dos estados son equivalentes si son k-equivalentes para k n-1.
Denici on 2.6 Dos aut omatas nitos
M
1
= (Q
1
,
1
,
1
, q
1
, F
1
) y M
2
= (Q
2
,
2
,
2
, q
2
, F
2
)
son equivalentes si y s olo si
1.
1
=
2
y
2. q
1
y q
2
son estados equivalentes (denotado por q
1
q
2
)
Es importante notar que la relaci on q p es, en efecto, una relaci on de equivalencia,
esto es, que cumple:
1. Reexividad: q q
2. Simetra: q p p q
3. Transitividad: Si p q y q r = p r
Las relaciones de equivalencia inducen en su dominio una partici on en clases ajenas
llamadas clases de equivalencia, tales que cada uno de los estados est a en una y s olo una
de esas clases. Este hecho va a ser de fundamental importancia en el proceso de minimizar
a un aut omata nito, pues lo que buscamos ser a encontrar esa partici on en la cual quedan
en una misma clase los estados equivalentes entre s. Dada esta partici on se puede tomar a
un representante de cada una de las clases, y con esos representantes construir el aut omata
mnimo.
2.4. Minimizaci on de aut omatas nitos
De la secci on anterior podemos obtener dos reglas para probar la equivalencia entre
estados, y por lo tanto, la redundancia de alguno de ellos:
Denici on 2.7 Decimos que dos estados p y q son equivalentes si se cumple:
1. Condici on de compatibilidad:
Ambos estados, p y q, deber an ser al mismo tiempo estados que aceptan o estados
que rechazan (p y q deben ser 0equivalentes).
40 M aquinas con un n umero nito de estados
2. Condici on de propagaci on:
Para todo smbolo de entrada, p y q deben transferirse a estados equivalentes.
Veremos ahora que esta nueva denici on de equivalencia es equivalente a las denicio-
nes de equivalencia y distinguibilidad que dimos antes.
Teorema 2.1 p y q son estados equivalentes no son distinguibles.
Demostraci on:
= Haremos la demostraci on por contrapositivo, suponiendo que no son equivalentes y
demostraremos entonces que son distinguibles. Usaremos la denici on de equivalencia
2.7. Si se viola la condici on (1), entonces la cadena vaca distingue a p y q. De donde p
y q son 0distinguibles, y por lo tanto distinguibles.
Supongamos ahora que la condici on (1) s se cumple, pero la (2) no.
Si se viola la condici on (2), querra decir que (p, a) = s, (q, a) = t y s es distinguible
de t. Sea w la cadena de longitud nita que distingue a s y t. Entonces la cadena aw
distingue tambi en a p y q, por lo que p y q son distinguibles.
= Nuevamente por contrapositivo, supongamos ahora que p y q son distinguibles. Debe-
mos demostrar que se viola alguna de las condiciones para la denici on de equivalencia.
Supongamos que w es una cadena tan peque na como es posible entre las que distinguen
a p y q. Si w = se viola la condici on de compatibilidad, por lo que p y q no son equi-
valentes. Si [w[ > 0 la podemos reescribir como w = xa, con [x[ = [w[ 1 y tal que x
no distingue a p y q (si x distinguiera a p y q, entonces existira una cadena de longitud
menor a la de w, contradiciendo la hip otesis de que w es tan peque na como es posible).
Sean s y t los estados a los que se transeren respectivamente p y q despu es de leer x
(p, x) = s, (q, x) = t . Pero r y s son 1distinguibles, ya que al leer a se transeren
a estados 0distinguibles si no fuera as, xa no distuinguira a p y q, ya que x no los
distingue . De esto, r y s violan la segunda condici on para ser equivalentes. Pero nos
podemos ir para atr as: supongamos que x = a
1
, a
2
, . . . a
k
. Los estados desde los que el
aut omata se transere a r y s respectivamente, digamos p
k
y q
k
, tambi en violan la segun-
da condici on pues se transeren a estados distinguibles; y as sucesivamente, hasta que
vemos que p y q se transeren, bajo el primer smbolo, a p
1
y q
1
que, por el razonamiento
anterior, violan la segunda condici on de equivalencia. Por lo tanto, si son distinguibles
entonces no son equivalentes.
Usando el hecho de que si dos estados son k-distinguibles entonces son m-distinguibles
para m k, y las propiedades (1) y (2) para encontrar si dos estados son o no distinguibles,
procedemos a dar el algoritmo para la minimizaci on de un aut omata, ejemplicando cada
paso con el aut omata que reconoce declaraciones de enteros en FORTRAN.
2.4 Minimizaci on de aut omatas nitos 41
Algoritmo para eliminaci on de redundancia
Con este algoritmo se pretende asignar a los estados del aut omata a clases de equi-
valencia, donde si dos estados son equivalentes quedan en una misma clase. Al cabo del
proceso se selecciona a un representante de cada una de estas clases para construir el nuevo
aut omata. A continuaci on delineamos el algoritmo:
1. Usando la regla (1) de la denici on para estados equivalentes, dar una primera parti-
ci on de los estados del aut omata nito en dos clases de equivalencia: la clase de los
estados que aceptan (q F), y la clase de los estados que no aceptan. Denotaremos
nuestras particiones usando la terminologa de la teora de conjuntos, siendo cada
bloque de la partici on un subconjunto de Q.
P
0
= 1, 3, 4, 5, 6, 8, E, 2, 7
2. Usando la regla (2) de la denici on para estados equivalentes, P
1
nos rena a P
0
,
dando dentro de cada clase de P
1
a los estados que dentro de esa clase no son
0-distinguibles pero s 1-distinguibles, por tener denidas transiciones a estados que
son 0-distinguibles, o sea, que est an en una clase distinta en P
0
. Esto se logra pro-
bando parejas de estados y viendo c omo tienen denidas sus transiciones bajo cada
smbolo, y vericando si esos estados a que se transeren son o no 0-equivalentes.
La regla queda especicada as:
Dada una partici on P
i
, a partir de ella se obtiene P
i+1
de la siguiente manera:
p y q est an en un mismo bloque en P
i+1
si y s olo si
i. p y q est an en un mismo bloque en P
i
y
ii. para toda a , (p, a) y (q, a) est an en un mismo bloque en P
i
.
3. El proceso termina cuando P
i
= P
i+1
.
Sigamos con la aplicaci on del algoritmo en la Tabla 2.8 de declaraciones de FORTRAN.
Utilizando el punto (1) del algoritmo listaremos parejas dentro de cada clase en la ta-
bla 2.9. N otese que buscaremos en las transiciones de la tabla 2.8, bajo cada smbolo, a
cu ales estados se transeren cada uno de los estados de la pareja. Una vez determinado
esto, veremos si los estados a los que se transeren son o no 1-distinguibles.
Tabla 2.9 Particiones de estados en M
pareja an alisis de los estados sucesores
(1, 3)
Q v c , ( ) F
1 2 E E E E N 0
3 6 4 E E E N 0
42 M aquinas con un n umero nito de estados
pareja an alisis de los estados sucesores
bajo el smbolo v se transeren respectivamente a (2, 6) que son
0-distinguibles, por lo que (1, 3) son 1-distinguibles y est an en clases
o bloques distintos en P
0
. No hay necesidad de revisar m as estados
sucesores.
(1, 4)
Q v c , ( ) F
1 2 E E E E N 0
4 E E 5 E 7 N 0
bajo v se transeren a (2, E), que son 0-distinguibles, por lo que 1 y 4
son 1-distinguibles.
(3, 4) las parejas (6, E),(4, E),(5, E),(E, E) a las que se transeren los estados
3 y 4 son todas 0-equivalentes, pero la pareja (7, E) es 0-distinguible, de
donde 3 y 4 son 1-distinguibles.
(1, 5) la pareja (6, 2) es 0-distinguible, por lo que 1 y 5 son 1-distinguibles.
(3, 5) todas las parejas a las que se transeren respectivamente 3 y 5 son
0-equivalentes, por lo que 3 y 5 son 1-equivalentes.
Ya no hay necesidad de probar si 4 y 5 permanecen juntos, pues (4, 3) son distin-
guibles y (3, 5) son 1-equivalentes, por lo que 5 queda con el 3, separado del 4.
(1, 6) la pareja (2, E) es 0-distinguible, de donde 1 y 6 son 1-distinguibles.
Hasta ahora llevamos las siguientes clases de equivalencia:
1, 3, 5, 4
por lo que deberemos probar si el estado 6 queda con el bloque 3, 5, o en el bloque
4. Ya vimos que no queda en el bloque 1.
(3, 6) las parejas (6, E), (4, E), (5, E), (E, E) son 0-equivalentes, pero la pa-
reja (7, E) es 0-distinguible, por lo que 3 y 6 son 1-distinguibles.
(4, 6) dado que los renglones son id enticos, 4 y 6 son equivalentes.
Y nuestro renamiento del primer bloque de P
1
va quedando como sigue:
1 3, 5 4, 6
2.4 Minimizaci on de aut omatas nitos 43
pareja an alisis de los estados sucesores
(1, 8) los renglones 1 y 8 son id enticos, por lo que 1 y 8 son equivalentes.
Siendo as, al primer bloque de nuestra partici on le agregamos el estado 8 y queda:
1, 8 3, 5 4, 6
(1, E) dado que la pareja (2, E) es 0-distinguible, 1 y E son 1-distinguibles.
(3, E) dado que todas las parejas a las que se transeren 3 y E respectivamente
son 0-equivalentes, 3 y E son 1-equivalentes.
El primer bloque queda renado de la siguiente manera:
1, 8 3, 5, E 4, 6
Probemos ahora con el segundo bloque de P
0
.
(2, 7) las parejas (E, E), (E, E), (8, 8) Y (E, E) son obviamente 0-
equivalentes, como tambi en lo es por otras razones la pareja (3, E), por
lo que 2 y 7 son 1-equivalentes.
De todo el proceso anterior
P
1
= 1, 8, 3, 5, E, 4, 6, 2, 7
Volvemos a repetir el proceso, pero ahora j andonos en si los sucesores son 1-equivalen-
tes o 1-distinguibles (viendo si los sucesores est an en un mismo bloque en P
1
o no) y
obtenemos la siguiente partici on:
P
2
= 1, 8, 3, 5, E, 4, 6, 2, 7
En este paso separamos a E del bloque en el que estaba con 3 y 5, porque bajo el
smbolo v 3 y 5 se transeren a 6 y del estado E se transere a E, y como 6 y E son
1-distinguibles, (3, 5) y E son 2-distinguibles.
La siguiente partici on, P
3
, se dene como sigue:
P
3
= 1, 8, 3, 5, E, 4, 6, 2, 7
El 7 se separ o del 2 porque bajo el smbolo ( del 2 el aut omata se transere al 3 y
del 7 al E, y 3 y E no est an juntos en P
2
o sea que son 2-distinguibles, por lo que 2 y 7
son 3-distinguibles. Si proseguimos, vemos que P
3
= P
4
. En este punto termina nuestro
proceso. Reformulando el paso (2) del algoritmo podramos preguntar:
Puedo garantizar que estoy dando un algoritmo, esto es,
que el proceso termine?
44 M aquinas con un n umero nito de estados
Examinemos los casos extremos de este proceso. Un extremo se da cuando todos los
estados son equivalentes y el otro cuando todos los estados son distinguibles. En el primer
caso P
0
tiene un solo bloque pues todos los estados son nales o ninguno lo es. P
1
cons-
truida a partir de P
0
no logra separar a ning un estado, por lo que P
0
= P
1
y el proceso
termina.
Supongamos que P
0
contiene al menos 2 bloques. Lo peor que puede suceder es que al
obtener P
i+1
a partir de P
i
, s olo se puede separar a un estado de alguno de los bloques en
cada iteraci on. Pero si n es el n umero de estados, la partici on no puede llegar a tener m as
que n bloques, por lo que a lo m as en n-1 renamientos debo separar a cada estado en su
propio bloque. De donde el procedimiento termina en a lo mas n-1 pasos.
Formalicemos estos resultados en los siguientes 2 teoremas:
Teorema 2.2 La partici on de equivalencia es unica.
Demostraci on:
Supongamos que existen 2 particiones de equivalencia, P y P

, y tales que P ,= P

.
Entonces existen 2 estados, por ejemplo p y q, que est an en un mismo bloque en P y
est an en distinto bloque en P

. Como est an en distinto bloque en P

, existe al menos una


cadena que los distingue, por lo que no pueden estar en un mismo bloque en P.
Teorema 2.3 Si dos estados p y q de un aut omata nito M son distinguibles, entonces
son distinguibles por una cadena de longitud menor o igual a n-1, donde n es el n umero
de estados en M.
Demostraci on:
Se presenta un razonamiento muy similar al dado para limitar el n umero de pasos en el
renamiento de las particiones.
Una vez determinada la partici on nal del aut omata, se construye un nuevo aut omata
de la siguiente manera:
1. Se le asigna a cada bloque de la partici on un nuevo estado en el nuevo aut omata.
2. Se construye la tabla de transici on con los smbolos para las columnas, y los nuevos
estados para los renglones.
3. El nuevo estado inicial es el que corresponde al bloque que contenga al estado inicial
del aut omata original.
4. Son estados nales los correspondientes a todos aquellos bloques que contengan es-
tados nales del aut omata original.
5. La funci on de transici on del nuevo aut omata est a denida como sigue:

(B
i
, a) = B
j
en el nuevo aut omata
1. q B
i
y p B
j
y
2. (q, a) = p
2.4 Minimizaci on de aut omatas nitos 45
En el ejemplo que estamos trabajando, la asignaci on de los estados en el nuevo aut omata
correspondiente a las particiones queda como se muestra en la tabla 2.10.
Adem as de estados redundantes, en el sentido de que su funci on es llevada a cabo por
alg un otro estado, nuestro aut omata puede tener estados inalcanzables, o sea que inici ando-
se el aut omata en el estado inicial, no hay ninguna cadena que lo lleve a un estado inal-
canzable. Tambi en estos estados hay que quitarlos del aut omata, pues no cumplen ninguna
funci on en el. El procedimiento para detectar estados inalcanzables consiste en elaborar
una lista de los estados alcanzables desde el estado inicial de la siguiente manera:
1. Iniciar la lista con el estado inicial.
2. Agregar a la lista todos los estados que pueden ser alcanzados desde el estado inicial
aliment andole al aut omata cadenas de longitud 1.
3. Para cada nuevo estado en la lista, agregar los estados alcanzables desde aqu el bajo
cadenas de un smbolo, y que no se encuentran ya en la lista.
4. El procedimiento termina cuando no se pueda agregar a la lista ning un nuevo estado.
Tabla 2.10 Transiciones para el aut omata reducido
Aut omata mnimo correspondiente
Q

F
v c , ( )
B
0
B
4
B
2
B
2
B
2
B
2
0
B
1
B
3
B
3
B
2
B
2
B
2
1
B
2
B
2
B
2
B
2
B
2
B
2
0
B
3
B
2
B
2
B
1
B
2
B
5
0
B
4
B
2
B
2
B
0
B
1
B
2
1
B
5
B
2
B
2
B
0
B
2
B
2
0
Quitando de nuestro dise no original tanto a los estados redundantes como a los esta-
dos inalcanzables obtendremos nalmente un aut omata optimo, mnimo en el sentido de
n umero de estados.
En general, el proceso de minimizaci on deber a consistir de las siguientes tres fases:
1. Eliminar en la tabla de transiciones, renglones id enticos y dejar s olo uno de ellos,
sustituyendo en las transiciones al que se dej o por el que se quit o.
2. Eliminar estados inalcanzables mediante el algoritmo anterior.
3. Utilizar el algoritmo de particiones para detectar estados equivalentes.
46 M aquinas con un n umero nito de estados
Para terminar, daremos algunas deniciones que est an relacionadas con lo que se ha
hecho hasta ahora.
Denici on 2.8 Un aut omata nito es reducido si no contiene ning un par de estados equi-
valentes.
Denici on 2.9 Un aut omata nito es conectado si todos sus estados son alcanzables des-
de el estado inicial.
Denici on 2.10 Un aut omata nito es fuertemente conectado si todo estado en el aut oma-
ta es alcanzable desde cualquier otro estado.
Para que queden claros estos procesos trabajaremos con algunos ejemplos m as. En este
momento introducimos una manera un poco distinta de encontrar las clases de equivalen-
cia de un aut omata nito que tambi en utiliza la denici on de equivalencia dada antes. La
manera como se procede es la siguiente:
Supongamos que el aut omata tiene n estados, etiquetados q
0
. . . q
n1
.
(a) Se construye una matriz triangular con n 1 columnas y n 1 renglones. Las co-
lumnas est an etiquetadas con los estados q
0
a q
n2
mientras que los renglones est an
etiquetados desde q
1
hasta q
n1
. En la posici on (q
i
, q
j
) vamos a registrar si q
i
q
j
.
Dado que la relaci on de equivalencia es sim etrica, unicamente necesitamos una ma-
triz triangular para comparar q
i
y q
j
tales que i < j.
(b) Procedemos a aplicar la condici on de compatibilidad, recorriendo la matriz y colo-
cando un 0 en aquellas posiciones en las que los estados q
i
y q
j
sean 0distinguibles.
Los estados que sean 0equivalentes tendr an en blanco la posici on correspondiente.
(c) Para ver si dos estados son kdistinguibles (o k-equivalentes), recorremos la ta-
bla una vez m as, pero j andonos en la condici on de propagaci on: dos estados son
kdistinguibles si se transeren a estados mdistinguibles, para m < k. Supongamos
que estamos revisando la relaci on entre los estados q
i
y q
j
que hasta el momento son
equivalentes (tienen en blanco su posici on en la matriz), y que bajo el smbolo a se
transeren respectivamente a los estados q
r
y q
s
. Vemos la entrada correspondiente a
esta ulrtima pareja, y si contiene , quiere decir que esos estados son distinguibles,
por lo que q
i
y q
j
son + 1distinguibles.
(d) El proceso termina cuando ya no se agreg o ninguna entrada a la tabla.
Como se puede ver, este proceso termina, pues a lo m as iremos agregando en cada
iteraci on la relaci on entre una pareja, y como hay n
2
parejas, el proceso tiene que terminar,
en el peor caso, despu es de n
2
iteraciones.
De manera similar a como lo hicimos en el proceso anterior, podemos garantizar que la
partici on de equivalencia es unica.
Utilizaremos este m etodo en los ejercicios que siguen.
2.4 Minimizaci on de aut omatas nitos 47
Ejemplo 2.4:
Obtener el aut omata nito mnimo equivalente al que se da en la tabla 2.11.
Tabla 2.11 Ejemplo 2.3
Q

F
0 1
A B E 0
B A C 0
C D H 1
D E H 0
E F I 0
F G B 1
G H B 0
H I C 0
I A E 1
A B C D E F G H
B 1
C 0 0
D 2 2 0
E 1 1 0 1
F 0 0 2 0 0
G 2 2 0 2 1 0
H 1 1 0 1 1 0 1
I 0 0 3 0 0 2 0 0
Las iteraciones por las que fue pasando esta matriz se muestran en la gura 2.4. Abajo
de cada etapa escribimos dos o tres actualizaciones de las posiciones en esa iteraci on, con
la explicaci on de c omo se obtuvieron. El orden en que se van examinando las posiciones
es de arriba a abajo y de izquierda a derecha.
Si se observa la gura de la siguiente p agina se puede ver que s olo fueron necesarias
tres iteraciones para determinar las clases de equivalencia, ya que para la cuarta iteraci on
ya no queda ning un par de estados que no sean distinguibles.
Como se puede ver en este ejemplo, el aut omata de la tabla 2.11 ya es un aut omata
mnimo, por lo que no tiene estados redundantes.
Al aplicarle el algoritmo para eliminar estados inalcanzables, las listas que vamos ar-
mando son como siguen:
L1 = A
L2 = A, B, E B y E son sucesores de A
L3 = A, B, E, C, F, I C es sucesor nuevo de By F e I son sucesores de E.
L4 = A, B, E, C, F, I, D, H, G Los sucesores nuevos de C, F e I.
L5 = A, B, E, C, F, I, D, H, G Ya no se agregan sucesores nuevos.
48 M aquinas con un n umero nito de estados
Figura 2.4 Iteraciones en la conformaci on de la matriz de equivalencias
A B C D E F G H
B
C 0 0
D 0
E 0
F 0 0 0 0
G 0 0
H 0 0
I 0 0 0 0 0 0
(a) Primera iteraci on
A B C D E F G H
B 1
C 0 0
D 2 0
E 1 1 0 1
F 0 0 2 0 0
G 2 0 2 1 0
H 1 1 0 1 0 1
I 0 0 0 0 2 0 0
(b) Segunda iteraci on
(a) Se coloca 0 en la posici on [C, A]
porque son 0distinguibles, ya que A
no es estado nal y C s lo es.
(b) Se deja la posici on [B, A] en blanco
porque tanto B como A no son estados
nales y por lo tanto sonb
0equivalentes.
(a) (A, B, 0) = A, B que son
0equivalentes.
(A, B, 1) = E, C que son
0distinguibles.
[A, B] = [C, E] + 1.
(b) (A, D, 0) = B, E que son
0equivalentes.
(A, D, 1) = E, H que son
0equivalentes.
[A, D] se deja en blanco (son
1equivalentes).
(c) (B, D, 0) = A, E y [E, A] = 1
por lo que [D, B] = [E, A] + 1 = 2.
A B C D E F G H
B 1
C 0 0
D 2 2 0
E 1 1 0 1
F 0 0 2 0 0
G 2 2 0 2 1 0
H 1 1 0 1 1 0 1
I 0 0 3 0 0 2 0 0
(c) Tercera iteraci on
(a) (A, D, 0) = B, E y
[B, E] = 1 por lo que [A, D] = 2
y A y D son 2distinguibles.
(b) (C, I, 0) = D, A i [A, D] =
2 por lo que [C, I] = 3 y C e I son
3distinguibles.
2.4 Minimizaci on de aut omatas nitos 49
De estos resultados es claro que este es un aut omata conectado, por lo que el aut omata
mnimo es exactamente el original. En este caso, si hubi esemos aplicado primero el algo-
ritmo para eliminar los estados inalcanzables no habra habido niong un ahorro de trabajo,
pues habramos tenido que trabajar para la distinguibilidad con todos los estados.
Ejemplo 2.5:
Obtener el aut omata mnimo que corresponde al de la tabla 2.12.
Tabla 2.12 Aut omata a minimizar
Q

F
0 1
A B F 0
B G C 0
C A C 1
D C G 0
E H F 0
F C G 0
G G E 0
H G C 0
A B C D E F G
B 1
C 0 0
D 1 1 0
E 1 0 1
F 1 1 0 1
G 2 1 0 1 2 1
H 1 0 1 1 1 1
Soluci on:
De la tabla de distinguibilidad, podemos ver que tenemos los siguientes bloques:
B
1
= A, E; B
2
= B, H; B
3
= C; B
4
= D, F; B
5
= G.
y la nueva tabla de transiciones queda como sigue:
Q

F
0 1
B
1
B
2
B
4
0
B
2
B
5
B
3
0
B
3
B
1
B
3
1
B
4
B
3
B
5
0
B
5
B
2
B
4
0
Aplicamos ahora el algoritmo para eliminar estados inalcanzables y tenemos:
50 M aquinas con un n umero nito de estados
L1 = B
1

L2 = B
1
, B
2
, B
4

L3 = B
1
, B
2
, B
4
, B
3
, B
5

Ya no tiene caso continuar porque ya fueron alcanzados todos los estados del aut omata.
Podemos concluir que el aut omata original no era mnimo.
Veamos qu e pasa si a este mismo aut omata le aplicamos primero el algoritmo que eli-
mina estados inalcanzables y despu es el que encuentra las clases de equivalencia. La lista
de estados alcanzables pasa por las siguientes etapas:
L
1
= A Estado inicial
L
2
= A, B , F B y F son sucesores de A.
L
3
= A,B,F,C, G C y G son los sucesores tanto de B como de F.
L
4
= A,B,F,C,G, E E es el sucesor de E. El resto de los sucesores ya se encuentran
en la lista.
L
5
= A,B,F,C,G,E, H H es el sucesor de E. El otro sucesor ya se encuentra en la
lista.

Unicamente hubi eramos eliminado al estado D, al que no se puede llegar desde A, lo


que hubiera dejado en el bloque B
4
s olo a F.
2.5. Relaci on entre modelos de aut omatas nitos
2.5.1. Aut omatas nitos no-deterministas
Veremos ahora un modelo un poco distinto del aut omata nito, que es el aut omata nito
no-determinista para despu es demostrar que es equivalente al aut omata nito determinista.
Este nuevo modelo es muy importante para relacionar m as adelante a los aut omatas nitos
con los lenguajes formales y poder hablar indistintamente de la gram atica que genera un
lenguaje y del aut omata nito que lo reconoce.
Consideremos la modicaci on del modelo determinista que tenemos, permitiendo que
en un estado y al leer un smbolo del alfabeto de entrada, el aut omata se transera no a
un solo estado sucesor, sino que lo haga simult aneamente a m as de uno; que haya varias
posibilidades para el estado sucesor. A este modelo es al que llamamos aut omata nito
no-determinista. En la gura 2.5 damos un diagrama de un aut omata de este tipo.
2.5 Relaci on entre modelos de aut omatas 51
Figura 2.5 Ejemplo de aut omata nito no-determinista
q
4
q
0
q
1
q
3
q
2
empza
0, 1
0, 1
0
1
0, 1
1
0
1
1
Como se puede observar, al leer el aut omata el smbolo 0, puede elegir entre trans-
ferirse al estado q
1
o bien, quedarse en el estado q
0
. Nada m as que en lugar de elegir,
se transere, en teora, a ambos, y al siguiente instante de tiempo se encuentra en ambos
estados esperando el siguiente smbolo de entrada.
Decimos que un aut omata nito no-determinista acepta a una cadena a
0
a
1
. . . a
k
si es
que existe alguna secuencia de transiciones entre las provocadas por la cadena, que lleve
al aut omata del estado inicial a alguno de los estados nales. Por ejemplo, 01001 es
una cadena aceptada pues lleva del estado inicial a un estado nal. El diagrama de las
transiciones que efect ua el aut omata se encuentra en la gura 2.6. Seguiremos usando la
notaci on
q
a
p
para indicar una transici on desde q a p al leer el smbolo a pero saliendo de q tantas echas
como posibilidades de elecci on haya para un mismo smbolo desde un estado, obteniendo
de esta forma una estructura arborescente. Cuando no haya una transici on especicada
para un cierto smbolo, est a implcito que ese smbolo hace que el aut omata se transera a
un estado pozo de error, que denotaremos como conjunto vaco ().
Para decidir que el aut omata nito no-determinista (AFN) acepta a la cadena 0100,
hay que encontrar alguna trayectoria que empezando en el estado inicial termine en alg un
estado nal. Los nes de las trayectorias est an dados por q
2
, q
1
, y q
0
. Como q
2
es estado
nal, la secuencia de estados q
0
, q
0
, q
0
, q
1
, q
2
empieza en estado inicial, termina en estado
nal y fue una de las provocadas por la cadena, por lo que esta es aceptada.
En general, para determinar si una cadena es o no aceptada por un AFN, basta encontrar
una trayectoria de este estilo, pero puede ser necesario vericar cada una de las posibles
trayectorias para poder hacerlo.
Formalmente, un AFN es un 5-tuplo N = (Q, , , q
0
, F) donde Q, y F tienen el mismo
signicado que en los aut omatas nitos deterministas;
52 M aquinas con un n umero nito de estados
Figura 2.6 Transiciones posibles ante la cadena 0100
q
0
q
0
q
1
q
0
q
3

q
0
q
1

q
0
q
1
q
2
0 1 0 0
0
0
1
0
0
0
0
q
0
es el estado inicial, q
0
Q
es una funci on
: Q

(Q)
que transforma (o mapea) parejas de la forma (estado, smbolo) a alg un
subconjunto de estados.
La intenci on es que (q, a) sea un conjunto de estados p, tal que hay una transici on de
q a p al leer el smbolo a.
Podemos extender a una funci on

: Q

(Q)
para denotar secuencias de transiciones de la siguiente manera:
1.

(q, ) = q
2.

(q, wa) = p [ para alg un estado r

(q, w), p (r, a)
La condici on 1 nos dice que no podemos tener transiciones sin leer smbolos, y la
condici on 2 nos dice que, empezando en el estado q y despu es de leer la cadena wa, la
unica forma de terminar en el estado p es que r sea uno de los posibles estados a los que se
transere el aut omata desde q despu es de leer w, y p sea uno de los posibles estados a los
que se transera el aut omata N desde el estado r al leer a.
Como

(q, a) = (q, a), otra vez usaremos en vez de

para denotar a la funci on de
transici on sobre cadenas.
Tambi en extenderemos el dominio de a subconjuntos de estados
:

(Q)

(Q)
de la siguiente manera:
2.5 Relaci on entre modelos de aut omatas 53
3. (P, w) =

pP
(p, w) para cada subconjunto de estados P Q.
De lo anterior podemos denir al lenguaje aceptado por un AFN de la siguiente manera:
L(N) = w

[ (q
0
, w) contiene a alg un estado en F
Ejemplo 2.6:
Consideremos nuevamente el AFN representado por el diagrama de transici on dado ante-
riormente, y consideremos la cadena de entrada 01001. Entonces:
(q
0
, 0) = q
0
, q
1

(q
0
, 01) = ((q
0
, 0), 1) = (q
0
, q
1
, 1) = q
0
, q
3
= q
0
, q
3

Similarmente, calculamos
(q
0
, 010) = q
0
, q
1

(q
0
, 0100) = q
0
, q
1
, q
2

Teorema 2.4 (TEOREMA DE EQUIVALENCIA) Dado un aut omata nito determinista exis-
te un aut omata nito no-determinista equivalente, y viceversa, dado un aut omata nito
no-determinista, existe un aut omata nito determinista equivalente.
Demostraci on:
= Claramente podemos ver que los aut omatas nitos deterministas son un caso especial
de los AFN, donde los subconjuntos de estados contienen siempre solamente a un estado,
por lo que el mismo es el AFN equivalente.
= Procederemos ahora a demostrar que dado un AFN existe un AFD equivalente.
Sea M = (Q, , , q
0
, F) un AFN, que acepta a un lenguaje L. Denamos un AFD
M

= (Q

, q

0
, F

) de la siguiente manera:
Q

(Q) Los estados de M

est an representados por cada uno


de los subconjuntos de estados de Q.

lleva un registro de los estados en los que puede estar


M en un momento dado, poniendo a M

en aquel esta-
do que represente al subconjunto que contenga unica y
exclusivamente a todos los estados en los que est e M.
F

= P [ q P y q F Son estados nales de M

todos aquellos subconjuntos


que contengan a alg un estado nal de M.
q

0
= q
0
El estado inicial de M

es el subconjunto que consista


de los estados iniciales de M.
54 M aquinas con un n umero nito de estados
(Denotaremos a los estados de M

como [q
0
, q
1
, . . . , q
k
] para denotar al estado que repre-
senta al subconjunto q
0
, q
1
, . . . , q
k
).
Denimos

([q
i
1
, q
i
2
, . . . , q
i
k
], a) = [p
j
1
, p
j
2
, . . . , p
jm
]
(q
i
1
, q
i
2
, . . . , q
i
k
, a) = p
j
1
, p
j
2
, . . . , p
jm

Es f acil demostrar, as mismo, que, dada una cadena x, se cumple

([q
i
1
, q
i
2
, . . . , q
i
k
], x) = [p
j
1
, p
j
2
, . . . , p
jm
]
(q
i
1
, q
i
2
, . . . , q
i
k
, x) = p
j
1
, p
j
2
, . . . , p
jm

y como F

est a integrado por todos los subconjuntos de Q que contengan a alg un estado
nal de M,

([q
0
], x) F

(q
0
, x) contiene a alg un estado p F
De todo lo anterior, y con M

as construida, L(M) = L(M

).
Algoritmo 2.1 Conversi on de un AFN a un AFD.
1: El primer rengl on de la tabla de transiciones de M

es el subconjunto formado
por los estados iniciales de M.
2: Mientras haya renglones sin todas sus transiciones computadas
3: Sea S el smbolo que denota a un subconjunto de Q que ha sido incluido
como rengl on en la tabla, pero que sus transiciones no han sido resueltas.
Calcula, para cada smbolo a en , la columna correspondiente, formando
un nuevo subconjunto con todos aquellos estados a los que posiblemente
se transere M bajo a.
(S, a) = t [ t (s, a)paras S
4: Si el subconjunto as obtenido no aparece ya como rengl on en la tabla, in-
cl uyele. Si ya aparece, no hagas nada.
5:
6: Marca un estado S en Q

como estado nal si contiene a alg un estado q de Q


tal que q es nal en M. Si no contiene a ning un estado de F, entonces S no
es estado nal.
La demostraci on de este teorema fue constructiva, pues nos dio el m etodo para construir
un aut omata nito determinista equivalente a un aut omata nito no-determinista. De esta
demostraci on, y denotando a M

como el AFD que se est a construyendo y a M como el


2.5 Relaci on entre modelos de aut omatas 55
AFN que se tiene, obtenemos el algoritmo 2.1. Al construir el AFD se presume que no
todos los subconjuntos de Q aparecen como posibles transiciones, por lo que se integra
en la construcci on la no inclusi on en M

de estados (subconjuntos) inalcanzables desde el


estado inicial.
Ejemplo 2.7:
Sea M = (Q, , , A, B, F) un aut omata nito no-determinista denido por las transi-
ciones en la tabla 2.13. Construir el aut omata nito determinista equivalente.
Tabla 2.13 Aut omata nito no determinista y su conversi on a determinista
Aut omata no determinista
Q

F
0 1
A A, B C 0
B B C 1
C A, C 1
Respuesta: Para dar la soluci on, en la tabla 2.13 anotaremos a la izquierda el paso que
estamos ejecutando y a la derecha la tabla parcial que vamos obteniendo.
Tabla 2.14 Conversi on de aut omata nito no determinista a determinista 1/2
paso tabla parcial paso tabla parcial
(1)
Q

F
0 1
[A]
(2)
Q

F
0 1
[A] [A, B] [C]
[A, B]
[C]
56 M aquinas con un n umero nito de estados
Tabla 2.14 Conversi on de un AFN a un AFD 2/2
paso tabla parcial paso tabla parcial
(3)
Q

F
0 1
[A] [A, B] [C]
[A, B] [A, B] [C]
[C]
(4)
Q

F
0 1
[A] [A, B] [C]
[A, B] [A, B] [C]
[C] [A, C]

[A, C]
(5)
Q

F
0 1
[A] [A, B] [C]
[A, B] [A, B] [C]
[C] [A, C]

[A, C]
(6)
Q

F
0 1
[A] [A, B] [C]
[A, B] [A, B] [C]
[C] [A, C]

[A, C]
(7)
Q

F
0 1
[A] [A, B] [C]
[A, B] [A, B] [C]
[C] [A, C]

[A, C] [A, B] [A, C]
(8)
Q

F
0 1
[A] [A, B] [C] 0
[A, B] [A, B] [C] 1
[C] [A, C] 1
0
[A, C] [A, B] [A, C] 1
Es conveniente reetiquetar los estados para que la notaci on no se haga muy voluminosa,
con lo que obtenemos las transiciones de la tabla 2.15.
A un cuando el algoritmo garantiza que no hay estados inalcanzables en el aut omata
nito determinista por el construido, no garantiza que sea mnimo, por lo que si se desea
un aut omata mnimo se deber a aplicar el algoritmo de minimizaci on.
2.6 Traductores 57
Tabla 2.15 Estados reetiquetados.
Q

F
0 1
q
0
q
1
q
2
0
q
1
q
1
q
2
1
q
2
q
3
q
4
1
q
3
q
3
q
3
0
q
4
q
1
q
4
1
2.6. Traductores
Como mencionamos al introducir el tema, las m aquinas no nada m as son aceptadoras de
cadenas, sino que tambi en pueden jugar el papel de traductoras. En el caso de los aut omatas
nitos, tenemos dos formas de emitir cadenas que correspondan a la traducci on de una
cadena en otra. Cabe aclarar que para poder llevarse a cabo la traducci on, el tipo de cadenas
a traducir deben poder ser aceptadas por un aut omata nito.
2.6.1. Aut omatas nitos con respuesta asignada por estado
Estos aut omatas se caracterizan por dar una respuesta que depende exclusivamente del
estado en el que se encuentran. Formalmente, un aut omata con respuesta asignada por
estado es un 6-tuplo M = (Q, , O, , , q
0
) donde
Q : conjunto de estados : alfabeto de entrada
O : alfabeto de salida
: funci on de transici on : funci on de respuesta
: Q Q : Q O
y
q
0
: estado inicial.
A este tipo de aut omatas se les conoce tambi en como m aquinas de Moore o modelo de
Moore.
58 M aquinas con un n umero nito de estados
Como se puede observar, el modelo con el que hemos estado trabajando es un caso
especial del modelo de Moore, donde a F le llam abamos la respuesta de la m aquina, y que
replanteada como una funci on se dena de la siguiente manera:
F : Q 0, 1
por lo que si hacemos O = 0, 1 y ampliamos la denici on que tenamos, podemos ver
que el modelo que manejamos hasta ahora es un modelo de Moore.
Extendiendo la denici on como lo estamos haciendo, permitimos una traducci on de las
cadenas de entrada, de tal forma que ya no estamos hablando de m aquinas aceptadoras sino
de traductores, y el modelo que manej abamos resulta ser un traductor que traduce a cadenas
formadas con dos smbolos distintos, por lo que los traductores extienden las capacidades
de los aceptadores, permitiendo que las respuestas del aut omata est en formadas por tantos
smbolos distintos como estados tenga la m aquina.
Ejemplo 2.8:
Dise na un aut omata de Moore que cuente los 1 en una cadena de ceros y unos, dando las
siguientes respuestas:
(q) =
_

_
0 si ha visto 4n unos
1 si ha visto 4n + 1 unos
2 si ha visto 4n + 2 unos
3 si ha visto 4n + 3 unos
Respuesta: El dise no de este aut omata de Moore se da en la gura 2.7.
Figura 2.7 Aut omata de Moore
A
0
B
1
C
2
D
3
empza
0 0 0 0
1 1 1
1
2.6 Traductores 59
2.6.2. Aut omatas con respuesta asignada durante la transici on
Denici on 2.11 Un aut omata con respuesta asignada durante la transici on es un
6-tuplo M = (Q, , O, , , q
0
) donde:
Q : conjunto de estados
: alfabeto de entrada
O : alfabeto de salida
: funci on de transici on
: Q Q
: funci on de salida o respuesta
: Q O
y
q
0
: estado inicial
Como se puede ver en este modelo de aut omata, la respuesta ya no depende exclu-
sivamente del estado en el que se encuentra el aut omata, sino que depende tambi en del
smbolo que est a leyendo. En este tipo de aut omata, mientras no se le alimenten smbolos
a la m aquina no se puede obtener respuesta alguna, pues la respuesta es dada al momento
de hacer la transici on (de ah su nombre). A este modelo de aut omata se le conoce en la
literatura como M aquina de Mealy.
Para representar a en el diagrama de transici on se acostumbra etiquetar los arcos del
diagrama con cadenas de la forma
p q
a/0
donde a y o O, indicando as que se produce el smbolo o al pasar del estado p al q
habiendo visto el smbolo a.
Para la tabla de transici on tenemos dos opciones; la primera consiste en dar una tabla
parecida a la de la funci on pero donde las entradas a la tabla corresponden a smbolos
de O. Siguiendo la transici on que esquematizamos arriba, en el rengl on etiquetado p
columna etiquetada a aparecera el smbolo o. La segunda opci on, y la m as utilizada,
es la de tener una sola tabla tanto para como para , y esto se hace teniendo como entradas
en la tabla parejas de la forma (q, s) en el rengl on p columna a si se cumple que (p, a) = q
con q Q y (p, a) = s, o O.
60 M aquinas con un n umero nito de estados
Ejemplo 2.9:
Construye un aut omata nito de Mealy donde la respuesta sea la imagen de la cadena de
entrada, pero retrasada en dos unidades de tiempo. Si t = 0, 1, 2, . . . representa al tiempo,
entonces s(t) es el smbolo que se lee en el instante t y o(t) es el smbolo que se produce
como respuesta tambi en en el instante t.
Redeniendo la respuesta de la m aquina, queremos un aut omata de Mealy tal que
(t) =
_
s(t 2) si t > 2
(1) = (2) = 0
con = O = 0, 1, 2. La funci on de transici on se encuentra en la tabla 2.16 y el diagrama
de transici on se puede ver en la gura 2.8.
Tabla 2.16 Retraso de la entrada en una m aquina de Mealy
Aut omata de Mealy
Q

0 1 2
00 00, 0 01, 0 02, 0
01 10, 0 11, 0 12, 0
02 20, 0 21, 0 22, 0
10 00, 1 01, 1 02, 1
11 10, 1 11, 1 12, 1
12 20, 1 21, 1 22, 1
20 00, 2 01, 2 02, 2
21 10, 2 11, 2 21, 2
22 20, 2 21, 2 22, 2
2.6.3. Equivalencia entre aut omatas de Moore y Mealy
De las deniciones de M aquina de Moore y M aquina de Mealy, notamos que hablar de
la equivalencia de estos modelos introduce inmediatamente el problema de que los aut oma-
tas de Moore responden ante la cadena vaca (pues el estado inicial tiene una respuesta
asignada), mientras que los de Mealy no emiten ning un smbolo en tanto no hayan recibido
alg un estmulo. Por esta raz on se vuelve difcil decidir si m aquinas de estos dos modelos
son o no equivalentes. La pregunta adecuada es la de si con uno de ellos podemos simular
la conducta del otro modelo.
2.6 Traductores 61
Figura 2.8 Retraso de la entrada en una m aquina de Mealy
00
01
02
10
11
12
20
21 22
0/0
1/1
2/2
2/0
1/0
2/0
1/0
0/0
2/0
1/0
0/0
2/1
1/1
0/1
2/1
2/1
1/1
0/1
2/2
1/2
0/2
0/2
1/2
2/2
1/2
0/2
Denici on 2.12 Un aut omata de Mealy (M
t
) y un aut omata de Moore (M
s
) son similares
si para cada posible estmulo, la respuesta de M
t
es exactamente igual a la de M
s
, excepto
que va precedida por un smbolo arbitrario, pero siempre el mismo.
Teorema 2.5 (SIMILITUD DE MODELOS)
i. Para cada aut omata de Moore existe un aut omata de Mealy similar.
ii. Para cada aut omata de Mealy (M
t
) existe un aut omata de Moore (M
s
) similar.
Demostraci on:
La demostraci on consiste en poder construir uno a partir del otro y posteriormente de-
mostrar que cumplen con la condici on de similitud.
i. Empecemos por construir un aut omata de Mealy a partir del de Moore.
62 M aquinas con un n umero nito de estados
Algoritmo 2.2 Conversi on de Aut omata de Mealy a Aut omata de Moore
1: Parte a cada estado de la m aquina de Mealy en tantos estados en la m aquina de Moore
como salidas distintas se emitan en transiciones hacia ese estado.
2: Toda transici on hacia un estado q que emita la salida o, es dirigida al estado [q, o].
Toda transici on desde un estado q se convierte en k transiciones desde cada uno de los
estados en los que se parti o q.
Formalmente:
Q
s
= [q, o] [ q Q
s
, o O
s

Denimos las funciones de transici on y respuesta de la siguiente manera:


Si
t
(q, a) = p y
t
(q, a) = o entonces en M
s
denimos las siguientes transiciones:

s
([q, u], a) = [p, o]u O y

s
([q, o]) = o
3: Para estado inicial de M
s
se elige arbitrariamente cualquiera de las parejas que conten-
gan a q
t
, pues este primer smbolo que emite M
s
es, de todos modos irrelevante. Puede
ser que q
t
no hubiera tenido que ser partido, en cuyo caso ese mismo estado inicial,
emitiendo cualquier smbolo del alfabeto de salida, es el estado inicial de M
s
.
Sea M
s
= (Q
s
,
s
, O
s
,
s
,
s
, q
s
) un aut omata de Moore. Construimos M
t
de la
siguiente manera:
Q
t
= Q
s
,
t
=
s
, O
t
= O
s
,
t
=
s
y

t
(q
i
, a) = r
s
(q
i
, a) = q
j
y
s
(q
j
) = r
Al construir
t
lo que hacemos es adelantar la emisi on de la respuesta, j andonos
en los smbolos que llevan al estado, y asociando con esos smbolos la respuesta del
estado sucesor. Se deja como ejercicio la demostraci on detallada de que el aut omata
construido cumple con la especicaci on requerida.
ii. Construimos ahora el aut omata de Moore a partir del de Mealy. La primera parte de
la demostraci on fue sencilla. Sin embargo, para esta segunda parte no podemos usar
el procedimiento inverso, pues a un mismo estado pueden llegar transiciones que
emitan distintos smbolos al llegar al estado. Por esta raz on tenemos que construir
un aut omata cuyos estados sean parejas de la forma (estado, smbolo de salida),
para retrasar la salida hasta que la transici on llegue al estado. El algoritmo com-
pleto para hacerlo es el 2.2.
Por construcci on, excepto por el primer smbolo emitido por M
s
, las respuestas de
las dos m aquinas son iguales.
2.6 Traductores 63
En las guras 2.9 y 2.10 se encuentran diagramas que muestran la conversi on de uno a
otro aut omata.
Figura 2.9 Conversi on de m aquina de Moore a Mealy
A
1
C
2
B
0
A C
B
0
0/1
0
0/2
0
0/0
1 1/0
1
1/1
1 1/2
/
s
/
t
Figura 2.10 Conversi on de m aquina de Mealy a Moore
A B
A
0
A
1
B
0
B
1
0/1 0/0
0
0
1/1
1/0
1
1
0
1
1
1
/
t
/
s
En la conversi on del aut omata de Mealy al de Moore que se muestra en la gura 2.10, se
producen las salidas 0 y 1 al transferirse al estado A, por lo que partimos a A en 2 estados,
[A, 0] y [A, 1. Lo mismo sucede con B.
2.6.4. Traducciones correctas
Supongamos que tenemos un aut omata de Moore (o de Mealy) que queremos que tra-
duzca a las cadenas 000
m
1
n
, m, n 0 cambiando los ceros (0), despu es del segundo, por
64 M aquinas con un n umero nito de estados
unos (1) y viceversa, obteni endose 001
m
0
n
. Lo primero que debera hacer el aut omata es
vericar si la cadena sera aceptada o no, para dar por buena una traducci on. La pregunta
que nos hacemos ac a es c omo incluir en el aut omata, adem as de la capacidad traductora,
la capacidad aceptadora? La respuesta es muy sencilla. Simplemente manejamos estados
nales, y si el aut omata al terminar la traducci on termina en estado nal, la traducci on es
de una cadena aceptada.
Para poder dar la especicaci on matem atica de lo que es una traducci on correcta de una
cadena w en una cadena z, debemos denir una funci on auxiliar, T : Q

que
permita describir las cadenas generadas por el aut omata. Esto lo tenemos que hacer distinto
para Moore que para Mealy.
Denimos T
s
la traducci on producida por una m aquina de Moore de la siguiente
manera:
T
s
(q, ) = (q)
T
s
(q, aw) = T
s
(q, ) T
s
(p, w) donde (q, a) = p
Para el caso de las m aquinas de Mealy la funci on de traducci on queda de la siguiente
manera:
T
t
(q, ) =
T
t
(q, aw) = (q, a) T
t
(p, w) donde (q, a) = p
Como en ambos tipos de traductores la funci on de traducci on tiene como dominio al pro-
ducto cruz de estados y cadenas, omitiremos el subndice que distingue entre la traducci on
del modelo de Moore y la de Mealy. Siendo as, modicamos la denici on de los aut omatas
traductores a que incluyan a un conjunto de estados nales F, y denimos la traducci on de
la siguiente manera:
(M) = (w, z)

[ (q
0
, w) = p F y T(q
0
, w) = z
Con esto damos por terminado este captulo, y por lo tanto la caracterizaci on de los aut oma-
tas nitos y las relaciones entre distintos modelos.
Gram aticas y
lenguajes formales
3
Introducimos el tema de gram aticas formales mecanismos de generaci on de
lenguajes , su clasicaci on en t erminos del tipo de reglas que se usan en la
generaci on de cadenas del lenguaje, as como la relaci on de contenci on entre
los distintos tipos de lenguajes formales. Damos una breve introducci on a los
temas de arboles de derivaci on aplicables unicamente a los dos tipos m as
sencillos de gram aticas y al concepto de ambig uedad en lenguajes formales.
3.1. Introducci on
Si vemos la denici on m as com un de un lenguaje, nos encontraremos con que se dene
como un conjunto de palabras y reglas para combinarlas, en uso por una comunidad,
naci on o grupo etnico. La primera parte se reere a la sintaxis o manera de construir frases,
mientras que el resto se reere a la sem antica y pragm atica, que tienen q1ue ver con su uso
y signicado. Buscamos, sin embargo, una denici on m as precisa, m as matem atica, que por
lo pronto trabaje unicamente con la sintaxis. Si se trata de formalizar tambi en a lenguajes
naturales, nos encontramos ante la dicultad de dar una representaci on matem atica que
prevea las innumerables posibilidades que da un vocabulario dado, y la posibilidad que hay
de que cada hablante pueda decir una frase que nunca antes ha sido dicha y que sin embargo
es entendida por cualquier otro hablante de esa lengua. De la misma forma, es imposible
pedir que para describir al lenguaje Java o al lenguaje Scheme, uno d e una lista exhaustiva
66 Gram aticas y lenguajes formales
de todos los posibles enunciados bien formados que se pueden presentar en ese lenguaje. El
problema central es el de dar descripciones nitas de conjuntos potencialmente innitos.
Dado un alfabeto V , un lenguaje L es un subconjunto de V

. Para nuestro prop osito,


una descripci on de L es adecuada si nos permite decidir si una cadena est a o no en L.
Si pensamos en el espa nol, el alfabeto (o vocabulario) consiste de palabras, los dgi-
tos, el blanco y los signos de puntuaci on. Una gram atica formal para el espa nol sera un
conjunto nito de reglas con las cuales pudi eramos decidir si una lnea escrita est a o no en
el lenguaje (es o no una frase del lenguaje). En el caso de un lenguaje de programaci on,
una gram atica formal nos debera ayudar a decidir si un conjunto de enunciados es o no un
programa bien formado.
Una forma nita de representar lenguajes es a trav es de las m aquinas aceptadoras con un
n umero nito de estados. Sin embargo, la clase de lenguajes descriptibles por este m etodo
es tan limitado, que buscaremos extender las capacidades de estas m aquinas para obtener
otras m as poderosas.
La descripci on de un lenguaje a trav es de un aceptador es un m etodo analtico de
descripci on. La m aquina analiza la frase y decide si la acepta o no. Podemos usar en vez
de este m etodo, una representaci on generativa que consista de un conjunto nito de reglas
que, si se siguen en alg un orden v alido, se construir an unicamente frases del lenguaje. Las
gram aticas formales cumplen con estas cualidades. Si elegimos este m etodo para reconocer
lenguajes, y si nos dan una frase, podremos decidir si la frase pertenece o no al lenguaje?
Veremos que existen procedimientos mec anicos para decidir esto en casi todos los casos,
mas no en el caso de los lenguajes m as generales. Para algunos lenguajes m as generales se
puede demostrar que no existe procedimiento mec anico que d e respuesta a la pregunta de
pertenencia.
3.2. Conceptos b asicos de gram aticas
Consideremos la construcci on de frases del espa nol mediante la aplicaci on de reglas
gramaticales, tal vez un poco arbitrarias, pero que sirven para el prop osito que tenemos.
Por ejemplo, la oraci on:
Susana y Pepe comen muchas manzanas
la podemos ver como constituida de dos constituyentes principales
1
:
sujeto) predicado)
Susana y Pepe comen muchas manzanas
La construcci on de la oraci on la podemos dar con la siguiente regla gramatical:
1. oraci on) sujeto)predicado)
1
Estas reglas gramaticales est an en desuso actualmente, pero sirven como ilustraci on.
3.2 Conceptos b asicos de gram aticas 67
La regla nos dice que una expresi on de tipo oraci on) puede reescribirse como (ser
sustituida por, o se dene como) una expresi on de tipo sujeto) seguida de una expresi on
de tipo predicado).
Usamos la notaci on de encerrar entre lo que constituyen clases o tipos de expresio-
nes, para diferenciarlas de lo que forma parte del lenguaje. Otras reglas que podemos intuir
de la oraci on anterior son:
2. sujeto) fr nominal)
3. fr nominal) sustntvo)
4. fr nominal) sustntvo)conjunci on)fr nominal)
La regla (2) nos dice que una frase tipo sujeto) puede ser sustituida por una frase de
tipo fr nominal) y las reglas (3) y (4) dicen que una fr nominal) puede tomar una
de dos formas: sustntvo) o bien sustntvo)conjunci on)fr nominal). Como se puede
ver, la regla (4) dene una frase en t erminos de s misma. A esto se le llama la propiedad
recursiva de las gram aticas, y es precisamente la que permite una representaci on nita de
una colecci on innita.
El sujeto) de la oraci on del ejemplo se genera mediante una utilizaci on (aplicaci on)
de las reglas (2), (4) y (3) en ese orden y una aplicaci on de las siguientes reglas:
5. conjunci on) y
6. sustntvo) Susana
7. sustntvo) Pepe
obteni endose las siguientes etapas por la que pasa la cadena:
Cadena Regla que se aplic o
sujeto) inicio
fr nominal) 2
sustntvo)conjunci on)fr nominal) 4
sustntvo) y fr nominal) 5
sustntvo) y sustntvo) 3
Susana y sustntvo) 6
Susana y Pepe 7
A la parte izquierda de estas lneas, las que describen las distintas etapas de la oraci on o
frase. se les llama forma sentencial, y en conjunto forman lo que se llama una derivaci on.
Cada una de las formas sentenciales de una derivaci on se obtiene a partir de la anterior
mediante la aplicaci on de alguna regla. Muchas veces es posible representar la derivaci on
por un diagrama de arbol. Para completar el ejemplo, a continuaci on damos m as reglas,
68 Gram aticas y lenguajes formales
necesarias para la derivaci on de la oraci on.
8. predicado) verbo)fr predicada)
9. verbo) comen [ muerden [ buscan [ preeren
10. fr predicada) adjetivo)sustntvo)
11. adjetivo) muchas [ pocas [ bellas [ apetitosas
12. sustntvo) manzanas [ peras [ chavas [ materias
En la gura 3.1 se encuentra el arbol correspondiente a una de las derivaciones.
Figura 3.1

Arbol de derivaci on para una oraci on
<oraci on>
<sujeto>
<fr nominal>
<sustntvo>
Susana
<conjunci on>
y
<fr nominal>
<sustntvo>
Pepe
<predicado>
<verbo>
comen
<fr predicada>
<adjetivo>
manzanas
<sustntvo>
manzanas
El conjunto de reglas que enumeramos del (1) al (12) constituye una gram atica. La
oraci on dada es un miembro del lenguaje generado por la gram atica (hay otras posibili-
dades?). La descripci on estructural de la derivaci on, el diagrama del arbol, muestra c omo
se usaron las reglas de la gram atica para generar la expresi on. Cada nodo del arbol da la
aplicaci on de una de las reglas. A cada una de las reglas se les llama producciones y como
especican la forma en que el lado izquierdo se forma con las frases del lado derecho, a
este tipo de gram aticas se les conoce como gram aticas de estructura de frase.
Como se puede observar, dadas estas reglas se pueden construir frases sin sentido
(manzanas comen muchas Pepe), pero ese problema no nos preocupa por el momento. Lo
que s nos preocupa es:
1. Con un cierto conjunto de reglas, puedo generar a todo el lenguaje que pretendo
generar?
2. Genero, adem as del lenguaje, frases que no est an en el lenguaje?
y por ultimo, de vital importancia en Computaci on:
3.3 Gram aticas formales 69
3. Puedo generar una misma frase del lenguaje que tenga dos o m as descripciones
estructurales distintas?
Cuando (3) sucede, se dice que la gram atica es ambigua y esto diculta terriblemente el
problema de decidir si una frase fue o no generada por una cierta gram atica.
3.3. Gram aticas formales
Del ejemplo anterior podemos formalizar la denici on de gram atica. Para esto, tome-
mos nota de que en el ejemplo utilizamos:
1. El vocabulario (alfabeto) del cual se construyen las frases de nuestro lenguaje. A
los smbolos que constituyen el alfabeto les llamamos smbolos terminales, o sim-
plemente terminales, pues nuestras derivaciones deben terminar en frases formadas
exclusivamente de estos smbolos.
2. Los smbolos que utilizamos en los pasos intermedios y que denotamos como no-ter-
minales, que si bien forman parte de la gram atica, no forman parte del lenguaje. Son
smbolos auxiliares, tambi en denotados como variables por algunos autores.
y por ultimo
3. El conjunto de reglas o producciones.
Debemos saber tambi en cu al es el punto de partida para la aplicaci on de las produccio-
nes, pues el orden en que se listan estas no fuerza ning un orden en su aplicaci on. Al punto
de partida le llamamos el smbolo inicial.
Formalmente,
Denici on 3.1 Una gram atica formal es un 4-duplo G = (N, T, P, S) donde:
N es un conjunto nito de smbolos no terminales
T es un conjunto de smbolos terminales (N T = )
P es un conjunto nito de producciones
y S es el smbolo inicial tal que S / (N T)
2
Cada producci on en P es una pareja ordenada (, ) con = A en la cu al , y
son posiblemente vacas en (N T)

y A N o bien A = S. Denotamos a la pareja (, )


como .
2
La restricci on de que S no pertenezca a N T no es de uso generalizado y se va a ignorar m as adelante
despu es de la introducci on de otras formas de reglas.
70 Gram aticas y lenguajes formales
El proceso de generar una frase en el lenguaje de acuerdo a una gram atica formal
consiste en reescribir las formas sentenciales mediante el uso de las producciones y em-
pezando por el smbolo S. La sucesi on de las formas sentenciales requeridas para generar
una frase constituye una derivaci on de la frase de acuerdo a la gram atica G.
Sea G una gram atica formal.
Denici on 3.2 Una forma sentencial es una cadena de smbolos en (N T S)

.
Denici on 3.3 Sea una producci on en G, w = y w

= formas senten-
ciales. Decimos que w

se deriva directamente de w y lo denotamos por w w

.
Denici on 3.4 Sea w
0
, w
1
, . . . , w
k
es una sucesi on de formas sentenciales tales que
w
0
= w
1
= w
2
= . . . = w
k
. Decimos que w
k
es derivable de w
0
y lo de-
notamos por w
0

=w
k
. La estrella encima del smbolo = signica que la derivaci on
se lleva 0 o m as pasos. Si queremos registrar exactamente el n umero de pasos, lo hacemos
con w
0
k
=w
k
.
N otese que w

=w es siempre v alido, ya que si ejecutamos cero pasos de la derivaci on,
nos quedaremos con la misma cadena.
Denici on 3.5 A la sucesi on w
0
, w
1
, . . . , w
k
la llamamos una derivaci on de w
k
a partir
de w
0
en G.
Denici on 3.6 El lenguaje L(G) generado por la gram atica G es el conjunto de cadenas
de terminales derivables a partir de S:
L(G) = w T

[ S

= w
Denici on 3.7 Si w L(G), entonces w es una cadena, frase o palabra en el lenguaje
generado por G.
En general, en la especicaci on de gram aticas usaremos letras may usculas para las
no-terminales ( o la notaci on BNF) y letras min usculas para terminales. Se debe insistir en
que se requiere que N T = .
De acuerdo a las deniciones anteriores, cada producci on en una gram atica formal nos
da una regla gramatical que permite la modicaci on de una forma sentencial sustituyendo
por una cadena arbitraria a una no-terminal particular. Usamos la producci on A
para obtener la forma sentencial w
i
a partir de la forma sentencial w
i1
; lo que hemos hecho
es casar el lado izquierdo de alguna producci on con alguna subcadena de w
i1
, sustituir esa
subcadena por el lado derecho, y obtener de esa forma w
i
.
3.3 Gram aticas formales 71
Hemos supuesto sin mencionarlo explcitamente que:
a. La sustituci on se condiciona a que el smbolo no terminal A aparezca en un cierto
contexto: entre y .
b. La frase w que sustituye a A, puede ser la cadena vaca , lo que permite, de hecho,
borrar no-terminales en el curso de una derivaci on, y esto resulta en que una forma
sentencial decrezca de tama no en un paso de la derivaci on.
En los ejemplos que siguen presentaremos ambas caras de la moneda en la generaci on
de lenguajes. Veremos ejemplos de gram aticas, para tratar de denir qu e lenguajes generan,
y trataremos de dise nar gram aticas que generen el lenguaje especicado.
Ejemplo 3.1:
Sea G = (N, T, P, S) con:
N = A, B, C
T = a, b, c
P = S A, A aABC,
A abC, CB BC,
bB bb, bC bc,
cC cc

Qu e lenguaje se genera?
Respuesta: L(G) = w = a
n
b
n
c
n
[ n)0.
Ejemplo 3.2:
Sea G = (N, T, P, S) donde:
N = S, A
T = a, b
P = S A, A aAb, A ab
Qu e lenguaje genera?
Respuesta: L(G) = w = a
n
b
n
[ n)0
Ejemplo 3.3:
Sea G = (N, T, P, S) donde:
N = E
T = id, +, , (, )
P = S E E E +E
E E E E (E)
E id
.
72 Gram aticas y lenguajes formales
Respuesta: Esta gram atica genera expresiones aritm eticas que combinan suma y multipli-
caci on, con anidamiento de par entesis.
Ejemplo 3.4:
Sea G = (N, T, P, S) donde:
N = A, B
T = 0, 1
P = S 1B, S 1, B 0A,
A 1B, A 1

Qu e lenguaje genera G?
Respuesta: 1(01)

= (10)

1
Ejemplo 3.5:
Sea G = (N, T, P, S) donde
A, B, C
T = 0, 1
P = S 1A
A 1B
B 1C
C 0C
C 1C
Qu e lenguaje genera G?
Respuesta: L(G) =
(A partir de ahora, al denir una gram atica unicamente daremos el conjunto de produc-
ciones, ya que el resto de la gram atica se inere de las producciones).
Ejemplo 3.6:
S , S aA,
A bB, B aA,
A b, B a
Daremos algunas derivaciones para tratar de ver qu e tipo de cadenas se generan con
esta gram atica:
S =aA =abB =aba
S =aA =abB =abaA =abab
S =aA =abB =abaA =ababB =ababa
3.3 Gram aticas formales 73
De lo anterior podemos inferir que el conjunto de cadenas que se genera con esta
gram atica es: +ab(ab)

( +a).
Ejemplo 3.7:
Dar una Gram atica que genere par entesis bien emparejados.
Respuesta:
S P, P ID,
P IPD, I (,
I IDI, D ),
D DID
Ejemplo 3.8:
Dar una gram atica que genere enteros de tama no arbitrario.
Respuesta:
S D, D DN, D N,
N 0, N 1, N 2,
N 3, N 4, N 5,
N 6, N 7, N 8,
N 9
3.3.1. Clasicaci on de gram aticas
Si restringimos el tipo de producciones que permitimos en una gram atica, podemos
dar una clasicaci on de gram aticas en 4 tipos. A esta clasicaci on se le conoce como cla-
sicaci on de Chomsky y parte a las gram aticas en 4 tipos: Tipo 0 o Generales; Tipo 1 o
dependientes del contexto; Tipo 2 o libres del contexto y Tipo 3 o Regulares. Adem as,
tenemos que cada uno de estos tipos contiene a las gram aticas de los tipos superiores.
Por lo pronto no aseveraremos que cada una de estas contenciones es propia, esto es, que
en efecto estamos hablando de conjuntos distintos. Eso se probar a m as adelante. Daremos
por ahora una breve descripci on de cada uno de estos conjuntos.
Gram aticas no-restringidas (tipo 0)
Este tipo de gram aticas no impone ninguna restricci on a la forma de las producciones,
que se presentan as:
A con , y posiblemente .
74 Gram aticas y lenguajes formales
El hecho de que pueda ser hace que en un paso de la derivaci on nuestra forma
sentencial pueda decrecer, por lo que a este tipo de gram aticas se les denomina gram aticas
contrables.
Si una gram atica permite en sus producciones al menos una que sea de este tipo, eso la
coloca inmediatamente en el Tipo 0, y por supuesto, fuera de cualquiera de los otros tres
tipos. S olo las gram aticas Tipo 0 son contrables.
Gram aticas tipo 1 o dependientes del contexto
En este tipo de gram aticas todas las producciones son de la forma
A con ,=
y se permite tambi en la producci on S donde S es el smbolo inicial.
Una producci on de la forma tal que [ [[ [ se dice que es no contrable.
Se exige que, excepto por la posible producci on S , todas las producciones de una
gram atica Tipo-1 sean no contrables [A[ [[ .
Gram aticas tipo 2 o libres del contexto
En estas gram aticas todas las producciones son de la forma
A , (N T)
+
y A N S
excepto por la posible producci on S .
Gram aticas regulares o tipo 3
Las producciones de estas gram aticas se caracterizan por tener del lado derecho a lo
m as 2 smbolos, uno terminal y otro no terminal.
Si la producci on es de la forma
A aB o A a con AyB N S, a T
se trata de una producci on lineal a la derecha, y si es de la forma
A Ba o A a
se trata de una producci on lineal a la izquierda.
Una gram atica lineal a la derecha contiene unicamente producciones lineales a la de-
recha y una gram atica lineal a la izquierda contiene unicamente producciones lineales a la
izquierda.
3.3 Gram aticas formales 75
En la tabla 3.1 damos un cuadro resumen de los distintos tipos de gram aticas formales
y en la gura 3.2 un diagrama de la relaci on entre estos conjuntos.
Tabla 3.1 Clasicaci on de gram aticas seg un sus producciones
Tipo Forma de las producciones Anotaciones
0 A Generales Contrables
1 A con ,= Dependientes
S , [A[ [[ del contexto
2 A con ,= Libres del
S contexto
3 A aB Lineales a NO
A a la derecha
S Regulares
A Ba Lineales a Contrables
A a la izquierda
S
Figura 3.2 Contenci on entre los tipos de gram aticas
Tipo 3 Tipo 2 Tipo 1
Tipo 0
Heredando o reejando la jerarqua de las gram aticas formales, los lenguajes tambi en
se clasican en Tipo 0, 1, 2 o 3, dependiendo de si pueden ser generados por una gram atica
Tipo 0, 1, 2 o 3 respectivamente. Nos podemos encontrar con m as de una gram atica que
76 Gram aticas y lenguajes formales
genera el mismo lenguaje. En este caso decimos que el lenguaje es del mismo tipo que la
gram atica m as restringida (en cuanto a tipo) que lo genera.
Pedir que la gram atica tenga un conjunto nito de reglas es una restricci on bastante
m as seria de lo que parece. Si dado un alfabeto V , y si un lenguaje L es un subconjunto
de V

, el n umero de lenguajes sobre V es el conjunto potencia de V

(V

) (de tama no
2
|V

|
), que no es numerable (pues es el n umero de subconjuntos de un conjunto innito). En
cambio, el n umero de representaciones nitas de lenguajes es, como veremos m as adelante,
en el mejor de los casos un conjunto numerable innito. Esto quiere decir que hay m as
lenguajes que representaciones nitas, por lo que habr a un n umero grande de lenguajes
que no podamos describir nitamente. A lo mejor estos lenguajes son tan poco o nada
estructurados y no nos interesan. Pero, qu e tal si los lenguajes naturales son de este tipo?
3.4.

Arboles de derivaci on
Recordemos brevemente que una derivaci on es una sucesi on de formas sentenciales
donde la forma w
i
se obtiene a partir de la forma sentencial w
i1
mediante la aplicaci on de
alguna de las producciones de la gram atica.
Otra forma bastante adecuada de representar una derivaci on es mediante un arbol de
derivaci on como el que usamos para denotar la derivaci on de una oraci on en el idioma
espa nol. Un arbol es una gr aca dirigida (digr aca) que cumple con ser acclica, y esto
ultimo signica que no hay forma de, siguiendo los arcos de la gr aca, volver a visitar un
nodo ya visitado antes.
En un arbol tenemos, adem as, un nodo distinguido, desde el cual hay un camino unico
a cualquier otro nodo de la gr aca. A este nodo se le llama la raz del arbol. Decimos que
un nodo i es descendiente de un nodo j si existe una sucesi on de arcos que llevan del nodo
j al nodo i. Es descendiente directo o hijo si hay un arco que va del nodo j al nodo i. La
raz no es descendiente de ning un otro nodo y las hojas del arbol no tienen descendientes.
En un arbol, cada nodo es descendiente de s mismo y de a lo m as otro nodo (en el caso de
la raz no es descendiente de ning un otro nodo). A los nodos que no son ni raz ni hojas se
les denomina nodos intermedios.
Un arbol de derivaci on cumple con las siguientes propiedades:
a. Cada uno de los nodos est a etiquetado con alg un smbolo del conjunto denotado por
N T S .
b. La raz del arbol est a etiquetada con S, el smbolo inicial.
c. Si un nodo intermedio est a etiquetado con A, entonces A es un smbolo no-terminal.
d. Si un nodo intermedio est a etiquetado con A, y sus descendientes directos est an eti-
quetados de izquierda a derecha con X
1
, X
2
, . . . , X
k
, entonces A X
1
X
2
. . . X
k
debe ser una producci on en la gram atica.
3.4

Arboles de derivaci on 77
e. Si un nodo tiene la etiqueta , entonces ese nodo es una hoja y es el unico hijo de su
padre.
Ejemplo 3.9:
En la gura 3.3 se muestra una gr aca de la derivaci on que est a a la izquierda del arbol.
Figura 3.3

Arbol de derivaci on
S
a
A
S
a
b A
b
a
S
a
=
S
=
aAS
=
aSbAS
=
aabAS
=
aabbaS
aabbaa
Del arbol podemos concluir lo siguiente:
N S, A
T a, b
P S aAS, S a,
A SbA, A ba

Esto no quiere decir que las producciones arriba citadas sean todas las producciones de
G. Lo mismo se aplica a N y T. Lo que si podemos asegurar es que tanto N y T como
P contienen al menos a esos smbolos no-terminales, smbolos terminales y producciones,
respectivamente.
Hemos hablado de arboles y gram aticas demasiado libremente. En realidad, los arboles
resultan utiles cuando hablamos de gram aticas tipo 2 o Tipo 3 exclusivamente, pues es
en estos dos casos cuando se puede tomar un nodo del arbol etiquetado con un smbolo
no-terminal e independientemente de cu al(es) nodo(s) est a(n) a su izquierda o derecha,
aplicarle alguna producci on de la gram atica. En el caso de las gram aticas Tipo 0 o Tipo 1
nos veramos en la necesidad de gr acas como la que se ilustra en la gura 3.4 para una
producci on del tipo-1, que ya no corresponde a la gr aca de un arbol. En general usaremos
78 Gram aticas y lenguajes formales
arboles para ilustrar y, cuando sea conveniente, utilizar resultados de teora de gr acas para
demostrar proposiciones en lenguajes formales.
Figura 3.4 Gr acas para derivaciones en lenguajes tipo 1 o 0
AB BA
A B
B A
3.4.1. Ambig uedad
Introdujimos el concepto de arbol de derivaci on para poder formalizar el concepto de
ambig uedad en un lenguaje. Consideremos, por ejemplo, la gram atica siguiente:
G: S A, A AA, A ab
Obs ervese los dos arboles de derivaci on posibles para la cadena ababab en la
gura 3.5.
Figura 3.5 Dos arboles de derivaci on para la cadena ababab
S
A
A
A
a
b
A
a
b
A
a
b
S
A
A
a
b
A
A
a
b
A
a
b
Como se puede ver tenemos dos arboles de derivaci on que tienen como resultado a la
misma cadena. N otese que en los arboles de derivaci on no se reeja en lo absoluto el orden
3.4

Arboles de derivaci on 79
en el que se aplicaron las producciones, sino unicamente la forma en que cada constituyente
se fue reemplazando o partiendo. Dado que tenemos dos arboles distintos para una misma
cadena, concluimos que la gram atica G es ambigua. Pero surge la pregunta:el lugar en el
arbol en el que se aplic o una producci on es relevante para la forma del arbol? Para evitar
confusiones debidas al orden en que se destapan las no-terminales de una forma senten-
cial, y poder hablar de ambig uedad en derivaciones sin necesidad de tener presente el arbol,
vamos a denir un orden, de izquierda a derecha, donde forzamos a aplicar producciones
siempre al primer smbolo no-terminal m as a la izquierda de la forma sentencial.
Denici on 3.8 (DERIVACI

ON POR LA IZQUIERDA) Una derivaci on


w
0
=w
1
=w
2
= . . . =w
k
es una derivaci on por la izquierda si y s olo si la no-terminal m as a la izquierda de cada w
i
es reemplazada para obtener w
i+1
, esto es, para toda 0 i n, w
i
= A, w
i+1
= z
con A N, T

, (N T)

, y A z es una producci on de G.
Eliminado el problema del orden en la aplicaci on de producciones, pasamos a denir en
estos t erminos lo que es una gram atica ambigua.
Denici on 3.9 Una gram atica libre del contexto es ambigua si y s olo si genera alguna
frase con dos o m as derivaciones por la izquierda distintas.
Hay dos formas en las que puede aparecer la ambig uedad en una gram atica libre del con-
texto:
1. Alguna frase tiene dos arboles de derivaci on que son estructuralmente distintos.
2. Alguna frase tiene dos arboles de derivaci on estructuralmente similares pero con
distintas etiquetas en sus nodos interiores.
A continuaci on ilustramos estos dos casos.
Ejemplo 3.10:
Sea G : S A, A A0A, A 1
Veamos en la gura 3.6 los dos arboles de derivaci on, estructuralmente distintos, que
corresponden a derivaciones de la cadena 10101.
A continuaci on ilustraremos el caso de la derivaci on de una cadena con arboles de
estructura similar pero con etiquetas en los nodos interiores distintas (por supuesto son
derivaciones bien formadas de una misma gram atica).
Ejemplo 3.11:
Sea G: S A, A B0, A A0,
B B0, A 1, B 1
Veamos en la gura 3.7 los arboles correspondientes a derivaciones de la cadena 100 .
80 Gram aticas y lenguajes formales
Figura 3.6 Derivaciones distintas para 10101
S
A
A
A
1
0 A
1
0 A
1
S
A
A
1
0 A
A
1
0 A
1
Figura 3.7 Derivaciones distintas para 100
S
A
B
B
1
0
0
S
A
A
A
1
0
0
Dado que cada forma sentencial puede contener unicamente un solo smbolo no-terminal,
una gram atica regular es ambigua solamente si alguna cadena tiene arboles de derivaci on
3.4

Arboles de derivaci on 81
con etiquetas distintas en sus nodos interiores. M as adelante veremos c omo remover la
ambig uedad de gram aticas Regulares.
El concepto de ambig uedad es importante en el an alisis de lenguajes pues el an alisis de
una frase con derivaciones ambiguas puede llevar a una asignaci on inv alida en el signica-
do de una oraci on. Por ejemplo, en lenguajes de programaci on, la frase algebraica
a b +c
presenta un problema de interpretaci on por un compilador si se utiliza una gram atica di-
se nada con poco cuidado. Los dos arboles en la gura 3.8 son v alidos para interpretar
la precedencia (orden en que se eval uan las operaciones). El signicado generalizado de
(a b) + c corresponde al del arbol de la izquierda, pero de acuerdo a la gram atica da-
da, el arbol de la derecha corresponde a una derivaci on v alida. Dada la importancia del
tema, volveremos a ambig uedad cuando veamos m as detenidamente gram aticas libres del
contexto.
Ejemplo 3.12:
Sea G: A ABA, A a, A b,
A c, B +, B
Figura 3.8 Derivaciones distintas para a b + c
S
A
A
a
B

A
b
B
+
A
c
S
A
a
B

A
A
b
B
+
A
c
Pasaremos a ver ahora el tipo m as sencillo de gram aticas, las gram aticas tipo 3.
Aut omatas nitos y
lenguajes tipo 3
4
Establecemos la equivalencia entre los lenguajes aceptados por aut omatas -
nitos y los generados por gram aticas regulares. Esta equivalencia se demues-
tra con la construcci on del aut omata nito que acepte al lenguaje generado
por una gram atica regular y viceversa. Para estas construcciones debemos
denir otros tipos de aut omatas, aquellos que tienen transiciones con la pa-
labra vaca, y establecer su equivalencia con los aut omatas nitos. Una vez
hecho esto se demuestran las propiedades de cerradura de los lenguajes regu-
lares/aut omatas nitos, as como el lema del bombeo que caracteriza a esta
clase de lenguajes, para nalizar con los problemas de decidibilidad corres-
pondientes.
4.1. Introducci on
Recordemos primero la denici on de un Lenguaje tipo 3 o regular, jando nuestra aten-
ci on principalmente en la denici on de gram aticas lineales a la derecha:
Denici on 4.1 Una gram atica es tipo 3 o regular si todas sus producciones son de la
forma A aB, A a o bien S , con S el smbolo inicial, A, B N y a T.
Si la producci on S est a en la gram atica, S no aparece del lado derecho de ninguna
producci on
1
.
84 Aut omatas nitos y lenguajes tipo 3
Teorema 4.1 Sea G = (N, T, P, S) una gram atica tipo 3, y denotemos por L(G) al len-
guaje generado por esta gram atica. Entonces existe un aut omata nito M = (Q, , , q
0
, F)
que acepta a un lenguaje denotado por T(M) y tal que L(G) = T(M).
Demostraci on:
La demostraci on es constructiva y por lo tanto consiste de dos partes. Primero cons-
truiremos el aut omata a partir de la gram atica, y posteriormente demostraremos que el
aut omata as construido acepta al mismo lenguaje que genera G.
a. Construcci on.
Denamos M un aut omata nito no-determinista, construido de la siguiente manera:
= T pues queremos manejar el mismo lenguaje
Q tendr a un estado por cada smbolo en N S, m as un nuevo
estado Z, tal que el smbolo Z / N S y que nos servir a para
estado nal.
Q = A N S Z
q
0
estar a representada por el smbolo inicial de G.
q
0
= S
la denimos de la siguiente manera:

De las producciones de la forma A aB denimos (A, a) B entre las


transiciones de M.

De las producciones de la forma A a denimos (A, a) Z.

Adem as, para el nuevo smbolo Z, se agregan, para cada smbolo a V las si-
guientes transiciones: (Z, a) = .

es un estado pozo, que no acepta, y que tiene sus transiciones denidas de la


siguiente manera: (, a) = , a

F =
_

_
q
0
, Z Si S P
Z Si S / P
b. Por demostrar: T(M) = L(G).
L(G) T(M): Demostraremos primero que L(G) T(M), o sea
x L(G) = x T(M).
Haremos la demostraci on por inducci on en [x[.
1
Esta restricci on hace innecesario el exigir que S no sea un smbolo terminal o no-terminal.
4.1 Introducci on 85
Base: Si [ x [= 0, i.e. x = .
Si L(G), entonces, la producci on S P, por lo que, por c omo se cons-
truy o M, q
0
F, de donde T(M).
Inducci on: Si [ x [ 1.
M, al reconocer una cadena x, simula una derivaci on de x G. Sea x = a
0
a
1
. . . a
k
una
cadena en L(G), k 1. Entonces
S = a
0
A
1
= . . . = a
0
a
1
. . . a
k1
A
k
= a
0
a
1
. . . a
k1
a
k
para alguna sucesi on de variables A
1
, A
2
, . . . A
k
. De la denici on de , podemos ver que
(S, a
0
) A
1
, que (A
1
, a
1
) A
2
, etc., y que (A
k
, a
k
) Z. De donde x T(M), ya
que (S, x) Z y Z F.
T(M) L(G): Similarmente, si x T(M), con [ x [ 1, existe una sucesi on de estados
S, A
1
, A
2
, . . . , A
k
, Z tales que (S, a
0
) A
1
, (A
1
, a
1
) A
2
, y as sucesivamente. De
donde P contiene reglas
S a
0
A
1
,
A
1
a
1
A
2
,
. . . y
A
k
a
k
Por lo tanto,
S a
0
A
1
a
0
a
1
A
2
. . . a
0
a
1
. . . a
k1
A
k
a
0
a
1
. . . a
k
es una derivaci on en G y x L(G). Si [ x [= 0, T(M), entonces quiere decir que
q
0
F, de donde S es una producci on en P y L(G).
Teorema 4.2 Dado un aut omata nito M, existe una gram atica tipo 3, G, tal que
L(G) = T(M)
Demostraci on:
Sin perder generalidad, sea M = (Q, , , q
0
, F) un aut omata nito determinista. De-
nimos una gram atica tipo 3, G = (Q, , P, q
0
) de la siguiente manera:
1. B aC P si (B, a) = C
2. B a P si (B, a) = C y C F
La prueba de que q
0

= w si y s olo si (q
0
, w) F es totalmente similar a la prueba
del teorema anterior y se deja al lector. El unico punto no es la presencia de T(M).
86 Aut omatas nitos y lenguajes tipo 3
Si q
0
F, entonces T(M). En ese caso L(G) = T(M) . Para incluir a
en L(G) bastara con agregar la producci on q
0
a P. Pero si hacemos esto, y M
regresaba a q
0
en alguna transici on, tendremos una derivaci on tal que una de sus formas
sentenciales, distinta de la primera, contenga a S, y en el siguiente paso, se sustituya por
, haciendo que el n umero de smbolos en la forma sentencial izquierda sea mayor que la
forma sentencial resultante, infringiendo la regla de no-contractibilidad de las gram aticas
tipo 3. Debemos entonces garantizar que si la producci on q
0
P, q
0
no puede ser
utilizada en ning un otro momento, no aparece del lado derecho de ninguna producci on.
Nos quedara por demostrar que, dada una gram atica G tipo 3, podemos obtener a partir
de ella otra gram atica G

tambi en tipo 3 tal que L(G

) = L(G). Con este resultado,


podemos decir que podemos construir una nueva gram atica tipo 3, tal que
L(G

) = L(G) = T(M)
(en realidad demostraremos que esto es cierto para gram aticas dependientes del contexto,
no s olo tipo 3).
Si q
0
/ F, entonces / T(M), de donde L(G) = T(M).
Lema 4.3 Si G = (N, T, P, S) es una gram atica dependiente del contexto, entonces existe
otra gram atica G

dependiente del contexto que genera el mismo lenguaje que G, para la


cual el smbolo inicial no aparece del lado derecho de ninguna producci on de G

. Tambi en,
si G es una gram atica libre del contexto, G

es libre del contexto y si G es una gram atica


regular, G

tambi en lo es.
Demostraci on:
Sea S

un smbolo que no est a en N o T. Sea G

= (N S, T, P

, S

). P

consiste de
todas las producciones de P, m as todas las producciones de la forma S

donde
S es una producci on de P. N otese que S

no es un smbolo de N o T, por
lo que no puede aparecer del lado derecho de ninguna producci on de P y por lo tanto
tampoco de P

(los lados derechos de P

son los mismos que los de P). Aseguramos


que L(G)=L(G

). Pues supongamos que S



=
G
w. Sea S la primera producci on
usada. Entonces podemos escribir S

=

=
G
w.
Por construcci on de P

, S

, de donde S


=
G


Tambi en, como P

contiene todas las producciones de P,



=
G

w
S


=
G

w y podemos concluir L(G) L(G

).
Si ahora probamos que L(G

) L(G), habremos probado que L(G) =L(G

). Suponga-
mos que S


=
G

w. La primera producci on usada es S

, para alguna . Entonces,


S es una producci on en P, de donde S =
G
. Ahora,

=
G

w, pero no puede
contener al smbolo S

. Como S

no aparece del lado derecho de ninguna producci on de


4.1 Introducci on 87
P

, ninguna forma sentencial en la derivaci on



=
G

w puede involucrar a S

. De esto la
derivaci on es tambi en una derivaci on en la gram atica G; esto es,

=
G
w. Concluimos
que
S

=
G
w y L(G

) = L(G)
Es f acil ver que se mantiene el tipo de la gram atica de G, pues del lado izquierdo s olo
agregamos producciones con un solo smbolo, mientras que el lado derecho de las pro-
ducciones se mantuvo igual.
Teorema 4.4 Si L es un lenguaje dependiente del contexto, libre del contexto o regular;
entonces L y L son dependientes del contexto, libres del contexto o regulares,
respectivamente.
Demostraci on:
Dada una gram atica dependiente del contexto, por el lema anterior podemos encontrar
una gram atica G

tambi en dependiente del contexto, cuyo smbolo inicial no aparezca


del lado derecho de ninguna producci on. Sea G = (N, T, P, S) una gram atica cuyo
smbolo inicial no aparece del lado derecho de ninguna producci on y denamos G

=
(N, T, P

, S) donde P

es P m as la producci on S . N otese que S no aparece a


la derecha de ninguna producci on de P

. De donde la producci on S no puede


ser usada m as que como la primera y unica producci on en una derivaci on. Cualquier
derivaci on en G

que no involucra a la producci on S es una derivaci on en G, de


donde L(G

) = L(G) .
Si la gram atica G = (N, T, P, S) (dependiente del contexto) genera a un lenguaje L
y L, entonces P debe contener la producci on S . Tambi en sabemos que
S no aparece del lado derecho de ninguna producci on en P. Formemos la gram atica
G = (N, T, P

, S) donde P

es P S . Como S no puede ser usada en la


derivaci on de ninguna cadena m as que , L(G

) = L(G) .
Es obvio, tambi en ac a, que el tipo de la gram atica se mantiene a trav es de las construc-
ciones.
De las demostraciones de los teoremas que permiten la construcci on de aut omatas nitos a
partir de gram aticas regulares y viceversa, podemos aseverar:
Corolario 4.5 Las sucesiones de estados en M, durante el reconocimiento de una cadena
w desde q
0
un estado inicial hasta q

F est an en una correspondencia uno a uno con las


derivaciones de cadenas terminales desde S en G.
Ejemplo 4.1:
Consideremos la siguiente gram atica regular: G = (S, B, 0, 1, P, S), donde
P = S 0B, B 0B, B 1S, B 0.
88 Aut omatas nitos y lenguajes tipo 3
Podemos construir un aut omata nito no-determinista
M = (S, B, Z, , 0, 1, , S, Z)
donde est a construida como se indica en la tabla 4.1.
Tabla 4.1 Denici on de para un AFN
1. (S, 0) = B pues S 0B es la unica producci on con S en
el lado izquierdo y 0 el primer smbolo del lado
derecho.
2. (S, 1) = pues no hay ninguna producci on que tenga a S
del lado izquierdo y a 1 del lado derecho.
3. (B, 0) = B, Z pues B 0B y B 0 est an en P.
4. (B, 1) = S pues B 1S P.
5. (Z, 0) = (Z, 1) =
Por los teoremas anteriores podemos asegurar que L(G) = T(M).
Ahora construiremos un aut omata nito determinista a partir del aut omata nito no-de-
terminista que acabamos de obtener, y as poder regresar a construir la gram atica.
Sea M

= (Q, 0, 1,

, [S], F) donde
Q = , [S], [Z], [B], [Z, B], [S, Z], [B, S], [Z, B, S]
F = [Z], [S, Z], [Z, B], [Z, B, S]

denida como se muestra en la tabla 4.2.


Usando los resultados que tenemos para minimizaci on del aut omata que acabamos de
construir, podemos quitar a los estados [Z, S], [B, S], [Z] y [Z, B, S] pues ninguno de es-
tos estados puede ser alcanzado desde el estado inicial. Asimismo se pueden quitar estos
estados de F, qued andonos ya un aut omata con cuatro estados (contando al estado ).
Construyamos ahora una gram atica G

a partir del aut omata que acabamos de dar, pero


primero reetiquetemos los estados para que se facilite la notaci on ver tabla 4.3.
4.1 Introducci on 89
Tabla 4.2 Construcci on de

para el AFN
Q
T
F
0 1
[S] [B] 0
[Z] 1
[B] [Z, B] [S] 0
[S, Z] [B] 1
[Z, B] [Z, B] [S] 1
[B, S] [Z, B] [S] 1
[Z, B, S] [Z, B] [S] 1
0
Tabla 4.3 Reetiquetaci on de los estados para la gram atica
Q T
F
antrr actual 0 1
[S] S B 0
[B] B C S 0
[Z, B] C C S 1
0
Construyamos ahora las producciones de la gram atica G

partir de la tabla de M

.
Funci on de Transici on Producciones que origina
(S, 0) = B S 0B
(B, 0) = C B 0C
B 0 por ser C estado nal
(B, 1) = S B 1S
(C, 0) = C C 0C
C 0 por ser C estado nal
(C, 1) = S C 1S
90 Aut omatas nitos y lenguajes tipo 3
Como se puede observar, se omitieron las producciones que contienen al smbolo
pues estas producciones nunca producen cadenas del lenguaje. Tambi en es obvio que la
gram atica que se acaba de construir es m as complicada que la original, pero se puede sim-
plicar de tal manera que su equivalencia se vea claramente. Por qu e qued o m as extensa
esta gram atica?
4.2. Propiedades de los lenguajes regulares
Dado que la clase de lenguajes generados por gram aticas tipo 3 es equivalente a la clase
de lenguajes aceptados por aut omatas nitos, usaremos ambas formulaciones al establecer
las propiedades de los lenguajes tipo 3. Primero demostraremos que los lenguajes regu-
lares forman un

Algebra Booleana, esto es, que son cerrados bajo uni on, complemento e
intersecci on. Decimos que un conjunto es cerrado bajo una operaci on si al operar con los
elementos del conjunto y la operaci on dada, el resultado es nuevamente un elemento del
conjunto.
Lema 4.6 La clase de lenguajes tipo 3 es cerrada bajo uni on.
Demostraci on:
Se pueden dar dos pruebas, a trav es de aut omatas nitos o a trav es de gram aticas regu-
lares. Se sugiere intentar la prueba con aut omatas no-deterministas. Ac a demostraremos
el lema a trav es de gram aticas regulares.
Sean L
1
y L
2
lenguajes tipo 3 generados por las gram aticas G
1
= (N
1
, T
1
, P
1
, S
1
) y
G
2
= (N
2
, T
2
, P
2
, S
2
) respectivamente, ambas tipo 3. Si es necesario rebautizamos los
smbolos y podemos suponer que N
1
N
2
= (esto es, que no contienen smbolos en
com un), y que un smbolo nuevo, S, no est a en ninguna de las dos. Podemos construir
una nueva gram atica
G
3
= (N
1
N
2
S
1
, S
2
, T
1
T
2
, P
3
, S)
donde P
3
consiste de las producciones de P
1
y P
2
, excepto por las posibles producciones
S
1
y S
2
, m as todas las producciones de la forma S tal que o bien
S
1
estaba en P
1
o S
2
estaba en P
2
. Debera quedar claro que
S =
G
3
S
1
=
G
1
o bien S
2
=
G
2

En el primer caso, solamente cadenas en el alfabeto (N


1
T
1
)

pueden ser derivadas


de . En el segundo caso, solamente cadenas en (N
2
T
2
)

pueden ser derivadas de .


Formalmente,
Si S
1
=
G
1
entonces =
G
3
w

=
G
1
w;
y si S
2
=
G
2
entonces

=
G
3
w

=
G
2
w.
4.2 Propiedades de los lenguajes regulares 91
Poniendo todo lo anterior junto, S

=
G
3
w si y s olo si o bien S
1

=
G
1
w o S
2

=
G
2
w.
L(G
3
) = L(G
1
) L(G
2
).
Lema 4.7 La clase de conjuntos aceptados por aut omatas nitos (generados por gram ati-
cas tipo 3) es cerrada bajo complemento.
Demostraci on:
Sea M
1
= (Q, ,
1
, q
0
, F) un aut omata nito determinista que acepta a un cierto con-
junto S
1
. Sea V
2
un alfabeto nito tal que contiene V
2
y sea d un nuevo estado que
no est a ya presente en Q. Construimos M
2
que acepte V

2
L(M
1
).
Sea M
2
= (Q d, V
2
,
2
, q
2
, (QF) d), donde

2
(q, a) =
1
(q, a) para cada q Q y a

2
(q, a) = d para cada q Q y a V
2

2
(d, a) = d a V
2
Intuitivamente, M
2
se obtiene extendiendo el alfabeto de entrada de M
1
a V
2
, agregan-
do un estado pozo d y posteriormente intercambiando los estados nales y no nales.
Claramente M
2
acepta V

.
Lema 4.8 La clase de conjuntos aceptados por un aut omata nito (generados por una
gram atica tipo 3) es cerrada bajo intersecci on.
Demostraci on:
La demostraci on es inmediata del hecho de que
L
1
L
2
= L
1
L
2
Corolario 4.9 La clase de conjuntos aceptados por un aut omata nito (generados por
una gram atica tipo 3) forman un algebra booleana.
Daremos a continuaci on algunos teoremas m as que redondear an la caracterizaci on de
lenguajes tipo 3.
Teorema 4.10 Todos los conjuntos nitos pueden ser aceptados por aut omatas nitos
(generados por gram aticas tipo 3).
Demostraci on:
Consideremos al conjunto que contenga unicamente la cadena
x = a
1
a
2
. . . a
n
92 Aut omatas nitos y lenguajes tipo 3
Podemos dise nar una gram atica tipo 3 que genere esta frase (y unicamente esta frase),
con n 1 smbolos no terminales, el smbolo inicial y con las siguientes producciones:
S a
1
A
1
A
1
a
2
A
2
.
.
.
A
n1
a
n
De tal forma que la derivaci on de x sera
S = a
1
A
1
= a
1
a
2
A
2
= . . . = a
1
a
2
. . . a
n1
A
n1
= a
1
a
2
. . . a
n
G genera a x.
Si consideramos a x = , entonces la gram atica cuya unica producci on es
S
es la que genera a x .
El conjunto vaco es generado por una gram atica con, por ejemplo, la siguiente produc-
ci on:
S 0A
(con esta gram atica no se logran generar cadenas terminales).
Como los lenguajes tipo 3 son cerrados bajo uni on nita, un conjunto con un n umero
nito de cadenas es la uni on nita de cada conjunto de un elemento, por lo que, por la
cerradura de los lenguajes tipo 3 bajo uni on, podemos construir al aut omata que acepte
(gram atica que genere) conjuntos nitos.
Recordemos la denici on de concatenaci on de dos lenguajes U y V
UV = x [ x = uv, u U y v V
Esto es, cada cadena en el conjunto UV est a formada concatenando una cadena de U con
una cadena de V . Como ejemplo, si U = 01, 11 y V = 1, 0, 101, entonces
UV = 011, 010, 01101, 111, 110, 11101
Teorema 4.11 La clase de conjuntos aceptados por un aut omata nito (generados por
gram aticas tipo 3) es cerrada bajo concatenaci on.
4.2 Propiedades de los lenguajes regulares 93
Demostraci on:
Procederemos a demostrar este resultado a trav es de gram aticas tipo 3. Se sugiere, como
ejercicio, formalizar la demostraci on para aut omatas nitos.
Sean G
1
= (N
1
, T
1
, P
1
, S
1
) y G
2
= (N
2
, T
2
, P
2
, S
2
) y construyamos
G = (N, T, P, S) de la siguiente manera:
Podemos suponer que N
1
N
2
= , por lo que N = N
1
N
2
. Tambi en T = T
1
T
2
y S = S
1
. Para construir P procedemos de la siguiente manera, suponiendo que ,
L
1
L
2
. Posteriormente haremos las adecuaciones necesarias, en caso de que esto no
fuera cierto.
P contiene todas las producciones de la forma
A aB con A, B N y a T
Para toda producci on en P
1
de la forma
A a
se incorpora en P la producci on
A aS
2
Adecuaciones para la palabra vaca:

Si la producci on S
2
est a en P
2
, esa producci on no aparece en P, y en cambio
se incorporan a P todas las producciones de P
1
que tengan la forma A a.

Si la producci on S
1
est a en P
1
, esa producci on no se incorpora a P, pero en
cambio se incorporan producciones de la forma S
1
por cada producci on de
la forma S
2
que hubiese en P
2
.

La producci on S se incorpora a P S
1
P
1
y S
2
P
2
.
P.D. L(G) = L(G
1
)L(G
2
).
Si x = y x L(G) = S
1
y S
2
.
Sea x = uv con u = a
1
a
2
. . . a
k
y v = b
1
b
2
. . . b
m
S

= uv S

= uS
2

= uv S
1

= u y S
2

= v
Recordemos brevemente la denici on de cerradura de Kleene para un lenguaje L, de-
notada por L

,
L

= L L
2
L
3
. . . . . .
94 Aut omatas nitos y lenguajes tipo 3
Teorema 4.12 La clase de lenguajes aceptados por un aut omata nito (generados por
una gram atica tipo 3) es cerrada bajo cerradura de Kleene.
Demostraci on:
Sea M = (Q, , , q
0
, F) un aut omata nito que acepta a L. Construimos un aut omata
nito no-determinista M

, que se comporta como M hasta que una porci on inicial de


una cadena x lleva a M a un estado nal. En ese momento, M

adivina si este punto


corresponde a un punto donde empieza una nueva cadena de L.
Formalmente:
M

= (Q q

0
, ,

, q

0
, F q

0
)
donde q

0
es un nuevo estado, y

est a denida como sigue:

(q

0
, a) = (q
0
, a), q
0
si (q
0
, a) F
(q
0
, a) si (q
0
, a) / F

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


0
si (q, a) F
(q, a) si (q, a) / F
para todo estado q Q y para toda a .
El prop osito del nuevo estado inicial q

0
es el de que M

acepte a la cadena vaca. Si


q
0
, F, no podemos simplemente hacer de q
0
un estado nal, pues M puede regresar a
q
0
para algunas cadenas de entrada. Damos a continuaci on la demostraci on formal de que
el aut omata as construido acepta precisa y unicamente a los elementos de la cerradura
de Kleene.
Supongamos que x L

. Entonces, o bien x = o x = x
1
x
2
. . . x
n
, donde x
k
L para
1 k n. Si x = , claramente M

acepta a la palabra vaca. Ahora x


k
L implica
(q
0
, x
k
) F. De donde

(q

0
, x
k
) y

(q
0
, x
k
) cada una de ellas contiene q
0
y a alg un
estado p (posiblemente p = q
0
) en F. De esto,

(q

0
, x) contiene alg un estado en F, y
x T(M

).
Supongamos ahora que x = a
1
a
2
. . . a
m
T(M

). Entonces existe alguna sucesi on de


estados q

0
, q
j
1
, . . . , q
jm
tales que

(q

0
, a
1
) q
j
1
y

(q
j
i1
, a
i
) q
j
i
para 1 i m, y q
jm
F. Para algunos de estos estados q
jr
en esta lista de transiciones,
tenemos uno de los dos casos siguientes:
q
jr
= q
0
con (q
j
r1
, a
r
) F
o bien
(q
j
r1
, a
r
) = q
0
4.2 Propiedades de los lenguajes regulares 95
En el primer caso, q
0
se encuentra en la transici on porque la transici on original llevaba
a un estado nal. En el segundo caso, la transici on original contiene q
0
. De esto, en
x = a
1
a
2
. . . a
m
se pueden reagrupar las a
i
de tal manera de reescribir x como x
1
x
2
. . . x
k
tal que (q
r
, x
r
) est e en F para 1 r k, (sucede al menos para k = m) implicando
que x
r
L (y por lo tanto, que x L

).
Teorema 4.13 La clase de conjuntos aceptados por aut omatas nitos (generados por
gram aticas tipo 3) es la mnima clase que contiene todos los conjuntos nitos y cerrada
bajo uni on, concatenaci on y cerradura de Kleene.
Demostraci on:
Que la clase de conjuntos aceptados por aut omatas nitos contiene la mnima clase que
contiene todos los conjuntos nitos y cerrada bajo uni on, concatenaci on y cerradura, es
una consecuencia inmediata de los resultados que acabamos de obtener. Nos queda por
demostrar que la mnima clase antes descrita contiene a la clase de conjuntos aceptados
por aut omatas nitos.
Tratemos ahora de describir a la clase de conjuntos aceptados por un AF para poste-
riormente demostrar que pertenecen a la mnima clase antes descrita. Sea L un conjunto
aceptado por alg un aut omata nito,
M = (q
0
, . . . , q
n1
, , , q
0
, F)
Enumeremos a los estados del aut omata, empezando por el estado inicial, de tal manera
que podamos hablar de que un estado es superior a otro si al primero le toc o un n umero
mayor en la numeraci on. Si el aut omata tiene n estados, la numeraci on ira de 0 a n 1.
Denotemos por R
k
ij
al conjunto de cadenas x tales que (q
i
, x) = q
j
, y si (q
i
, y) = q
m
para alguna y que es prejo propio de x y distinto de , entonces m k. Dicho de otro
modo, R
k
i,j
es el conjunto de cadenas que llevan al aut omata nito desde el estado q
i
hasta el estado q
j
sin pasar por ning un estado q
m
, m > k. N otese que por pasar por un
estado queremos decir llegar a el y salir de el. De donde, i o j pueden ser mayores o
iguales que k. Podemos denir a R
k
i,j
recursivamente:
R
k
i,j
= R
k1
i,k
(R
k1
k,k
)

R
k1
k,j
R
k1
i,j
R
0
i,j
= a [ (q
i
, a) = q
j

Informalmente, la denici on de R
k
i,j
signica que las entradas que causan que M vaya
del estado q
i
al estado q
j
sin pasar por ning un estado numerado con un entero mayor que
k est an en alguno de los conjuntos que siguen:
1. En R
k1
i,j
, esto es, desde un principio nunca alcanzan a pisar un estado de la
altura de q
k
.
2. En un conjunto compuesto por:
96 Aut omatas nitos y lenguajes tipo 3
i. una cadena en R
k1
ik
(que lleva a M desde q
i
hasta q
k
por primera vez, sin
pasar por ning un estado con numeraci on mayor a k 1), o bien
ii. seguido de un n umero de cadenas en R
k1
k,k
(que lleva a M desde q
k
de
regreso a q
k
pero sin pasar por estados con numeraci on mayor a k 1)
iii. seguido de una cadena en R
k1
k,j
(que lleva a M desde el estado q
k
hasta el
estado q
j
, sin pasar por ning un estado con numeraci on mayor a k 1).
Podemos demostrar, por inducci on sobre k, que R
k
ij
, 0 k n, est a, para toda i y
j, dentro de la menor clase que contiene a todos los conjuntos nitos y cerrados bajo
uni on, concatenaci on y cerradura (esto es, que se puede expresar en t erminos de uni on,
concatenaci on y cerradura de expresiones regulares).
Base: La hip otesis de inducci on es cierta para k = 0, ya que todos los R
0
i,j
son conjuntos
nitos (consisten de los smbolos del alfabeto para los cu ales est an denidas las transi-
ciones en el aut omata, o sea un n umero nito de cadenas todas ellas de longitud 1).
Inducci on: Por inducci on, si es cierta para toda k n, entonces es cierta para
k = n + 1, pues podemos expresar R
n+1
i,j
en t erminos de uni on, concatenaci on y cerra-
dura de conjuntos varios de la forma R
n
i,j
, cada uno de ellos supuestos en la menor clase
que contiene a los conjuntos nitos y cerrados bajo uni on, concatenaci on y cerradura.
Ahora,
L =
_
q
j
F
R
n
1,j
De donde L est a en la mnima clase que contiene a los conjuntos nitos y cerrados bajo
uni on, concatenaci on y cerradura.
Como resultado del teorema anterior, sabemos ahora que cualquier expresi on compues-
ta por subconjuntos nitos de V

para alg un alfabeto V , y un n umero nito de operadores


, y concatenaci on, con par entesis para determinar el orden de las operaciones, denota
a un conjunto aceptado por un aut omata nito. A un m as, cada conjunto aceptado por un
aut omata nito puede expresarse en esta forma. Esto nos da una buena notaci on para re-
presentar a lenguajes regulares, conocida tambi en como expresiones regulares, notaci on a
la que volveremos m as adelante.
Para concluir con esta secci on, enunciaremos un ultimo teorema que redondea las pro-
piedades de los lenguajes regulares.
Teorema 4.14 Adem as de las propiedades antes citadas, la clase de lenguajes aceptados
por aut omatas nitos (generados por gram aticas tipo 3) son cerrados bajo diferencia y
rev es. Esto es, si L
1
y L
2
son lenguajes tipo 3, entonces
L
1
L
2
y L
R
1
tambi en son lenguajes tipo 3.
4.3 Aut omatas nitos y expresiones regulares 97
Demostraci on:
Se deja como ejercicio.
4.3. Equivalencia entre aut omatas nitos
y expresiones regulares
Recordemos la denici on que dimos para expresiones regulares en el primer captulo
como conjuntos de cadenas que se forman con las operaciones de uni on, concatenaci on
y estrella de Kleene. Tambi en vimos que las expresiones regulares denotan a conjuntos,
aquellos que describen a las cadenas descritas por la expresi on regular.
Procedemos ahora a demostrar que los lenguajes aceptados por aut omatas nitos son
precisamente los lenguajes denotados por expresiones regulares. Esta equivalencia fue la
motivaci on para llamar a los lenguajes aceptados por aut omatas nitos lenguajes regulares.
La demostraci on de que el lenguaje aceptado por un aut omata nito se puede denotar
como una expresi on regular se sigue de la demostraci on de que la clase de lenguajes acepta-
dos por aut omatas nitos es la mnima clase que contiene a los conjuntos nitos y cerrados
bajo uni on, concatenaci on y cerradura, pues lo que se hizo en esa demostraci on fue, pre-
cisamente, denotar a los lenguajes como uni on, concatenaci on y cerradura de conjuntos
nitos.

Unicamente falta observar que
L(M) =
_
q
j
F
R
n
0,j
dado que R
n
0,j
denota a las sucesiones de etiquetas de todos los caminos desde el estado
inicial (q
0
) hasta q
j
F. De esto, T(M) se denota por la expresi on regular
r
n
0,j
1
+r
n
0,j
2
+. . . +r
n
0,j
k
donde F = q
j
1
, q
j
2
, . . . , q
j
k

Teorema 4.15 Sea r una expresi on regular. Entonces existe un aut omata nito no deter-
minista (con transiciones-) que acepta a L(r).
Para demostrar el teorema anterior es necesario primero denir lo que es un aut omata
con transiciones- y posteriormente demostrar que son equivalentes a aquellos aut omatas
que no tienen transiciones-.
Extendemos nuestro modelo de aut omata no-determinista para incluir transiciones ante
la palabra vaca. El diagrama de transici on de un AFN de este tipo se da en la gura 4.1.
Este aut omata acepta al conjunto de cadenas formadas por un n umero arbitrario de ceros
(0) seguidos de un n umero arbitrario de unos (1) seguido de un n umero arbitrario de doses
(2) que se denota como 0

.
98 Aut omatas nitos y lenguajes tipo 3
Figura 4.1 Aut omata con transiciones-
q
0
q
1
q
2
0 1 2

Denici on 4.2 Un aut omata nito no-determinista con transiciones- es un quntuplo
(Q, , , q
0
, F) con todos sus componentes como se han denido hasta ahora, pero , la
funci on de transici on, transforma Q() a

(Q). La intenci on es que (q, a) consista


de todos los estados p tales que hay una transici on de q a p etiquetada con el smbolo a,
donde a es o bien un smbolo en .
Como ejemplo mostramos en la Tabla 4.4 la especicaci on de correspondiente al diagra-
ma anterior.
Tabla 4.4 AF con transiciones-
Q

F
0 1 2
q
0
q
0
q
1
1
q
1
q
1
q
2
1
q
2
q
2
1
Extenderemos ahora la funci on de transici on a una funci on

que transforma (q, w) a
subconjuntos de estados de Q. Esperamos que

(q, w) est e formada por todos los estados
p tales que uno puede ir de q a p a trav es de un camino etiquetado w, incluyendo posi-
blemente arcos etiquetados con . Para construir

es importante calcular el conjunto de
estados alcanzables desde un estado q usando transiciones- unicamente (el AF de hecho
se encuentra en todos ellos simult aneamente, pues puede pasar de uno a otro sin que haya
de por medio la lectura de un smbolo). Esta pregunta es equivalente a la pregunta de cu ales
v ertices se pueden alcanzar desde un v ertice dado (origen) en una gr aca dirigida utilizan-
do unicamente arcos etiquetados con . El v ertice origen es el correspondiente al estado q
0
en el diagrama de transici on, y el aut omata en cuesti on consiste de todas y exclusivamente
las transiciones etiquetadas con . Usamos -cerradura(q) para denotar a todos los v ertices
p tales que existe un camino de q a p con todos los arcos etiquetados con .
4.3 Aut omatas nitos y expresiones regulares 99
Ejemplo 4.2:
En la gura anterior, la -cerradura(q
0
)= q
0
, q
1
, q
2
. Esto es, el camino que consiste de
q
0
unicamente (no hay arcos en la trayectoria), cumple con que lleva de q
0
a q
0
utilizan-
do exclusivamente arcos etiquetados con como la longitud del camino es 0, cumple
con la especicaci on. q
1
tambi en est a en la -cerradura(q
0
) porque el arco q
0
q
1
es una
trayectoria desde q
0
hasta q
1
con todos sus arcos etiquetados con . El camino de q
1
a q
2
muestra que q
1
est a en la -cerradura(q
1
) y el camino q
0
, q
1
, q
2
muestra que q
2
est a en la
-cerradura(q
0
).
Podemos naturalmente permitir que la -cerradura(P) donde P es un conjunto de esta-
dos, est e denida como
-cerradura(P) =
_
pP
-cerradura(p)
Ahora denimos

como sigue:
1.

(q, ) = -cerradura(q)
2. Para w

y a ,

(q, wa) = -cerradura(P), donde


P = p [ para alguna r

(q, w), p (r, a)
Es conveniente extender y

a conjuntos de estados mediante:
3. (R, a) =

qR
(q, a) y
4.

(R, w) =

qR

(q, w)
para conjuntos de estados en R. N otese que en este caso, (q, a) no es necesariamente igual
a

(q, a), ya que

(q, a) incluye a todos los estados alcanzables desde q por caminos etique-
tados con a (incluyendo caminos con arcos etiquetados con ), mientras que (q, a) incluye
unicamente aquellos estados alcanzables desde q con arcos etiquetados a. Similarmente,
(q, ) no es necesariamente igual a

(q, ). Por lo anterior es necesario distinguir entre
y

cuando hablamos de AFN con transiciones- est a denido para un s olo smbolo, y
posiblemente , y no involucra a la -cerradura del estado, mientras que

s involucra a la
-cerradura.
Denici on 4.3 El lenguaje aceptado por M = (Q, , , q
0
, F) se dene como
T(M) = w

[

(q
0
, w) contiene alg un estado en F
Como en el caso del no determinismo, la habilidad del aut omata para realizar transiciones-
no extiende sus capacidades para aceptar algo que no sea un conjunto regular.
100 Aut omatas nitos y lenguajes tipo 3
Teorema 4.16 Si L es aceptado por un AFN E con transiciones-, entonces L es acep-
tado por un AFD D sin transiciones-; y viceversa.
Demostraci on:
Es f acil ver que el caso de un aut omata determinista es un caso especial del no deter-
minista con transiciones-, ya que la -cerradura(q) = q, q Q. De esta manera,
podemos tomar al estado mismo como representante del subconjunto que lo contiene
unicamente a el y simplemente no tendremos nada en la columna correspondiente a las
transiciones-.
Para demostrar el teorema en la otra direcci on hay que trabajar un poco m as.
Sea E = (Q
E
, ,
E
, q
E
, F
E
) un AFE con transiciones-.
Construcci on: Construyamos D = (Q
D
, ,
D
, q
D
, F
D
) donde
Q
D
= (Q
E
), representado cada estado como [q
i
1
, . . . , q
i
k
]

D
(q, a) =
p-cerradura(q)

E
(p, a)
q
D
= [-cerradura(q
E
)]
F
D
= [q
i
1
, . . . , q
i
k
] [ al menos uno de q
i
j
F
E

Correctud: P.D.:

E
(q
E
, w) =
D
(q
D
, w)
Por inducci on en [ w [:
Base: [w[ = 0 as que w = .
w L(E)

E
(q
E
, ) p F
E

p -cerradura(q
E
)
Pero
D
(q
D
, ) = q
D
y q
D
= -cerradura(q
E
) y contiene p F
E
q
D
F
D
y L(D)
Similarmente, si , L(E) quiere decir que la -cerradura(q
E
) no contiene ning un estado
en F
E
; por lo tanto q
D
no ser a estado nal y , L(D).
Inducci on: [ w [> 1. Sea w = xa para alg un smbolo a y x

. Por la hip otesis de


inducci on,

E
(q
E
, x) = P y
D
(q
D
, x) = P
P.D.

E
(P, a) =
D
(P, a)

E
(P, a) = -cerradura(
pP

E
(p, a))
= -cerradura(
pP

E
(-cerradura(p), a))
=
D
(P, a)
4.3 Aut omatas nitos y expresiones regulares 101
Adem as, si

E
(q
E
, w) contiene alg un estado nal en F
E
, por la construcci on de los esta-
dos nales de D es obvio que tambi en
D
(q
D
, w) contiene ese mismo estado; y viceversa:
si
D
(q
D
, w) no es estado nal, es porque no contiene ning un estado nal de F
E
Se deja como ejercicio la construcci on del AFN sin transiciones- del ejemplo anterior.
4.3.1. Construcci on de aut omatas nitos a partir de
expresiones regulares
Volvemos ahora a la construcci on de AFN con transiciones- que reconozcan a las
expresiones regulares. Procederemos a demostrar que para cada expresi on regular se puede
construir un AFN con transiciones- equivalente.
Teorema 4.17 Sea r una expresi on regular. Entonces existe un aut omata nito no deter-
minista que acepta a L(r).
Demostraci on:
Mostramos por inducci on en el n umero de operadores en la expresi on regular r que
existe un AFN M, con un solo estado nal y sin transiciones desde ese estado nal, tal
que T(M) = L(r).
Base: (cero operadores). La expresi on r debe ser , o a para alg un smbolo a .
Los AFN que correspondientes en la gura 4.2, claramente satisfacen la condici on de
reconocer a r.
Figura 4.2 Aut omatas para expresiones regulares sin operadores
q
0
q
f
q
0
q
f
q
0
q
f
empza empza empza
a
r = e r = r = a
Inducci on: (uno o m as operadores). Supongamos que el teorema es cierto para expresio-
nes regulares con menos de i operadores, i > 1. Sea r una expresi on con i operadores.
Hay tres casos, dependiendo de la forma de r:
CASO 1. r = r
1
+ r
2
. Tanto r
1
como r
2
deben tener menos de i operadores. De donde
hay dos aut omatas M
1
= (Q
1
,
1
,
1
, q
1
, q
f
1
) y M
2
= (Q
2
,
2
,
2
, q
2
, q
f
2
) que aceptan
respectivamente a r
1
y r
2
, cada uno de ellos con un unico estado nal, del que no salen
102 Aut omatas nitos y lenguajes tipo 3
transiciones. Construimos un AFN M

= (Q

, q
0
, q
f
) con transiciones-, de la
siguiente manera:
Q

= Q
1
Q
2
q
0
q
f

Agregamos un nuevo estado inicial y un nuevo estado nal.
=
1

2
El alfabeto de entrada es la uni on de ambos alfabetos.

=
1

2

_
(q
0
, ) = q
1
, q
2

(q
f
1
, ) = q
f
,
(q
f
2
, ) = q
f

_
Agregamos transiciones- desde el estado inicial de M

hacia los estados iniciales


de M
1
y M
2
, y desde los estados nales de M
1
y M
2
hacia el nuevo estado nal de
M

. Con esto, seguimos garantizando que el nuevo aut omata tiene un unico estado
inicial y un unico estado nal, del que no salen transiciones.
La demostraci on de que M

acepta a r
1
+ r
2
es totalmente similar a la demostraci on de
que la uni on de lenguajes regulares es regular, por lo que la dejamos al lector.
CASO 2. r = r
1
r
2
. Al igual que en el caso 1, tanto r
1
como r
2
deben tener menos de i
operadores. De donde hay dos aut omatas
M
1
= (Q
1
,
1
,
1
, q
1
, q
f
1
) y M
2
= (Q
2
,
2
,
2
, q
2
, q
f
2
)
que aceptan respectivamente a r
1
y r
2
, cada uno de ellos con un unico estado nal, del
que no salen transiciones y un unico estado inicial al que no llegan transiciones.
Figura 4.3 Uni on de expresiones regulares
r
2
r
1
q
0
q
f
q
2
q
1
q
f
2
q
f
1
empza


Construimos un AFN
M

= (Q

, q
1
, q
f
2
)
4.3 Aut omatas nitos y expresiones regulares 103
con transiciones-, de la siguiente manera:
El estado inicial del nuevo aut omata es el estado inicial de M
1
.
El estado nal de M

es el estado nal de M
2
.
Q

= Q
1
Q
2
Los estados del nuevo aut omata es la uni on de los estados de los aut omatas a con-
catenar.

=
1

2

(q
f
1
, ) q
2

Para lograr la concatenaci on, agregamos una transici on- desde el estado nal de
M
1
al estado inicial de M
2
.
Figura 4.4 Concatenaci on de expresiones regulares
r
1
r
2
q
1
q
2
q
f
1
q
f
2
q
0
q
f

Con la construcci on que acabamos de dar seguimos cumpliendo con el requisito de tener
un unico estado inicial (q
1
) y un unico estado nal (q
f
2
). Adem as, al estado inicial no
llega ninguna transici on, dado que no agregamos ninguna que llegue a el. Del estado
nal no sale ninguna transici on, ya que tampoco agregamos transiciones desde el.
Si r
1
r
2
es porque estaba en ambas expresiones regulares. Entonces, en cada uno
de los aut omatas nitos hay un camino etiquetado con , que lleva del estado inicial
al estado nal correspondiente. Como agregamos una transici on- desde q
f
1
hacia q
2
,
podemos juntar estos dos caminos y conseguir un camino, en el nuevo aut omata, que me
lleva desde el estado inicial q
1
hasta el estado nal q
f
2
, que es precisamente lo necesario
para que est e en la concatenaci on.
De manera similar se puede demostrar que M

en efecto acepta a la concatenaci on de r


1
y r
2
, independientemente de que alguna de ellas contenga o no a .
CASO 3. r = r

. Como no podemos simplemente hacer una transici on- del estado nal
al inicial, ya que infringiramos las reglas respecto a que no debe haber transiciones hacia
el estado inicial ni desde el estado nal, debemos agregar un nuevo estado inicial nuevo
con una transici on- hacia el estado inicial original; agregamos asimismo un nuevo esta-
do nal, con una transici on- desde el estado original hacia el nuevo. Estos dos estados
cumplen con las condiciones respecto a las transiciones desde y hacia ellos. Tambi en,
por supuesto, agregamos la transici on- desde el estado nal original al estado inicial
original. Para aceptar a , agregamos una transici on- desde el nuevo estado inicial hacia
el nuevo estado nal.
104 Aut omatas nitos y lenguajes tipo 3
Figura 4.5 Construcci on de un AF para la cerradura de Kleene de expresiones regulares
q
0
q
f r
1
q
1
q
f
1

Es claro que es aceptado por este aut omata. Y como los aut omatas con transiciones-
son equivalentes a los deterministas sin transiciones-, la demostraci on de que esta cons-
trucci on acepta a r

es similar a la dada para la demostraci on de la cerradura de lenguajes


regulares bajo la Estrella de Kleene.
Los lenguajes regulares presentan otras propiedades de cerradura, entre las que men-
cionaremos la sustituci on.
Denici on 4.4 (SUSTITUCI

ON) Sean y alfabetos nitos posiblemente iguales, y sea


L

un lenguaje. La sustituci on de por en L es una funci on :

tal que
sustituye a cada smbolo de que aparece en alguna cadena w L por una cadena en

.
Por ejemplo, si tenemos el lenguaje L = a
n
b
m
[ n 0, m > 0, podemos denir una
sustituci on de la siguiente manera:
= a, b
= 0, 1
(a) = 00
(b) = 10
con lo que L

= (00)
n
(10)
m
[ n 0, m > 0.
Lema 4.18 Los lenguajes regulares son cerrados bajo sustituci on.
Demostraci on:
Se deja al lector.
4.4. Algoritmos de decisi on para lenguajes regulares
Es importante tener algoritmos para responder a varias preguntas que tienen que ver con
conjuntos regulares. Entre estas preguntas se incluyen: Es un conjunto regular equivalente
4.4 Decidibilidad en lenguajes regulares 105
a otro? Es un lenguaje dado vaco, nito o innito? Se puede saber si una gram atica
regular es ambigua?, y as sucesivamente. Tomaremos como representante de los conjuntos
regulares a los aut omatas nitos donde todas estas preguntas tienen respuestas adecuadas.
4.4.1. Ambig uedad
Recordemos brevemente que una gram atica G libre del contexto es ambigua si existe
una cadena x L(G) tal que haya dos o m as derivaciones por la izquierda de x en G.
Debemos reejar este concepto en aut omatas nitos. Para esto, nos referiremos siempre
a la ambig uedad de la gram atica pensando en que se construy o un aut omata nito no de-
terminista a partir de ella, y tratando de encontrar en el aut omata nito las condiciones
que apunten hacia la ambig uedad de la gram atica original. As, podemos decir que una
gram atica G es ambigua si en el aut omata nito M equivalente existen dos estados q y q

,
tales que para alguna cadena w = el comportamiento que se muestra en el diagrama de
la gura 4.6 sea posible.
Figura 4.6 Aut omata nito con ambig uedad presente
q
0
q

q
F


En otras palabras, se requiere que para una cadena w, existan dos sucesiones de estados
q
0
, q
i
1
, . . . , q
ir
y q
0
, q
j
1
, . . . , q
jr
tales que ambas sucesiones tengan a q
0
como estado inicial, tanto q
is
como q
jr
est en en F
y ambas sucesiones sean distintas.
Teorema 4.19 Hay un algoritmo para decidir si una gram atica lineal a la derecha ar-
bitraria es ambigua, y si lo es, para encontrar una cadena ambigua generada por la
gram atica.
106 Aut omatas nitos y lenguajes tipo 3
Algoritmo 4.1 Algoritmo para determinar presencia de ambig uedad
1: Sea M un aut omata nito construido a partir de G.
2: =
3: = ;
4: Mientras no se agreguen subconjuntos nuevos
5: para cada subconjunto de estados en X

(Y

) construir X
a
(Y
a
) para toda
a
6: // de construir X y Y
7: La gram atica G es ambigua si y s olo si alg un subconjunto de dos o m as esta-
dos aparece en ambos arboles.
8: Para determinar una cadena ambigua a partir de X

y Y

, se construye una
trayectoria desde el estado inicial en X, hasta que se alcanza a alg un conjunto
de los encontrados en el paso (7). es la cadena que produce esta trayectoria.
inicia en este mismo subconjunto en el arbol correspondiente a Y y consiste
de la cadena que lleva, en ese arbol, desde ese subconjunto hasta un estado
nal.
Demostraci on:
La demostraci on buscar a encontrar si se da o no la condici on de ambig uedad en el
aut omata nito. Debemos encontrar w = una cadena aceptada por M que cumpla
con lo descrito en la gura 4.3. Para ello, denimos al conjunto de estados alcanzables
para la cadena :
X

= q

[ (q
0
, ) q

para q
0
estado inicial
Denimos similarmente a los estados abandonables para la cadena , como aqu ellos
desde los cuales se puede llegar a alg un estado nal como respuesta a la cadena :
Y

= p [ (p, ) q

para q

F
Podemos redenir el concepto de ambig uedad diciendo que M tiene sucesiones de esta-
dos admisibles distintas para una cadena w si y s olo si w = , donde X

y Y

tienen al
menos un conjunto de dos estados en com un. Este hecho proporciona un procedimiento
para determinar si una gram atica lineal a la derecha, arbitraria, es ambigua, y si lo es,
encontrar m as de una derivaci on para alguna cadena de G.
Podemos garantizar que el procedimiento va a terminar pues el diagrama del arbol no
puede tener m as de 2
n
nodos para un aut omata nito M con n estados, y s olo se requiere
un n umero nito de comparaciones entre conjuntos.
4.4 Decidibilidad en lenguajes regulares 107
Ejemplo 4.3:
La gram atica lineal a la derecha con smbolo inicial A:
A 1B C 0B B 0B
C 1C B 0C C 1
corresponde al aut omata nito de la tabla 4.5.
Tabla 4.5 Aut omata correspondiente a la gram atica con smbolo inicial A
Q

F
0 1
A B 0
B B, C 0
C B C, D 0
D 1
Los estados alcanzables est an dados por el arbol en la gura 4.8, parte superior, mien-
tras que el diagrama de estados abandonables est a dado por el arbol en la parte inferior de
la misma gura.
Dado que el conjunto B, C (que contiene dos estados) aparece en ambos arboles,
concluimos que la gram atica es ambigua. En particular, las sucesiones de estados en la
gura 4.7 a continuaci on corresponden a distintas derivaciones de la cadena 10001.
Figura 4.7 Derivaciones para la cadena 10001
A
1
= B
0
= B
0
= B
0
= C
1
= D
A
1
= B
0
= C
0
= B
0
= C
1
= D
Si una gram atica regular es ambigua, siempre podemos encontrar una gram atica regular
equivalente que no lo sea, lo que enunciamos en el teorema 4.20.
108 Aut omatas nitos y lenguajes tipo 3
Figura 4.8 Estados alcanzables y abandonables
A B B,C B,C
C,D B
C,D
D C B B,C B,C
C A A,C
= 10
= 001
1 0 0
0
0 0 0 1
1
1
1 1 1
. .
..
Estados alcanzables
Estados abandonables
Teorema 4.20 Para cualquier gram atica regular G, es posible construir una gram atica
G

no ambigua y tal que L(G) = L(G

).
Demostraci on:
Primero procedemos a construir un aut omata nito no-determinista M a partir de G.
Despu es procedemos a convertir a M en un aut omata nito determinista equivalente M

.
Por ultimo, construimos a partir de M

la gram atica G

tal que T(M

) = L(G

). Como
M

es determinista, G

debe ser no-ambigua (pues no hay forma de que para generar un


mismo smbolo terminal pase simult aneamente a dos estados distintos).
4.4.2. Vacuidad, nitud e innitud
En el siguiente teorema podemos basar algoritmos para decidir si un conjunto regular
es vaco, nito o innito. Se discutir an algoritmos ecientes una vez presentado el teorema.
Teorema 4.21 El conjunto de cadenas aceptadas por un aut omata nito M con n esta-
dos es:
1. No vaco si y s olo si el aut omata acepta a una cadena de longitud menor que n.
4.4 Decidibilidad en lenguajes regulares 109
2. Innito si y s olo si el aut omata acepta alguna cadena de longitud m, donde
n m < 2n.
De lo anterior podemos asegurar que existe un algoritmo para determinar si un aut oma-
ta nito acepta cero, un n umero nito o un n umero innito de cadenas.
Demostraci on:
1. La porci on si del inciso es obvia. Supongamos ahora que M acepta a un conjunto
no vaco. Sea w en ese conjunto una cadena de longitud tan peque na como cualquier
otra cadena aceptada por M. Si la longitud de w es menor que n, ya no hay nada que
demostrar. Supongamos que la longitud de w es mayor o igual que n. Entonces M,
al reconocer a los smbolos de w, como s olo tiene n estados, deber a regresar a alg un
estado ya visitado. Supongamos que al leer el i- esimo smbolo de w, M entra al estado
p y regresa a ese mismo estado al leer el j- esimo smbolo de w. Entonces, podemos
reescribir w como w = uxv con u = a
1
a
2
. . . a
i
, x = a
i+1
. . . a
j
y v = a
j+1
. . . a
s
.
Pero la cadena w

= uv tambi en es aceptada por M, pues x obliga a M a hacer un ciclo


en p, por lo que si tomamos a M cuando llega a p por primera vez y lo sacamos de p para
ya no regresar (aplic andole inmediatamente la cadena v) tenemos una cadena de longitud
menor que la longitud de w y que es aceptada por M, lo cual es una contradicci on. Por
lo tanto la longitud de w es menor que n.
2. Si w T(M) y n [ w [< 2n, entonces, por un razonamiento similar al anterior,
podemos reescribir w como w = uxv, con x haciendo que el aut omata regrese a alg un
estado ya visitado. La cadena w

= uxxv tambi en es aceptada por M, pues lo unico que


sucede es que repite estado nuevamente. En general, la cadena w

= ux
i
v con i 0 es
aceptada por el aut omata, de donde L(G) es innito.
Ahora supongamos que L(G) es innito y deberemos mostrar una cadena w tal que
n [ w [< 2n. Si todas las cadenas de L son de tama no menor que n tendramos
s olo un n umero nito de ellas, contradiciendo el hecho de que L(G) es innito. Por
contradicci on, sea w una cadena de longitud tan peque na como cualquier otra cadena
aceptada por M, y cuya longitud es al menos 2n. Por un razonamiento similar al del
inciso anterior, podemos reescribir w = uxv con 1 <[ x [< n, tal que x hace que el
aut omata regrese a un estado ya visitado y con uv T(M). O bien w no era de longitud
mnima (pues uv es aceptada por M y es de longitud menor que w) o n [ uv [< 2n,
una contradicci on en cualquiera de los dos casos.
En el inciso (1), el algoritmo para decidir si T(M) es vaco es: Revisa para saber si
alguna cadena de longitud menor o igual a n est a en T(M). Claramente existe un proce-
dimiento de ese tipo y garantizado que termina, ya que hay un n umero nito de cadenas de
longitud menor o igual a n. En el inciso (2), el algoritmo para decidir si T(M) es innito es:
Revisa si alguna palabra de longitud entre n y 2n 1 est a en T(M). Otra vez, claramente
existe un procedimiento para hacerlo y que sabemos que va a terminar.
110 Aut omatas nitos y lenguajes tipo 3
Se debe notar que los algoritmos sugeridos en el teorema son terriblemente inecientes.
Sin embargo, uno puede f acilmente vericar si un aut omata nito determinista acepta o no
a un conjunto vaco, tomando la tabla de transiciones y quitando todos los estados que
no son alcanzables desde el estado inicial. Si al nal de este proceso queda en la tabla
alg un estado nal, podemos decir que el lenguaje aceptado por el aut omata no es vaco.
Despu es, sin modicar el lenguaje aceptado, podemos quitar todos los estados que no son
nales y desde los cuales no se puede llegar a un estado nal. El AFD acepta un lenguaje
innito si y s olo si el diagrama resultante tiene alg un ciclo (pues esto dara la posibilidad
de encontrar la subcadena x que puede repetirse tantas veces como se quiera). El mismo
m etodo funciona para los aut omatas no deterministas, pero tenemos que vericar si el ciclo
que existe est a etiquetado con algo que no sea .
4.4.3. Equivalencia
Ahora se mostrar a que existe un algoritmo para determinar si dos aut omatas nitos
aceptan al mismo conjunto.
Teorema 4.22 Existe un algoritmo para determinar si dos aut omatas nitos son equiva-
lentes (i.e. si aceptan el mismo lenguaje).
Demostraci on:
Sean M
1
y M
2
aut omatas nitos que aceptan L
1
y L
2
respectivamente. Por resultados
anteriores, podemos construir el aut omata nito que acepte
(L
1
L
2
) (L
1
L
2
)
Sea M
3
ese aut omata. Es f acil ver que M
3
acepta a alguna cadena si y s olo si L
2
,= L
1
.
De donde existe un algoritmo para determinar si L
1
= L
2
.
Resumiendo todos los resultados anteriores, podemos decir lo siguiente:
Teorema 4.23 Sean L
1
y L
2
lenguajes regulares arbitrarios, y sea G una gram atica re-
gular arbitraria. Entonces, es decidible si:
1. L
1
= L
2
.
2. L
1
= .
3. L
1
es nito; L
1
es innito.
4. L
1
L
2
= .
5. L
1
L
2
.
6. G es ambigua.
Demostraci on:
Nos falta s olo demostrar el inciso 5, lo cual se hace mediante la relaci on:
L
1
L
2
L
1
L
2
=
4.5 Lenguajes que no son regulares 111
4.5. Lenguajes que no son regulares
Podra quedar la sensaci on de que con los aut omatas nitos (gram aticas regulares) te-
nemos cubiertos a todos los lenguajes formales. Esto no es as. En esta secci on desarrolla-
remos habilidades para poder demostrar, apoy andonos en las propiedades de cerradura y
en el lema del bombeo, que veremos a continuaci on, que determinados lenguajes no son
regulares.
Lema 4.24 (LEMA DEL BOMBEO (Pumping Lemma)) Sea L un lenguaje regular inni-
to. Entonces existe alg un entero positivo m tal que cualquier w L tal que [w[ m se
puede descomponer como
w = xyz con [xy[ m, [y[ 1
tal que
w
i
= xy
i
z L i Z tal que i 0
Demostraci on:
Si L es regular entonces existe un AF determinista que lo reconoce. Sea ese aut omata
M = (Q, , , q
0
, F) tal que los estados de Q est an etiquetados q
0
, . . . , q
n
. Como L es
innito, por el lema 4.20, existe una cadena w tal que n [w[ < 2(n+1). Sea m = n+1.
Por un razonamiento similar a la demostraci on del lema 4.2 inciso 2, al reconocer M a w
debe repetir al menos un estado. Entonces, podemos reescribir w como w = xyz tal que
(q
0
, x) = q
j
, (q
j
, y) = q
j
y (q
j
, z) = q
f
. Si q
j
es el primer estado en la sucesi on que
se repite, esta repetici on se debe dar antes del n- esimo movimiento - cuando hacemos el
movimiento n + 1 debemos repetir a alguno de los estados, si no es que antes. Como y
obliga al ciclo en el estado q
j
, tenemos que se cumple
[xy[ < m, [y[ 1
De esto se sigue inmediatamente que
xz L, xyz L, xy
2
z L, . . . , xy
i
z L i = 0, 1, 2, . . .
Este lema no nos servir a para determinar que un lenguaje es regular, ya que para ello
tendramos que demostrar que toda cadena w tal que [w[ m cumple con la descomposi-
ci on. La utilidad de este lema radica en poder demostrar que alg un lenguaje no es regular,
si dada una m podemos encontrar una w en la cual toda posible descomposici on en x, y y z
que cumpla con las condiciones del lema sea tal que al bombear a y la cadena resultante
no est a en el lenguaje. Veamos ejemplos de la utilizaci on de este lema.
112 Aut omatas nitos y lenguajes tipo 3
Ejemplo 4.4:
Usaremos el lema del bombeo para demostrar que
L = a
n
b
n
[ n 0
no es un lenguaje regular. Procedemos de la siguiente manera:
i. Se propone una m 1 entera cualquiera.
ii. Proponemos la cadena w = a
m
b
m
que cumple con [w[ m.
iii. xy debe consistir unicamente de a, para cumplir con la restricci on de que
[xy[ m. Sea [xy[ = n.
iv. Como [y[ 1, y debe contener al menos a una a. Sea [y[ = k > 0.
v. La cadena queda reescrita como
w = a
nk
a
k
a
mn
b
m
con x = a
nk
, y = a
k
, z = a
mn
b
m
.
vi. Pero la cadena que resulta en w
0
= a
nk
a
mn
b
m
= a
mk
b
m
, como k > 0, no tiene
el mismo n umero de a que de b, ya que k 1; de donde no est a en L, por lo que L
no es regular.
Por lo pronto ya encontramos al menos un lenguaje que no es regular. Podemos usar el
mismo m etodo para demostrar, por ejemplo, que L = a
n
b
n
c
n
tampoco es regular.
Ejemplo 4.5:
Demostrar que L = ww
R
[ w

. no es regular.
Procedemos de la misma manera que en el ejemplo anterior.
i. Sea m 1.
ii. Construimos w = a
m
b
m
b
m
a
m
. Claramente w L
w =
m
..
a. . . a
m
..
b. . . b
m
..
b. . . b
m
..
a. . . a
iii. Nuevamente, por la restricci on de que [xy[ m, xy debe consistir unicamente de a
del primer grupo que al bombearlas desequilibra a la cadena, haciendo que ya no
est e en el lenguaje.
Es mucho muy importante notar que lo que nos posibilit o la demostraci on fue el hecho
de que pudimos elegir a w. En este ultimo ejemplo, una elecci on de una w demasiado corta
no hubiera servido, pues habra cabido la posibilidad de que se eligiera alg un car acter en el
centro de la cadena para bombearla y entonces no podramos sacar a la cadena bombeada
del lenguaje.
4.5.1. Uso de las propiedades de cerradura
No siempre es f acil determinar que un lenguaje no es regular a trav es del lema del
bombeo. Podemos tambi en utilizar las propiedades de cerradura, de la siguiente manera:
4.5 Lenguajes que no son regulares 113
i. Supongamos que queremos demostrar que un lenguaje L
1
no es regular.
ii. Consideramos a un segundo lenguaje, L
2
que sabemos que s es regular y lo operamos
con L
1
mediante una operaci on que presente cerradura.
iii. Si el resultado no es un lenguaje regular, la hip otesis de que L
1
era regular es falsa.
Veamos algunos ejemplos.
Ejemplo 4.6:
Consideremos el lenguaje L = a
n
b
m
[ n m 1. Deseamos demostrar que L no es
regular. Por contradicci on, suponemos que s lo es.
i. Como L es regular, L
R
1
= b
m
a
n
[ n m 1 tambi en es regular teorema 4.14.
ii. Es f acil ver que el lenguaje L
2
= a
m
b
n
[ n m 1 tambi en es regular (simple-
mente hay una sustituci on de a por b y viceversa, usando el lema 4.18).
iii. Veamos ahora el lenguaje L

denido como sigue:


L

= L L
2
= a
m
b
n
[ n = m 1 = a
n
b
n
[ n 1,
que ya sabemos que no es regular.
Por lo tanto, L no es regular.
Ejemplo 4.7:
Consideremos el lenguaje
L = a
n
b
k
c
n+k
[ n, k 0
Procedemos a demostrar que no es regular. Usando el lema 4.18, construimos la siguiente
sustituci on:
(a) = a
(b) = a
(c) = b
Entonces, L

queda denido como


L

= a
n
a
k
b
n+k
[ n, k 0
= a
n+k
bn +k [ n, k 0
= a
m
b
m
[ m = n +k, m 0
que ya sabemos que no es regular, contradiciendo la hip otesis de que s lo era.
Insistimos en que ninguno de los lemas de cerradura o el de bombeo nos pueden ayudar
a decidir que un lenguaje es regular. La unica manera de hacer esto es construyendo el
aut omata nito que acepte gram atica regular que genere, expresi on regular equivalente
al lenguaje. Pero s podramos usar este ultimo mecanismo tambi en para demostrar que un
lenguaje no es regular, suponiendo que existe un AF que reconoce al lenguaje y llegando a
114 Aut omatas nitos y lenguajes tipo 3
una contradicci on de cadenas en el lenguaje que no podran ser aceptadas por el aut omata,
o bien que de aceptar a ciertas cadenas, tiene que aceptar a cadenas que no est en en el
lenguaje. Usaremos este enfoque para, nuevamente por otro camino, demostrar que L =
a
n
b
n
[ n 0 no es un lenguaje regular.
Lema 4.25 L = a
n
b
n
[ n 0 no es un lenguaje regular.
Demostraci on:
Por contradicci on, supongamos que s lo es. Entonces, existe un AFD M con n estados,
tal que acepta a cadenas de este lenguaje. Sea w L tal que [w[ = 2r > 2n y sea la
siguiente sucesi on de estados por los que pasa M al reconocer a w:
q
0
a
q
1
a
. . .
a
q
r
b
q
r+1
b
. . .
b
q
2r
donde q
0
es el estado inicial y q
2r
F, esto es (q
0
, w) = p F.
Como r > n, debe existir en la sucesi on q
0
. . . q
r
alg un estado que se repita, esto es,
q
i
= q
j
= q para 0 i < j r. Reescribimos w = xyz con (q
0
, x) = q
i
= q,
(q
i
, y) = q
j
= q y (q
j
, z) = p F. Pero como q
i
= q
j
= q y 0 i < j r, x = a
i
,
y = a
ji
y z = a
rji
b
r
. Por un razonamiento similar al del lema del bombeo, la cadena
a
i
(a
ji
)
p
a
rij
b
r
/ L pero es aceptada por el AFD.
El AFD que dijimos reconoca a L no sirve y nuestra hip otesis de que L es regular
es falsa.
A pesar de los m ultiples caminos que revisamos y que se usan para demostrar que un
lenguaje no es regular, la realidad es que este no es un proceso sencillo. Se requiere de
mucha intuici on y experiencia simplemente para determinar cu al de los caminos seguir, ya
que no siempre es f acil esta decisi on.
4.6. Aplicaciones de aut omatas nitos
(gram aticas regulares)
Hay una variedad de problemas de dise no de software que se simplican con la conver-
si on autom atica de la notaci on de expresiones regulares a una instrumentaci on eciente de
los aut omatas nitos correspondientes. Se mencionan dos de esas aplicaciones a continua-
ci on.
4.6 Aplicaciones 115
4.6.1. Analizadores lexicogr acos
Los atomos o chas (tokens) de un lenguaje de programaci on son casi sin excepci on
expresables como conjuntos regulares. Por ejemplo, los identicadores de Java, que son una
may uscula, min uscula o gui on bajo, seguida de cualquier combinaci on de letras, dgitos o
gui on bajo, sin lmite en la longitud, se pueden expresar como
(letra) + )(letra) +d

igito) + )

donde letra) es cualquier letra may uscula o min uscula (A+B+. . . +Z+a+b+. . . +z),
y d

igito) es (0+1+2+. . . +9). Los identicadores de FORTRAN, con longitud m axima


de seis car acteres y las letras restringida a may usculas, se pueden expresar como
(letra))( +letra) +d

igito))
5
donde letra) ahora es (A+B+. . . +Z). Las constantes aritm eticas de SNOBOL (que no
permiten la exponenciaci on presente en tantos otros lenguajes) se pueden expresar como
( +)(d

igito)
+
(.d

igito)

+) +.d

igito)
+
)
Algunos generadores de analizadores lexicogr acos toman como entrada una sucesi on
de expresiones regulares que describen a las chas y producen un aut omata nito que re-
conozca cualquier cha ah descrita. Generalmente, convierten la expresi on regular a un
aut omata nito no determinista y despu es construyen el aut omata nito determinista. Ca-
da estado nal indica el tipo de cha encontrado, de donde el aut omata construido es una
m aquina de Moore. La funci on de transici on se codica de alguna manera que tome menos
espacio que si se codicara la tabla de dos dimensiones correspondiente. El analizador lexi-
cogr aco producido por el generador es un programa jo que interpreta tablas codicadas,
junto con la tabla particular que representa al aut omata nito que reconoce a las chas. Este
analizador lexicogr aco puede ser usado como un m odulo en un compilador.
4.6.2. Editores de texto
Algunos editores de texto y programas similares permiten la substituci on de una cadena
por otra cualquiera que case con una expresi on regular dada. Por ejemplo, el editor de texto
de UNIX permite comandos como el siguiente:
s/,b,b,b

/,b/ con ,b = blanco


que sustituye con un blanco unico la primera cadena de dos o m as blancos encontrados en
una lnea dada. Dejemos que cualquier r denote a la expresi on a
0
+a
1
+. . . +a
k
donde las
a
i
son cualquiera de los car acteres de una computadora excepto el de cambio de lnea.
116 Aut omatas nitos y lenguajes tipo 3
Podramos convertir a una expresi on regular r a un AFD que acepta cualquier r. N otese
que la presencia de cualquier r nos permite reconocer a un miembro de L(r) empezando en
cualquier punto de la lnea. Sin embargo, la conversi on de una expresi on regular a un AFD
lleva muchsimo m as tiempo del que llevara examinar una lnea corta usando al AFD, y el
AFD podra tener un n umero de estados que es una funci on exponencial de la longitud de
la expresi on regular.
Lo que realmente sucede en el editor de UNIX es que la expresi on regular cualquier r
es convertida a un AFN y ese AFN es simulado directamente. Sin embargo, una vez que
una columna ha sido construida listando todos los estados que el AFN puede alcanzar con
un prejo particular de la entrada, la columna anterior ya no es necesaria y se descarta para
ahorrar espacio.
4.6.3. Correctores de ortografa
La correcci on de ortografa tiene que ver, entre otros aspectos, con localizar en una
cadena de car acteres las inversiones de dos de ellos, la omisi on de alguno, la inserci on de
un car acter que no corresponde a ninguno de los patrones codicados en el aut omata. Po-
demos hacer un reconocimiento que detecte este tipo de situaciones con un aut omata con
transiciones-. Con este tipo de reconocimiento se determina de antemano el n umero de
errores que se van a aceptar y se duplica el aut omata tantas veces como errores se acepten.
Las copias del aut omata se van a relacionar entre s por transiciones-, dependiendo del
tipo de error detectado. Por ejemplo, si se detecta una omisi on hay una transici on- hacia
la copia inmediata hacia abajo, saltando al car acter faltante. Si hay una inserci on, la transi-
ci on- regresa, en el aut omata inmediato inferior, a volver a tratar de leer el car acter que
segua en el patr on; de manera similar para inversiones.
4.6.4. Biologa molecular
Hay un sinfn de algoritmos hoy en da, basados en el funcionamiento de aut omatas
nitos, que se usan para encontrar patrones en el genoma humano. Tambi en hay esfuerzos
importantes para tratar de representar cadenas como generadas por expresiones regulares o
por lenguajes regulares, dada la simpleza de los aut omatas nitos.
Se usan aut omatas nitos para identicar la estructura de la c elula a nivel molecular, y
especialmente en lo que se reere a las protenas y el ADN.
Tanto el ADN como las protenas se presentan como repeticiones de cadenas en el
genoma humano. Adicionalmente, el ADN contiene muchsimas estructuras que tambi en
se pueden abstraer como repeticiones de cadenas, las que juegan un papel importante en
la explicaci on que podamos dar del funcionamiento de la herencia y duplicaci on de genes.
Resulta adem as que en muchos casos es el patr on o n umero de repeticiones del ADN lo
4.6 Aplicaciones 117
que distingue a un ser humano de otro. Estas repeticiones se presentan en diversos patrones,
como pueden ser repeticiones locales, intercaladas o de peque na o gran escala. No todos
estos tipos de repeticiones son entendidos en la misma medida.
Como acabamos de mencionar, la identicaci on de patrones de repetici on para distin-
guir entre distintas especies, o entre distintos individuos de la misma especie, constituye
un problema cuya soluci on es de mucho inter es.

Este ha sido uno de los campos de ac-
ci on importante de la algortmica, con un inter es muy fuerte por encontrar m etodos para
determinar, identicar y almacenar estos patrones de manera eciente.
Otro problema interesante es el de lograr encontrar, dada una subcadena, la supercadena
que la contiene. En este caso se trabaja a partir de una muestra del material gen etico y
se busca reconocer a la estructura a la que representa esta muestra. Se dice que se tiene un
problema de secuenciaci on por hibridaci on (SBH en ingl es) si se busca determinar tanto
como sea posible de una cadena S de ADN, la cadena objetivo, a partir de la lista L de
todas las subcadenas de longitud k que aparecen en L.
P. Pevzner, en un artculo publicado en 1989, redujo el problema SBH al de encontrar
cadenas que hacen que el aut omata realice cada una de sus transiciones exactamente una
vez (lo que se conoce como un camino euleriano), de la siguiente manera:
Problema SBH:
Dada una lista L de todas las subcadenas de longitud k en la cadena objetivo S, cons-
truye un aut omata nito M(L) como sigue:
i. El aut omata consiste de 4
k1
estados, cada uno de ellos etiquetado con una cadena
distinta de ADN de longitud k 1.
ii. Para cada cadena L, existe una transici on desde el estado etiquetado con los
k 1 primeros car acteres de al estado etiquetado con los ultimos k 1 car acteres
de . Esta transici on se lleva a cabo al leer el ultimo car acter de .
N otese que algunos de los estados en M(L) no van a tener transiciones hacia ellos.
Estos estados pueden eliminarse.
Un camino en M(L) especica a la cadena S de la siguiente manera: la cadena S em-
pieza con la etiqueta del primer estado en el camino y prosigue a partir de ese momento, con
la concatenaci on, en orden, de los smbolos que causan la transici on que se va incluyendo
en el camino. Veamos un ejemplo.
Supongamos que tenemos
L = AAA, AAC, ACA, CAC, CAA, ACG, CGC,
GCA, ACT, CTT, TTA, TAA
a la que corresponde al aut omata de la gura 4.9.
118 Aut omatas nitos y lenguajes tipo 3
Figura 4.9 Aut omata M(L) correspondiente a L
TA
AA
TT CT
AC
CG GC
CA
C
G
C
A
C
T
T
A
A
A
A
A
Una posible cadena S para este aut omata es S = ACACGCAACTTAAA, que corres-
ponde al camino euleriano que se construye si se visitan los estados en el siguiente orden:
AC, CA, AC, CG, GC, CA, AA, AC, CT, TT, TA, AA, AA
utilizando las transiciones correspondientes. En general, puede haber m as de un camino
euleriano en un mismo aut omata. Nos interesan, sin embargo, aqu ellos que corresponden
exactamente a S, lo que formalizamos en la denici on 4.5.
Denici on 4.5 Una cadena S es compatible con L S contiene cada cadena en L y (su-
poniendo que L contiene subcadenas de longitud k), S no contiene ninguna otra subcadena
de longitud k.
Con esta denici on podemos enunciar el teorema 4.9.
Teorema 4.26 Una cadena S es compatible con L S es especicada por un camino
euleriano en M(L).
Demostraci on:
Este teorema es f acil de demostrar a partir de las propiedades de un camino euleriano y
de la denici on 4.5.
Corolario 4.27 Supongamos que cada subcadena de L aparece exactamente una vez en
la cadena de ADN objetivo. Entonces, el conjunto de cadenas L determina unvocamente
la cadena de ADN objetivo M(L) tiene un unico camino euleriano.
Corolario 4.28 Existe una correspondencia uno-a-uno entre caminos eulerianos en M(L)
y cadenas que son compatibles con L.
4.6 Aplicaciones 119
Si los datos fueron recolectados de manera correcta y, en efecto, ninguna cadena de
tama no k aparece m as de una vez en el objetivo, entonces M(L) debe tener al menos un
camino euleriano que especique a la cadena de ADN. Aun cuando haya m as de un camino
euleriano en el aut omata, puede ser posible extraer suciente informaci on del conjunto de
todos los posibles caminos eulerianos. De esto, el problema de encontrar la cadena objetivo
de ADN se puede reducir a la de encontrar un camino euleriano.
Desafortunadamente, no es frecuente que las condiciones que se suponen para esta solu-
ci on se presenten. Muchas veces se cometen errores al recolectar los datos, o el suponer que
no hay repeticiones en el ADN tampoco es una suposici on f acil de hacer. Pero, nalmente,
todas estas observaciones llevan, en el mediano y largo plazo, a una mejor comprensi on de
los organismos vivos y lo que determina su estructura.
Aut omatas con pila
5
En este captulo presentamos una extensi on de los aut omatas con un n umero
nito de estados, agregando memoria al aut omata en forma de una pila. Ex-
ploramos el concepto de no-determinismo en esta clase de aut omatas, para
concluir que no podemos establecer la equivalencia de estos dos modelos de
manera algortmica. Revisamos la traducci on con aut omatas de pila y termi-
namos con el resultado de que todo aut omata de pila se puede construir con
un unico estado. Este ultimo resultado va a resultar muy importante cuando
revisemos la equivalencia entre gram aticas tipo 2 y aut omatas de pila.
5.1. Denici on
Como vimos en los captulos anteriores, un aut omata nito tiene una cantidad ja de
memoria dada por los estados. Sin embargo, hay muchas operaciones en un compilador
que no pueden ejecutarse bajo estas restricciones. Ya tambi en vimos ejemplos de esto,
como lo son el vericar si una expresi on tiene el mismo n umero de a que de b, o vericar
si los par entesis de una expresi on est an bien emparejados, si una cadena aparece repetida
consecutivamente, etc.
Para obtener m aquinas m as poderosas, lo que se necesita es eliminar la restricci on sobre
la nitud de la memoria. Para esto se utiliza un mecanismo de almacenamiento, muy com un
en computaci on, llamado pila. Sabemos bien el funcionamiento de una pila: en general, la
ultima informaci on que entr o es la primera que sale (Last In First Out o LIFO), y se
incorporan o sacan smbolos de la pila de uno en uno, mediante operaciones de push para
122 Aut omatas con pila
meter y pop para sacar. Se dice que la informaci on m as reciente est a en el tope de la pila.
Tambi en es relevante el fondo de la pila. En general, diremos que si la pila est a vaca
no podemos ver nada en ella, o bien podemos tener la convenci on de un smbolo que
aparezca en el fondo de la pila, y que al verlo, sepamos que ya no hay m as smbolos dentro
de ella que pudiera intentarse sacar.
Un aut omata con pila tiene la capacidad de recordar a trav es de sus estados, como lo
hace el aut omata nito, pero incorpora la capacidad de recordar en la pila. Por ejemplo,
si quiere reconocer a la cadena a
n
b
n
todo lo que hace es tener dos estados, para saber si
est a en la fase de contar a o en la de contar b. En uno de los estados, por ejemplo, por
cada a que ve mete un smbolo (digamos una A) a la pila. En cuanto ve la primera b saca
a un smbolo de la pila y pasa al otro estado, donde por cada b que ve saca una A de la
pila. De esta forma, sabemos que la cadena est a bien construida si al terminarse la cadena
de entrada, el aut omata termina con la pila vaca. La cadena no est a bien construida en
cualquiera de los dos casos siguientes:
a. Se termina la cadena de entrada y todava hay una o m as A en la pila. En este caso,
hubo m as a que b.
b. Todava no se acaba la cadena de entrada, y sin embargo, ya no hay A en la pila . En
este caso, hubo m as b que a.
Podemos sintetizar las reglas bajo las que opera un aut omata de pila (AFS) de la si-
guiente manera:
1. Como el AFS suspender a su funcionamiento si la pila est a vaca, utilizaremos a un
smbolo especial que marcar a el fondo de la pila.
2. La m aquina empieza con una cierta conguraci on inicial en la pila. En el caso ante-
rior, la pila deber a tener unicamente el smbolo del fondo de la pila.
3. La m aquina empieza a funcionar en un cierto estado inicial. En el caso anterior, el
estado inicial es el que mete ceros a la pila.
4. El funcionamiento del AFS estar a dado por un conjunto de reglas que especican,
dado un estado, un smbolo de entrada, y un smbolo en el tope de la pila (q
i
, a, Z),
el estado al que debe transferirse y la cadena por la que debe sustituirse al smbolo
en el tope de la pila.
5. Cualquier combinaci on (estado, entrada, pila) que no est e especicado respecto al
aut omata nito, ocasiona que el AFS interrumpa su operaci on.
6. Decimos que un AFS acepta una cadena si al interrumpir su operaci on despu es de
haber examinado a toda la cadena de entrada, termina con la pila vaca.
5.1 Denici on 123
Formalmente, un aut omata nito con pila es un s extuplo AFS = (Q, , , , q
0
, Z
0
) tal que:
Q = conjunto de estados.
= alfabeto de entrada.
= alfabeto de la pila.
= la funci on de transici on,
: Q Q

q
0
= el estado inicial.
Z
0
= el smbolo en el fondo de la pila al empezar el funcionamiento.
(q, a, Z) (p, ) indica que si al estar funcionando el AFS, el smbolo a es el siguiente
a leer en la cadena de entrada y el smbolo Z se encuentra en el tope de la pila, el AFS
pasa al estado p y el smbolo Z en el tope de la pila se sustituye por la cadena . Si = ,
quiere decir que se hace un pop de la pila, esto es, se quita al smbolo Z del tope de la pila.
Ejemplo 5.1:
Trataremos ahora de especicar el aut omata que reconoce a las cadenas a
n
b
n
. Para
facilitar a un m as la operaci on, podemos utilizar una tabla, como la de los aut omatas nitos,
donde para cada estado exista una subtabla en la cual los renglones son el smbolo en el tope
de la pila y las columnas son el alfabeto de entrada. Procedamos a armar las transiciones
del AFS en la tabla 5.1.
Tabla 5.1 AFS que reconoce a
n
b
n
Q

a b
q
0
Z
0
q
0
, A
A q
0
, AA q
1
,
q
1
Z
0
A q
1
,
El AFS de la tabla 5.1 acepta L = a
n
b
n
[ n > 0; si unicamente lee a, al terminarse
la cadena de entrada la pila no estar a vaca, por lo que no aceptar a a la cadena; si trata
de leer una b antes de haber ledo a, el smbolo en el tope de la pila ser a Z
0
, y como no
hay transici on denida, el AFS suspende su funcionamiento con Z
0
en la pila; cuando el
aut omata pasa al estado q
1
, por cada a que vio se encuentra una A en la pila; por cada b que
vea sacar a una A de la pila, incluyendo la primera que sac o en el estado q
0
al transferirse a
q
1
. Si ve m as a que b, la cadena de entrada se agotar a y la pila contendr a todava A, por lo
124 Aut omatas con pila
que no se cumplir a el criterio para aceptaci on; si ve m as b que a, la pila se vaciar a antes de
que se agote la cadena de entrada; en cualquiera de estos dos casos, el AFS suspender a su
funcionamiento sin que se cumplan simult aneamente el que la cadena de entrada se haya
agotado y el pila est e vaca.
Ejemplo 5.2:
Construyamos un aut omata de pila que decide si una cadena formada por par entesis
izquierdos y derechos est a o no bien formada. Examinemos el problema.
En general, el AFS debe, si ve un par entesis izquierdo, anotar que lo vio, metiendo
alg un smbolo en la pila, digamos una I. Si ve un par entesis derecho, deber a sacar de
la pila el smbolo correspondiente al par entesis izquierdo, para de esta forma emparejarlo.
Si ve un par entesis derecho que no cierre a ning un izquierdo, la pila estar a vaca, y el
AFS deber a pararse. Como se ve, el comportamiento del AFS depende exclusivamente del
smbolo de entrada y del smbolo en el tope de la pila, por lo que se puede instrumentar con
un solo estado, como se muestra en la Tabla 5.2.
Tabla 5.2 Aut omata que reconoce par entesis bien anidados
Q

( )
q
0
Z
0
q
0
, IZ
0
q
0
,
I q
0
, II q
0
,
En el AFS de la tabla 5.2, los par entesis izquierdos deben llevar la delantera, esto es,
en todo momento debimos haber visto m as par entesis izquierdos que derechos. Por cada
par entesis derecho que vemos, sacamos uno izquierdo de la pila. En la pila tendremos n+1
smbolos, uno por cada par entesis izquierdo que no hemos apareado, y el smbolo del fondo
de la pila. Si todava tenemos par entesis derechos en la cadena de entrada y llegamos a ver
un par entesis derecho, tenemos al menos un par entesis derecho que no cierra a ning un
izquierdo por lo que suspende su funcionamiento.
Tenemos una columna etiquetada con . El signicado de esta columna es que el AFS
puede realizar transiciones sin leer ning un smbolo de entrada. Esto hace que en un mo-
mento dado, si tiene el smbolo indicado en el tope de la pila, puede elegir entre hacer
una transici on con el smbolo de la columna que coincida con la entrada, o bien no usar
el smbolo de entrada y hacer la transici on indicada en esa columna. Esta caracterstica
pudiera darle al aut omata el no determinismo hablaremos al respecto m as adelante. Es
necesario insistir que no es un smbolo de , ya que corresponde a una cadena, la cadena
vaca, mientras que no contiene cadenas, sino unicamente smbolos.
A primera vista pudiera parecer redundante esta columna. Podemos pensar que si al
ver el primer par entesis izquierdo sustituimos al smbolo del fondo de la pila por una I,
5.1 Denici on 125
tendremos en la pila tantos smbolos como par entesis derechos tenemos que aparear. Y
esto funciona para pares de par entesis anidados. Pero si le alimentamos a nuestro AFS, por
ejemplo, la cadena ()(), que es una cadena correcta, al terminar de leer la primera pareja
el AFS habr a vaciado su pila, y no habr a posibilidad de leer la segunda pareja: como la
cadena de entrada no estar a agotada, el aut omata rechazar a una cadena bien formada. Por
ello es necesario no vaciar la pila antes de tiempo.
Como tenemos transiciones bajo , el aut omata puede realizar esa transici on en cual-
quier momento, pero si todava tiene smbolos en la cadena de entrada, por este camino
vaciar a la pila antes de tiempo y parar a sin cumplir el requisito de agotar la cadena de
entrada. En cambio, si opta por esta transici on cuando la cadena de entrada est e vaca, al
parar el AFS con pila vaca y con la cadena de entrada agotada, la cadena ser a aceptada.
A pesar de que no tenemos m as de una transici on por tripleta (estado, pila, entrada), las
transiciones bajo proporcionan no-determinismo.
Nuevamente tuvimos que meter transiciones sin leer cadena de entrada, para que no
vace la pila antes de tiempo. La cadena ser a aceptada si existe alguna manera de que el
AFS realice transiciones que lo lleven a vaciar la pila al mismo tiempo que la cadena de
entrada se agote. Esto unicamente se puede lograr si se utilizan las transiciones bajo
cuando la cadena de entrada ya est e agotada.
C omo hacer para tener un AFS determinista, sin tener que utilizar transiciones con ?
Como acabamos de mencionar, si logramos detectar cu ando ya se termin o la cadena de en-
trada, podremos decidir quitar el smbolo del fondo de la pila. Esto lo logramos agregando
marcas de n de cadena, como se muestra en la tabla 5.3.
Tabla 5.3 Aut omata que reconoce par entesis bien anidados sin transiciones-
Q

( )
q
0
Z
0
q
0
, IZ
0
q
0
,
I q
0
, II q
0
,
El AFS que describimos en la tabla 5.3 tiene un solo estado q
0
, dos posibles smbolos
de entrada, adem as de la marca de n de cadena, y dos posibles smbolos en la pila.
En ambos ejemplos, y en los que seguir an, usamos la convenci on de un smbolo especial
en el fondo de la pila, Z
0
, que se encuentra ah al empezar el funcionamiento del aut omata,
pero que no puede ser agregado durante el funcionamiento del AFS. Sin embargo, se puede
intercambiar con alg un otro smbolo siempre que este aparezca en el tope de la pila.
126 Aut omatas con pila
Ejemplo 5.3:
Construyamos ahora un AFS que reconozca cadenas que tengan el mismo n umero de
a que de b. A simple vista, lo que debemos hacer es, cuando las a lleguen ir cont andolas
(meter un smbolo, digamos una A por cada una de ellas a la pila) y cuando veamos una b,
emparejarla con una a (sacando una A de la pila). Pero, qu e pasa si la cadena que vamos
a reconocer es bbaaab? Esta cadena tiene el mismo n umero de a que de b, pero al ver la
primera b trataramos de sacar una A de la pila, estando la pila vaca. Esto ocasionara que
el AFS rechace a la cadena cuando la cadena est a bien construida.
Debemos entonces denir al AFS para que, si la pila est a vaca y ve una b, se ponga a
contar b (metiendo un smbolo distinto que cuando cuenta a, digamos una B, a la pila). Si
ve una b con una A en el tope de la pila, entonces sigue contando b. Si ve una a con Z
0
en
el tope de la pila (esto es, la pila vaca en cuanto a reejo de smbolos ledos) cuenta a. Si
ve una a con una B en el tope de la pila, sigue contando a. Si ve una b con una A en el
tope de la pila, quiere decir que estaba contando a y que se encuentra una primera b (en elo
bloque), por lo que deber a tratar de emparejarla con una a, sacando un smbolo de la pila.
Si ve una a con una B en el tope de la pila, quiere decir que debe tratar de emparejar a la a
con una b pues ya vio b, y saca a un smbolo de la pila. Como ven, este AFS s olo necesita
un estado, pues sus acciones dependen exclusivamente del smbolo de entrada y el smbolo
del tope de la pila. Veamos el dise no en la tabla 5.4.
Tabla 5.4 AFS que reconoce w tal que #(a) = #(b) en w
Q

a b
q
0
Z
0
q
0
, AZ
0
q
0
, BZ
0
q
0
,
A q
0
, AA q
0
,
B q
0
, q
0
, BB
Otra vez, el aut omata acepta si al nalizar la cadena de entrada la pila est a vaca. Pero
no puede sacar a Z
0
de la pila, porque hara que el AFS suspendiera su funcionamiento
en cuanto apareara al primer conjunto de letras con otro (por ejemplo, abab parara al
leer la primera b sin aceptar, aun cuando la cadena est a bien formada). Para evitar esto le
agregaremos un smbolo de n de cadena a , que cuando el AFS lo vea, con Z
0
en el tope
de la pila, simplemente bote a Z. El AFS cuenta con un solo estado, tres posibles smbolos
de entrada y tres posibles smbolos en la pila.
5.1 Denici on 127
Ejemplo 5.4:
Resulta relevante preguntar: qu e pasa si el primer ejemplo lo hacemos con un solo
estado? Cambiara mucho el lenguaje aceptado por el AFS? Por supuesto, para compactar
al AFS del primer ejemplo a un solo estado, la manera de hacerlo pudiera ser la que se
muestra en la tabla 5.5:
Tabla 5.5 AFS que intenta reconocer a a
n
b
n
con un solo estado
Q

a b
q
Z (q, AZ)
0 (q, AA) (q, )
Qu e lenguaje es el que acepta ahora el aut omata dado por la tabla 5.5? No es el mismo,
pues ahora, si vuelven a venir a despu es de las b, el aut omata puede aceptar a la cadena.
El lenguaje que acepta este aut omata es
L = a
n
1
b
m
1
a
n
2
b
m
2
. . . a
n
k
b
m
k
donde j(1 j k :
j

i=1
n
i

j

i=1
m
i
)
y
k

i=1
n
i
=
k

i=1
m
i
Para justicar lo anterior, tratemos de seguir el comportamiento del AFS al reconocer
una cadena. El AFS acepta, como lo haca el anterior, a las cadenas de la forma a
n
b
n
.
Cuando el aut omata ve una a, simplemente registra el hecho de que vio una a m as, y
cuando ve una b, saca de la pila la a correspondiente. Si llegan b antes que a, la cadena es
rechazada. Si llegan m as a que b, el aut omata termina con una pila no vaca, y si llegan m as
b que a el aut omata trata de sacar de la pila smbolos cuando ya est a vaca, lo cual hace que
termine su operaci on sin haber terminado de examinar la cadena de entrada.
Sin embargo, la cadena aaabbabb tambi en es aceptada por este AFS y no responde a la
forma que dimos antes. En realidad, si unicamente tenemos un estado, siempre podemos
volver a leer a y mientras no intentemos aparear una b cuando no hay ninguna a en la pila,
no hay problema. En resumen, en todo momento tenemos que haber vistos m as a que b, y
al nal emparejar el n umero de a con el n umero de b.
Otro criterio de aceptaci on pudiera ser el que el aut omata termine en estado nal y
con la cadena de entrada agotada, similar al criterio en los aut omatas nitos. Veamos a
continuaci on algunos ejemplos que trabajan bajo este criterio.
128 Aut omatas con pila
Ejemplo 5.5:
Regresemos al lenguaje de los par entesis bien apareados; dise nemos un aut omata de
pila que acepte por estado nal que lo reconozca en la tabla 5.6.
Tabla 5.6 Aut omata que reconoce par entesis bien anidados por estado nal
Q

F
( )
q
0
Z
0
q
0
, IZ
0
q
E
, Z
0
q
f
, Z
0
0
I q
0
, II q
0
,
q
f
Z
0
1
I
q
E
Z
0
0
I
En este AFS tenemos la transici on con si es que llega a ver el smbolo del fondo de la
pila hacia el estado nal, que es el unico que acepta. Las transiciones que no est an denidas
ahora son hacia el estado de error, q
E
. Este AFS, a pesar de aceptar una cadena no termina
con su pila vaca.
De los ejemplos anteriores podemos ver la necesidad de un formalismo para describir
no solamente al AFS sino tambi en fotos instant aneas del funcionamiento del aut omata. Por
una foto instant anea queremos decir una descripci on lo m as exacta posible de la situaci on
del aut omata en un momento dado. A estas fotos instant aneas o descripciones instant aneas
las llamamos conguraciones y deben, en general, decirnos lo siguiente:
I. El estado en el que se encuentra el aut omata.
II. Una descripci on de la cadena que no ha sido procesada, estando en el extremo iz-
quierdo de la cadena el smbolo que en ese momento est a siendo examinado.
III. Una descripci on del contenido de la pila, listando todos y cada uno de los smbolos
en la pila, con el smbolo en el tope del stack en el extremo izquierdo de la cadena.
Denici on 5.1 Sean el alfabeto de entrada y el alfabeto de smbolos v alidos en la
pila. Una conguraci on en un AFS es una triada (q, aw, Z) donde q es el estado en el
que se encuentra el AFS, aw es la cadena que le falta por procesar, de la cual a es el smbolo
que est a viendo, a o bien , w

y Z es el contenido de la pila, del cual Z es el


smbolo en el tope de la pila, Z o bien ,

.
Si volvemos al ejemplo de la tabla 5.1, podemos hacer una lista de las conguraciones
por las que pasa el aut omata al reconocer la cadena aaabbb en la tabla 5.7. Listaremos del
lado izquierdo las conguraciones y del lado derecho la regla de transici on que nos permite
5.1 Denici on 129
pasar de esa conguraci on a la siguiente. Las conguraciones seguir an la denici on que
acabamos de dar. Las reglas ser an de la forma (q, a, Z) = (p, ), donde si = se
ejecuta un pop sobre la pila; si = Z quiere decir que el smbolo que estaba en el tope
se deja ah, y se coloca encima en la pila a la cadena .
Tabla 5.7 Conguraciones al reconocer a la cadena aaabbb
Conguraci on Regla
(q
1
, aaabbb, Z) (q
1
, a, Z) = (q
1
, 0)
(q
1
, aabbb, 0) (q
1
, a, 0) = (q
1
, 00)
(q
1
, abbb, 00) (q
1
, a, 0) = (q
1
, 00)
(q
1
, bbb, 000) (q
1
,b, 0) = (q
2
, )
(q
2
, bb, 00) (q
2
,b, 0) = (q
2
, )
(q
2
,b, 0) (q
2
,b, 0) = (q
2
, )
(q
2
, , )
Como se puede ver, la cadena es aceptada porque termina de ver smbolos en la cadena
de entrada al mismo tiempo que la pila est a vaca.
Veamos algunos ejemplos m as de reconocimiento por aut omatas de pila.
Ejemplo 5.6:
Tambi en con el primer ejemplo, veamos las conguraciones por las que pasa el AFS al
reconocer la cadena aaaabbbbab.
Tabla 5.8 Conguraciones al reconocer a la cadena aaabbbab
Conguraci on Regla
(q
1
, aaaabbbbab, Z) (q
1
, a, Z) = (q
1
, 0)
(q
1
, aaabbbab, 0) (q
1
, a, 0) = (q
1
, 00)
(q
1
, aabbbbab, 00) (q
1
, a, 0) = (q
1
, 00)
(q
1
, abbbbab, 000) (q
1
, a, 0) = (q
1
, 00)
(q
1
, bbbbab, 0000) (q
2
,b, 0) = (q
2
, )
(q
2
, bbbab, 000) (q
2
,b, 0) = (q
2
, )
(q
2
, bbab, 00) (q
2
,b, 0) = (q
2
, )
(q
2
, bab, 0) (q
2
,b, 0) = (q
2
, )
(q
2
, ab, ) (q
2
, a, Z) =
130 Aut omatas con pila
De las transiciones anteriores, y dado que el AFS termina sin agotar la cadena de entra-
da, la cadena es rechazada.
Ejemplo 5.7:
Del reconocedor de parejas de par entesis bien construidas, veamos las conguraciones
por las que pasa al reconocer la cadena ()((())()) en la tabla 5.9.
Tabla 5.9 Conguraciones del AFS al leer ()((())())
Conguraci on Regla
(q, ()((())()), Z) (q, (, Z) = (q, 0Z)
(q, )((())()), 0Z) (q, ), 0) = (q, )
(q, ((())()), Z) (q, (, Z) = (q, 0Z)
(q, (())()), 0Z) (q, (, 0) = (q, 00)
(q, ())()), 00Z) (q, (, 0) = (q, 00)
(q, ))()), 000Z) (q, ), 0) = (q, )
(q, )()), 00Z) (q, ), 0) = (q, )
(q, ()), 0Z) (q, (, 0) = (q, 00)
(q, )), 00Z) (q, ), 0) = (q, )
(q, ), 0Z) (q, ), 0) = (q, )
(q, , Z) (q, , Z) = (q, )
(q, , )
Dado que el aut omata suspende su funcionamiento con la pila vaca y la cadena de
entrada agotada, la cadena es aceptada.
Con el mismo AFS veamos las conguraciones por las que pasa el AFS al reconocer (()
en la tabla 5.10.
Tabla 5.10 Conguraciones al reconocer a la cadena (()
Conguraci on Regla
(q, ((), Z) (q, (, Z) = (q, 0Z)
(q, (), 0Z) (q, (, 0) = (q, 00)
(q, ), 00Z) (q, ), 0) = (q, )
(q, , 0Z) no est a denida
Como el AFS suspende su funcionamiento dejando smbolos en la pila, la cadena no
est a bien construida.
5.1 Denici on 131
Ejemplo 5.8:
Con el AFS del ejemplo 5.3, veamos las conguraciones por las que pasa el AFS al
reconocer la cadena bbabaaab.
Tabla 5.11 Conguraciones al reconocer a la cadena bbabaaab
Conguraci on Regla
(q, bbabaaab , Z) (q, b, Z) = (q, 1Z)
(q, babaaab , 1Z) (q, b, 1) = (q, 11)
(q, abaaab , 11Z) (q, a, 1) = (q, )
(q, baaab , 1Z) (q, b, 1) = (q, 11)
(q, baaab , 1Z) (q, b, 1) = (q, 11)
(q, aaab , 11Z) (q, a, 1) = (q, )
(q, aab , 1Z) (q, a, 1) = (q, )
(q, ab , Z) (q, a, Z) = (q, 0Z)
(q, b , 0Z) (q, b, 0) = (q, )
(q, , Z) (q, Z, ) = (q, )
(q, , ) aceptada
Volvamos al dise no de AFS.
Ejemplo 5.9:
Pensemos ahora en un reconocedor para las cadenas de la forma ww
R
tales que w
est a formada por combinaciones arbitrarias de a y b.
En t erminos generales, el AFS deber a, al leer a w, meter una copia de w a la pila. Al
reconocer w
R
deber a ir sacando de la pila un smbolo a la vez y compar andolo con el de
w
R
. Si el smbolo es el mismo, la cadena est a bien formada, y si no es as entonces el
AFS suspende su funcionamiento y la cadena es rechazada. Deberemos por lo tanto, tener
dos estados, uno que guarda a w y otro que compara lo que lee con lo que est a guardado.
Tenemos, hasta este momento, la tabla 5.12.
Cada uno de los estados de este AFS tiene una funci on bien identicada: el estado G
guarda y el estado C compara. Si en el estado G aparece una a o una b, el AFS guarda
una A o una B respectivamente. En el estado C, si el aut omata tiene en la pila una A y
en la cadena de entrada una a, la comparaci on es correcta. Lo mismo para el par (B,b). El
aut omata vaciara su pila en el estado C si cada uno de los smbolos en la pila puede ser
comparado exitosamente con cada uno de los smbolos de la cadena de entrada.
Pero, c omo pasa el aut omata al estado C? En otras palabras, c omo decide que w ya
termin o y que se debe disponer a reconocer w
R
? Una primera aproximaci on a la respuesta
sera la de ver que si w = xa, entonces la cadena ww
R
= xaax. De esto, podemos tratar
de encontrar en la cadena el centro de la misma, sabiendo que en el centro de la cadena
132 Aut omatas con pila
se encuentra una letra repetida, ya sea la a o la b. Pero si cada vez que encontramos una
letra repetida (denotada por alguna de las parejas (A, a) o (B, b) con el primer elemento
en el pila y el segundo en la cadena de entrada) nos transferimos al estado C, acabaramos
rechazando casi cualquier cadena que tuviera letras repetidas como subcadena de w (por
ejemplo, rechazaramos a la cadena baaabbaaab, que es una cadena bien construida).
Tabla 5.12 AFS parcial que reconoce ww
R
por estado nal
Q

F
a b
G
Z (G, A) (G, B)
0
A (G, AA) (G, BA)
B (G, AB) (G, BB)
C
Z
1 A (C, )
B (C, )
Sigamos el curso de acci on seguido en los aut omatas nitos, y denamos un AFS
no-determinista, que se transera simult aneamente al estado que guarda, pero que suponga
tambi en que no ha terminado con w. El AFS queda completamente denido en la tabla 5.13.
Tabla 5.13 AFS no-determinista que reconoce ww
R
por estado nal
Q

F
a b
G
Z {(G, A)} {(G, B)}
0
A
{(G, AA)
{(G, BA)}
(S, )}
B {(G, AB)}
{(G, BB),
(S, )}
S
Z
1
A {(S, )}
B {(S, )}
Veamos qu e pasa ahora, por ejemplo, al reconocer aabb siguiendo el arbol de la gu-
5.2 Formalizaci on 133
ra 5.1. La cadena es rechazada porque no se llega, por ning un posible camino en el arbol, a
pila vaca con cadena agotada.
Figura 5.1 Reconocimiento de aabb
(G, aabb, Z)
(G, abb, A)
(G, bb, AA)
(G, b, BAA)
(G, , BBAA) (S, , AA)
(S, bb, )
Ahora pasemos al reconocimiento de la cadena abba en el arbol de la gura 5.2. Como
por uno de los caminos se lleg o a pila vaca con cadena de entrada agotada, la cadena se
acepta.
Figura 5.2 Reconocimiento de abba
(G, abba, Z)
(G, bba, A)
(G, ba, BA)
(G, a, BBA)
(G, , BBAA)
(S, a, A)
(S, , )
134 Aut omatas con pila
5.2. Formalizaci on
Daremos una visi on m as formal, y por lo tanto manipulable matem aticamente, de lo
que es un aut omata de pila.
Denici on 5.2 Un aut omata nito de pila (AFS) P que acepta por estado nal es un
sistema
P = (Q, , , , q
0
, Z
0
, F)
donde:
Q es un conjunto nito de estados.
es un alfabeto llamado alfabeto de entrada.
es un alfabeto, llamado alfabeto de la pila.
q
0
Q es el estado inicial.
Z
0
es el smbolo en el fondo de la pila al empezar a funcionar el AFS.
F Q es el conjunto de estados nales.
es la funci on de transici on, denida como:
: Q

(Q

)
La interpretaci on para
(q, a, Z) = (p
1
,
1
), (p
2
,
2
), . . . (p
m
,
m
)
es que el AFS, estando en el estado q con el smbolo de entrada a al frente de la cadena de
entrada y Z en el tope de la pila, ejecuta las siguientes acciones:
i. Pasa simult aneamente a los estados p
1
, . . . , p
m
.
ii. Avanza la cabeza lectora y consume un smbolo.
iii. Quita del tope de la pila al smbolo Z.
iv. Para cada estado p
j
, coloca a
j
en el tope de la pila, colocando en este el smbolo
m as a la izquierda de
j
.
Cuando el AFS funciona agregando a la pila m as de un smbolo en una sola transici on
se dice que su funcionamiento es extendido.
La interpretaci on de (q, , Z) es similar a la anterior, excepto que la cabeza lectora
no avanza. Se realiza una transici on independientemente del smbolo que est a leyendo la
5.2 Formalizaci on 135
cabeza lectora, quedando ese smbolo todava disponible para leerse. Esto corresponde a
una transici on-.
Si alguna de las
j
= , entonces unicamente se elimina al smbolo en el tope de la pila.
Si se busca conservar a Z en la pila, la
j
deber a tener a Z como el ultimo smbolo de la
derecha.
Para describir un proceso de reconocimiento utilizaremos las conguraciones.
Usamos la notaci on
(q, aw, Z)
P
(p, w, ) si (q, a, Z) (p, )
(q, x, )

P
(p, w, ) si se puede llegar de la conguraci on (q, x, ) a la
conguraci on (p, w, ) en cero o m as pasos.
(q, x, )
+
P
(p, w, ) si se puede llegar de la conguraci on (q, x, ) a la
conguraci on (p, w, ) en uno o m as pasos.
(q, x, )
k
P
(p, w, ) si se puede llegar de la conguraci on (q, x, ) a la
conguraci on (p, w, ) en exactamente k pasos.
La letra P bajo el smbolo

se puede omitir si resulta obvio de cu al aut omata se
est a hablando.
Pasamos ahora a denir el lenguaje aceptado por un AFS, que puede ser de dos formas:
Denici on 5.3 L(M) lenguaje aceptado por estado nal:
L(M) = w

[ (q
0
, w, Z
0
)

(p, , ) para p F y

y N(M) lenguaje aceptado por pila vaca:


N(M) = w

[ (q
0
, w, Z
0
)

(p, , ), p Q
Formalmente, un aut omata nito de pila es determinista si
i. Para ning un estado q Q, ning un smbolo Z y ning un smbolo a , (q, a, Z)
contiene a m as de un elemento, y
ii. si (q, , Z) contiene a alg un elemento, entonces (q, a, Z) no deber a estar denida
para ning un smbolo a y Z .
El objetivo de la primera condici on es obvio. La segunda condici on evita que, con un
smbolo Z cualquiera en la pila y ante un smbolo de entrada, el AFS pueda elegir entre
ejecutar la transici on o ejecutar la transici on correspondiente al smbolo de entrada, lo
que lo convertira en un AFS no-determinista.
Si bien hemos estado trabajando todo el tiempo con AFS que aceptan por pila vaca, no
es difcil entender c omo funcionan los AFS que reconocen por estado nal. En el primer
caso el conjunto de estados nales no es relevante y se denota como el conjunto vaco y se
136 Aut omatas con pila
exige que la cadena de entrada haya sido agotada, adem as de exigir que la cadena que
queda en la pila sea tambi en vaca. De cualquier forma, ambos modelos son equivalentes,
que es lo que a continuaci on se va a demostrar. La demostraci on estar a dividida en dos
teoremas, el primero que construye un AFS que reconoce por pila vaca a partir del AFS
que reconoce por estado nal, y el segundo teorema que construye en el sentido inverso.
Teorema 5.1 Si L es L(M
2
) para alg un AFS M
2
que acepta por estado nal, entonces L
es N(M
1
) para alg un AFS M
1
que acepta por pila vaca.
Demostraci on:
Sea L un lenguaje aceptado por estado nal por un AFS M
2
= (Q, , , , q
0
, Z
0
, F).
Debemos construir el aut omata M
1
denido M
1
= (Q
1
, ,
1
,
1
, q

0
, X
0
, ) que acepta
por pila vaca. En principio lo que tenemos que hacer es que M
1
simule el comporta-
miento de M
2
hasta que M
2
llegue a un estado nal. En cuanto M
2
llega a un estado
nal, M
1
se transere a un estado especial que lo unico que hace es vaciar la pila. Para
esto

1
(q, a, Z) = (q, a, Z) para a , Z
y agregamos

1
(q, , Z) (q
e
, Z) para q F, Z y
1
(q
e
, , Z) = (q
e
, ) para Z
1
.
Pero supongamos que hay cadenas para las cuales M
2
queda con la pila vaca al terminar
de reconocerlas, pero no en estado nal, por lo que esas cadenas no son aceptadas por
M
2
. M
1
, funcionando paralelamente a M
2
, tambi en vaca su pila. Esto dara lugar a
confusi on, pues al decidir si la cadena es aceptada o no y vericar el contenido de la
pila de M
1
, esta est a vaca. Bajo el criterio de pila vaca la cadena se acepta pero es
rechazada bajo el criterio de estado nal de M
2
. Para evitar esto, hagamos que M
1
ponga
su propia marca en el fondo de la pila, un smbolo que M
2
no conoce y no tiene forma
de manipular. Entonces, al terminar M
2
con la pila vaca, M
1
no la tiene vaca, pues la
unica forma de remover esa marca es en el estado especial q
e
. As, le agregamos a M
1
un nuevo estado inicial q

0
con la transici on
1
(q

0
, , X
0
) = (q
0
, Z
0
X
0
). Formalmente:
Q
1
=Q q

0
, q
e

1
=

1
= X
0
tal que X
0
/

1
est a denida por las siguientes reglas:
1.
1
(q

0
, , X
0
) = (q
0
, Z
0
X
0
)
2.
1
(q, a, Z) incluye a los elementos de (q, a, Z),
q Q, a o bien a = , y Z
3. Para toda q F, y Z X
0
,
1
(q, , Z) (q
e
, )
4. Para toda Z Z
0
,
1
(q
e
, , Z) (q
e
, )
5.2 Formalizaci on 137
Nos falta demostrar que L(M
2
) = N(M
1
).
Sea x L(M
2
). Entonces
(q
0
, x, Z
0
)

M
2
(p, , ) con p F y

Veamos ahora lo que sucede con M


1
.
(q

0
, x, X
0
)
M
1
(q
0
, x, Z
0
X
0
)
Como x L(M
2
), ninguna transici on que efect ue M
2
puede vaciar la pila antes de agotar
la cadena de entrada, pues eso habra provocado que M
2
suspendiera su funcionamiento
sin aceptar, lo que es una contradicci on. Esto quiere decir que durante el reconocimiento
de x por M
2
siempre hay al menos un smbolo de en la pila. Como todas las transicio-
nes de M
2
fueron copiadas en M
1
, tambi en en M
1
podemos utilizar las transiciones
(q
0
, x, Z
0
X
0
)

M
1
(p, , X
0
)
Como p es estado nal, tenemos la transici on
(p, , Z) (q
e
, Z)
por lo que podemos tener lo siguiente:
(p, ,
1
X
0
)

M
1
(q
e
, ,
2
X
0
)

M
1
(q
e
, , )
x N(M
1
).
Similarmente, si x es aceptada por pila vaca, podemos demostrar que es aceptada por un
movimiento desde el estado inicial, que deja en el tope de la pila al smbolo Z
0
de M
2
.
Despu es deben ejecutarse reglas de las que se copiaron de uno a otro, y por ultimo la que
lo transere de un estado nal de M
2
al estado q
e
. Si a M
2
le alimentamos la cadena x
estando el AFS en q
0
, podemos utilizar las mismas reglas que en M
1
para llegar al estado
p, y en ese momento se acaba la cadena de entrada, por lo que x es aceptada por M
2
.
Teorema 5.2 Si L es N(M
1
) para alg un AFS que acepta por pila vaca, entonces L es
L(M
2
) para alg un aut omata M que acepta por estado nal.
Demostraci on:
Ahora lo que debemos hacer es que M
2
imite el comportamiento de M
1
y en cuanto M
1
vace su pila, que M
2
se transera a un estado nal. Pero para que M
2
pueda detectar
la pila de M
1
vaca, tiene que poner un smbolo propio en el fondo, de tal manera que
cuando M
2
vea a ese smbolo se transera al estado nal.
138 Aut omatas con pila
Formalmente, sea M
1
= (Q, , , , q
0
, X
0
, ) tal que L = N(M
1
). Construimos
M
2
= (Q q

0
, q
f
, , Z
0
,

, q

0
, Z
0
, q
f
)
con

denida como sigue:


1.

(q

0
, , Z
0
) = (q
0
, X
0
Z
0
)
2.

(q, a, Z) = (q, a, Z) para todo q Q, a y Z


3.

(q, , Z
0
) (q
f
, ) para todo q Q
La demostraci on de que los lenguajes son el mismo es similar a la anterior y se deja
como ejercicio.
Para demostrar la equivalencia entre el AFS que acepta por estado nal y el que acepta
por pila vaca nos basamos en que lo que sucede en el tope de la pila es independiente de
lo que se encuentra bajo ese tope. A continuaci on damos una demostraci on formal de esto.
Lema 5.3 Sea M = (Q, , , , q
0
, Z
0
, F) un AFS. Si (q, w, A)

(q

, , ) entonces
(q, w, A)

(q

, , ) para toda A y

.
Demostraci on:
La demostraci on es por inducci on sobre n, el n umero de pasos en el reconocimiento.
Base: (n = 1)
Si (q, a, A) (q

, , ) es porque (q, a, A) (q

, ). Entonces, si tenemos la congu-


raci on (q, a, A), aplicamos (q, a, A) y obtenemos la conguraci on (q, , ).
(q, a, A)

(q, , )
Inducci on: Supongamos el lema cierto para 1 k < n, y sea (q, w, A)
n
(q

, , ) para
A , w

.
Estos movimientos, desglosados, deben ser de la siguiente forma:
(q, w, A)
n
0
(q
j
1
, w
1
, X
1
X
2
. . . X
k
)

n
1
(q
j
2
, w
2
, X
2
. . . X
k
)
.
.
.
.
.
.

n
k1
(q
j
k
, w
k
, X
k
)

n
k
(q

, , )
donde k 1 y n
j
< n para 1 j k. Para garantizar esto, lo que hacemos es suponer
que la pila primero crece a un tama no de k smbolos, con k < n (pues en n pasos s olo
5.3 Traducci on 139
puedo quitar a lo m as n smbolos, un smbolo por paso; si al nal vaciamos la pila, lo
hicimos en a lo m as n pasos). Supongamos que me lleva n
0
pasos llegar a la situaci on
en que la pila contenga por primera vez k smbolos, n
1
pasos para que contenga k 1
smbolos, etc. Cada n
j
< n por el razonamiento anterior. Entonces, para cada n
j
es
posible la siguiente sucesi on de pasos:
(q, w, A)
n
0
(q
j
1
, w
1
, X
1
X
2
. . . X
k
)

n
1
(q
j
2
, w
2
, X
2
. . . X
k
)
.
.
.
.
.
.

n
k1
(q
j
k
, w
k
, X
k
)

n
k
(q

, , )
Excepto por el primer paso, en cada iteraci on se invoca la hip otesis de inducci on.
Para el primer paso, es claro que la pila, en ning un momento puede quedar vaca, pues
eso hara que el AFS suspendiera su funcionamiento. Por lo que en ese primer paso nunca
veremos nada que est e por debajo de A y entonces, si la pila empieza con debajo de A
esto no inuye el comportamiento en ese primer paso.
De forma similar se puede demostrar que si en un AFS dado se da (q, w, A)

(p, , )
entonces tenemos tambi en que (q, wx, A)

(p, x, ).
5.3. Traducci on con aut omatas de pila
Al igual que con los aut omatas nitos, podemos tener aut omatas de pila que no s olo re-
conozcan cadenas, sino que tambi en proporcionen una traducci on de las mismas, conforme
van reconociendo la cadena. Para esto extendemos la denici on del AFS a un sistema con
8 elementos, agreg andole un alfabeto de salida , y extendiendo el contra-dominio de la
funci on para que, dado un smbolo de entrada, un smbolo en el tope de la pila y un estado,
adem as de transferirse a otro estado y actualizar la pila, emita una cadena de salida.
Denici on 5.4 Un traductor con pila (ATS) es un sistema
P = (Q, , , , , q
0
, Z
0
, F)
donde Q, , , q
0
, Z
0
y F est an denidos como hasta ahora para los AFS, es un
conjunto nito de smbolos llamado el alfabeto de salida, y es ahora una funci on denida
de la siguiente manera: : Q Q

.
140 Aut omatas con pila
Denici on 5.5 Una conguraci on de P, ATS, es un cu adruplo (q, w, , z) donde q, w,
est an denidas como en los AFS, y z es la cadena emitida hasta este punto, con el smbolo
de la extrema derecha el ultimo emitido.
Si (q, a, Z) (p, , z) entonces decimos (q, aw, Z, y) (p, w, , yz).
Si el ATS es un aut omata que reconoce por pila vaca, decimos que y es una traducci on
de x si
(q
0
, x, Z
0
, )

(q, , , y) para alg un q Q, y

La traducci on denida por un ATS P, la denotamos:


(P) = (x, y) [ (q
0
, x, Z
0
, )

(q, , , y) para alg un q Q, y

, x

Siguen algunos ejemplos.


Ejemplo 5.10:
Sea P = (q, a, +, , +, , E, a, +, , , q, E, q) con denida por la tabla 5.14:
Tabla 5.14 Traductor de expresiones aritm eticas
Q
Tope Smbolo de Entrada
Pila a +
q E (q, , a) (q, EE+, ) (q, EE, )
+ (q, , +)
(q, , )
Veamos ahora que hace el ATS ante la cadena de entrada + aaa:
(q, + aaa, E, )

(q, aaa, EE+, )

(q, aaa, EE E+, )

(q, a, E+, aa)

(q, a, E+, aa)

(q, , +, aa a)

(q, , , aa a+)
5.3 Traducci on 141
El funcionamiento de este traductor es como sigue:
i. El aut omata empieza su funcionamiento con una E en el fondo de la pila, esperando
ver una expresi on.
ii. En todo momento trata de predecir la estructura de la expresi on. Por ejemplo, si ve
un operador, predice que le deben seguir dos operandos, por lo que coloca dos E en
el tope de la pila, con el operador en el fondo. Cada E corresponde a un operando,
que debe ser, a su vez, una expresi on.
iii. Conforme va viendo los operandos en la cadena de entrada, los va apareando con los
que tiene en la pila, sacando de la pila el smbolo correspondiente.
De cierta manera, el AFS est a generando el arbol correspondiente, y procede a aparear
desde las hojas hacia la raz. Como la raz de un arbol que representa a una expresi on
aritm etica es un smbolo E, este es el smbolo en el fondo de la pila cuando empieza el
reconocimiento.
Ejemplo 5.11:
Dise nemos un ATS que alimentado con una cadena arbitraria de ceros y unos produzca
como salida cadenas de la forma 0
n
1
m
, donde n es el n umero de ceros presente en la cadena
de entrada y m es el n umero de unos. En este caso la traducci on consistira en juntar a los
ceros de la cadena por un lado y los unos por otro. El plan de dise no podra ser el siguiente:
al ver el ATS un cero en la cadena de entrada, independientemente de lo que hubiese en
la pila, el ATS emite un cero. Al ver el ATS un uno, lo guarda en la pila. Al terminarse la
cadena de entrada, procede a sacar los unos que tena guardados en la pila. Para facilitar el
dise no y obtener un ATS determinista, agreguemos a la cadena un smbolo de n de cadena
para hacer m as sencillo el reconocimiento (). La funci on de transici on se encuentra en la
tabla 5.15.
Tabla 5.15 Traducci on de cadenas de 0 y 1 a 0
n
1
m
Q
Tope Smbolo de Entrada
Pila 0 1
M
Z
0
(M, Z
0
, 0) (M, 1Z
0
, )
1 (M, 1, 0) (M, 11, ) (S, 1, )
S
Z
0
(S, , )
1 (S, , 1)
El ATS que acabamos de dise nar es determinista y produce la salida deseada. Por ejem-
plo, la cadena 110001101 hace al ATS pasar por las conguraciones que se muestran en
la tabla 5.16.
142 Aut omatas con pila
Es claro que los resultados obtenidos para reconocedores con pila se extienden a tra-
ductores con pila, reri endonos a la equivalencia entre AFS que reconocen (traducen) por
pila vaca y los AFS (ATS) que lo hacen por estado nal.
Tabla 5.16 Reconocimiento de 10001101
(M, 110001101, Z
0
, )

(M, 10001101, 1Z
0
, )

(M, 0001101, 11Z


0
, )

(M, 001101, 11Z


0
, 0)

(M, 01101, 11Z


0
, 00)

(M, 1101, 11Z


0
, 000)

(M, 101, 111Z


0
, 000)

(M, 01, 1111Z


0
, 000)

(M, 1, 1111Z
0
, 0000)

(M, , 11111Z
0
, 0000)

(S, , 11111Z
0
, 0000)

(S, , 1111Z
0
, 00001)

(S, , 111Z
0
, 000011)

(S, , 11Z
0
, 0000111)

(S, , 1Z
0
, 00001111)

(S, , Z
0
, 000011111)

(S, , , 000011111)
Hay que notar, sin embargo, que si bien un ATS puede siempre producir una cadena de
salida, antes de dar por buena la traducci on habra que vericar si cumpli o con su condici on
de aceptaci on de la cadena de entrada al terminar o suspender su traducci on, y no dar por
buena esa traducci on en tanto no se coteje que el reconocimiento tuvo exito. Por ejemplo,
si pensamos en un ATS que reconozca a las cadenas de la forma w2w
R
con w (0 +1)

y
adem as emita una cadena de la forma 0
n
1
m
donde n y m son como en el ejemplo anterior,
podra suceder que el ATS emitiera una cadena sin que la cadena que se est a reconociendo
est e bien construida. El ATS estara denido por dos estados, uno que guarde y cuente a w,
y otro que reconozca a w
R
. Se muestra el ATS en la tabla 5.17.
5.4 Ciclos en los AFS 143
Tabla 5.17 Traductor de w2w
R
, w (0 + 1)

a 0
n
1
m
Q

0 1 2
G
Z
0
(G, 0, 0) (G, 1, ) (R, Z
0
, )
0 (G, 00, 0) (G, 10, ) (R, 0, )
1 (G, 01, 0) (G, 11, ) (R, 1, )
Z
0

R 0 (R, , )
1 (R, , 1)
Como se puede ver, el aut omata podra haber contado unos, emitido algunos ceros, y
que sin embargo la cadena de entrada no estuviera bien formada.
5.4. Ciclos en los aut omatas de pila
Un peligro que existe con un AFS es el que puede operar indenidamente sin parar
nunca. Se puede dar el caso de un AFS que meta un smbolo en la pila ante una entrada ,
y no se transera de estado. Esto hara que el AFS se quedara atrapado en ese estado y sin
avanzar la cadena de entrada. O bien que circulara entre varios estados tambi en con transi-
ciones denidas para , metiendo y sacando smbolos de la pila, pero teniendo siempre el
mismo smbolo en el tope cuando regresa a un cierto estado. Veamos por ejemplo el AFS
denido por la tabla 5.18.
Tabla 5.18 AFS con conducta cclica
Q

0 1
q
Z
0
(q, AZ
0
) (q, BZ
0
)
A (q, BA) (q, )
B (q, BB)
144 Aut omatas con pila
Este AFS, ante la cadena de entrada 001, simplemente pasa por las conguraciones que
se ven en la tabla 5.19.
Tabla 5.19 Conguraciones cclicas
(q, 001, Z
0
)

(q, 01, AZ
0
)

(q, 1, BAZ
0
)

(q, 1, BBAZ
0
)

(q, 1, BBBAZ
0
)

(q, 1, BBBBAZ
0
)

(q, 1, BBBBBAZ
0
)

(q, 1, BBBBBBAZ
0
)
.
.
.
El ciclo podra consistir de idas y venidas de un estado a otro, en el que un estado mete
algo a la pila mientras el otro lo saca, pero sin avanzar la cadena de entrada, que es la
principal caracterstica del ciclo. O sea que ninguna de las condiciones que hacen que el
AFS suspenda su ejecuci on se pueden dar: que la cadena de entrada se agote o bien que se
intente sacar algo de una pila vaca. Hay que notar que si no se tienen transiciones-, los
ciclos no se pueden dar ya que nalmente se agotar a la cadena de entrada.
Denici on 5.6 Una conguraci on (q, w, ) de un AFS P es cclica si para todo entero
positivo j, existe una conguraci on (p
j
, w,
j
) tal que [
j
[[ [ y
(q, w, )

(p
1
, w,
1
)

(p
2
, w,
2
)

. . . . . .

(p
j
, w,
j
)

. . . . . .
Entonces, una conguraci on es cclica si P puede hacer un n umero innito de movi-
mientos ante la cadena vaca (sin avanzar la cadena de entrada) sin acortar nunca su lista en
la pila. Esta lista puede crecer indenidamente o bien circular entre varias listas distintas.
N otese que se puede llegar a una conguraci on cclica desde una conguraci on no cclica
con varias transiciones de por medio.
Si un AFSD P entra a una conguraci on cclica en medio de una cadena de entrada, P
ya no va a usar ning un smbolo de su cadena de entrada y no va a parar nunca.
En compilaci on este problema no es de preocupar, pues existe un algoritmo (que no
vamos a ver por el momento) que detecta y elimina conguraciones cclicas en un AFS, sin
alterar el lenguaje aceptado.
5.5 AFS de un estado 145
5.5. Aut omatas de pila con un solo estado
En la presentaci on de los aut omatas de pila vimos muchos ejemplos donde el dise no del
AFS era con un unico estado. Esto no es casual. Existe una cierta relaci on entre el n umero
de estados del aut omata y los smbolos que forman parte del alfabeto de la pila. De hecho,
cualquier AFS lo podemos convertir a uno que funcione con un unico estado, transforman-
do al alfabeto para que consista de triadas [q
i
Aq
j
] donde este smbolo pretende capturar
que al estar en el estado q
i
con A en el tope de la pila, pasar a al estado q
j
. Las transiciones
en el AFS original est an denidas de la siguiente manera:
(q
i
, a, A) (q
j
, B
1
. . . B
k
) con k 0
donde k = 0 signica que se elimina al smbolo en el tope de la pila. Las transiciones en el
nuevo aut omata de un unico estado representado por , estar an determinadas de la siguiente
manera:
(, a, [q
i
Aq
j
k
]) (, [q
j
B
1
q
j
1
][q
j
1
B
2
q
j
2
] . . . [q
j
m1
B
k
q
j
k
]
para k ,= 0. Se deber an construir todas las posibles cadenas de este tipo usando todas las
parejas de estados posibles. Las restricciones son:
i Dada la transici on original, q
i
debe ser el primer elemento de la triada que corres-
ponde al smbolo actual en el tope de la pila, y q
j
debe ser el primer elemento de
la primera triada en el destino, del smbolo que va a quedar en el tope de la pila una
vez hecha la transici on.
ii El tercer elemento del i- esimo smbolo debe coincidir con el primer elemento del
smbolo i + 1 en la cadena que se coloca en la pila en el nuevo AFS.
Si = , la transici on quedara simplemente de la siguiente manera:
(, a, [q
i
Aq
j
]) (, )
La intenci on de c omo se conforma en el nuevo AFS tiene que ver con la noci on de
que el AFS tiene que vaciar su pila, pero no sabemos la sucesi on precisa de estados que
use para ello. Por lo tanto, cada primer smbolo de cada una de las triadas representa el
estado en el que va a quedar el AFS con el segundo elemento en el tope de la pila, y el
tercer elemento de la triada nos indica el estado en el que quedar a el AFS una vez que haya
logrado quitar a B
i
del tope de la pila.
Se puede demostrar f acilmente que esta construcci on entrega un AFS con un unico
estado que acepta por pila vaca.
146 Aut omatas con pila
Lema 5.4 Sea M = (Q, , , , q
0
, Z
0
, ) un aut omata de pila tal que L=N(M). En-
tonces existe M

= ( , ,

, , Z

0
, ) con un unico estado tal que los lenguajes
aceptados son el mismo, esto es, N(M) = N(M

).
Demostraci on:
Hacemos la construcci on que indicamos arriba de M

un AFS con un unico estado y que


reconoce por pila vaca. Falta por demostrar que N(M

) = N(M).
Para demostrar que N(M) = N(M

), demostraremos, por inducci on en el n umero de


movimientos de M que
(, x, [qAp])

M
(, , ) (q, x, A)

M
(p, , )
= Por inducci on sobre i, el n umero de pasos en el reconocimiento, demostraremos que
(q, x, A)
i
M
(p, , ) =(, x, [qAp])
i
M
(, , )
Base: Para i=1 quiere decir que [x[=1 o x=. Si [x[=1, tenemos (q, x, A)
1
M
(q, , ),
pero como x es un solo smbolo, esto quiere decir que (q, x, A) (p, ).
Por construcci on de M

, tenemos que la transici on (, x, [qAp]) contiene a (, ), de


donde (, x, [qAp])
1
M
(, , ).
Inducci on: Supongamos que i > 1 y que para todo reconocimiento de menos de i pasos
tenemos
(q, y, A)
j
M
(p, , ) = (, y, [qAp])
j
M
(, , ), j < i
Sea x = ay reconocida por M en exactamente i pasos, de donde tenemos que
(q, ay, A)
M
(q
1
, y, B
1
B
2
. . . B
m
)

M
(p, , )
Si reescribimos y = y
1
y
2
. . . y
m
podemos pensar que y
j
tiene la propiedad de, si es
empezada a leer con B
j
en el tope de la pila, de sacar a B
j
de la pila en un n umero
arbitrario de movimientos (que no puede ser mayor a i 1). Entonces, podemos tener la
siguiente sucesi on de conguraciones:
(q
1
, y
1
y
2
. . . y
m
, B
1
B
2
. . . B
m
)
M
(q
2
, y
2
. . . y
m
, B
2
. . . B
m
)

M
(q
3
, y
3
. . . y
m
, B
3
. . . B
m
)
.
.
.

M
(q
j
, y
j
. . . y
m
, B
j
. . . B
m
)

M
(q
m+1
= p, , )
Como para pasar de la conguraci on (q
j
, y
j
. . . y
m
, B
j
. . . B
m
) a la siguiente congura-
ci on (q
j+1
, y
j+1
. . . y
m
, B
j+1
. . . B
m
) lleva menos de i pasos, y como lo que sucede en el
5.5 AFS de un estado 147
fondo de la pila, as como la cadena que no se ha ledo, no inuyen en el funcionamiento
del AFS, podemos ignorar lo que est a bajo el smbolo B
j
y a la derecha de la cadena y
j
y escribir
(q
j
, y
j
, B
j
)

M
(q
j+1
, , )
y como esto es en menos de i pasos, por la hip otesis de inducci on tenemos que
(, y
j
, [q
j
B
j
q
j+1
])

M
(, , ) para 1 j < m
El primer movimiento de M en el reconocimiento fue
(q, ay, A)
M
(q
1
, y, B
1
B
2
. . . B
m
)
De esto sabemos que
(q, a, A) (q
1
, B
1
B
2
. . . B
m
)
De esto, y por construcci on de M

, tenemos las transiciones:


(, a, [qAq
m+1
]) (, [q
1
B
1
q
2
][q
2
B
2
q
3
] . . . [q
m
B
m
q
m+1
])
por lo que tenemos el siguiente reconocimiento en M

:
(, ay
1
y
2
. . . y
m
, [qAq
m+1
])
M
(, y
1
y
2
. . . y
m
, [q
1
B
1
q
2
][q
2
B
2
q
3
] . . . [q
m
B
m
q
m+1
])

M
(, y
2
. . . y
m
, [q
2
B
2
q
3
] . . . [q
m
B
m
q
m+1
])
.
.
.

M
(, y
m
, [q
m
B
m
q
m+1
])

M
(, , )
que es lo que se quera demostrar.
= Supongamos ahora que (, x, [qAp])

M
(, , ) y demostraremos que entonces
(q, x, A)

M
(p, , ). La demostraci on ser a nuevamente por inducci on en el n umero
de pasos en el reconocimiento por M

.
Base: Para i = 1, esto quiere decir que [ x [ 1, o sea que x es un smbolo del alfabe-
to o bien x = . (, x, [qAp])
1
M
(, , ) en un solo paso, quiere decir que tenemos

(, x, [qAp]) (, ). Por c omo construimos

, signica que (q, x, A) (p, ), por


lo que tenemos el reconocimiento (q, x, A)
1
M
(p, , ) en M.
Inducci on: Supongamos que si (, x, [qAp])
j
M
(, , ), con j<i pasos en el reconoci-
miento, entonces (q, x, A)

M
(p, , ).
148 Aut omatas con pila
Sea x = ay y supongamos que (, ay, [qAp])
k
M
(, , ) con un primer paso en el
reconocimiento:
(, ay, [qAp])
M
(, y, [q
1
B
1
q
2
][q
2
B
2
q
3
] . . . [q
m
B
m
p])

M
(, , )
Si reescribimos y = y
1
y
2
. . . y
m
, donde
(, y
j
y
j+1
. . . y
m
, [q
j
B
j
q
j+1
][q
j+1
B
j+1
q
j+2
. . . [q
m
B
m
p])

M
(, y
j+1
. . . y
m
, [q
j+1
B
j+1
q
j+2
. . . [q
m
B
m
p])
en menos de i pasos; y como la cadena que a un no hemos ledo y lo que pasa en el fondo
de la pila no inuyen en el comportamiento de M

, podemos decir que


(, y
j
, [q
j
B
j
q
j+1
])

M
(, , )
en menos de i pasos, por lo que por la hip otesis de inducci on podemos decir que entonces
(q
j
, y
j
, B
j
)

M
(q
j+1
, , )
Si en cada uno de estos movimientos insertamos la cadena B
j+1
. . . B
m
abajo de B
j
,
tenemos:
(q
j
, y
j
, B
j
B
j+1
. . . B
m
)

M
(q
j+1
, , B
j+1
. . . B
m
)
Como tampoco inuye en el comportamiento de M, en un momento dado, smbolos que
no ha ledo (a la derecha) tambi en podemos pegarle a la cadena de entrada la cadena
formada por y
j+1
. . . y
m
, quedando lo siguiente:
(q
j
, y
j
y
j+1
. . . y
m
, B
j
B
j+1
. . . B
m
)

M
(q
j+1
, y
j+1
. . . y
m
, B
j+1
. . . B
m
)
Por el primer paso en el reconocimiento de x por M

y por c omo se construy o M

,
sabemos que
(q, ay, A)

M
(q
1
, y
1
. . . y
m
, B
1
. . . B
m
)

M
(q
2
, y
2
. . . y
m
, B
2
. . . B
m
)

M
(p, , )
para demostrar nalmente la igualdad de los lenguajes
N(M

) = N(M)
Veamos un ejemplo de esta transformaci on. Tenemos el aut omata de pila
P = (Q, , , , q
m
, Z
0
) que reconoce L = a
n
b
m
; n m 0, dado por la siguiente
tabla de transiciones:
Q

a b
q
m
Z
0
q
m
, AZ
0
q
s
,
q
s
,
A q
m
, AA q
s
,
q
s
Z
0
q
s
,
A q
s
, q
s
,
5.5 AFS de un estado 149
El patr on para el estado inicial de este aut omata de pila es
_
q
m
Z
0
_
ya que:
i. El estado inicial del aut omata original es q
m
al empezar el reconocimiento.
ii. El smbolo en el tope de la pila al empezar el reconocimiento es Z
0
.
iii. Debemos predecir el estado en el que va a quedar el AFS cuando vace la pila, esto
es, cuando quite a Z
0
y todo lo que se coloque en la pila encima de Z
0
. Combinatoria-
mente hablando, como no sabemos qu e cadena de entrada vamos a tener, generamos
dos posibles smbolos para que se encuentren en la pila al iniciar el reconocimiento.
_
q
m
Z
0
q
m

y
_
q
m
Z
0
q
s

Sin embargo, podemos observar que cuando el AFS quita a smbolos de la pila, en to-
dos los casos, pasa al estado q
s
, por lo que la tripleta
_
q
m
Z
0
q
m

no es factible, ya que
el aut omata no puede seguir en q
m
si es que quita un smbolo. Por ello, unicamente
usamos la tripleta
_
q
m
Z
0
q
s

como smbolo inicial en el fondo de la pila.


Decidido el smbolo en el fondo de la pila, podemos denir ya formalmente el nuevo
aut omata P

= (, ,

, , [q
m
Z
0
q
s
], ) de un solo estado, de la siguiente forma:
i. De
_
q
m
, a, Z
0
_
=
_
q
m
, AZ
0
_
, tenemos que estando en el estado q
m
con Z
0
en el
tope de la pila, vamos a quedar en q
m
con A en el tope de la pila, y abajo de la A se
encuentra en la pila Z
0
, por lo que del lado izquierdo para tenemos el patr on:

_
, a,
_
q
m
Z
0
__
donde tenemos que llenar con todos los posibles estados del aut omata, que en es-
te caso unicamente son q
m
y q
s
. Pero ya argumentamos por qu e el smbolo
_
q
m
Z
0
q
m

nunca aparece en la pila, por lo que unicamente trabajamos con


_
q
m
Z
0
q
s

, y lo pone-
mos como rengl on en la tabla. y ponemos como renglones en la tabla:
_
,
_
q
m
Z
0
q
s
__
Para esta transici on del aut omata, tenemos que llenar el patr on:
_
,
_
q
m
A
__
Z
0
q
s
__
donde el estado en puede ser q
m
o q
s
, quedando el primer rengl on de nuestra
tabla de la siguiente manera:
150 Aut omatas con pila
Q

a b
[q
m
Z
0
q
s
]
_
[q
m
Aq
m
][q
m
Z
0
q
s
],
[q
m
Aq
s
][q
s
Z
0
q
s
]
_
.
.
.
.
.
.
ii. Como la transici on (q
m
, b, Z
0
) no est a denida en P, queda indenida en P

.
iii. De la transici on (q
m
, , Z
0
), nuevamente tenemos que

(, , [q
m
Z
0
q
s
]) = ,
y agregamos esa entrada en la tabla en el primer rengl on.
Q

a b
[q
m
Z
0
q
s
]
_
[q
m
Aq
m
][q
m
Z
0
q
s
],

[q
m
Aq
s
][q
s
Z
0
q
s
]
_
.
.
.
.
.
.
iv. Trabajemos ahora con la transici on (q
m
, a, A) = (q
m
, AA). El patr on que induce
esta transici on es el siguiente:

_
, a,
_
q
m
A
__
=
_
,
_
q
m
A b
__
cA
__
5.5 AFS de un estado 151
Por lo que agregamos a la tabla los renglones:
Q

a b
.
.
.
.
.
.
.
.
.
.
.
.

_
q
m
Aq
m

_
_
q
m
Aq
m
_
q
m
Aq
m

,
_
q
m
Aq
s
_
q
s
Aq
m

_
q
m
Aq
s

_
_
q
m
Aq
m
_
q
m
Aq
s

,
_
q
m
Aq
s
_
q
s
Aq
s

_
.
.
.
.
.
.
v. De la transici on (q
m
, b, A) = (q
s
, ) agregamos a la tabla, en el rengl on
_
q
m
Aq
s

,
columna b la entrada .
Q

a b
.
.
.
.
.
.
.
.
.
.
.
.

_
q
m
Aq
s

_
_
q
m
Aq
m
_
q
m
Aq
s

_
q
m
Aq
s
_
q
s
Aq
s

_
.
.
.
.
.
.
.
.
.
.
.
.
vi. Las transiciones (q
s
, a, Z
0
), (q
s
, b, Z
0
) y (q
s
, a, A) no est an denidas en el aut oma-
ta original, por lo que no aportan nada a la tabla.
vii. La transici on (q
s
, , Z
0
) = (q
s
, ) se convierte en

(, ,
_
q
s
Z
0
q
s

) = , y se agrega
un nuevo rengl on a la tabla:
152 Aut omatas con pila
Q

a b
.
.
.
.
.
.
.
.
.
.
.
.

_
q
s
Z
0
q
s


.
.
.
.
.
.
.
.
.
.
.
.
viii. Por ultimo, las transiciones (q
s
, b, A) = (q
s
, ) y (q
s
, , A) = (q
s
, ) agregan el
rengl on
_
q
s
Aq
s

a la tabla, con las entradas correspondientes igual a . El AFS de un


solo estado se puede ver en la tabla a continuaci on.
Q

a b

_
q
m
Z
0
q
s

_
[q
m
Aq
m
][q
m
Z
0
q
s
],

[q
m
Aq
s
][q
s
Z
0
q
s
]
_

_
q
m
Aq
m

_
_
q
m
Aq
m
_
q
m
Aq
m

,
_
q
m
Aq
s
_
q
s
Aq
m

_
q
m
Aq
s

_
_
q
m
Aq
m
_
q
m
Aq
s

_
q
m
Aq
s
_
q
s
Aq
s

_
q
s
Z
0
q
s

_
q
s
Aq
s


Se deja como ejercicio ver las conguraciones por las que pasan ambos aut omatas al
reconocer a una cadena dada.
Pasamos ahora a ver la relaci on que existe entre los aut omatas nitos de pila y los
lenguajes libres del contexto.
Lenguajes libres
del contexto
6
Presentamos en este captulo distintas transformaciones que se pueden ha-
cer a gram aticas que tienen un unico smbolo no terminal del lado izquierdo
de la producci on. Las transformaciones que se hacen permiten limpiar una
gram atica libre del contexto para poderla llevar a las dos formas normales, la
de Chomsky y la de Greibach. Estas formas normales son importantes para de-
mostrar la equivalencia entre aut omatas de pila y lenguajes libres del contexto.
Tambi en sirven de base, en el siguiente captulo, para demostrar propiedades
de los lenguajes libres de contexto y caracterizarlos de mejor manera.
6.1. Recapitulaci on
Denici on 6.1 Una gram atica G = (N, T, P, S) es una gram atica libre del contexto o
tipo 2 si sus producciones son de alguna de las siguientes formas:
S
A
con S y A N, S smbolo inicial y [ A [[ [, (N T)
+
y si la producci on S
est a en la gram atica, S no aparece del lado derecho de ninguna producci on.
154 Lenguajes libres del contexto
Se utiliza

= para denotar una derivaci on en la gram atica G que desde produce
. Como en las gram aticas regulares, se utilizan tambi en arboles para representar deriva-
ciones.
Una gram atica libre del contexto es ambigua si para una misma cadena existen dos o
m as arboles de derivaci on distintos.
6.2. Manipulaci on de gram aticas libres del contexto
Trataremos ahora de extender el formato de las producciones de las gram aticas libres
del contexto, pero claro que sin disminuir la capacidad generativa de las mismas, al mismo
tiempo que damos m as libertad en el dise no de gram aticas que generen lenguajes libres
del contexto. Partimos entonces de gram aticas que no responden exactamente al formato
que acabamos de dar para sus producciones, pero que mantienen la regla de que el lado
izquierdo consiste de un unico smbolo no terminal. El objetivo de este tipo de simplica-
ciones es la de llevar a las gram aticas a que cumplan con la especicaci on dada y, m as a un,
que las producciones puedan tomar formas can onicas o normales que juegan el papel de
facilitar un manejo m as autom atico de los lenguajes libres del contexto, as como tener m as
herramientas para demostrar propiedades de las mismas.
Un primer paso en esta simplicaci on es la de lograr que en una gram atica G se pre-
senten las siguientes propiedades:
1. Cada smbolo terminal y cada smbolo no-terminal aparece en la derivaci on de alguna
palabra de L (smbolos alcanzables).
2. Todo smbolo no terminal produce una cadena de smbolos terminales (A

=,
A N, T

todos son smbolos vivos ).


3. No hay ninguna producci on de la forma AB, con A y B no terminales (produc-
ciones unitarias).
4. La producci on S aparece solamente si S es el smbolo inicial, la palabra vaca
forma parte del lenguaje y S no aparece del lado derecho de ninguna producci on.
El objetivo de la primera regla es no tener smbolos que nunca van a ser utilizados, pues
en derivaciones desde el smbolo inicial nunca apareceran.
El objetivo de la segunda regla es no tener smbolos no terminales que no son capaces de
producir cadenas terminales, ya que ninguna derivaci on de cadenas terminales los utiliza.
El objetivo de la tercera regla es no tener producciones que lo unico que hacen es
cambiar el nombre del smbolo sin que se avance en la derivaci on.
Por ultimo, la cuarta regla nos permite que las derivaciones no sean contrables, esto es,
que alcanzado un cierto tama no en una forma sentencial, esta no se acorte por la sustituci on
de alg un smbolo por .
Procedemos a demostrar que una gram atica libre de contexto puede cumplir con estas
restricciones.
6.2 Manipulaci on de GLC 155
Teorema 6.1 Dada una gram atica G = (N, T, P, S) libre del contexto que genera un
lenguaje no vaco, es posible encontrar una gram atica G

= (N

, T, P

, S) libre del con-


texto, equivalente, tal que para toda no-terminal A N

, existe una cadena w T

tal
que A

=w.
Demostraci on:
Cada variable A que aparece en una producci on de la forma Aw, claramente perte-
nece a N

. Si AX
0
X
1
. . . X
k
es una producci on en P, donde cada X
i
es o bien
un smbolo terminal o un smbolo no-terminal que ya est a en N

, entonces se pue-
de derivar una cadena terminal desde A a trav es de una derivaci on que empieza con
A = X
0
X
1
. . . X
k
y posteriormente utiliza cada una de las X
i
para generar w
i
,
X
0
X
1
. . . X
k
= . . .

= w
0
w
1
. . . w
k
= w, para producir cadenas terminales des-
de A. Entonces A pertenece a N

. El conjunto N

se puede calcular por un algoritmo


simple iterativo. P

es el conjunto de todas las producciones cuyos smbolos est an en


N

T. El algoritmo que construye a N

est a en el algoritmo 6.1.


Algoritmo 6.1 Construcci on de N

sin smbolos muertos


1: V IEJO
N
:= ;
2: NUEV O
N
:= A [ A w para alguna w T

;
3: Mientras V IEJO
N
,= NUEV O
N

4: V IEJO
N
:= NUEV O
N
;
5: NUEV O
N
:= V IEJO
N
A [ A para alguna
(T V IEJO
N
)

6: // mientras sean distintos


7: N

:= NUEV O
N
Este algoritmo encuentra a todas las no-terminales A que pertenecen a N

. Seguramente
si A es agregada a NUEV O
N
en la lnea (2) o en la lnea (5), entonces A produce
una cadena terminal. Faltara por demostrar que en N

logramos colocar, mediante este


algoritmo a todas las no-terminales que producen una cadena terminal. La demostraci on
se har a por inducci on en el n umero de pasos en la derivaci on de A

=w.
Base:: Si A=w en un solo paso, quiere decir que la producci on Aw est a en P,
por lo tanto, A es incluida en N

en el paso (2) del algoritmo.


Inducci on: La hip otesis de inducci on es que si X

=w en menos de k pasos, entonces
X fue introducido a N

durante la ejecuci on del algoritmo.


Sea A

=X
0
X
1
. . . X
k

=w por una derivaci on de k pasos, k > 1. Podemos rees-


cribir w como w
0
w
1
. . . w
k
, donde X
j

=w
j
, para 1 j k, con derivaciones de
menos de k pasos (pues un paso es el primero para producir las X
j
). Por la hip otesis de
inducci on, aquellas X
j
que son no-terminales producen w
j
en menos de k pasos, por lo
156 Lenguajes libres del contexto
que fueron agregadas a N

. Supongamos que estamos en la iteraci on en la cual la ultima


de las X
j
es agregada a N

. En este momento, el proceso de iteraci on controlado en la


lnea (3) no puede suspenderse pues V IEJO
N
no es igual a NUEV O
N
, ya que pre-
cisamente la ultima X
j
que se acaba de agregar no est a en V IEJO
N
. Por lo tanto, la
iteraci on debe ejecutarse una vez m as, y dado que todo el lado derecho de la producci on
AX
0
X
1
. . . X
k
contiene smbolos terminales o smbolos no-terminales que ya se
encuentran en N

, la A es agregada a N

.
Nos quedara por demostrar que G

as construida genera el mismo lenguaje que G, esto


es L(G) = L(G

). Sea N

el conjunto calculado en la lnea (7) del algoritmo y P

todas
las producciones cuyos smbolos est an en N

T.
L(G

) L(G) : Es claro que L(G

) L(G) pues si A N

entonces A

=w para
alguna w. Tambi en como cada derivaci on en G

es una derivaci on en G, las producciones


usadas para derivaciones en G

son un subconjunto de las producciones de P.


L(G) L(G

) : Esto lo demostraremos por contradicci on. Supongamos ahora que exis-


te w L(G) tal que w / L(G

). Entonces cualquier posible derivaci on de w en G debe


involucrar a alguna no-terminal que est e en N N

o alguna producci on en P P

(y
que si no est a en P

es porque tiene alguna no-terminal que no est a en N

). Pero entonces
hay alguna no-terminal en N N

que genera una cadena terminal, una contradicci on,


pues vimos que todas las que generan cadenas terminales est an en N

.
Teorema 6.2 Dada una gram atica G = (N, T, P, S) libre del contexto, podemos ecien-
temente encontrar una gram atica G

= (N

, V

, P

, S) libre del contexto equivalente tal


que para cada X (N

) existen , (N

para las cuales S



=X.
Demostraci on:
El conjunto N

se construye con un algoritmo iterativo, parecido al del teorema


anterior. Se empieza por colocar a S en N

. Si A N

y tenemos en P las producciones


A
1
, A
2
, . . . , A
k
, todos los smbolos terminales que est en en
j
,
1 j k se agregan a V

, y todas las no-terminales que se encuentren en las


j
son agregadas a N

. P

es el conjunto de producciones de P que contienen unicamente


smbolos de N

.
La especicaci on precisa de este algoritmo, as como la demostraci on de su correctud se
deja como ejercicio.
Si aplicamos primero la construcci on del teorema 6.1 libramos a la gram atica de todos
su smbolos muertos, esto es, que no producen cadenas terminales. Al aplicar el algoritmo
del teorema 6.2, libramos a la gram atica de todos sus smbolos inalcanzables, esto es, que
no se puede llegar a ellos desde el smbolo inicial. En el caso de este tipo de simplicacio-
nes, el orden de los factores s altera el producto. A continuaci on damos un ejemplo de una
6.2 Manipulaci on de GLC 157
gram atica en la que si no se respeta el orden de simplicaci on, la gram atica resultante no
est a realmente liberada de producciones y/o smbolos in utiles.
Ejemplo 6.1:
Sea G una gram atica libre del contexto con las siguientes producciones:
S AB (1) S a (2) A a (3)
Apliquemos el algoritmo para encontrar N

del primer teorema:


Asignaci on Hecha en la lnea:
V IEJO
N
(1 :)
NUEV O
N
A, S (2 :)
V IEJO
N
A, S (2 :)
NUEV O
N
A, S (5 :)
N

A, S (7 :)
De la aplicaci on del algoritmo, encontramos que B no produce ninguna cadena ter-
minal, por lo que la producci on n umero (1) es quitada de la gram atica y nos quedamos
unicamente con las producciones (2) y (3).
Aplicando ahora el algoritmo del segundo teorema, obtendramos, sucesivamente los
siguientes conjuntos:
Conjuntos: De acuerdo a la producci on:
N

= S por construcci on
V

=
N

= S Sa
V

= a
Al terminar, nos quedamos unicamente con la gram atica cuya unica producci on
es Sa.
Si ahora aplicamos primero el segundo teorema a las 3 producciones originales, obte-
nemos, sucesivamente los siguientes conjuntos.
158 Lenguajes libres del contexto
Conjuntos: De acuerdo a la producci on:
N

= S por construcci on
V

=
N

= S, A, B
V

= a S AB
S a
N

= S, A, B
V

= a S AB
S a
A a
Como se puede ver, despu es de la aplicaci on a esta gram atica del segundo teorema, nos
quedamos con las mismas producciones y los mismos smbolos terminales y no-terminales.
Al aplicar el primer teorema, como en el caso anterior, nos quedamos con dos producciones,
la (2) y la (3), pero la producci on (3) es in util, por lo que la gram atica conserva smbolos
(A) y producciones (Aa) in utiles.
Teorema 6.3 Todo lenguaje libre del contexto puede ser generado por una gram atica
libre del contexto que no contiene smbolos in utiles.
Demostraci on:
Sea L un lenguaje libre del contexto. Sea G
1
la gram atica resultante de aplicar el algo-
ritmo del teorema 6.1 y sea G
2
la gram atica resultante de aplicar a G
1
el algoritmo del
teorema 6.2. Supongamos que G
2
tiene alg un smbolo in util X. Por el teorema 6.2, hay
una derivaci on S

=
G
2
X. Como todos los smbolos de G
2
son smbolos de G
1
, del
teorema 6.1 se sigue que
X

=
G
1
w, y por lo tanto S

=
G
2
X

=
G
1
w
para alguna cadena terminal w L. Por lo tanto, ning un smbolo en la derivaci on
X

=
G
1
w puede ser eliminado por el teorema 6.2. De donde X genera una ca-
dena terminal en G
2
, y no es un smbolo in util como se supuso.
6.2 Manipulaci on de GLC 159
6.2.1. Producciones vacas o producciones-
Trataremos ahora de eliminar de las gram aticas libres del contexto (GLC) las produccio-
nes de la forma A, siempre que A no sea el smbolo inicial. La producci on S
no puede ser eliminada, pues en ese caso se eliminara a la palabra vaca del lenguaje,
alterando as el lenguaje generado por la gram atica.
Denici on 6.2 Un smbolo no-terminal A de una gram atica G libre del contexto (LC) es
nulicable si A

=
G
.
Para eliminar las derivaciones de la forma A

= trataremos de determinar para cada
variable A N si A es nulicable. Podemos reemplazar cada producci on de la forma
B X
0
X
1
. . . X
k
por todas las producciones que resultan de eliminar sucesivamente
cada uno de los subconjuntos de smbolos nulicables. Sin embargo, si todo el lado derecho
de la producci on en cuesti on consiste de smbolos nulicables, no se eliminar a a todo el
lado derecho para evitar incluir la producci on B.
Teorema 6.4 Si L = L(G) para alguna gram atica G = (N, T, P, S) LC, entonces
L e es L(G

) para alguna gram atica G

LC sin smbolos in utiles o producciones-.


Demostraci on:
Para construir G

deberemos eliminar las producciones-, pero teniendo cuidado de que


se genere el mismo lenguaje. Para ello, determinamos el conjunto de smbolos nulica-
bles y procedemos a sustituirlos en cada una de las producciones por de la manera que
especicamos en el p arrafo anterior. Podemos determinar los smbolos nulicables en G
mediante el algoritmo 6.2.
Algoritmo 6.2 Determinaci on de smbolos nulicables
1: Nulif
V

2: Nulif
N
A N [ A P
/* Si la producci on A P, entonces A es nulicable */
3: Mientras Nulif
V
,= Nulif
N

4: Nulif
V
Nulif
N
5: Nulif
N
Nulif
N
B N [ B P, = X
1
X
2
, . . . , X
k
, k 1
X
i
N , X
i
= o bien X
i
Nulif
V

/* Para toda producci on B P, tal que todos los smbolos


de son nulicables, agregar B a los smbolos nulicables */
6:
Para construir el conjunto P

de producciones procedemos de la siguiente manera:


160 Lenguajes libres del contexto

En un primer paso hacemos P

= P A [ A N.

A continuaci on identicamos las producciones que tienen smbolos nulicables del


lado derecho. Sea A X
0
X
1
. . . X
k
una producci on que tiene al conjunto
C = X
i
1
, . . . , X
im
[ 1 m k, X
i
j
nulicable
Agregamos a P

todas las producciones de la forma


A
0

1
. . .
k
donde, para 0 j k:
1. Si X
j
no es nulicable, entonces
j
= X
j
.
2. Para cada subconjunto de smbolos de C, se construye la producci on que re-
sulta de omitir a los smbolos de ese subconjunto del lado derecho de la pro-
ducci on original, de donde algunas de las
j
ser an .
3. Si todos los smbolos del lado derecho de la producci on son nulicables, los
subconjuntos deber an ser subconjuntos propios, esto es, que no se elijan si-
mult aneamente eliminar a todos los smbolos del lado derecho de la produc-
ci on, resultando en una producci on-.
Nos falta por demostrar que G as construida genera a L . Si G = (N, T, P, S)
es la gram atica original y G

construida de acuerdo al algoritmo que acabamos de dar,


demostraremos que para toda A N y w T

,
A

=
G

w si y s olo si w ,= y A

=
G
w.
= Sea A

=
G
w y w ,= . Probaremos por inducci on en el n umero de pasos k en la
derivaci on que A

=
G

w.
Base: Para k = 1, A=
G
w implica que la producci on Aw est a en G. Como w ,= ,
esta producci on tambi en est a en P

.
Inducci on: Nuestra hip otesis de inducci on es que si A

=
G
w en menos de k pasos, k > 1,
y w ,= , entonces A

=
G

w. Supongamos que
A =X
0
X
1
. . . X
k

=
G
w
en exactamente k pasos, k > 1. Podemos reescribir w = w
0
w
1
. . . w
k
, tal que para
0 j k, X
j

=
G
w
j
en menos de k pasos (a lo m as k 1). Si w
j
,= y X
j
es un
smbolo no-terminal, por la hip otesis de inducci on
X
j

=
G

w
j
6.2 Manipulaci on de GLC 161
Si w
j
= , X
j
es nulicable, entonces, la producci on A
0

1
. . .
k
es una produc-
ci on en P

, donde
j
= X
j
si w
j
,= y
j
= si w
j
= . Como w ,= , no todas las
j
son . De donde tenemos en G

una derivaci on
A =
G

1
. . .
k

=
G

w
0

1
. . .
k

=
G

w
0
w
1
. . . w
k
= w
= Supongamos que A

=
G

w. Podemos suponer que w ,= pues G

no tiene produccio-
nes-. Demostraremos, por inducci on en el n umero de pasos k en la derivaci on que
A

=
G
w
Base: Para k = 1, obviamente Aw es una producci on en P

. Debe haber una pro-


ducci on en P de la forma A, tal que si quitamos alguno(s) de el(los) smbolo(s)
nulicable(s) de nos quedamos con w. Entonces, existe una derivaci on
A =
G


=
G
w
en donde la derivaci on

=
G
w involucra derivar de los smbolos nulicables que
quitamos de para obtener w.
Inducci on: Sean k > 1 y A =
G

X
0
X
1
. . . X
k

=
G

w una derivaci on de w en G

de
exactamente k pasos. Debe haber una producci on en P de la forma A tal que la
cadena X
0
X
1
. . . X
k
se encuentra eliminando algunos de los smbolos nulicables de .
A =
G
X
0
X
1
. . . X
m
.
Reescribimos
w =w
0
w
1
. . . w
m
,
tal que para 0 j m,
X
j

=
G

w
j
en menos de k pasos.
Por la hip otesis de inducci on X
j

=
G
w
j
si X
j
es un smbolo no-terminal. Por supuesto
que si X
j
es un smbolo terminal, entonces w
j
= X
j
y X
j

=
G
w
j
trivialmente. De todo
lo anterior,
A

=
G
w.
El ultimo paso de la demostraci on es la de aplicar a G

el teorema 6.4 para encon-


trar G

que no contenga ning un smbolo in util. Como las construcciones de los teo-
remas 6.1 y 6.2 no introducen nuevas producciones, G

no contiene smbolos in utiles ni


no-terminales nulicables. Es m as,
S

=
G

w w ,= y S

=
G

w.
162 Lenguajes libres del contexto
L(G) = L(G

) {}.
Ejemplo 6.2:
Encuentra una gram atica sin producciones- equivalente a la siguiente:
S ABC,
A BB, A ,
B CC, B a,
C AA, C b
Respuesta:
Empezaremos por denir el conjunto de smbolos nulicables, empezando por las pro-
ducciones que tienen del lado derecho al smbolo . La producci on A determina el
conjunto inicial:
NULIFICABLES = A
Dado que la producci on C AA contiene del lado derecho unicamente smbolos
nulicables (A), en la segunda iteraci on del algoritmo, el conjunto de smbolos nulicables
queda como sigue:
NULIFICABLES = A, C
En la tercera iteraci on obtenemos:
NULIFICABLES = A, B, C
Y nalmente en la siguiente iteraci on:
NULIFICABLES = A, B, C, S
Dado que ya tenemos todos los smbolos no-terminales como smbolos nulicables,
pasamos a construir el nuevo conjunto de producciones.
De la producci on: Obtenemos:
S ABC S ABC
S AB
S AC
S BC
S A
S B
S C
6.2 Manipulaci on de GLC 163
De la producci on: Obtenemos:
A BB A BB
A B
B CC B CC
B C
C AA C AA
C A
Del conjunto original de producciones se conservan las producciones B a y Cb,
y la producci on A desaparece.
Con la demostraci on de este teorema simplicamos gram aticas libres del contexto a
que no tengan smbolos in utiles ni producciones-. Falta por resolver el punto (2) de la
simplicaci on, que involucra el quitar las producciones unitarias.
Denici on 6.3 Una producci on es unitaria si es de la forma AB, con A, B N.
Es deseable eliminar las producciones unitarias de una gram atica ya que todo lo que
hacen es posponer la generaci on de cadenas terminales, agregando pasos en la derivaci on
que mantienen el tama no de la forma sentencial sin agregar smbolos terminales.
Para poder seguir adecuadamente el proceso de derivaci on de una cadena en una gram ati-
ca, debemos imponer un orden en cuanto a la selecci on del smbolo no terminal para reem-
plazar. Tomaremos la siguiente convenci on:
Denici on 6.4 Se dice que una derivaci on es por la izquierda si en cada paso de la de-
rivaci on, el smbolo no terminal a reemplazarse es el primero desde la izquierda. Esto es,
A T

, A P. De manera similar se dene una derivaci on


por la derecha.
Al establecer el orden de reemplazo en las formas sentenciales, se elimina la am-
big uedad respecto a si dos procesos de derivaci on son el mismo o no.
Teorema 6.5 Todo lenguaje libre del contexto que no contenga a puede ser genera-
do por una gram atica que no contenga smbolos in utiles, producciones- o producciones
unitarias.
Demostraci on:
Sea L un lenguaje libre del contexto que no contiene a , generado por alguna gram atica
G = (N, T, P, S). Por el teorema 6.4 podemos suponer que G no contiene produc-
ciones-. Procedemos a construir un nuevo conjunto de producciones P

a partir de P,
incluyendo en primera instancia todas las producciones no unitarias de P. Supongamos
ahora que A

=
G
B, para A, B N. Agreguemos a P

todas las producciones de la


forma A, donde B es una producci on no unitaria de P.
164 Lenguajes libres del contexto
Podemos f acilmente detectar si A

=
G
B, puesto que Gno tiene producciones-. Para de-
terminarlo, construimos un AF con un estado por cada smbolo no terminal que aparece
en una producci on unitaria. A continuaci on marcamos una transici on- entre dos estados
(smbolos no terminales) A y B si la producci on unitaria AB P; y transiciones
etiquetadas con a un estado nal desde el estado A si [ [> 1 y la producci on
A P.
Una vez determinado este aut omata nito, procedemos, para cada estado distinto del
nal, a determinar la -cerradura de ese estado y a sustituir las producciones unitarias de
ese smbolo no terminal con producciones cuyo lado izquierdo es el smbolo del estado
y el lado derecho es la etiqueta de cada una de las transiciones desde cualquiera de los
estados en su -cerradura al estado nal . Esto lo hacemos, por supuesto, para todos los
estados de la -cerradura.
Falta demostrar que los lenguajes son, en efecto, equivalentes. Para ello, consideremos
una derivaci on de la forma A =
G
B
1
=
G
B
2
=
G
. . . =
G
B
k1
=
G
B donde alguna
de las variables aparece dos veces en la sucesi on. Podemos encontrar una sucesi on m as
corta de producciones unitarias que resulta en A

=
G
B. Por lo anterior es suciente
considerar unicamente aquellas sucesiones de producciones unitarias que no repiten a
ning un smbolo no-terminal de G y a esta la llamamos la sucesi on mnima.
Tenemos ahora la gram atica G

= (N, T, P

, S) modicada como acabamos de plantear.


Por supuesto que si A es una producci on en P no unitaria ( T
+
), A es
una producci on en P

. As que si hay una derivaci on de en G, tambi en la hay en G

.
Supongamos ahora que w L(G) y consideremos una derivaci on por la izquierda de w
en G, digamos S =
0
=
G

1
=
G
. . . =
G

k
= w.
Por inducci on en el n umero de pasos en la derivaci on, si, para 0 i < k,
i
=
G

i+1
con una producci on no unitaria, entonces
i
=
G


i+1
. Supongamos que
i1
=
G

i
con una producci on unitaria pero que
i
=
G

i+1
con una producci on no unitaria, o bien
que i = 0. Supongamos tambi en que

i+1
=
G

i+2
=
G
. . . =
G

j
todas a trav es de producciones unitarias, y
j
=
G

j+1
con una producci on no unitaria.
Entonces
i+1
,
i+2
, . . . ,
j
son todas de la misma longitud (lo mismo se aplica a
i1
respecto a
i
); y como la derivaci on es por la izquierda, el smbolo reemplazado en cada
paso debe estar en la misma posici on y cada

tiene la forma A
m

, con , (N
T)

y
j+1
tiene la forma con A
m
j
=. Pero entonces
i+1

=
G

j
a trav es de
las producciones de P

P. Por construcci on de las producciones de G

, A
m
j
P

y tenemos la derivaci on A
m
1
=
G

. De esto,
L(G) = L(G

)
6.2 Manipulaci on de GLC 165
Para completar la prueba observamos que G

no tiene producciones- o producciones


unitarias. Si usamos los teoremas 6.1 y 6.2 para eliminar los smbolos in utiles, no agre-
gamos ninguna producci on, as que el resultado de aplicar las construcciones de estos
teoremas a G

es una gram atica que satisface el teorema.


Ejemplo 6.3:
Consideremos la gram atica del ejercicio anterior y quitemos de ella todas las produc-
ciones unitarias, los smbolos muertos y los smbolos inalcanzables. Para esto, repetimos a
continuaci on la lista de producciones:
S ABC (1) S AB (2) S AC (3)
S BC (4) S A (5)
S B (6) S C (7)
A BB (8) A B (9)
B CC (10) B C (11) B a (12)
C AA (13) C A (14) C b (15)
Las producciones unitarias son la 5, 6, 7, 9, 11 y 14. El AF construido con estas pro-
ducciones se muestra en la gura 6.1.
Figura 6.1 AF para determinar sustituci on de producciones unitarias
B C
S A

AA, b
BB
ABC, AB, AC, BC
CC, a
166 Lenguajes libres del contexto
De la gr aca de la gura 6.1, obtenemos la -cerradura de cada uno de los smbolos no
terminales:
-cerradura(S) = S, A, B, C
-cerradura(A) = A, B, C
-cerradura(B) = A, B, C
-cerradura(C) = A, B, C
A continuaci on damos del lado izquierdo la producci on unitaria y del lado derecho las
producciones por las que es sustituida, tomando en cuenta las producciones no unitarias
que tienen del lado izquierdo a alguno de los smbolos en su -cerradura.
Producciones Se sustituyen por:
unitarias:
SA SBB SAA SCC
SB SAA SBB SCC
Sa
SC SAA SBB SCC
Sa Sb
AB ACC AAA Aa
Ab
BC BAA BBB BCC
Ba
CA CBB CCC Ca
Del proceso anterior obtenemos el siguiente conjunto de producciones que no contienen
ya producciones- o producciones unitarias:
SABC (1) SAB (2) SAC (3)
SBC (4) SAA (5)
SBB (6) SCC (7)
Sa (8) Sb (9)
ABB (10) AAA (11) ACC (12)
Aa (13) Ab (14)
6.3 Dise no de gram aticas libres del contexto 167
BCC (15) BAA (16) BBB (17)
Ba (18)
CAA (19) CBB (20) CCC (21)
Ca (22) Cb (23)
Como se puede observar, si se aplican los teoremas para quitar smbolos in utiles, todos
los smbolos son vivos y todos los smbolos son alcanzables.
6.3. Dise no de gram aticas libres del contexto
El dise no de gram aticas libres del contexto no es trivial, m as si tenemos la restricci on
de que no haya producciones o producciones unitarias (A B). Deseamos, al igual que
con los lenguajes regulares, disfrutar de una cierta libertad de dise no, para despu es depurar
la gram atica y dejarla de acuerdo a todas las reglas. Simplemente exigiremos que del lado
izquierdo haya un unico smbolo no terminal y del lado derecho una cadena arbitraria en
N T)

, al n que ya vimos que cualquier gram atica que cumple con esto puede ser
transformada en una donde las producciones tengan la forma can onica que dimos antes.
Dimos algunas sugerencias respecto a c omo construir aut omatas nitos para determi-
nados lenguajes. En esta secci on intentaremos presentar c omo enfrentar el reto de construir
una gram atica libre del contexto para un lenguaje libre del contexto.
Veamos los distintos tipos de lenguajes libres del contexto y c omo dise narles alguna
gram atica libre del contexto:

Supongamos que las cadenas del lenguaje tienen dos regiones que guardan cierta
relaci on entre ellas. Por ejemplo, L
1
= a
n
b
n
; n 0 tiene la regi on de las a y la de
las b y la relaci on entre estas dos regiones es que tienen que tener el mismo n umero
de smbolos; el lenguaje L
2
= a
n
b
m
c
n+m
; n, m 0 tiene dos regiones, a
n
b
m
, que
tiene que tener el mismo n umero de smbolos que la regi on c
n+m
.
En este caso conviene ir generando la cadena desde los extremos hacia el centro,
procurando que cada vez que se genera un smbolo en una regi on vaya acompa nado
de la generaci on de un smbolo en la otra regi on. La cadena se extiende en el centro;
veamos como ejemplo una gram atica para generar L
1
:
S ASB [
Con esta regla garantizamos que por cada smbolo en la regi on Ase genere un smbo-
lo en la regi on B, extendi endose en el centro de la cadena. Ahora tenemos que gene-
rar los smbolos propiamente dichos, observando que el crecimiento de la cadena se
hace unicamente desde el smbolo inicial, donde se mantienen amarradas las dos
168 Lenguajes libres del contexto
regiones. Para generar los smbolo terminales, unicamente necesitamos las siguientes
producciones.
A a B b
En el caso de L
2
, tambi en tiene dos regiones amarradas entre s (tiene que haber
corridas de n + m smbolos c), primero generamos las producciones que aparean el
n umero de smbolos en la primera regi on con el de la segunda:
S AC [
Noten que no hacemos esta producci on recursiva, pues eso nos llevara a perder el
control de generar primero una corrida de a y sigui endola una corridas de b. Sin
embargo, deberemos mantener la cuenta de que por cada smbolo generado en la
primera regi on se genere una c.
A continuaci on tenemos que denir c omo crece la palabra, teniendo cuidado de ge-
nerar primero corridas de a y despu es corrida de b; proponemos las siguientes pro-
ducciones:
(1) (2)
S AC [
(3) [ (4) [ (5) (6)
A a [ aAc [ bBc [ B
(7) (8)
B b [ bBc
(9)
C c
Ya explicamos el porqu e de las producciones (1) y (2). Dentro de la regi on que
corresponde a A deberemos garantizar que si se agrega alg un smbolo, al nal se
agregue tambi en una c. La producci on (3) genera una a contra la C que se gener o en
la producci on (1), y si usamos las producciones (6) y (7) para eliminar a la A, gene-
raremos una b para aparear con la c generada en la producci on (1).
Es en las producciones de A y de B que extendemos la palabra. En la producci on
(4) agregamos en los extremos una c por cada a que agreguemos; mientras que en la
6.4 Forma normal de Chomsky 169
producci on (8) agregamos una c por cada b adicional que va a aparecer. Es importante
notar que en cada forma sentencial aparece unicamente una A o una B, pero no m as
de una. Esto evita que las a se mezclen con las b, ya que no hay forma de regresar,
una vez que se gener o una b aqq generar a.

Para producir cadenas que tienen m as de 2 regiones, independientes entre s, pero


que deben ocurrir en un cierto orden, requerimos de una primera producci on que
algo como un smbolo inicial para cada regi on, pero en el orden establecido.
Por ejemplo, sea L
3
= a
n
b
n
c
m
; n, m 0. En este lenguaje tenemos claramente
dos regiones, por lo que tendremos las siguientes producciones desde el smbolo
inicial:
S NC [
A partir de ac a tomamos a N y a C como los smbolos iniciales de a
n
b
n
y a
m
res-
pectivamente:
N aNb [ Genera a
n
b
n
C cC [ Genera c
m

Supongamos que queremos generar L

, esto es, un n umero innito de regiones igua-


les. En ese caso, lo que tenemos que hacer es que la primera producci on genere y
una regi on que va a generar cadenas que pertenecen a M. Hacemos a esta produc-
ci on recursiva a la derecha en la regi on y con eso obtenemos la concatenaci on de las
siguientes cadenas de L.
S MS [
y M se encarga de generar a una cadena de L.
Como vimos en estas aproximaciones en la construcci on de gram aticas, infringimos
m as de una de las restricciones en las producciones para tener una gram atica libre del con-
texto; la unica restricci on que no violamos fue la de que el lado izquierdo de las produc-
ciones consista de un unico smbolo no terminal. En las siguientes secciones revisaremos
c omo limpiar las gram aticas para que, de hecho, no necesitemos ninguna otra restricci on
m as que esta ultima.
6.4. Forma normal de Chomsky
Procederemos a probar que todo lenguaje libre del contexto puede ser generado por una
gram atica con restricciones en la forma de sus producciones. En esta secci on nos referire-
mos a producciones que est en en forma normal de Chomsky.
170 Lenguajes libres del contexto
Denici on 6.5 Una gram atica libre del contexto se dice que est a en forma normal de
Chomsky (FNC) si cada producci on es de alguna de las siguientes formas:
1. ABC con A, B y C N, o bien
2. Aa con a T, o bien
3. Si L(G), entonces S es una producci on y S no aparece del lado derecho
de ninguna producci on.
Teorema 6.6 Todo lenguaje libre del contexto que no contiene a puede ser generado
por una gram atica libre del contexto en la cu al todas las producciones est an en FNC.
Demostraci on:
Dividiremos la demostraci on en dos partes. Primero, obtenemos una gram atica
G

= (N

, T, P

, S)
donde todas las producciones son de alguna de las siguientes formas:
Aa
AX
1
X
2
. . . X
n
n 2, X
i
N

y demostraremos que L(G) = L(G

).
Como segunda parte de la demostraci on, a partir de G

obtendremos G

donde todas las


producciones estar an ya en FNC.
Primera parte:
Sea G = (N, T, P, S) una GLC sin producciones unitarias. Construimos una nueva
gram atica G

= (N

, T, P

, S) ejecutando el algoritmo 6.3.


Algoritmo 6.3 Conversi on a FNC: primera parte
1: Agrega a P

todas las producciones de P de la forma Aa, o bien que se encuen-


tren ya en la forma correcta AB
1
. . .B
k
, B
i
N, 1 i k.
2: Sea AX
1
X
2
. . . X
n
una producci on en P tal que algunas de las X
i
son smbolos
terminales. En lugar de esta producci on, ponemos en P

las producciones siguientes:


AY
1
Y
2
. . . Y
n
donde Y
i
= X
i
si X
i
N
o bien Y
i
es un smbolo nuevo en N

si X
i
T
3: Por cada Y
i
nueva introducida en lugar de alguna X
i
T en alguna producci on, se
introduce la producci on Y
i
X
i
.
Nos queda por demostrar que con G

as construida tenemos L(G) = L(G

) y lo haremos
a trav es de contenci on mutua de conjuntos.
6.4 Forma normal de Chomsky 171

L(G) L(G

). Sea w tal que A



=
G
w. Haremos la demostraci on por inducci on sobre
el n umero de pasos en la derivaci on.
Base: Si esta derivaci on es en un solo paso, tenemos dos posibilidades. Si [ w[= 1, en P
tenemos la producci on Aw = a para a T y esta producci on tambi en est a presen-
te en P

. Si [ w [> 1 entonces w = a
1
a
2
. . . a
k
con a
i
T; y en P tenemos la producci on
AX
1
. . . X
n
con X
i
= a
i
. Pero entonces, en P

tenemos las producciones


A Y
1
Y
2
. . . Y
k
Y
1
a
1
Y
2
a
2
.
.
.
Y
k
a
k
y podemos dar la siguiente sucesi on en la derivaci on de w:
A =
G

Y
1
Y
2
. . . Y
k
=
G

a
1
Y
2
. . . Y
k
=
G

. . . =
G

a
1
a
2
. . . a
k
= w
De lo anterior, podemos ver que A

=
G

w cuando en G tenemos una derivaci on de un


paso.
Inducci on: Supongamos cierto que si A

=
G
w en k o menos pasos, entonces A

=
G

w.
Sea w tal que A

=
G
w en k+1 pasos. El primer paso de la derivaci on debe ser mediante
el uso de la producci on AX
1
X
2
. . . X
n
. Entonces, por construcci on, tenemos en P

la producci on AY
1
. . . Y
n
construida mediante la regla (2) del algoritmo.
Si X
i
= w
i
entonces tenemos en G

la derivaci on
A =
G

Y
1
. . . Y
n
=
G

w
1
. . . Y
n

=
G

w
1
. . . w
n
Si X
i
es un smbolo no-terminal (X
i
= Y
i
), y reescribimos a w = w
1
w
2
. . . w
n
podemos
decir que Y
i
=X
i

=
G

w
i
para cada i, y como lo hace en k o menos pasos, entonces
X
i

=
G
w
i
. En P

tenemos el siguiente conjunto de producciones:


AY
1
Y
2
. . . Y
n
donde: Y
i
= X
i
si X
i
N
Y
i
w
i
P

si X
i
= w
i
entonces podemos sustituir ese primer paso en la derivaci on por un n umero arbitrario de
pasos de la forma
A =
G

Y
1
Y
2
. . . Y
n
=
G

w
1
Y
2
..Y
n
=
G

. . . =
G

w
1
w
2
. . . w
n
y obtener, nalmente que A

=
G

w, por lo que L(G) L(G

).
172 Lenguajes libres del contexto

L(G

) L(G) La demostraci on de que L(G

) L(G) es similar a la anterior, por lo


que se deja como ejercicio.
Segunda parte:
Procederemos ahora a convertir las producciones de P

a FNC mediante el siguiente


algoritmo:
Algoritmo 6.4 Conversi on a FNC: segunda parte
1: Agrega a P

todas las producciones de la forma Aa o bien ABC (que ya


est an en FNC).
2: Sustituye cada producci on de la forma AX
1
X
2
. . . X
n
con n > 2, por las produc-
ciones de la forma:
A X
1
C
2
C
2
X
2
C
3
.
.
.
C
n1
X
n1
X
n
donde cada C
i
es un smbolo nuevo no-terminal.
Nos faltara por demostrar que L(G

) = L(G

). Esto se demuestra por un m etodo similar


al de la parte anterior y se deja como ejercicio.
A continuaci on damos un ejemplo de conversi on de una gram atica libre del contexto
sin producciones- ni producciones unitarias a una gram atica cuyas producciones est an en
FNC.
Ejemplo 6.4:
Consideremos la gram atica G = (S, A, B, a, b, P, S) que tiene las siguientes pro-
ducciones:
S bA S aB
A bAA A aS A a
B aBB B bS B b
Encontrar una gram atica en FNC equivalente.
6.4 Forma normal de Chomsky 173
Respuesta: Aplicando el algoritmo 6.2 obtenemos las siguientes producciones en P

:
Producci on: Se sustituye por: Nuevos Smbolos
S bA S DA D b D
S aB S EB E a E
A bAA A DAA
A aS A ES
A a A a
B aBB B EBB
B bS B DS
B b B b
Las producciones en la segunda columna son las que quedan en G

. Procedemos ahora a
aplicar el segundo algoritmo para obtener la Forma Normal de Chomsky:
Producci on: Se sustituye por: Nuevos Smbolos
ADAA ADF F AA F
BEBB BEG GBB G
Por lo que G

queda como sigue:


N = A, B, D, E, F, G
T = a, b
P

= SDA, SEB,
ADF, AES, Aa,
BEG, BES, Bb,
Db,
Ea,
F AA,
GBB

Ejemplo 6.5:
Consideremos la gram atica G = (N, T, P, S) que genera expresiones aritm eticas y
cuyas producciones se listan a continuaci on:
E E +T E T
T T F T F
F (E) F a
Convertirla a FNC.
174 Lenguajes libres del contexto
Respuesta:

Primero tenemos que eliminar las producciones unitarias E T y T F. Las


eliminamos usando fusi on de producciones:
La producci on: Se sustituye por:
T F T (E) T a
E T E T F E (E) E a
El conjunto completo de producciones se encuentra a continuaci on, con la aplicaci on
del primer paso para convertir a la FNC.
La producci on: Se sustituye por:
E E +T E EMT M +
E T F E TPF P
E (E) E IED I ( D )
E a E a
T T F T TPF
T (E) T IED
T a T a
F (E) F IED
F a F a

Ahora aplicamos la segunda parte, que consiste en encadenar los smbolos no termi-
nales del lado derecho.
La producci on: Se sustituye por:
E EMT E EA A AT
M +

E TPF E TB B PF
P

E IED E IC C ED
I (

D )

E a

T TPF T TB
T IED T IC
T a

F IED F IC
F a

Se puede ver claramente c omo crece el n umero de producciones al convertir las gram a-
ticas a FNC. En la gram atica original tenamos seis producciones, mientras que en la que
est a en FNC tenemos 16 producciones. A veces, sin embargo, vale la pena el trabajo de
laq conversi on que se puede hacer autom aticamente pues vamos a facilitar las tareas de
reconocimiento.
6.5 Forma normal de Greibach 175
6.5. Forma normal de Greibach
Denici on 6.6 Decimos que una GLC est a en forma normal de Greibach (FNG) si todas
sus producciones son de la forma
Aa, con A N, a T y N

Al igual que con la FNC, todo lenguaje libre del contexto (LLC) puede ser generado
por una GLC que est e en FNG, o sea una GLC en la cual el lado derecho de todas sus
producciones empiece con un smbolo terminal y le sigan, si acaso, cadenas de smbolos
no-terminales. Para llegar a este resultado, eliminaremos de las producciones, en las que la
haya, la recursividad izquierda.
Denici on 6.7 Un smbolo no-terminal en una GLC G = (N, T, P, S) se dice que es
recursivo si AA para alguna , (N T)

. Si = , entonces A es recursi-
vo izquierdo. Similarmente, si = , entonces A es recursivo derecho. Una gram atica es
recursiva izquierda (derecha) si tiene al menos una producci on recursiva izquierda (dere-
cha). Una gram atica es recursiva si todas las producciones que involucran a smbolos no
terminales del lado derecho son recursivas, excepto tal vez el smbolo inicial.
Por qu e la preocupaci on por la recursividad? Algunos algoritmos para reconocimien-
to sint actico no funcionan o entran en ciclo si la gram atica es recursiva izquierda. En la
FNG ninguna de sus producciones es recursiva izquierda y esto la hace atractiva para la
instrumentaci on de algoritmos de reconocimiento sint actico.
Apoyaremos la transformaci on de una GLC a una gram atica en FNG en dos lemas: el
primero que legitima el fusionar dos producciones en una (A
1
B
2
y B en
A
1

2
) y el segundo lema que elimina la recursividad izquierda de una GLC. En
ambos lemas, y posteriormente en la construcci on de la FNG, utilizaremos el concepto de
A-producci on, que se reere a todas las producciones que tienen al smbolo no terminal A
del lado izquierdo. Usaremos la notaci on
A
1
[
2
[ . . . [
n
como forma compacta del conjunto de producciones
A
1
, A
2
, . . . A
n
Lema 6.7 (FUSI

ON DE PRODUCCIONES) Sea G = (N, T, P, S) una GLC. Sea


A
1
B
2
una producci on en P y B
1
[
2
[ . . . [
r
todas las B-produc-
ciones. Sea G

= (N, T, P

, S) obtenida a partir de G mediante el algoritmo 6.5. Entonces


L(G) = L(G

)
176 Lenguajes libres del contexto
Algoritmo 6.5 Fusi on de producciones
1: Tomamos como punto de partida para P

al conjunto original de producciones P.


2: Quitar de P

la producci on A
1
B
2
.
3: Agregar a P

las producciones de la forma


A
1

2
donde B
i
P, 1 i r
Demostraci on:
Para demostrar que L(G

) L(G) basta notar que si la producci on A


1

2
se
utiliza en alguna derivaci on en G

, entonces la sucesi on A =
G

1
B
2
=
G

2
se
usa en la derivaci on en G.
Para demostrar que L(G) L(G

), observemos alguna derivaci on en L(G) que utilice


producciones que no est en en P

. Esta producci on s olo puede ser de la forma A


1
B
2
,
que no est a en P

. Siempre que se use esta producci on, queda la B, smbolo no-terminal,


en la forma sentencial por lo que deber a ser reemplazada eventualmente utilizando algu-
na de las producciones B
i
. Estos dos pasos pueden ser fusionados en uno solo en
G

, mediante el paso A =
G

2
.
Lema 6.8 (ELIMINACI

ON DE RECURSIVIDAD IZQUIERDA) Sea G = (N, T, P, S) una


GLC. Sean
AA
1
[ A
2
[ . . . [ A
r
el conjunto de A-producciones recursivas izquierdas. Sean
A
1
[
2
[ . . . [
s
el resto de las A-producciones. Sea G

= (NB, T, P

, S) una GLC formada al agregar


B al conjunto de smbolos no-terminales y reemplazar las A-producciones por el siguiente
conjunto de producciones:
1. A
i
1 i s 2. B
i
1 i r
A
i
B B
i
B
Entonces L(G) = L(G

).
Demostraci on:
Observemos la gura 6.2. En una derivaci on por la izquierda, si se utilizan sucesivamen-
te A-producciones, debemos utilizar un n umero arbitrario de producciones recursivas
izquierdas para eventualmente utilizar, para sustituir la A de la extrema izquierda en la
6.5 Forma normal de Greibach 177
forma sentencial, alguna de las producciones A
i
, por lo que tendremos una deri-
vaci on en G de la siguiente forma:
A =
G
A
i
1
=
G
A
i
2

i
1
=
G
. . . =
G
A
i
r1

i
r2
. . .
i
2

i
1
=
G

ir

i
r1
. . .
i
2

i
1
Figura 6.2 Derivaciones con la gram atica original y modicada.
A
A
A
A

i
1

i
2

i
3
(a) Producciones originales
A

j B

i
1 B

i
2 B

i
3
(b) Producciones modicadas
Esta derivaci on puede ser generada en G

de la siguiente manera:
A =
G


j
B =
G

ir
B =
G

ir

i
r1
B =
G

. . .
. . . =
G

ir

i
r1
. . .
i
2

i
1
Esta transformaci on puede ser hecha en ambos sentidos,
L(G) = L(G

).
Si bien estas transformaciones no son intuitivas, si examinamos los arboles en la gu-
ra 6.2 podemos observar que aun cuando la estructura del arbol es distinta mientras que
el primero crece por la izquierda el segundo lo hace por la derecha el resultado de ambos
arboles es el mismo. Lo que cambia fundamentalmente es el momento en que se decide
usar la producci on que deriva a alguna de las
i
.
Ejemplo 6.6:
Sea G una GLC que genera expresiones aritm eticas con las producciones:
E E +T E T
T T F T F
F (E) F a
178 Lenguajes libres del contexto
Apliquemos el lema a las E-producciones y obtenemos:
ET B+T
ETB B+TB
Aplicando el lema a las producciones T obtenemos:
T F CF
T FC CFC
Pasaremos ahora a la construcci on de una GLC en FNG. Para facilitar la demostraci on
de equivalencia de los lenguajes generados por una y otra gram atica, empezaremos con una
gram atica en FNC y supondremos que / L(G).
Teorema 6.9 (FORMA NORMAL DE GREIBACH (FNG)) Todo LLC que no contenga a
, puede ser generado por una GLC en la cual todas las producciones son de la forma
A a, con a T, A N y N

.
Demostraci on:
Daremos primero el algoritmo para la modicaci on de la gram atica en el listado 6.6, para
posteriormente demostrar que si G

es construida usando este algoritmo, entonces


L(G) = L(G

).
Sea G una GLC que genera a L en FNC. Enumeremos de manera arbitraria los smbolos
no-terminales de la gram atica
N = A
1
, . . . , A
n
.
Como primera parte del algoritmo, buscaremos que para cada smbolo no terminal A
i
,
i = 1, . . . , n, todas las A
i
-producciones sean de la forma A
i
A
j
con j i o bien
A
j
T, utilizando para esto el lema 6.7 de fusi on de producciones. Enseguida procede-
mos a garantizar, para el smbolo A
i
, usando el lema 6.8 de eliminaci on de recursividad
izquierda, que j > i.
Empezamos por las A
1
-producciones y proseguimos, en orden, con cada una de las
A
i
-producciones, i = 1, . . . , n. Si suponemos que tenemos resuelto el problema para
los smbolos A
1
, . . . , A
k1
y procedemos a resolverlo para el smbolo A
k
, tenemos dos
posibilidades: A
k
A
m
con N

y m < k o bien m k.
Si m < k, utilizamos el primer lema tantas veces como sea necesario (a lo m as k 2
veces) hasta obtener A
k
A
k
(esto se logra haciendo la sucesi on de sustituciones
A
k
=A
i
1

1
=A
i
2

1
=. . .=A
i
k
donde i
1
i
2
. . . i
m
k).
6.5 Forma normal de Greibach 179
Algoritmo 6.6 Forma normal de Greibach (Primera parte)
Entrada: Una GLC en FNC, con N = A
1
, . . . , A
n

Salida: Una GLC en FNG.


PRIMERA PARTE:
Llevar a todas las producciones a que empiecen con un
smbolo terminal o con un no-terminal con numeraci on ma-
yor que la propia
1: Para k := 1, . . . , n /* a todas las no-terminales */
2: Para cada producci on de la forma A
k
A
j
, j < k
y Para todas las producciones A
j

3: agrega producci on A
k

4: quita la producci on A
k
A
j

5: /* aplicar lema de fusi on de producciones */


6: Para cada producci on A
k
A
k

7: agrega las producciones B
k
, B
k
B
k
;
8: quita la producci on A
k
A
k

9:
10: Para cada producci on A
k
tal que no empieza con A
k

11: agrega la producci on A
k
B
k
12: /* Eliminar recursividad izquierda */
13: /* de la primera parte */
Una vez obtenidas las A
k
-producciones que empiecen con A
m
, m k, del lado derecho
(pueden ser recursivas izquierdas), se utiliza el segundo lema para eliminar la recur-
sividad izquierda e introduciendo, siempre por la derecha de las producciones nuevos
smbolos B
i
ver algoritmo 6.6.
Algoritmo 6.7 Forma normal de Greibach (Segunda parte)
SEGUNDA PARTE:
Con fusi on de producciones, hacer que cada producci on ten-
ga la FNG.
14: Para k := n 1, . . . , 1
15: producci on de la forma A
k
A
r
con r > k
16: agrega las producciones de la forma A
k
.
donde A
r
es una producci on.
17: quita la producci on A
k
A
r

18:
19: /* Empezar cada una con terminal */
180 Lenguajes libres del contexto
La segunda parte del algoritmo empieza cuando todas las producciones est an en la forma
descrita. Si esto es as, las A
n
-producciones s olo pueden tener como primer smbolo del
lado derecho un smbolo terminal. Ahora procedemos a sustituir en las A
n1
-producciones
el primer smbolo del lado derecho que no sea terminal, por los lados derechos de las
A
n
-producciones, utilizando el primer lema (ese primer smbolo s olo puede ser A
n
),
hasta llegar al smbolo A
1
.
La demostraci on de que L(G) = L(G

) es inmediata de las demostraciones de los dos


lemas utilizados. Lo unico que debemos demostrar es que, en efecto, el algoritmo entrega
una GLC en FNG.
Dado que empezamos con una GLC en FNC y que las sustituciones por posibles smbo-
los terminales s olo se hicieron por la izquierda, no hay modo de que se mezclen termina-
les y no terminales en los lados derechos de las producciones mediante la aplicaci on del
primer lema. Al introducir los nuevos smbolos no-terminales B con la aplicaci on del
segundo lema. Estos s olo se introducen por el extremo derecho, por lo que se puede de-
mostrar que ninguna de las B-producciones puede empezar con alguna B sino que deben
empezar con alguna A o un smbolo terminal. En el primer caso, una nueva aplicaci on
del primer lema para las B-producciones termina la construcci on.
Ejemplo 6.7:
Sea G una GLC en FNC con las siguientes producciones:
ABC (1) Aa (2)
BCA (3) BAD (4)
CAB (5) CCC (6) Ca (7)
Db (8)
Obtener G

en FNG.
Respuesta:
Aplicando la primera parte buscamos que cada producci on empiece del lado derecho
con un smbolo terminal, o bien con un smbolo no terminal con numeraci on mayor que la
que tiene la no terminal del lado izquierdo de la producci on. Al terminar esta primera parte
obtenemos el conjunto de producciones en la segunda columna de las tablas que siguen,
las cu ales se van quedando en G

porque cumplen con la primera condici on. El orden que


se dio a las no terminales es A, B, C. Las producciones que se van quitando aparecen
tachadas.
Para las Aproducciones no es necesario aplicar ni fusi on de producciones ni elimina-
ci on de recursividad izquierda ya que todas las A-producciones presentan la forma deseada
6.5 Forma normal de Greibach 181
en esta primera parte.
Producci on: Se sustituye por:
Smbolos
nuevos:
ABC (1) A BC (1)
Aa (2) A a (2)
Para las Bproducciones aplicamos fusi on de producciones hasta tener unicamente
producciones de la forma BX con X B, C, D:
Producci on: Se sustituye por:
Smbolos
nuevos:
BCA (3) B CA (3)
BAD (4) B BCD (4a)
B aD (4b)
Como entre las B-producciones tenemos producciones recursivas izquierda la (4a) de-
bemos aplicar el lema de eliminaci on de recursividad izquierda a todas las B-producciones.
Siguiendo el formato del lema 6.8 tenemos los siguientes valores para
i
y
j
:

1
= CD
1
= CA
2
= aD
Por lo que se mantienen las producciones (3) y (4b), mientras que la (4a), que es recursiva
izquierda se sustituye de acuerdo al lema 6.8:
Producci on: Se sustituye por:
Smbolos
nuevos:
BBCD (4a) B CAH (4aa) H
B aDH (4ab)
H CD (4ac)
H CDH (4ad)
Para trabajar con las C-producciones, en una primera instancia, observamos que unicamen-
te la producci on (5) empieza del lado derecho con un smbolo listado anteriormente, por lo
que procedemos a utilizar fusi on de producciones para sustituir esa producci on por produc-
ciones que tengan la forma correcta o, en el peor de los casos, sean recursivas izquierdas.
Trabajemos, entonces con la C-producciones:
Producci on: Se sustituye por:
Smbolos
nuevos:
CAB (5) C BCB (5a)
[ aB (5b)
182 Lenguajes libres del contexto
Producci on: Se sustituye por:
Smbolos
nuevos:
CBCB (5a) C aDCB (5aa)
[ CAHCB (5ab)
[ aDHCB (5ac)
CCC (6) C CC (6)
Ca (7) C a (7)
Ya tenemos a las C-producciones con el formato que queremos. Ahora procedemos a
eliminar la recursividad izquierda, donde los conjuntos de
i
y
j
quedan como sigue:

1
= AHCB
2
= C

1
= aDCB
2
= aDHCB
3
= a
Y aplicando la construcci on del lema 6.8 para eliminar producciones recursivas por la
izquierda nos quedan las siguientes producciones:
Producci on: Se sustituye por:
Smbolos
nuevos:
CCAHCB (5ab) G AHCB (5aba) G
[ AHCBG (5abb)
[ aBG (5abc)
[ aDCBG (5abd)
[ aDHCBG (5abe)
CCC (6) C aB (6a) J
[ aBJ (6b)
[ aDCB (6c)
[ aDCBJ (6d)
[ aDHCB (6e)
CCC (6) C aDHCBJ (6f)
[ aBG (6g)
[ aBGJ (6h)
[ aDHCBG (6i)
[ aDHCBGJ (6j)
J C (6k)
[ CJ (6l)
Terminamos ya la primera parte del algoritmo y ya tenemos todas las producciones em-
pezando del lado derecho con un smbolo no terminal mayor o con un smbolo terminal.
6.5 Forma normal de Greibach 183
Aplicando ahora la segunda parte del algoritmo, procedemos de atr as hacia adelante a
sustituir las producciones que no est en ya en FNG.
Las C-producciones ya est an en FNG.
Todas las B-producciones, excepto BCAH est an ya en FNG.
Producci on: Se sustituye por:
Smbolos
nuevos:
BCAH (4aa) B aBAH (4aaa)
[ aBJAH (4aab)
[ aDCBAH (4aac)
[ aDCBJAH (4aad)
[ aDHCBAH (4aae)
[ aDHCBJAH (4aaf)
[ aBGAH (4aag)
BCAH (4aa) B aBGJAH (4aah)
[ aDHCBGAH (4aai)
[ aDHCBGJA (4aaj)
La A-producci on ABC se convierte, mediante el lema 6.1 a FNG.
Producci on: Se sustituye por:
Smbolos
nuevos:
ABC (1) A aBAHC (1a)
[ aBJAHC (1b)
[ aDCBAHC (1c)
[ aDCBJAHC (1d)
[ aDHCBAHC (1e)
ABC (1) A aDHCBJAHC (1f)
[ aBGAHC (1g)
[ aBGJAHC (1h)
[ aDHCBGAHC (1i)
[ aDHCBGJAHC (1j)
Falta unicamente aplicar el lema 6.1 para convertir a las producciones con los smbo-
los nuevos del lado izquierdo, a FNG, mediante fusi on de producciones.
Producci on: Se sustituye por:
Smbolos
nuevos:
JC (6k) J aB (6ka)
[ aBJ (6kb)
[ aDCB (6kc)
184 Lenguajes libres del contexto
Producci on: Se sustituye por:
Smbolos
nuevos:
JC (6k) J aDCBJ (6kd)
[ aDHCB (6ke))
[ aDHCBJ (6kf)
[ aBG (6kg)
[ aBGJ (6kh)
[ aDHCBG (6ki)
[ aDHCBGJ (6kj)
JCJ (6l) J aBJ (6la)
[ aBJJ (6lb)
[ aDCBJ (6lc)
[ aDCBJJ (6ld)
[ aDHCBJ (6le))
[ aDHCBJJ (6lf)
[ aBGJ (6lg)
[ aBGJJ (6lh)
[ aDHCBGJ (6li)
[ aDHCBGJJ (6lj)
Para las G-producciones tenemos la siguiente fusi on de producciones:
Producci on: Se sustituye por:
Smb.
nvos:
GAHCB (5aba) G aBAHCAHCB (5abaa)
[ aBJAHCAHCB (5abab)
[ aDCBAHCAHCB (5abac)
[ aDCBJAHCAHCB (5abad)
[ aDHCBAHCAHCB (5abae)
[ aDHCBJAHCAHCB (5abaf)
[ aBGAHCAHCB (5abag)
[ aBGJAHCAHCB (5abah)
[ aDHCBGAHCAHCB (5abai)
[ aDHCBGJAHCAHCB (5abaj)
GAHCBG (5abb) G aBAHCAHCBG (5abba)
[ aBJAHCAHCBG (5abbb)
[ aDCBAHCAHCBG (5abbc)
[ aDCBJAHCAHCBG (5abbd)
6.5 Forma normal de Greibach 185
Producci on: Se sustituye por:
Smb.
nvos:
GAHCBG (5abb) G aDHCBAHCAHCBG (5abbe)
[ aDHCBJAHCAHCBG (5abbf)
[ aBGAHCAHCBG (5abbg)
[ aBGJAHCAHCBG (5abbh)
[ aDHCBGAHCAHCBG (5abbi)
[ aDHCBGJAHCAHCBG (5abbj)
Para las H-producciones tenemos las siguientes fusiones de producciones:
Producci on: Se sustituye por:
Smb.
nvos:
HCD (4ac) H aBD (4aca)
[ aBJD (4acb)
[ aDCBD (4acc)
[ aDCBJD (4acd)
[ aDHCBD (4ace)
[ aDHCBJD (4acf)
[ aBGD (4acg)
[ aBGJD (4ach)
[ aDHCBGD (4aci)
[ aDHCBGJD (4acj)
HCDH (4ad) H aBDH (4ada)
[ aBJDH (4adb)
[ aDCBDH (4adc)
[ aDCBJDH (4add)
[ aDHCBDH (4ade)
[ aDHCBJDH (4adf)
[ aBGDH (4adg)
[ aBGJDH (4adh)
[ aDHCBGDH (4adi)
[ aDHCBGJDH (4adj)
186 Lenguajes libres del contexto
6.6. Equivalencia entre aut omatas de pila y lenguajes
libres del contexto
Pasaremos ahora a demostrar uno de los principales resultados de este captulo: la equi-
valencia entre aut omatas de pila y lenguajes libres del contexto.
Teorema 6.10 Si L es un LLC, entonces existe un AFS M, tal que L = N(M).
Demostraci on:
Supongamos que / L y que L = L(G) para G una GLC en FNG. La construcci on de
M se da de la siguiente manera:
Sea M = (q, T, N, , q, S, ) con denida de la siguiente manera:
(q, a, A) (q, ) siempre que Aa P
.
El AFS M tratar a de seguir las derivaciones izquierdas de la gram atica G. Por cada
smbolo no-terminal que G coloque en una forma sentencial, M lo coloca en su pila. Por
cada smbolo terminal que G genere, M lo compara contra su entrada. De esta forma, M
va poniendo en la pila los smbolos que posteriormente va a comparar contra la cadena
de entrada. Formalmente, se demostrar a que:
S

=x con una derivaci on por la izquierda
sii (q, x, S)

(q, , ) con x T
+
, N

= Supongamos primero que (q, x, S)

(q, , ) y demostraremos por inducci on en el


n umero de pasos i del reconocimiento que entonces S

=x, con x T
+
, N

. Es
claro que para el caso en que = la forma sentencial x corresponde a una cadena
de L(G).
Base: Si (q, x, S)

(q, , ) en un solo paso, esto quiere decir que [ x [ 1, pero como


x ,= , x consiste de exactamente un car acter, de donde podemos aplicar alguna de las
reglas de de la siguiente forma: (q, x, S) (q, ). Por construcci on de , esto quiere
decir que la producci on S x P, de donde S=x en G.
Inducci on: Supongamos que si (q, x, S)
k
(q, , ) con 1 <j k pasos, entonces
S
k
=x en G. Consideremos la cadena x = ya, tal que [ ya [= k + 1. Entonces
(q, ya, S)
k
(q, a, A)
1
(q, , )
6.6 Equivalencia de AFS y LLC 187
Podemos considerar lo que hace el AFS al leer el prejo y de la cadena, dado que mien-
tras no lea al smbolo a, este no inuye el comportamiento del AFS. De esto, podemos
trabajar con el siguiente reconocimiento (q, y, S)
k
(q, , ) en menos de k + 1 pasos,
por lo que S
k
=y en G. Si = A y en este momento le alimentamos a M el
smbolo a, obtenemos la sucesi on de conguraciones siguiente:
(q, ya, S)
k
(q, a, A)
1
(q, , ) donde = .
El ultimo paso indica que en el AFS tenemos una transici on donde (q, a, A) contiene
a (q, ). Por construcci on de , implica que tenemos en P una producci on de la forma
Aa. Tambi en sabemos que, por la hip otesis de inducci on, S

=yA. Si ahora
aplicamos esa producci on a la forma sentencial anterior, obtenemos la siguiente sucesi on
en la derivaci on de x: S
k
=yA
1
=ya = x, lo que termina la demostraci on en
este sentido.
= En esta parte demostraremos que si S

=x entonces (q, x, S)

(q, , ). La
demostraci on ser a tambi en por inducci on en i el n umero de pasos en la derivaci on.
Base: Si i = 1, tenemos S
1
=w. Como Gest a en FNGy / L(G), [w[ = 1. Entonces
en P tenemos la producci on S w. Por construcci on de N, a esta producci on le
corresponde una transici on de la forma (q, w, S) (q, ), y entonces
(q, w, S)
k
1
(q, , ) (con = , x = w)
Inducci on: Supongamos que es cierto para derivaciones de menos de k pasos. Sea x=ya,
= , y = A. Sea S
k
=x=ya una derivaci on de k pasos y pensemos en la
derivaci on tomando la siguiente forma S
k
=yA =ya = x.
Como S
k
=yA con k pasos, por la hip otesis de inducci on tenemos entonces que
(q, y, S)
k
(q, , A). Por un razonamiento similar al anterior, podemos en este punto
darle a M a leer el smbolo a, y obtener (q, ya, S)
k
(q, a, A). Del ultimo paso en
la derivaci on sabemos que en G est a la producci on Aa. Por c omo se construy o ,
esto quiere decir que (q, a, A) (q, ), por lo que, aplicando esta ultima regla a la
conguraci on (q, a, A) obtenemos
(q, ya, S)
k
(q, a, A)
1
(q, , ) = (q, , )
que es lo que se quera demostrar.
Para demostrar que L(G) = N(M), basta notar que si = entonces la demostraci on
se interpreta como:
S

=x (q, x, S)

(q, , )
188 Lenguajes libres del contexto
Demostraremos ahora la equivalencia en el otro sentido:
Teorema 6.11 Si L es un LLC que no contiene a , aceptado por un AFS por pila vaca,
entonces L puede ser generado por una GLC (si L = N(M) entonces L = L(G)).
Demostraci on:
Sin p erdida de generalidad podemos suponer que el AFS tiene un unico estado le-
ma 5.4. Sea M=(q, , , q, Z
0
, ) con = . Construyamos G de la siguiente
manera:
N = A [ A S, S /
P = conjunto de producciones construido de la siguiente manera:
1. SZ
0
2. Aa
para cada A ,

y a tales que en M
tenemos que (q, a, A) (q, )
Lo que queremos hacer con las producciones de G es que, al derivarse una cadena x
por la izquierda en G, se simula al AFS M cuando se le alimenta esa misma cadena x.
N otese que en un momento dado los smbolos no terminales en una forma sentencial son
los smbolos de guardados en la pila.
Como la construcci on de la gram atica a partir de un AFS con un unico estado es similar
a la construcci on que acabamos de hacer en el teorema 6.10, la demostraci on de que en
efecto L(G) = N(M) tambi en es similar y se deja al lector.
Dada esta equivalencia, las propiedades de los lenguajes tipo 2 podr an ser demostradas
usando cualquiera de estos dos modelos, lo que haremos en el siguiente captulo.
Propiedades de los
lenguajes libres del
contexto
7
Presentamos en este captulo caracterizaciones de los lenguajes libres del con-
texto a trav es de los lemas del bombeo y de Ogden. Una vez hecho esto revisa-
mos las propiedades de cerradura de los lenguajes libres del contexto y, como
ya tenemos demostrada la equivalencia entre aut omatas de pila y gram aticas
tipo 2, trabajaremos cada una de estas propiedades con el modelo que m as fa-
cilite la demostraci on. Estas propiedades nos sirven para determinar cu ando
un lenguaje no es libre del contexto. Finalmente damos algoritmos de decisi on
para determinar si un lenguaje libre del contexto es vaco, nito o innito.
7.1. Lema de bombeo (Pumping Lemma)
Cuando estudiamos lenguajes regulares, vimos la aplicaci on de lo que fue un lema de
bombeo para lenguajes regulares y que deca que, dada una cadena sucientemente gran-
de perteneciente a un lenguaje regular, esa cadena contiene una subcadena corta cerca del
principio de la cadena que, repetida un n umero arbitrario de veces, genera nuevas cade-
nas que tambi en pertenecen al lenguaje. Este lema lo utilizamos m as que para caracterizar
190 Propiedades de los LLC
a los lenguajes tipo 3, para demostrar que alg un lenguaje no lo era (como por ejemplo
a
n
b
n
[n 1). En el caso de lenguajes libres del contexto tenemos una cadena relativa-
mente larga que contiene a dos subcadenas relativamente cortas que est an cerca una de la
otra en la cadena y que pueden ser repetidas un n umero arbitrario de veces, el mismo para
ambas, de tal manera que las cadenas resultantes de estas repeticiones siguen estando en el
lenguaje.
Lema 7.1 (LEMA DE BOMBEO (Pumping Lemma)) Sea L un LLC. Entonces existe una
constante n, que depende exclusivamente de L, tal que para una cadena z L, y si [z[ n,
podemos escribir z = uvwxy, con u, v, w, x, y subcadenas que cumplen:
1. [vx[ 1 Esto es, no pueden ser ambas vacas al mismo tiempo.
2. [vwx[ n Si [vwx[ = n entonces u = y =
3. Para toda i 0, la cadena uv
i
wx
i
y est a en L.
Demostraci on:
Sea G una GLC en FNC, que genera L . La demostraci on trabajar a sobre el arbol
de derivaci on de la palabra z, donde cada nodo del arbol tiene, o bien un solo hijo que
est a etiquetado con un smbolo terminal, o bien dos hijos que est an etiquetados, cada
uno de ellos, con un smbolo no terminal. Si z est a en L(G) y z es larga, entonces el
arbol de derivaci on de z debe contener un camino largo. No s olo eso. Demostraremos,
por inducci on sobre i que si el arbol de derivaci on de una palabra generada por una GLC
en FNC no tiene ning un camino de longitud mayor que i entonces la cadena no puede
tener una longitud mayor que 2
i1
.
Figura 7.1 Derivaci on en un solo paso
S
a = z
Base: Para i = 1, la unica posibilidad para un arbol que genera una cadena en un solo
paso se muestra en la gura 7.1.
y [z[ = 1 2
11
= 2
0
= 1
Inducci on: Supongamos cierta la aseveraci on para arboles con trayectorias menores que i
y demostremos para i. Al derivar z, el primer paso en la derivaci on tiene que ser con una
producci on de la forma S AB donde A
+
=z
1
, B
+
=z
2
y z = z
1
z
2
.
7.1 Lema de Bombeo 191
Figura 7.2 Derivaci on en m as de un paso
S
A
T

B
T

El arbol de derivaci on podra verse como se muestra en la gura 7.2, donde A y B son,
a su vez, las races de los arboles de derivaci on T

y T

respectivamente, en los cuales


hay caminos de longitud a lo m as i 1. Por la hip otesis de inducci on, [z
1
[ 2
i2
y
[z
2
[ 2
i2
. De lo anterior, [z[ = [z
1
[ +[z
2
[ 2(2
i2
) = 2
i1
.
Ahora, supongamos que G tiene k smbolos no terminales y jemos la longitud mnima
de la palabra elegida como n = 2
k
. Entonces si [z[ n, [z[ > 2
k1
. En el arbol
de derivaci on de z, que se encuentra en la gura 7.3, tenemos al menos un camino de
longitud mayor que k o sea de longitud k + 1. Pero en un camino de longitud k + 1
tenemos k + 2 v ertices, el ultimo de los cuales est a etiquetado con un smbolo terminal.
Consideremos unicamente los k + 1 ultimos v ertices que terminan en una hoja, pero sin
considerar el v ertice que es hoja. Como en G s olo hay k smbolos no terminales, debe
haber dos nodos etiquetados con el mismo smbolo no terminal. Sea P un camino de
longitud m axima en el arbol de derivaci on. Entonces debemos tener dos v ertices en P,
v
1
y v
2
que satisfacen las siguientes condiciones:
i. v
1
y v
2
est an etiquetados con el mismo smbolo no terminal, digamos A.
ii. v
1
est a m as cerca de la raz que v
2
.
iii. El camino que va de v
1
a una hoja tiene longitud de a lo m as k + 1.
Para demostrar que siempre podemos encontrar v
1
y v
2
que cumplan con estas condi-
ciones, basta con salir de una hoja hacia la raz y visitar, en sentido inverso al de la
derivaci on k +1 nodos, que no pueden tener k +1 etiquetas distintas. Observemos ahora
a los sub arboles T
2
, T
4
y T
3
cuyas races son, respectivamente, los nodos v
1
y v
2
. Dado
que P era de longitud m axima, la subcadena derivada de T
2
T
4
no puede tener longitud
mayor que 2
k
. Sea z
1
la subcadena derivada de T
1
T
5
y z
2
la subcadena derivada de T
3
.
Entonces podemos escribir z
1
= z
3
z
2
z
4
. M as a un, z
3
y z
4
no pueden ser ambas , pues la
primera producci on en la derivaci on de z
1
debe ser de la forma A BC para alguna
B y C en N. Adem as, la subcadena derivada por el arbol T
3
debe estar completamente
contenida en el sub arbol de B o en el sub arbol de C. Sabemos ya que
A =z
3
Az
4
y que A =z
2
donde [z
3
z
2
z
4
[ < 2
k
= n
192 Propiedades de los LLC
Figura 7.3 Lema del bombeo
S
A
(v
1
)
A
(v
2
)
u
y
v x w
T
1
T
5
T
2
T
4
T
3
S
C
A
A
D
u
y
v
x w
De esto se sigue que A

=z
3
Az
4

=z
i
3
z
2
z
i
4
para i 0. Si escribimos z = uz
3
z
2
z
4
y,
para alguna u y y, z
3
= v, z
2
= w, z
4
= x, terminamos la demostraci on.
7.1.1. Aplicaciones del lema de bombeo
Como en el caso del lema del bombeo para expresiones regulares, utilizaremos el lema
similar en LLC para demostrar que un lenguaje no es LLC.
Ejemplo 7.1:
Consideremos L = a
i
b
i
c
i
[i 1. Supongamos que L es un LLC y consideremos n la
constante del lema de bombeo. Sea z = a
n
b
n
c
n
. Sabemos ya que [z[ n. Sea z = uvwxy,
para satisfacer las condiciones del lema. La pregunta relevante es d onde podran estar v
y x para poder ser bombeadas? Tratemos de revisar todos los casos posibles. Para ellos,
visualicemos las cadenas en z compuesta por tres regiones, la que corresponde a a
i
(r1), la
que corresponde a b
i
(r2) y la que corresponde a c
i
(r3). Tomemos en cuenta que [vx[ , = .
v (o x) en r1 r2 (o r2r3): No se puede pues al usar i 2 se mezclaran los smbolos
de las dos regiones involucradas.
v en r1 y x en r3: Esto no es posible porque tenemos la restricci on |vwx| n y cada
regi on tiene exactamente n smbolos.
7.2 Lema de Ogden 193
v y x ambos en r1, r2 o bien r3: Si ambas est an en una misma regi on, cuando la i = 0 o
i = 2 el n umero de smbolos en la regi on va a ser menor (o mayor) que en las otras
dos regiones.
v en r1 (r2) y x en r2 (r3): Para i = 0 o i = 2, la regi on en la que no est an v y x queda
de menor (mayor) tama no que las que s tienen a v o a x.
Ejemplo 7.2:
Sea L = a
n
b
n
a
n
b
n
. Demostraremos que L no es libre del contexto, usando para ello
el lema del bombeo.
Sea k la constante del lema del bombeo y tomemos la cadena z = a
k
b
k
a
k
b
k
. Trataremos
de acomodar a u y x de tal manera de bombear la cadena y que la cadena siga estando en L
y veremos que esto no es posible. Identicamos cuatro regiones en z, que se muestran en
la gura 7.4.
Figura 7.4 Regiones en la cadena a
k
b
k
a
k
b
k
k k k k
.. .. .. ..
a . . . a
. .
b . . . b
. .
a . . . a
. .
b . . . b
. .
r1 r2 r3 r4
Veamos, por regiones, todas las maneras de acomodar vwx para aplicar el lema del
bombeo.
v en r1 (r2) y x en r3 (r4): Esto no es posible porque se infringe la regla de que |vwx|
k, ya que w consistira, al menos de k letras.
v en r1 (r3) y x en r2 (r4): Al hacer i = 0, dado que |vx| 1, en r1 (r3) y/o en
r2 (r4) tendramos menos letras que en r3 (r1) y/o r4 (r2), por lo que z
0
=
uv
0
wx
0
y L. Esto sucede tambi en si alguna de v o x es .
v o x ocupan posiciones sobre la frontera entre dos regiones: esto es, cualquiera de las
dos (pero no ambas) consiste de a . . . ab . . . b; al bombear la cadena para i = 2, se
mezclaran las aes y bes y no se respetaran las regiones, por lo que el resultado de
bombear no estara en L.
Dado que no podemos acomodar a uvwxy para que uv
i
wx
i
y est e en L para toda i, L
no es libre del contexto.
Este lenguaje nos va a servir en adelante como auxiliar para determinar que ciertos
lenguajes no son libres del contexto.
Se deja como ejercicio analizar y demostrar que los lenguajes denotados por
a
i
b
i
c
j
[j > i y a
i
b
j
c
k
[i < j < k no son libres del contexto.
194 Propiedades de los LLC
7.2. Lema de Ogden
Hay lenguajes que, si bien sabemos que no son libres del contexto, no podemos utilizar
el lema de bombeo para demostrarlo. Por ejemplo,
L = a
i
b
i
c
j
[i, j 0, i ,= j.
Veamos a las cadenas de este lenguaje tambi en formando tres regiones: r1=a
i
, r2=b
i
y
r3=c
j
; sea n = k y consideremos z = a
k
b
k
c
k+k!
. En esta cadena, si acomodamos a v y x
en r1 y r2 respectivamente, podemos escoger el n umero de aes, bes y ces de tal manera que
al bombear a v y a x un cierto n umero de veces igualemos el n umero de ces. Sin embargo,
existe una forma de escribir z donde acomodemos a v y x exclusivamente en r3. No hay i
para la cual r3 tenga el mismo n umero de ces que de aes y bes, pues para que esto sucediera
tendramos que hacer que v
i
wx
i
= k!. Pero como [v
i
wx
i
[ k, por lo que si i = 0, el
n umero de ces es k! ,= k. Por lo que esta cadena seguira estando en L.
El lema de Ogden es una generalizaci on del lema del bombeo, que evita las restricciones
sobre el tama no de las cadenas a bombear y la distancia entre ellas.
Lema 7.2 (DE OGDEN) Sea L un LLC. Entonces existe n (que puede, de hecho, ser la
misma que la del lema de bombeo), tal que si z es cualquier cadena en L sucientemente
larga, y marcamos n o m as posiciones de z como posiciones distinguidas, entonces pode-
mos escribir z = uvwxy, con u, v, w, x, y subcadenas de z, tales que:
i. v y x juntas tienen al menos una posici on distinguida.
ii. vwx tienen a lo m as n posiciones distinguidas y
iii. para toda i 0, uv
i
wx
i
y est a en L.
Demostraci on:
Sea G una GLC en FNC, que genera L . Supongamos que G tiene k smbolos no
terminales y escogemos n = 2
k+1
. Debemos construir una trayectoria en P, un poco
como la trayectoria del lema de bombeo. Pero como en este caso estamos considerando
posiciones distinguidas, esta trayectoria tendr a que ver con ellas. P ser a una trayectoria
en el arbol de derivaci on de z, pero en lugar de preocuparnos por todos los v ertices en
P, nos ocuparemos unicamente de aqu ellos que son puntos de bifurcaci on. Un punto de
bifurcaci on es aquel nodo cuyos dos descendientes tienen, a su vez, descendientes distin-
guidos. Un descendiente distinguido es, obviamente, un car acter en posici on distinguida.
Construimos P de la siguiente manera: empezamos por poner a S en la trayectoria.
Supongamos que r fue el ultimo nodo que incluimos en la trayectoria. Con los hijos de
r puede suceder una de las tres situaciones que siguen:
i. r tiene un solo hijo con descendientes distinguidos.
7.2 Lema de Ogden 195
ii. r tiene ambos hijos con descendientes distinguidos, pero uno de los hijos tiene m as
posiciones distinguidas que el otro.
iii. Ambos hijos de r tienen el mismo n umero de descendientes distinguidos.
En el primer caso, el hijo con descendientes distinguidos es incluido en P. En el segun-
do caso, el hijo con un n umero mayor de descendientes distinguidos es incluido en P.
En el tercer caso, se escoge arbitrariamente a uno de los hijos para que pase a formar
parte de P.
Figura 7.5

Arbol de derivaci on para el lema de Ogden
a a a a a
b b b b b
c c
E F
D C X
1
A X H G
X
2 C
A X
1
S


..
u
. .
v
. .
w
. .
x
y =
Con P construida de esta forma, cada punto de bifurcaci on tiene, al menos, la mitad de
descendientes distinguidos que el punto de bifurcaci on anterior. Esto se debe a que G
est a en FNC, y el punto de bifurcaci on que estamos observando en este momento est a en
la trayectoria en la que, al encontrarnos en el punto de bifurcaci on anterior, elegimos
seguir por aquel nodo que tuviera, al menos, la mitad de los descendientes distinguidos
del punto de bifurcaci on. Aquellos nodos que est an en P pero que no son puntos de
bifurcaci on, van manteniendo, nivel tras nivel, el n umero de descendientes distinguidos
del nivel anterior. Dado que tenemos al menos n posiciones distinguidas en z, y todas
estas son descendientes de la raz, en P hay al menos k + 1 puntos de bifurcaci on.
Al recorrer P, el mnimo n umero de puntos de bifurcaci on se da cuando en cada uno
de ellos los dos hijos tienen el mismo n umero de descendientes distinguidos, o sea,
196 Propiedades de los LLC
exactamente la mitad de descendientes distinguidos que el punto de bifurcaci on anterior,
por lo que el n umero de veces que tenemos que partir a n (2
k+1
) en 2 para llegar a una
hoja es k + 1. Tomemos de P los ultimos k + 1 puntos de bifurcaci on, y encontramos
al menos dos nodos con la misma etiqueta. Podemos elegir que estos dos nodos sean v
1
y v
2
, ambos con la misma etiqueta, y v
1
m as cercano a la raz que v
2
. A partir de ac a, la
demostraci on prosigue exactamente igual que con el lema del bombeo.
Ejemplo 7.3:
Sea L = a
i
b
j
c
k
[i ,= j ,= k. Supongamos que L es un LLC. Sea n la constante del
lema de Ogden y consideremos en este lenguaje z =a
n
b
n+n!
c
n+2n!
. Consideremos como
posiciones distinguidas a las que ocupan las a. Si v o x contienen dos smbolos distintos,
entonces uv
i
wx
i
y no est a en L. (Por ejemplo, si v est a en a
+
b
+
, entonces uv
i
wx
i
y tiene al
menos una b precediendo a alguna a). O bien v contiene a o bien x contiene a, pues s olo
las a est an marcadas como distinguidas. Si x est a en b

o c

, entonces v debe estar en a


+
.
Si x est a en a
+
, entonces v debe estar en a

, pues de otra forma una b o una c precederan


a una a.
Consideremos con detalle el caso en que x est a en b

. Supongamos x en b

y v en a
+
.
Sea p el n umero de caracteres en v. Como 1 p n, p divide a n!. Sea q el entero
que multiplicado por p da n! (pq = n!). Entonces z

= uv
2q+1
wx
2q+1
y est a en L. Pero
v
2q+1
= a
2pq+p
= a
2n!+p
. Como uw contiene exactamente (n p) a, z

tiene (2n! + n)
a. Sin embargo, como v y x no tienen c, z

tiene tambi en (2n! + n) c y por lo tanto z

no
est a en L, una contradicci on, similar a la que ocurre si x est a en a
+
o c

. De donde L no es
un lenguaje libre del contexto.
Para terminar esta secci on es importante hacer notar que de la misma manera que el
lema de bombeo para lenguajes regulares daba una condici on necesaria para ser lenguaje
regular, los lemas de Ogden y de bombeo para lenguajes libres del contexto lo hacen. Cree-
mos util recalcar esto pues el hecho de que para un lenguaje que no es libre del contexto
podamos demostrar que el lema de Ogden o de bombeo se cumplen, no implica que sea
LLC. Fue precisamente as como surgi o la necesidad del lema de Ogden, pues haba len-
guajes que se saba no eran LLC y que sin embargo cumplan perfectamente con el lema
de bombeo.
7.3. Propiedades de cerradura de LLC
En esta secci on examinaremos cu ales de las propiedades de cerradura se dan tambi en
en los lenguajes libres del contexto. Como veremos, al adquirir algo de libertad para la
representaci on de las gram aticas de los lenguajes libres del contexto, perdemos tambi en
algo de rigidez o capacidad de predicci on en cuanto a su comportamiento ante distintas
operaciones, como pueden ser la uni on, intersecci on, concatenaci on, etc. Esta secci on no
s olo nos ser a util para construir o probar que ciertos lenguajes son libres del contexto, sino
7.3 Propiedades de cerradura de LLC 197
tambi en, apoy andonos en las propiedades que preservan, probar que ciertos lenguajes no
lo son. Supondremos que S N.
Teorema 7.3 Los lenguajes libres del contexto son cerrados bajo uni on, concatenaci on
y cerradura de Kleene.
Demostraci on:
Sean L
1
y L
2
LLC generados por las GLC G
1
y G
2
respectivamente, denidas:
G
1
= (N
1
, V
1
, P
1
, S
1
) y G
2
= (N
2
, V
2
, P
2
, S
2
)
Dado que podemos reetiquetar los smbolos no terminales sin modicar el lenguaje ge-
nerado, podemos suponer que N
1
y N
2
son conjuntos ajenos. Podemos suponer tambi en
que S no est a en N
1
N
2
.
UNI

ON: Para L
1
L
2
construimos la gram atica
G = (N
1
N
2
S, T
1
T
2
, P, S)
donde P es P
1
P
2
S S
1
, S S
2
. Si w est a en L
1
, entonces la derivaci on
SS
1

=w es una derivaci on en G, ya que toda producci on de G


1
es una produc-
ci on de G. Similarmente, toda palabra en L
2
tiene una derivaci on en G empezando con
SS
2
. De ac a L
1
L
2
L(G).
Para demostrar en el sentido inverso, sea w en L(G). Entonces la derivaci on S =

G
w
empieza o bien con S =
G
S
1
=

G
w o con S =
G
S
2

= w. En el primer caso, como


N
1
N
2
= , s olo smbolos de G
1
pueden aparecer en la derivaci on de S
1

=w.
Como las unicas producciones en P que involucran solamente a smbolos de N
1
son
las producciones de P
1
, concluimos que s olo se usaron producciones de P
1
en la de-
rivaci on S
1
=

w. As que S
1
=

G
1
w y w est a en L
1
. Similarmente, si la derivaci on
empieza S=
G
S
2
, podemos concluir que w est a en L
2
. De lo anterior L(G) L
1
L
2
,
as que L(G) = L
1
L
2
, como se quera demostrar.
CONCATENACI

ON: Para la concatenaci on construyamos


G = (N
1
N
2
S, V
1
V
2
, P, S) donde P es P
1
P
2
SS
1
S
2
.
La demostraci on de que L(G) = L(G
1
)L(G
2
) es similar a la anterior y se omite.
CERRADURA: Construyamos G = (N
1
S, V
1
, P, S), donde P es P
1
m as las produc-
ciones SS
1
, S
1
S
1
S
1
y S. Otra vez dejamos como ejercicio la demos-
traci on de que L(G) = L(G
1
)

.
Adem as de la cerradura bajo las tres operaciones anteriores, los LLC est an cerrados
tambi en bajo sustituci on. Deniremos primero lo que es una sustituci on en un LLC.
198 Propiedades de los LLC
Denici on 7.1 Sea L un lenguaje sobre un alfabeto . Supongamos que para cada a ,
damos una regla de sustituci on, que toma, a su vez, la forma de un lenguaje,
y la denotamos por L
a
. Este lenguaje puede o no ser sobre el mismo alfabeto que L.
La regla de sustituci on dice que en cada posici on de una palabra de L en la que
aparezca el smbolo a, este se sustituye por la denici on o la forma que toma cada palabra
en L
a
.
Ejemplo 7.4:
Si L = 0
n
1
n
[n 1, y denimos la regla de sustituci on para el 0 (L
0
) como a (o
sea que dondequiera que aparezca un cero se sustituye por una a) y la regla de sustituci on
para el 1 (L
1
) como b
m
c
m
[m 1 (o sea que dondequiera que aparezca un 1 se sustituye
por b
m
c
m
), el lenguaje que obtenemos de sustituir L
0
y L
1
en L (denotado por L

) es
L

= a
n
(b
m
c
m
)
n
= a
n
b
m
c
m
b
m
c
m
. . . b
m
c
m
[n 1, m 1.
Formalmente, denimos una sustituci on de la siguiente manera: Sea L una clase de lengua-
jes y sea L sobre un lenguaje en L. Supongamos que = a
1
, a
2
, . . . a
k
y denimos
L
a
1
, L
a
2
, . . . , L
a
k
lenguajes en L. Decimos que L es cerrada bajo sustituci on si para todas
las elecciones de L, tenemos que L

denido de la siguiente manera


L

= x
1
x
2
. . . x
n
[ a
i
1
a
i
2
. . . a
in
est a en L,
x
1
est a en L
a
i
1
,
x
2
est a en L
a
i
2
,
.
.
.
x
n
est a en L
a
in

est a en L.
Teorema 7.4 Los lenguajes libres del contexto est an cerrados bajo sustituci on.
Demostraci on:
Sea L un LLC, L

, y para cada a sea L


a
un LLC. Sea L = L(G) y para
cada a , sea L
a
= L(G
a
). Sin perder generalidad supongamos que las no terminales
de G y G
a
son ajenas. Construyamos una gram atica G

de la siguiente manera. Las no


terminales de G

son las de Gjunto con las de las gram aticas G


a
. El smbolo inicial de G

es el smbolo inicial de G. Las producciones de G

son todas las producciones de las G


a
,
junto con aquellas producciones que se formen al tomar la producci on A G
y sustituir S
a
, el smbolo inicial de G
a
, por cada aparici on de a que aparece en
. Es f acil ver que L(G

) es LLC, pues G

tiene todas sus producciones de la forma


adecuada. Denotemos por x
i
la cadena que resulta de sustituir a
i
con la regla dada por
L
a
i
, 1 i n. Sea a
1
. . . a
n
una cadena en L y x
i
en L
a
i
para 1 i n. Entonces
S=

G
a
1
. . . a
n
.
7.3 Propiedades de cerradura de LLC 199
Pero como la denici on de sustituci on dice que se sustituye a x
i
por cada a
i
, tal que
S
a
i

= x
i
, y dado que en todos lados donde aparece a
i
lo sustituimos por S
a
i
en las
producciones de G

, tenemos en G

la derivaci on
S=

S
a
1
S
a
2
. . . S
an
. . .=

x
1
S
a
2
. . . S
an

=. . .=

x
1
. . . x
n
,
de donde L

L(G

).
Para demostrar que L(G

) L

, denamos h(a
i
) = S
a
i
para 1 i n, y
h(A) = A para A N. Si pensamos en una derivaci on de w en L(G

), tenemos
S=

w. Si lo hace en un solo paso, s olo podemos tener w = , (w = a


1
a
2
. . . a
n
con
a
i
,= para alguna i) querra decir que la producci on S a
1
a
2
. . . a
n
estara en G

;
pero como S est a en N, S no genera ning un smbolo terminal, sino que si esta producci on
estaba en P, fue sustituida por SS
a
1
S
a
2
. . . S
an
; de donde no se puede generar una
cadena que contenga nada m as terminales en un solo paso en G

. Si est a en L, entonces
est a en L
a
para toda a y se cumple que w=x
1
x
2
. . . x
n
, x
i
= y x
i
est a en L
a
i
.
Supongamos ahora que S =

w en m as de un paso. La unica forma de obtener


smbolos terminales es, llegando en alg un momento, a trav es de los smbolos S
a
i
, pues
desde los smbolos no terminales de N, como ya dijimos, no podemos generar smbolos
terminales (y esto incluye a S). De lo anterior, la derivaci on de w se puede contemplar
en dos fases, salir de S y llegar a S
a
i
, y salir de cada una de las S
a
i
para llegar a las
correspondientes cadenas terminales:
S=S
a
1
S
a
2
. . . S
an

=x
1
x
2
. . . x
n
donde S
a
i
=

G
i
x
i
. De lo anterior, x
i
est a en L
a
i
, lo que corresponde a la denici on
de sustituci on que dimos antes.
Del resultado anterior podemos deducir, dado que un isomorsmo es un caso especial
de sustituci on, el siguiente
Corolario 7.5 Los LLC son cerrados bajo isomorsmo.
7.3.1. Operaciones booleanas
Varias de las propiedades de cerradura que poseen los lenguajes regulares no se man-
tienen para LLC. En general, demostraremos que una propiedad no se presenta en los LLC
dando un ejemplo donde esto sucede. Haremos repetidamente uso de lenguajes que ya se
haya demostrado que no son LLC, como a
i
b
i
c
i
[i 1 y a
i
b
j
c
k
[i j k.
200 Propiedades de los LLC
Por ejemplo, los LLC no siempre son cerrados bajo intersecci on. Para mostrarlo, con-
sideremos
L
1
= a
i
b
i
c
j
[i > 1 y j > 1 y L
2
= a
i
b
j
c
j
[i 1 y j 1
Ambos lenguajes son LLC. Consideremos ahora
L
3
= L
1
L
2
(L
3
= a
i
b
i
c
i
[i 1)
que es el conjunto de cadenas que contienen, por L
1
, el mismo n umero de car acteres a que
de car acteres b y por L
2
el mismo n umero de car acteres b que de car acteres c). L
3
, como
ya demostramos con el lema de bombeo, no es un LLC, con lo que queda mostrado que no
forzosamente hay cerradura bajo intersecci on.
Dado lo anterior, tambi en podemos aseverar que los LLC no siempre son cerrados bajo
complemento. Esto se debe a que, por las leyes de De Morgan, sabemos que
L
1
L
2
= L
1
L
2
Sabemos que los LLC est an cerrados bajo uni on. Si estuvieran cerrados bajo complemento,
estaran cerrados bajo intersecci on, lo que acabamos de mostrar que no forzosamente es
cierto.
Si restringimos un poco m as a los lenguajes que queremos intersectar, podemos obtener
cerradura. La restricci on a la que nos referimos consiste en exigir que uno de los lenguajes
sea un lenguaje regular:
Teorema 7.6 Si L es un LLC y R es un conjunto regular, entonces L R es un LLC.
Demostraci on:
Sea L = L(M) para un AFS M = (Q
M
, , ,
M
, q
M
, Z
0
, F
M
) y R = L(A) para un
AFD A = (Q
A
, ,
A
, p
A
, F
A
). Construimos un AFS M

= (Q

, , ,

, q
0
, Z
0
, F

) de
la siguiente manera:
Q

= [q, p][q Q
M
y p Q
A

q
0
= [q
M
, p
A
]
F

= [q, p][q F
M
y p F
A

denida como sigue:

([q, p], a, A) ([q

, p

], )
M
(q, a, A) (q

, ) y
A
(p, a) = p

, al reconocer a una cadena, pone en movimiento simult aneamente a M y a A, y va


registrando las distintas conguraciones por las que pasa M y los estados por los que
7.3 Propiedades de cerradura de LLC 201
pasa A con cada smbolo de la cadena. Una cadena est a en L R si es aceptada por M
y A. Formalmente, x est a en L si (q
M
, x, Z
0
)

M
(q
i
, , ) para q
i
en F
M
, y x est a en R
si
A
(p
A
, x) = p
i
para p
i
F
A
.
De esto, x est a en L R si y s olo si
(q
M
, x, Z
0
)

M
(q
i
, , ) y
A
(p
A
, x) = p
i
con q
i
F
M
y p
i
F
A
Entonces, lo que tenemos que demostrar es que
([q
M
, p
A
], x, Z
0
)

M
([q, p], , )
(q
M
, x, Z
0
)

M
(q, , ) y
A
(p
A
, x) = p
Demostraremos lo anterior para cualquier q
i
Q
M
y p
i
Q
A
, por inducci on sobre i, el
n umero de movimientos de M

.
Base: Para i = 0, es trivial, pues q
M
= q, p
A
= p, x = y se cumple
([q
M
, p
A
], , Z
0
)
0
M
([q
M
, p
A
], , Z
0
)
(q
M
, , Z
0
)
0
M
(q
M
, , Z
0
) y
A
(p
A
, ) = p
A
Inducci on: Supongamos cierto para menos de i movimientos y veamos el siguiente reco-
nocimiento en exactamente i movimientos:
([q
M
, p
A
], xa, Z
0
)

M
([q

, p

], a, B)
M
([q, p], , )
donde w = xa y a es o un smbolo de . Por la hip otesis de inducci on, tenemos
([q
M
, p
A
], xa, Z
0
)

M
([q

, p

], a, B)
(q
M
, xa, Z
0
)

M
(q

, a, b) y
A
(p
A
, x) = p

Por como denimos

, sabemos que

M
(q

, a, b) (q, ) y
A
(p

, a) = p
De lo anterior

A
(p
A
, xa) =
A
(
A
(p
A
, x), a) =
A
(p

, a) = p y
(q
M
, w, Z
0
) = (q
M
, xa, Z
0
)

M
(q, , )
y con esto terminamos de demostrar que si w est a en L R entonces w est a en L y w
est a en R.
La contenci on en sentido inverso se demuestra similarmente y se deja como ejercicio.
202 Propiedades de los LLC
Utilizaci on de las propiedades de cerradura
Como dijimos antes, utilizaremos las propiedades de cerradura m as para demostrar que
un lenguaje no es libre del contexto, us andolo como operando en alguna de las operaciones
cerradas y obteniendo como resultado un lenguaje que no es LLC, contradiciendo de esta
forma que sus operandos lo fueran.
Ejemplo 7.5:
Sea L = ww[w (a + b)

. L consiste de todas aquellas cadenas en las que su


primera mitad es igual a la segunda, y supongamos que L es un LLC. Intersect emosle con
un lenguaje regular, por ejemplo a
+
b
+
a
+
b
+
, o sea, construimos
L
1
= L a
+
b
+
a
+
b
+
.
L
1
as denido es a
i
b
j
a
i
b
j
[i 1, j 1, que ya se demostr o que no es libre del contexto.
Como a
+
b
+
a
+
b
+
s es regular, lo unico que pudo estar mal es el suponer que L es LLC, de
donde se concluye que L no es LLC.
Veremos a continuaci on c omo demostrar que un lenguaje aritm etico simple no es libre
del contexto, aprovechando que el lenguaje que resulta de la intersecci on de un lenguaje
libre del contexto con uno regular es libre del contexto y procediendo despu es a utilizar el
lema del bombeo para llegar a una contradicci on.
Ejemplo 7.6:
Denimos L = x#y =z [ x, y, z (0+1)

y si x, y y z son n umeros binarios positivos


sin ceros no signicativos, entonces x y = z
R
. Por ejemplo, si # es la multiplicaci on,
w = 100#111 = 00111 L, ya que 100 111 = 11100 que al escribirla al rev es resulta
ser 00111.
Si L fuera LLC, entonces al intersectarlo con R = 10

#1

= 0 1

nos quedara un
lenguaje libre del contexto. Usaremos el lema del bombeo para demostrar que L

= L R
no es LLC.
Sea k la constante del lema del bombeo y sea t = 10
k
#1
k
= 0
k
1
k
. Lo primero a notar es
que t L pues 10
k
1
k
= 1
k
0
k
, por lo que z
R
= 0
k
1
k
. Es claro tambi en que t R. Vamos
a demostrar que no hay forma de escribir t = uvwxy tal que cumpla con los supuestos del
lema del bombeo y que son: [vwx[ k; [vx[ 1, y para toda i, uv
i
wx
i
y L

.
Dividimos a t en siete regiones, como se muestra en la gura 7.6. Haremos el an alisis
de las posibles posiciones para v y x.
Figura 7.6 Regiones en la palabra t = 10
k
#1
k
= 0
k
1
k
1
..
000 . . . 000
. .
#
..
111 . . . 111
. .
=
..
000 . . . 000
. .
111 . . . 111
. .
r1 r2 r3 r4 r5 r6 r7
7.4 Decidibilidad en LLC 203
v o x incluyen a r1, r3 o r5: En este caso si bombeamos con i = 0, desparece alguno
de estos smbolos, lo que hara que z no estuviera en Ry por lo tampoco en L

.
v o x est an sobre la frontera entre r6 y r7: En este caso, al bombear con i = 2 se mez-
clan los ceros y los unos, as que uv
2
wx
2
y no estara en R y por lo tanto tampoco
en L

.
Los unicos casos que quedan son aqu ellos en los que tanto v como x est an cada uno
contenido dentro de una regi on.
v en r2 y x en r2: El argumento se aplica tambi en a u en r4 y v en r4 y a u en r2 y v
en r4. En estos casos al hacer el bombeo para i = 2 el valor del lado izquierdo de la
igualdad, como no hay ceros no signicativos, cambia mientras que el lado derecho
no lo hace, lo que obviamente no estara en L y por lo tanto tampoco en L

.
v y x en r6: El argumento se aplica tambi en a v en r6 y x en r7 o ambas en r7 y es simi-
lar al anterior. El lado derecho de la igualdad cambia de valor pero el lado izquierdo
no.
v en r2 y x en r6: El mismo argumento se aplica si v est a en r4 y x en r7. No se pueden
acomodar as a v y a x porque se viola la condici on |vwx| k.
Pasamos ahora a revisar las propiedades de decidibilidad de los lenguajes libres del
contexto.
7.4. Decidibilidad en lenguajes libres del contexto
Esta secci on resulta paralela a la secci on que en lenguajes regulares determinaba aque-
llas preguntas que se podan responder denitivamente respecto a ellos, aquellos aspectos
para los cu ales se poda dar un algoritmo que decidiera al respecto de la pregunta. En los
LLC no tenemos algoritmos para responder todo aquello que podamos responder respecto
a lenguajes regulares. Hay algoritmos para decidir si un LLC es vaco, nito o innito; si
una palabra dada est a o no en un LLC. El conjunto de preguntas para las que no tenemos al-
goritmo incluye, por ejemplo, decidir si dos GLC son o no equivalentes, si el complemento
de un LLC es un LLC, si este ultimo es nito, si un LLC es inherentemente ambiguo. En
el caso de muchos de estos problemas no s olo no tenemos algoritmo, sino que est a demos-
trado que tales algoritmos no pueden existir. En esta secci on hablaremos de los algoritmos
que s tenemos. El demostrar que hay problemas para los cu ales no existe algoritmo es un
problema de computabilidad, tema que no est a contemplado en este contexto. Dado que se
demostr o ya la equivalencia entre las distintas formalizaciones de los LLC, es irrelevante
cu al de los modelos se usa para las distintas demostraciones. En esta secci on se usar a la
formalizaci on de GLC.
Empezaremos con el algoritmo para determinar si un LLC es vaco, nito o innito.
Teorema 7.7 Existen algoritmos para determinar si un LLC es: (a) vaco, (b) nito,
(c) innito.
204 Propiedades de los LLC
Demostraci on:
(a): Para saber si un LLC es vaco podemos utilizar el algoritmo que determina las variables
vivas en una GLC. L es vaco si S, el smbolo inicial, no es una variable viva y es distinto
del vaco si S es variable viva.
Tambi en podramos tratar de ver si podemos tener alguna derivaci on, sin repetir smbolos
no terminales, que diera como resultado una cadena terminal, pero este m etodo, aunque
algortmico (pues hay un n umero m aximo de combinaciones de smbolos no termina-
les) es sumamente ineciente ya que consiste de construir todos los posibles arboles de
derivaci on de profundidad a lo m as k, donde k es el n umero de smbolos no terminales.
(b) y (c): Para probar si L es nito, supongamos que L = L(G) con Guna GLC en FNC que
genera L y que no contiene smbolos in utiles. Procedemos a dibujar una gr aca
dirigida que representa en alguna forma al conjunto de producciones de G, de la siguien-
te manera:

Dibujamos un nodo por cada smbolo no terminal en la gram atica.

Hay un arco dirigido del nodo etiquetado con A al nodo etiquetado con B si
ABC o bien ACB es una producci on en G.
Aseveramos que L es nito si y s olo si la gr aca no contiene ning un ciclo.
= Por contra positivo, supongamos que la gr aca contiene un ciclo, digamos
A
0
, A
1
, . . . , A
n
, A
0
Entonces podemos tener una derivaci on como la que sigue:
A
0
=
1
A
1

1
=
2
A
2

2
=. . .=
n
A
n

n
=
n+1
A
0

n+1
donde las
i
y
i
son cadenas en N

con [
i

i
[ = i (por ser G en FNC). Como no
hay smbolos in utiles en G,
n+1
=v y
n+1
=x para cadenas v y x de longitud al
menos n + 1. Como n > 0 (pues hay un ciclo) v y x no pueden ser ambas . Como
no hay smbolos in utiles, podemos encontrar cadenas u, y, tales que S=uA
0
y y una
cadena terminal w tal que A
0
=w. Entonces, para toda i tenemos
S

=uA
0
y

=uvA
0
xy

=uv
2
A
0
x
2
y

=. . .

=uv
i
A
0
x
i
y

=uv
i
wx
i
y
Como [vx[ > 0, uv
i
wx
i
y ,= uv
j
wx
j
y si i ,= j, de donde G genera un n umero innito de
cadenas.
= En sentido inverso, supongamos que la gr aca no tiene ciclos. Denimos el rango
r de un smbolo no terminal A, r(A), como la longitud de la trayectoria m as larga en
la gr aca y que empieza con A. Como la gr aca no tiene ciclos, esta trayectoria es
de longitud nita. Tambi en podemos decir que si ABC es una producci on de P,
r(B) < r(A) y r(C) < r(A). Demostraremos por inducci on sobre el rango de A, que
si r(A) = k, A no puede generar palabras de longitud mayor que 2
k
, esto es, que si
A

=w y r(A) = k entonces [w[ 2
k
.
7.4 Decidibilidad en LLC 205
Base: Si r(A) = 0, ning un arco sale de Aen la gr aca; entonces todas las A-producciones
tienen unicamente smbolos terminales del lado derecho, pero como la gram atica est a en
FNC, unicamente tienen un smbolo terminal del lado derecho, o sea que son de la forma
Aa, de donde A genera unicamente palabras de longitud 1 2
0
Inducci on: Supongamos cierto para rangos menores que k y tomemos r(A) = k 1. Si
usamos producciones de la forma Aa, la longitud de la cadena es 1, por lo que
debemos suponer que la primera producci on que usamos en la derivaci on de una cadena
es de la forma ABC. Entonces B y C tienen rango a lo m as k 1 (si fuera mayor,
la trayectoria que elegimos para denir el rango de A no era m axima), y por la hip otesis
de inducci on derivan, cada una de ellas, cadenas de a lo m as 2
k1
smbolos. A deriva la
concatenaci on de las cadenas que deriva B con las cadenas que deriva C, por lo que A
deriva cadenas de longitud a lo m as 2
k1
+2
k1
= 2
k
. Como S es uno de los smbolos no
terminales, tambi en de rango nito, digamos r
0
(que es a lo m as el n umero de smbolos
no terminales en N) deriva palabras de longitud a lo m as 2
r
0
y como hay un n umero
nito de estas ultimas, qued o demostrado que L es nito.
Ejemplo 7.7:
Consideremos la gram atica
SAB
ABC Aa
BCC Bb
Ca
a. L(G) no es vaco: S es una variable viva y produce a la cadena ab
b. Construyamos la gr aca de la gram atica se muestra en la gura 7.7.
Figura 7.7 Gr aca de la gram atica G
S A
B C
Como la gr aca de G no tiene ciclos, L(G) es nito.
206 Propiedades de los LLC
Los rangos de S, A, B y C son 3, 2, 1 y 0 respectivamente. De lo anterior esta
gram atica no puede derivar ninguna cadena mayor que 2
3
= 8. De hecho, la cadena
m as larga es la que resulta de la siguiente derivaci on:
S=AB=BCB=cccB=CCCCC=aaaaa
Si agregamos la producci on CAB, entonces la gr aca de G resulta como se ve
en la gura 7.8.
Figura 7.8 Gr aca de la gram atica G con ciclos
S A
B C
Esta nueva gr aca s tiene ciclos, por lo que L(G) deber a ser innito. De hecho,
podemos demostrar esto ultimo. Uno de los ciclos podra ser A, B, C, A. De ac a,
podemos encontrar una derivaci on
A=A (A=BC=CCC=CABC) con = C, = BC
Como Ca y BC=ba, tenemos que A=aAba. Entonces, al generar desde
S, tenemos S=AB y Aa, de donde Sa
i
a(ba)
i
b para toda i, por lo que
L(G) es innito.
7.4.1. Membresa
Pasaremos ahora a dar un algoritmo para decidir si una palabra est a o no en un lenguaje
libre del contexto.
Teorema 7.8 Sea G = (N, V, P, S) una GLC en forma normal de Greibach y x una
cadena en V

. Entonces es decidible si x est a en L(G).


Demostraci on:
Existe un algoritmo simple, pero ineciente que, dada una GLC en FNG termina dicien-
do si x est a o no en L(G).

Si x = , dado que podemos determinar si S es nulicable, podemos decir que la


palabra vaca est a en L(G) si y s olo si S es nulicable.
7.4 Decidibilidad en LLC 207

Pensemos que x ,= . Como cuando aplicamos una producci on de una gram atica en
FNG a una forma sentencial en una derivaci on por la izquierda, agregamos exac-
tamente un smbolo terminal a la forma sentencial, x tiene una derivaci on en G de
exactamente [x[ pasos. Si cada no terminal de G tiene a lo m as k producciones,
entonces para cada paso en una derivaci on por la izquierda hay a lo m as k posibles
producciones que aplicar. Podemos ir probando cada una de ellas sistem aticamente
y garantizar que el algoritmo termina, o bien cuando se logra derivar x o cuando
se agotan todas las derivaciones posibles. Es conveniente aplicar cada una de las
producciones con una exploraci on a profundidad (DFS), lo que reducira el n umero
de aplicaciones que es necesario hacer.
Como bien se puede observar, este algoritmo se lleva tiempo que es proporcional a [x[
k
(de orden exponencial). Hay varios algoritmos que se llevan tiempo proporcional a [x[
3
(de
orden c ubico) y a un menos, pero no los revisaremos en esta ocasi on. Queremos hacer notar
que si estamos en reconocimiento sint actico desde abajo (bottom up) estaramos precisa-
mente tratando de determinar si una cadena terminal fue o no generada por una gram atica
dada (si es parte del lenguaje) y, en ese caso, deberamos utilizar alguno de los algoritmos
m as ecientes. Como lo unico que nos interesa ac a es el problema de decidibilidad (de
existencia de algoritmos) el objetivo se alcanza con exhibir alguno.
7.4.2. Determinismo y no determinismo
En el caso de los lenguajes libres del contexto, la clase de lenguajes reconocidos por
aut omatas de pila deterministas es un subconjunto propio de aqu ellos reconocidos por
aut omatas de pila nodeterministas.
Por ejemplo, el lenguaje L = a6nb6n[ n 0 es un lenguaje libre del contexto
para el cual pudimos construir un aut omata de pila determinista que lo reconociera. Sin
embargo, para el lenguaje L = ww
R
[ w (a + b)

no se puede construir un aut omata


determinista que lo reconozca, ya que no sabemos el tama no de la cadena de antemano para
decidir cu ando termina w y empieza w
R
; por ello, cada vez que se repite un smbolo en la
cadena de entrada, tenemos que suponer que esa pareja corresponde al ultimo smbolo de w
y el primero de w
R
. Cuando esto no sea cierto el AFS simplemente terminar a en un estado
inv alido, y el unico reconocimiento que termine bien ser a el que haya acertado en lo que es
la mitad de la cadena.
A los lenguajes que son reconocidos por un AFS deterministas les llamamos lenguajes
libres del contexto deterministas. En el caso de los lenguajes libres del contexto determinis-
tas se pueden construir algoritmos mucho m as ecientes para el problema de membresa.
208 Propiedades de los LLC
7.4.3. Ambig uedad
No es lo mismo que un lenguaje sea nodeterminista y que sea ambiguo. Por ejemplo,
en el caso de ww
R
, un lenguaje libre del contexto nodeterminista, se puede encontrar una
gram atica que no sea ambigua. Simplemente, el unico arbol de derivaci on v alido va a ser
el que genere correctamente la cadena.
En un lenguaje ambiguo tendremos al menos una cadena que cuente con dos arboles de
derivaci on distintos. Hay lenguajes libres del contexto que son inherentemente ambiguos,
esto es, que no hay gram atica que los genere que, para toda palabra en el lenguaje, genere
un unico arbol de derivaci on. Veamos por ejemplo los lenguajes
L
1
= a
i
b
i
c
j
[ i, j 0 y L
2
= a
i
b
j
c
j
[ i, j 0.
Sabemos que los lenguajes libres del contexto son cerrados bajo uni on, por lo que podemos
construir L = L
1

L
2
, que es tambi en un lenguaje libre del contexto. La cadena w = a
i
b
i
c
i
cumple con estar en L, pues cumple la condici on en L
1
y cumple la condici on en L
2
.
Por lo tanto, puede ser generada por la gram atica que genera L
1
o por la gram atica que
genera L
2
. Esto le dara a w dos arboles de derivaci on distintos, lo que hace a este lenguaje
inherentemente ambiguo.
Lo que si podemos decir es que los LLC deterministas no pueden ser inherentemente
ambiguos, pues frente a w, una cadena determinada, s olo tienen una acci on posible por cada
smbolo, lo que imposibilita el que haya m as de un camino para reconocer/generar a w.
7.4.4. Lo no decidible en lenguajes libres del contexto
Recordemos que en los lenguajes regulares muchas preguntas se respondan utilizando
las propiedades de cerradura de esta clase de lenguajes. Desafortundamente, muchas de
estas preguntas no se pueden responder, de manera general, para los lenguajes libres del
contexto. A continuaci on damos una lista de ellas.

Dado un LLC L si L =

Dado un LLC L, si el complemento de L, L es libre del contexto.

Dado un LLC L si es regular.

Dados dos LLC L


1
y L
2
, si L
1
= L
2
.

Dados dos LLC L


1
y L
2
, si L
1
L
2
.

Dados dos LLC L


1
y L
2
, si L
1

L
2
= .

Dado un LLC L, si L es inherentemente ambiguo.

Dada una gram atica LDC G, si G es ambigua.


7.5 Aplicaciones 209
7.5. Aplicaciones
Lenguajes de programaci on
Una de las aplicaciones m as conocidas de los lenguajes libres del contexto se reere a
los compiladores de lenguajes de programagaci on. Aun cuando se ha demostrado que, en
general, los lenguajes de programaci on no son libres del contexto, ya que tienen el requisito
de que para usar una variable esta haya sido ya declarada, lo que indica dependencia del
contexto. Sin embargo, este tipo de problemas se resuelven ad hoc mediante la integraci on
al reconocedor sint actico de manejo de tablas de identicadores y aspectos similares.
Hoy en da pr acticamente todos los lenguajes de programaci on se dise nan modelando
lenguajes libres del contexto, pues hay muchos resultados que permiten hacer reconocedo-
res muy ecientes para estos lenguajes de programaci on. Adicionalmente, se puede rela-
cionar de manera sencilla al arbol de derivaci on de un enunciado la sem antica asociada al
mismo.
As como se identican los lenguajes libres del contexto determinista los que son
f aciles de reconocer hay clasicaciones adicionales de los lenguajes libres del contexto
que proporcionan algoritmos ecientes de reconocimiento. Tal es el caso de los lenguajes
LL(k), LALR y LR(k) que pueden identicar el enunciado de que se trata avanzando sin
consumir algunos de los car acteres de la entrada.
Hay muchos y muy variados artculos y librosd que tratan sobre el tema, por lo que no
nos extenderemos m as en esta ocasi on, ya que se sale un poco del objetivo de este texto.
Proceso de lenguaje natural
Se han hecho muchos intentos por tratar de procesar lenguaje natural usando gram aticas
libres del contexto. El proceso de lenguaje natural presenta varios problemas, entre los que
podemos mencionar:

El lenguaje natural conlleva ambig uedad, lo que produce m as de un arbol de deriva-


ci on para ciertas frases. Esto hace imposible determinar la estructura de la frase y,
como consecuencia, procesarla o entenderla.

Distancia entre palabras que est an relacionadas. Por ejemplo, la frase Qu e es lo que
Juanita va a comer?, el qu e se reera al verbo comer, que se encuentran muy alejados
fsicamente entre s.

El lenguaje natural, sea este el ingl es, espa nol o el chino, no es unico, por lo que no
es claro cu ales son exactam,ente las reglas que lo describen.

No s olo hay distintos dialectos que manejar para un lenguaje natural dado, sino que
el lenguaje se modica y crece continuamente; esto hace muy difcil construir una
210 Propiedades de los LLC
gram atica adecuada que sobreviva un perodo relativamente largo de tiempo.

No todos los hablantes de un lenguaje natural lo hablan correctamente. Esto provoca


que un reconocedor o compilador de lenguaje natural estara marcando constante-
mente errores que no cambian la sem antica de lo dicho. Si bien el compilador de un
lenguaje de programaci on debe reaccionar frente a este tipo de errores de sintaxis, no
es as con un procesador de lenguaje natural.

Mientras que en los lenguajes de programaci on es necesario aparear las declaraciones


con los usos de variables por ejemplo, en lenguaje natural se debe aparear el g enero
y n umero de los sustantivos, verbos y adjetivos.
Si bien se acepta, en lo general, que un lenguaje natural no puede ser un lenguaje li-
bre del contexto, tenemos una buena aproximaci on con una gram atica libre del contexto.
Es claro que ninguna de las formas normales va a funcionar con lenguajes naturales, pero
exiasten algoritmos relativamente ecientes que funcionan con gram aticas libres del con-
texto irrestrictas y que pueden ser aumentadas de diversas maneras para procesar lenguaje
natural, de manera similar a como se aumentan los reconocedores sint acticos para los len-
guajes de programaci on.
Uno de los algoritmos m as ecientes y exitosos para proceso de lenguaje natural es el
algoritmo de Early, que trabaja en realidad con cualquier lenguaje libre del contexto; se
usa tambi en para compiladores. Este algoritmo usa t ecnicas de programaci on din amica, ya
que una vez procesado alg un consituyente lo construye y puede reutilizar algunos de estos
cuando intenta procesar constituyentes m as grandes.
Biologa molecular y lenguajes libres de contexto
Las mol eculas de acidos nucleicos poseen un segmento grande de informaci on acerca
de los determinantes fundamentales de la vida y, en particular, sobre la reproducci on de
las c elulas. Hay dos tipos de acidos nucleicos, conocidos como acido desixoribonucleico
(ADN) y acido ribonucleico (ARN). El ADN generalmente se encuentra en mol eculas de
doble hebra. En vivo, la mol ecula est a doblada como una madeja de estambre. El esque-
leto de de una mol ecula de ADN es una sucesi on de nucle otidos, representados estos por
un alfabeto de cuatro letras: adenanina (A), guanina (G), citosina (C) y tiamina (T). Las
mol eculas de ARN son generalmente de una sola hebra, compuestas de ribonucle otidos: A,
G, C y uracil (U).
Los procesos de transcripci on y traducci on llevan a la producci on de protenas, que
tambi en poseen una cadena compuesta por 20 amino acidos como estructura primaria. En
un primer enfoque todas estas mol eculas se pueden ver como textos. Con el descubrimiento
hace dos d ecadas de t ecnicas poderosas de secuenciaci on, se ha llegado a una acumulaci on
r apida de informaci on de secuencias. Se usan muchos algoritmos de texto desde la recolec-
ci on de estas secuencias hasta su an alisis. M as a un, unicamente los algoritmos altamente
ecientes se pueden usar, dado el enorme volumen de secuencias almacenadas.
7.5 Aplicaciones 211
Una vez que se obtiene una nueva secuencia, la primera pregunta importante es si se
parece a alguna otra secuencia que se encuentre ya almacenada, para saber si se va a insertar
en el banco de datos o no. La manera usual de comparar secuencias es escribir una encima
de la otra y preguntar a qu e distancia est a una de la otra, mediante distancias calculadas
sobre el n umero de transformaciones que debe sufrir una de ellas para ser igual a la otra.
El resultado se conoce como alineaci on del conjunto de nucle otidos.
Otras preguntas que nos hacemos respecto a las secuencias de mol eculas se relacionan
con su an alisis. El objetivo es encontrar cu al es la funci on que llevan a cabo cada una de las
partes de la secuencia. Por ejemplo, el ADN contienen regiones importantes (secuencias
de c odigo) para la producci on de protenas dentro de la c elula. Sin embargo, no tenemos
m etodos sucientemente buenos que nos ayuden a encontrar todas las secuencias de c odigo
de una secuencia de ADN. Otra pregunta que nos hacemos respecto a las secuencias tiene
que ver con reconstruir la estructura tridimensional. Tal parece que parte de la informaci on
reside en la misma secuencia. Esto se da porque en el proceso de plegamiento del ADN, por
ejemplo, los nucle otidos se aparean uno a uno (A con T, C con G). Esto produce simetras
palndromas aproximadas (como en TTAGCGCTAA). Por estas razones, en esta b usqueda
est an involucradas b usquedas de patrones especcos, de repeticiones, de palndromas u
otros tipos de patrones que se presentan con regularidad.
Figura 7.9 Una doble h elice de ADN
.. .. ..
A
T
C
G
G
C
T
A
A
T
G
C
U
U
U
G
..
..
G
..
..
C
..
..
Doble h elice de ADN
ARN
Mientras en el ADN podemos encontrar un mapa del individuo, el ARN en una c elula
viva juega varios papeles importantes, que incluyen:

El ARN mensajero transporta el c odigo de una protena desde el n ucleo de la c elula


a donde se realiza la sntesis de las protenas.

El ARN de transferencia transporta mol eculas individuales de amino acidos al sitio


de construcci on durante la sntesis de las protenas.

El ARN ribosomal crea una parte sustancial de los ribosomas, que son las f abricas
de protenas de las c elulas.
212 Propiedades de los LLC

El ARN cataltico funciona como enzima y participa en gran variedad de funciones


de la c elula.
Para hacer el apareamiento o encontrar el alineamiento en mol eculas de ADNse utilizan
distintos tipos de aut omotas nitos y algoritmos basados en ellos como el de Aho-Corasick,
ya que la informaci on que se revisa es local, no tiene inuencia en el resto de la cadena.
Sin embargo, las mol eculas de ARN, si bien no tienen una doble-h elice, se pliega alrededor
de s misma, creando una segunda estructura que es importante para el funcionamiento
de la mol ecula ver gura 7.10. En particular, si dos subsecuencias que contienen bases
complementarias se pliegan de tal manera que quedan alineadas una junto a la otra, forman
pares de ligadas por hidr ogeno mucho en la forma en que dos hebras de ADN lo hacen. A
esta parte plegada se le conoce comop ped unculo (stem). Las subsecuencias que no est en
alineadas entre los ped unculos forman bucles, con las que quedan en los extremos formando
simplemente colas de la secuencia.
Figura 7.10 El plegamiento de una mol ecula de ARN
C
G
G
C
A
U
C
G
U
A
G
C
A
U
A
U
A
A
G
U
C G
U
C
C
G G
A
A
U
U
A
G
C
U
U G
G
AAGUCCGACUGAGUCCGGAAUUAGCUUGGUUCAGUCG
En el caso de las mol eculas de ARN, resulta que aunque presentan una estructura lineal,
las ligas de hidr ogeno que forman hacen que la manera de analizar una cierta secci on de la
mol ecula est e relacionada con otra porci on, con la que se liga, muchos car acteres m as all a.
Da la impresi on que las cadenas de ARN se desarrollan hacia los extremos, generando
nucle otidos complementarios.
La estructura que acabamos de describir hace que las mol eculas de ARN se manipulen
como lenguajes libres del contexto. Es conveniente pensar en gram aticas probabilsticas,
donde cada producci on tenga una cierta probabilidad de usarse y se utilice una dsitribuci on
adecuada para generar las cadenas, con base en las probabilidades de cada producci on.
Con esto damos por terminado lo que corresponde a lenguajes libres del contexto y
hemos revisado algunas de sus aplicaciones, de las cuales hay muchsimas m as. Pasamos
ahora a revisar el siguiente modelo de aut omata, las m aquinas de Turing.
M aquinas de Turing
8
En este captulo introducimos al modelo m as poderoso de entre los aut oma-
tas nitos cl asicos, la m aquina de Turing, que est a muy relacionada con los
conceptos de complejidad y computabilidad. Revisamos algunas t ecnicas que
nos pueden ayudar en el dise no de las m aquinas de Turing como procesado-
ras de cadenas, para pasar despu es a presentar varios modelos que resultan
equivalentes entre s. No puede faltar la m aquina universal de Turing, que
puede emular a cualquier otra m aquina de Turing. La m aquina de Turing es
el aut omata capaz de procesar a los lenguajes generales, aunque esta cons-
trucci on la daremos en el siguiente captulo. Finalmente presentaremos a los
aut omatas linealmente acotados, que corresponden a m aquinas de Turing con
cinta acotada.
8.1. Motivaci on
El ultimo modelo de m aquina reconocedora que veremos es el denominado m aquina
de Turing. Como vimos en el cuadro de lenguajes y m aquinas al principio del curso, este
modelo, aunque sencillo en su concepci on, es el que posee mayor capacidad en relaci on
con la complejidad de lenguajes que puede reconocer. Pero su importancia no estriba uni-
camente en su capacidad como m aquina reconocedora de lenguajes sino tambi en por su
capacidad de c omputo para el conjunto de funciones conocidas como funciones recursivas
parciales.
214 M aquinas de Turing
Un problema central a lo largo de estas notas ha sido la pregunta: Existe o no un
algoritmo para. . . . . . ? Muy al principio caracterizamos lo que es un algoritmo:
un procedimiento con un n umero nito de pasos, cada uno de
estos preciso y sucientemente simple, y cuya ejecuci on (la del
procedimiento) siempre termina.
1
En algunas secciones mencionamos tambi en que para determinado problema no s olo
no tenamos algoritmo, sino que estaba demostrado que tal algoritmo no poda existir. Lo
primero que debe estar claro, para poder decir que tal o cual algoritmo no puede existir, es
la idea de que existen funciones o problemas bien planteados para los que no se cuenta con
algoritmos para calcularlas o resolverlos. La existencia de funciones de este tipo se puede
demostrar f acilmente contando problemas y contando algoritmos.
Consideremos a la clase de funciones que transforman a los enteros no negativos al in-
tervalo [0, 1] en los reales. Estas funciones pueden ser puestas en correspondencia uno a uno
con los reales. Sin embargo, si suponemos que los algoritmos (o procedimientos ecientes)
tienen descripciones nitas, entonces la clase de todos los algoritmos puede ser puesta en
correspondencia uno a uno con los enteros positivos. Dado que no hay una correspondencia
uno a uno entre los reales y los enteros, debe haber funciones que no cuenten con algorit-
mo. Simplemente, hay un n umero no numerable de funciones y un n umero enumerable de
algoritmos, de donde no es sorprendente encontrarnos con funciones no computables (para
las cu ales no existe algoritmo).
La m aquina de Turing (MT), planteada por Allan M. Turing en 1936, fue propuesta
por Church como un modelo matem atico para describir procedimientos
2
. La tesis de Chur-
chTuring dice que todo proceso que intuitivamente consideremos como algoritmo puede
ser ejecutado por una MT. Hasta el momento esta tesis se ha cumplido. La unica manera
de desacreditarla es encontrando alg un procedimiento que no pueda ser ejecutado por una
m aquina de Turing y que sin embargo pueda ser calculado por alguna m aquina con m as ca-
pacidad que ella. De la denici on de una m aquina de Turing quedar a sucientemente claro
que cualquier c omputo que se pueda describir con una de ellas puede ser llevado a cabo
mec anicamente. Tambi en se puede demostrar que cualquier c omputo que se pueda llevar
a cabo en una computadora digital como las conocemos hoy en da, puede ser descrito a
trav es de una m aquina de Turing.
Hay muchas otras formalizaciones de procedimientos que se puede demostrar son equi-
valentes a la m aquina de Turing. Esto refuerza la idea de que la denici on que dio Turing
1
En el contexto de m aquinas de Turing existe la denici on de Turing-computable, que se reere a que
puede ser calculado por una MT, sin el requisito de que siempre termine.
2
Tradicionalmente se habla de la equivalencia entre m aquinas de Turing y algoritmos. Sin embargo, hay
m aquinas de Turing que no garantizan terminar frente a ciertos tipos de entrada, por lo que estas corres-
ponderan al concepto de procedimiento (o semi-algoritmo), no de algoritmo. Sin embargo, si pensamos
unicamente en las MT que siempre terminan, entonces el t ermino procedimiento puede ser sustituido por el
de algoritmo.
8.2 Deniciones y notaci on 215
de su m aquina es sucientemente general como para comprender la idea intuitiva que te-
nemos de un procedimiento. La tesis de Church-Turing nos dice que cualquier proceso que
se reconoce naturalmente como algoritmo puede ser llevado a cabo por una MT. No s olo
eso, la denici on de procedimiento es hoy en da sin onimo de ser computable por una MT.
En lo que sigue a esta secci on y hasta el nal de estas notas, daremos por buena la tesis de
ChurchTuring de que toda soluci on algortmica para un problema puede ser representado
por un programa de instrucciones para alguna m aquina de Turing. Aun cuando este he-
cho sigue siendo una tesis, el trabajo de Turing y de muchos otros tiene una consecuencia
unica e irrebatible: existen problemas bien formulados para los cu ales no puede existir una
soluci on algortmica.
8.2. Deniciones y notaci on
Al describir su m aquina, Turing mantuvo presente en su mente las propiedades b asi-
cas que debe tener un procedimiento eciente: primero, debe estar descrito nitamente;
segundo, el procedimiento debe consistir de pasos discretos, cada uno de ellos ejecutable
mec anicamente. El modelo b asico de Turing contempla estas propiedades.
Visto en el contexto de la teora de aut omatas, requerimos de un modelo que se parezca
a los aut omatas nitos que hemos visto, pero que tenga m as poder de c omputo para poder
procesar lenguajes m as all a de los lenguajes libres del contexto. La primera idea es agregar
una pila al aut omata de pila que revisamos, lo cual resuelve el problema. Adem as, la MT es
anterior a los AFS y con una abstracci on m as f acil de describir matem aticamente. Algo que
cambia el poder de un aut omata es la posibilidad de escribir sobre su cinta de entrada y de
poder recorrerla en cualquier direcci on (releer smbolos, saltarse algunos, transformarlos,
entre otras acciones). Se mantiene la nitud en el alfabeto de entrada, el n umero de estados
y los otros componentes que vamos a revisar a continuaci on.
Pensemos en una MT consistiendo fsicamente de dos componentes b asicos: un con-
trol nito y una cinta innita. La cinta, que contiene a la cadena de entrada, est a dividida
en celdas. El control nito tiene una cabeza lectora que es capaz de revisar (o posicio-
narse) en una sola celda a la vez. Podemos pensar que la cinta es innita unicamente hacia
la derecha, y tiene una celda que podemos considerar la del extremo izquierdo. Como se
ver a despu es, el acotar la cinta por la izquierda no limita en forma alguna la capacidad de
c omputo de la MT. Cada celda de la cinta puede contener uno de un conjunto nito de
smbolos llamados smbolos de la cinta.
Al empezar a funcionar la MT, las primeras n celdas (las de m as a la izquierda), para
n > 0 nita, contienen la entrada o datos de la m aquina, que consisten de una cadena de n
smbolos, cada uno de ellos de un subconjunto de smbolos del conjunto de smbolos de la
cinta, llamado alfabeto de entrada. El resto de las celdas, un n umero innito, contienen un
smbolo especial que no forma parte de los smbolos de entrada, digamos 2 (un blanco).
216 M aquinas de Turing
La entrada est a limitada por la derecha por blancos, pero no contiene ninguno al empezar
a funcionar la MT. En un movimiento, la MT, dependiendo del smbolo que est e revisando
la cabeza lectora y del estado en el que se encuentre el control nito, ejecuta lo siguiente:
i. cambia de estado;
ii. imprime un smbolo en la celda que est a revisando, reemplazando al smbolo que
haba ah antes y que fue el que determin o, junto con el estado, el movimiento de la
MT, y
iii. mueve su cabeza lectora a la celda contigua izquierda o derecha (o respectiva-
mente).
El podero adicional que alcanza la MT se debe principalmente a su habilidad para
escribir en la misma cinta de donde est a leyendo, donde vienen sus datos.
Formalmente, una m aquina de Turing es un 7-tuplo M = (Q, , , , q
0
, 2, F) donde:
Q es un conjunto nito de estados
es un conjunto nito de smbolos de cinta permitidos
2 un smbolo de , es el blanco.
no contiene a 2, es el conjunto de smbolos de entrada
es una funci on que da el siguiente movimiento y est a denida de la
siguiente manera:
: Q Q ,
donde , denotan la direcci on del movimiento de la cabeza lecto-
ra en la cinta, pudiendo ser esta respectivamente hacia la izquierda ()
o la derecha (). puede no estar denida para algunos argumentos
q
0
Q es el estado inicial
F Q es el conjunto de estados nales
Denici on 8.1 (DESCRIPCI

ON INSTANT

ANEA (DI)) Una DI de una MT es una cadena

1
q
2
, q Q,
1
,
2

. En esta cadena, q es el estado en el que se encuentra M,


1

2
es el contenido de la cinta desde el extremo izquierdo hasta el smbolo distinto de 2 que
se encuentre m as a la derecha en la cinta, o el smbolo inmediatamente a la izquierda de la
cabeza lectora (que puede ser un 2), cualquiera que sea el que est e m as a la derecha en la
cinta. La posici on de q denota la posici on de la cabeza lectora, que se encuentra frente al
primer smbolo de
2
.
Por supuesto que suponemos que el conjunto de smbolos que representa a Q y el que
representa a son ajenos para evitar confusiones. Suponemos tambi en que la cabeza lectora
est a observando el primer smbolo a la izquierda de
2
, o si
2
= , entonces la cabeza
lectora est a observando un blanco (2).
Si la DI que estamos observando es de la forma X
1
X
2
. . . X
n
q, decimos que M est a ob-
servando un blanco (un 2). Si la DI es de la forma qX
1
X
2
. . . X
n
entonces la cabeza lectora
8.2 Deniciones y notaci on 217
de M no puede moverse a la izquierda como resultado de su movimiento, pues no se per-
mite que la cabeza lectora caiga por el extremo izquierdo de la cinta.
Sea X
1
X
2
. . . X
j1
qX
j
. . . X
n
una DI de M. Supongamos 2 j n, esto es que
X
1
X
2
. . . X
j1
,= ; y supongamos tambi en que (q, X
j
) = (p, Y, ). Entonces podemos
describir el movimiento de M de la siguiente manera:
X
1
X
2
. . . X
j1
qX
j
. . . X
n

M
X
1
. . . X
j1
Y qX
j+1
. . . X
n
Si en cambio (q, X
j
) = (p, Y, ) el movimiento de M quedara descrito de la siguiente
manera:
X
1
X
2
. . . X
j1
qX
j
. . . X
n

M
X
1
. . . X
j2
pX
j1
Y X
j+1
. . . X
n
Si dos DI est an relacionadas por
M
decimos que la segunda resulta de la primera en un
movimiento. Como en los AFS, si una DI resulta de otra a trav es de 0 o m as movimientos,
utilizamos el smbolo

M
. Tambi en como en los AFS, podemos ignorar el subndice M
cuando esto no genere confusi on.
Denici on 8.2 (L(M)) El lenguaje aceptado por M, L(M), es el conjunto de palabras
w

que hacen que M, saliendo del estado inicial q


0
con la cabeza lectora revisando
el primer smbolo a la izquierda de la cinta, suspenda su ejecuci on encontr andose en un
estado nal.
Formalmente, el lenguaje aceptado por M = (Q, , , , q
0
, 2, F) es
L(M) = w

[q
0
w


1
p
2
, p F y
1
,
2

2
Denici on 8.3 (TRAYECTORIA) Si para una MT M tenemos la sucesi on
0
,
1
,
2
, . . .,
tal que
i

M

i+1
, con i 0, y
0
una conguraci on inicial, decimos que esta sucesi on de
conguraciones son una trayectoria en M.
Denici on 8.4 (C

OMPUTO) Un c omputo para M es una trayectoria que termina. Enton-


ces, un c omputo es una trayectoria
0
,
1
, . . . ,
n
, tal que
0
es una conguraci on inicial y

n
es una conguraci on que detiene a M.
Si el c omputo se detiene despu es de n pasos, diremos que tiene longitud n y lo denotamos,
como ya mencionamos antes,

n
M

n
En general, dada una MT que reconoce a un lenguaje L, suponemos sin perder gene-
ralidad, que la MT suspende su ejecuci on, esto es, no ejecuta ning un otro movimiento, al
aceptar una cadena de entrada. Sin embargo, para cadenas que no est an en L es posible
que la MT nunca suspenda su ejecuci on. Esto lleva al problema siguiente: si a una MT le
es alimentada una cadena, pasado un tiempo razonable la MT no suspende su ejecuci on,
218 M aquinas de Turing
es porque la cadena no es aceptada o porque la MT no ha terminado de procesarla pero
eventualmente va a parar? Es esta caracterstica, precisamente, la que hace que las MT re-
conozcan a los lenguajes parcialmente recursivos, aqu ellos de los que s se puede decir si
una palabra est a en el lenguaje, pero no se puede garantizar que alguna otra no lo est a.
Figura 8.1 Esquema de una M aquina de Turing
(q
0
, a)=(q
2
, A, )
.
.
.
.
.
.
(q
3
, A)=(q
3
, A, )
Unidad de control
a A B b 2 2 2 2 2 2 2 2
Cinta innita
Cabeza lectora
Ejemplo 8.1:
Dise nemos una MT que reconozca al conjunto 0
n
1
n
[n > 1. Inicialmente, la cinta
contiene n 0 seguidos de n 1, y la cabeza lectora se encuentra observando el primer 0 en la
cinta. El programa de M sera algo as:
1. Reemplaza al 0 por una X.
2. Busca al primer 1 y reempl azalo por una Y .
3. Regresa a buscar el primer 0 a la izquierda.
Y estos tres pasos se repiten hasta que alguna situaci on no v alida y no especicada en ellos
se presente.
La primera de estas situaciones podra ser, por ejemplo, que en el paso (2) M no encon-
trase ya a ning un 1. Esto signicara que la cadena de entrada tiene m as 0 que 1, en cuyo
caso, al encontrarse M al smbolo 2, si estaba buscando un 1, debera pararse sin aceptar.
Otra situaci on no v alida se podra presentar en el paso (3) si M no encuentra ya un 0.
M reconoce que ya no hay 0 si la cabeza lectora no ha visto ninguno en su recorrido hacia
la izquierda y se encuentra con una X. En este caso, M deber a vericar si hay m as 1. Si no
hay ya ning un 1, M acepta al encontrarse un smbolo 2 inmediatamente siguiendo a una
8.2 Deniciones y notaci on 219
Y . Si M encuentra un 1 cuando va buscando el 2, entonces deber a rechazar la cadena pues
tiene m as 1 que 0.
Resumiendo estas ideas, pasamos a dise nar formalmente nuestra MT, de la siguiente
manera:
= 0, 1
= 0, 1, 2, X, Y
Q deber a estar formado por los siguientes estados, cada uno de ellos con la funci on que a
continuaci on se explica:
q
0
estado inicial, encargado adem as de sustituir el primer 0 de la izquierda por X, y
lanzar a M a buscar el 1 correspondiente:
(q
0
, 0) = (q
1
, X, )
q
1
estado encargado de buscar el primer 1 que se encuentre m as a la izquierda en la
cadena:
(q
1
, 0) = (q
1
, 0, ) (pasa por los 0)
(q
1
, Y ) = (q
1
, Y, ) (pasa por las Y )
Cuando, estando en q
1
, M encuentra su primer 1 a la izquierda, lo sustituye por
una Y y lanza a M de regreso (hacia la izquierda) a buscar otro 0:
(q
1
, 1) = (q
2
, Y, )
q
2
estado encargado de vericar si todava hay 0 en la cinta; recuerda que ya vio un
0 transriendo a M a otro estado en cuanto ve un 0:
(q
2
, Y ) = (q
2
, Y, )
(q
2
, 0) = (q
4
, 0, )
Si cuando M est a buscando un 0, ya no encuentra, debe pasar a otro estado que
verique que ya tampoco haya 1:
(q
2
, X) = (q
3
, X, )
q
3
estado encargado de vericar que no haya m as 1 en la cadena, hecho que cons-
tata si logra llegar a ver un blanco (2) movi endose hacia la derecha y pasando
unicamente por Y :
(q
3
, Y ) = (q
3
, Y, )
(q
3
, 2) = (q
5
, Y, )
220 M aquinas de Turing
q
4
estado que registra el hecho de que todava hay al menos un 0 en la cadena y
lanza a M a sustituirlo por una X. M se encuentra en este estado s olo si vio
un 0 al moverse hacia la izquierda y debe localizar la ultima X que puso M, y
por consecuencia, el primer 0 de la izquierda en la cadena:
(q
4
, X) = (q
0
, X, )
(q
4
, 0) = (q
4
, 0, )
q
5
estado nal al que se transere M si al acab arsele los 0 se le acaban tambi en los
1. M deber a suspender su ejecuci on al llegar a q
5
, por lo que no se especica
ning un movimiento para este estado.
De la discusi on anterior sabemos ya que Q cuenta con seis estados; el ultimo que espe-
cicamos es el unico estado nal.
Q = q
0
, q
1
, q
2
, q
3
, q
4
, q
5
con F = q
5

Podemos resumir la funci on en la tabla 8.2.


Tabla 8.2 MT que reconoce 0
n
1
n
Smbolos en la cinta
F
Q 0 1 X Y 2
q
0
q
1
, X, 0
q
1
q
1
, 0, q
2
, Y, q
1
, Y, 0
q
2
q
4
, 0, q
3
, X, q
2
, Y, 0
q
3
q
3
, Y, q
5
, 2, 0
q
4
q
4
, 0, q
0
, X, 0
q
5
1
Veamos ahora un c omputo de M, ante la cadena de entrada 0011:
q
0
0011 Xq
1
011 X0q
1
11 Xq
2
0Y 11 q
4
X0Y 1
Xq
0
0Y 1 XXq
1
Y 1 XXY q
1
1
XXq
2
Y Y Xq
2
XY Y XXq
3
Y Y
XXY q
3
Y XXY Y q
3
XXY Y Y q
5
En este momento M suspende su ejecuci on, estando en el estado q
5
, por lo que M acepta a
la cadena 0011.
8.3 Construcci on de MT 221
Otra manera de representar a la MT es mediante un diagrama de transiciones, como
el de los aut omatas nitos. La transici on entre un estado y otro se representa con un arco
etiquetado entre dos nodos del diagrama. Los arcos est an etiquetados con s, t, d, donde s
es el smbolo en la cinta, t es el smbolo que se escribe en la cinta y d es la direcci on en la
que se desplaza la cabeza de la MT. La MT de la tabla 8.2 se muestra con esta notaci on en
la gura 8.2.
Figura 8.2 Representaci on de una MT en diagrama de transiciones
q
0
q
1
q
2
q
4
q
3
q
5
0, X, 1, Y,
X, X,
2, 2,
0, 0, X, X,
Y, Y,
0, 0,
Y, Y,
Y, Y,
0, 0,
Observemos otro c omputo, de la misma m aquina, pero ante la cadena 001.
q
0
001 Xq
1
01 X0q
1
1 Xq
2
0Y q
4
X0Y
Xq
0
0Y XXq
1
Y XXY q
1
Como (q
1
, 2) no est a denida, M suspende su funcionamiento, encontr andose el control
nito en el estado q
1
, que no es estado nal, por lo que M no acepta a la cadena 001. Es
importante notar que pudi esemos dise nar otra MT con menos (o m as) estados que realizara
el mismo proceso.
8.3. T ecnicas para la construcci on de MT
A un cuando es f acil y claro poder seguir el funcionamiento de una MT, no resulta tan
claro cu al metodologa, si es que la hay, se debe seguir para su dise no (o construcci on).
Una m aquina de Turing puede ser programada. Se programa a la MT cuando se especica
la funci on y se decide, en general, cu antos y qu e tipos de estados va a tener, as como las
222 M aquinas de Turing
transiciones entre ellos. A continuaci on se presentan distintos m etodos de dise no. El m eto-
do de dise no seleccionado para resolver un determinado problema depender a, obviamente,
del problema de que se trate y del manejo que de cada m etodo se tenga o haya adquirido el
programador.
Dado que los lenguajes reconocidos o aceptados por una MT contienen tanto a los
lenguajes regulares como a los libres y dependientes del contexto, para ejemplicar los
distintos m etodos utilizaremos indistintamente lenguajes de cualquiera de estos tipos e in-
cluyendo los tipo 0.
8.3.1. M etodo de almacenamiento en el control nito
Podemos pensar que los estados del control nito, adem as de indicar el estado en el
que se encuentra la MT, pueden recordar smbolos que han visto, en forma de cadenas
de longitud nita. Para hacerlo, podemos usar parejas de la forma [estado, cadena] como
smbolos para representar a los estados de una MT. Es importantsimo notar que unicamente
se est a cambiando la forma de los smbolos para representar a los elementos de Q y no la
forma intrnseca de los elementos. Esto se hace con el objeto de que los smbolos que
representan a los estados conlleven visualmente para el programador informaci on de al
menos parte de la historia.
Ejemplo 8.2:
Construyamos una MT para reconocer el siguiente lenguaje:
L = aw (0 + 1)
+
[w (0 + 1)

, a (0 + 1), a / w
dicho en otras palabras, L es un lenguaje regular tal que el smbolo con el que empieza la
cadena no vuelve a aparecer en ella.
CONSTRUCCI

ON DE LA MT. Consideremos la MT para reconocer este lenguaje:


T = (Q, 0, 1, 0, 1, 2, , [q
0
, 2], F)
Los estados son parejas de la forma [q, a], donde q es el nombre de un estado y a es el
smbolo que vio primero. [q
0
, 2] signica que T no ha visto ning un smbolo y que est a en
el estado inicial. Al ver T su primer smbolo, debe recordar cu al fue, y lo hace en la segunda
componente del estado:
([q
0
, 2], 0) = ([q
1
, 0], 0, )
([q
0
, 2], 1) = ([q
1
, 1], 1, )
En [q
1
, 0], T recuerda que el primer smbolo que vio es un 0 y en [q
1
, 1] recuerda que el
primer smbolo que vio es un 1. Una vez registrado el primer smbolo visto, procede a leer
el resto de la cadena vericando que no se vuelva a encontrar otro smbolo como el primero
8.3 Construcci on de MT 223
que vio. Si T est a en el estado [q
1
, 0] s olo le es v alido ver 1, pues no debe aparecer otro 0
en la cadena:
([q
1
, 0], 1) = ([q
1
, 0], 1, )
Si en cambio est a en el estado [q
1
, 1] s olo debe aceptar ver 0 a la derecha, pues para aceptar
la cadena esta no debe contener m as 1:
([q
1
, 1], 0) = ([q
1
, 1], 0, )
La cadena es nalmente aceptada si, estando en [q
1
, 1] o [q
1
, 0] la cabeza lectora llega a ver
un 2:
([q
1
, 0], 2) = ([q
1
, 2], 0, )
([q
1
, 1], 2) = ([q
1
, 2], 1, )
Para aquellas parejas ([estado, smbolo], smbolo) para las cu ales no est a denida, T
suspende su funcionamiento. Si [estado, smbolo] es un estado nal, entonces T acepta a
la cadena y en caso contrario la rechaza. En la tabla 8.3 se encuentra denida .
Tabla 8.3 MT que reconoce L = {aw | a w, aw (0 + 1)

}
Smbolos en la cinta
F
Q 0 1 2
[q
0
, 2] [q
1
, 0], 0, [q
1
, 1], 1, 0
[q
1
, 0] [q
1
, 0], 1, [q
1
, 2], 0, 0
[q
1
, 1] [q
1
, 1], 0, [q
1
, 2], 0, 0
[q
1
, 2] 1
El unico estado que es nal en T es [q
1
, 2] pues s olo puede ser alcanzado si se cum-
plieron las reglas para el lenguaje y la cabeza lectora acaba de leer la cadena de entrada.
En general podemos escoger los smbolos para representar a los estados del control -
nito arbitrariamente como n-adas, donde n1 de los componentes se utilizan para recordar
alg un tipo de informaci on.
Otro ejemplo, que adem as introduce a las MT no deterministas, es el de reconocer
L = ww [ w (0 + 1)

. La estrategia general es la de recoger en el control nito el


smbolo que estamos buscando que se repita en la segunda parte de la cadena. Sin embargo,
224 M aquinas de Turing
no podemos saber d onde empieza esa segunda parte, por lo que cada vez que encontremos
el smbolo que estamos buscando, deberemos pasar, simult aneamente, al estado que regresa
a recoger el siguiente smbolo y al estado que sigue buscando la repetici on en el lado
derecho. La cadena estar a bien construida si alguna de las trayectorias me deja en estado
nal.
8.3.2. M etodo de pistas m ultiples
En este m etodo de dise no, la cinta de la MT consiste de k pistas, todas ellas en cierto
modo paralelas. Ac a, en lugar (o adem as) de usar n-adas para representar a los estados,
usamos n-adas para representar a los smbolos de . As, si la MT tiene k pistas, cada
smbolo de la pista sera de la forma [a
1
a
2
. . . a
k
] con a
i
en un alfabeto nito. Es pertinente
volver a insistir en que no se est a extendiendo la denici on de una MT, sino unicamente
eligiendo con cierta ma na a los smbolos de la cinta.
Ejemplo 8.3:
Construyamos una MT T, tal que dado un entero positivo mayor que 2, representado
en notaci on binaria, determine si el entero es primo o no.
T consistir a de tres pistas. En la primera pista vendr a escrito el n umero en binario, de-
limitado por la izquierda por un smbolo y por la derecha por un smbolo . La segunda
pista la va a utilizar T para ir escribiendo posibles divisores del n umero, empezando por 2
y de uno en uno hasta que divida al n umero exactamente (residuo 0) o bien llegue el divisor
a ser igual que el dividendo, en cuyo caso el n umero es primo.
La forma como T divide al n umero entre su divisor es restando sucesivamente el divisor
del dividendo hasta que el dividendo sea 0 o mayor que el divisor. Para esto utiliza la
tercera pista, que es donde primero copia el n umero original y despu es va dejando ah la
resta resultante de cada iteraci on. Si al estar en el proceso de restar en la tercera pista se
llega a 0, el n umero no es primo. Si se llega al punto en que la segunda pista es mayor que
la tercera, se incrementa en 1 el divisor de la segunda pista, se vuelve a copiar la primer
pista en la tercera y el proceso empieza de nuevo. Si al sumar 1 al divisor este alcanza al
dividendo (es igual) el proceso termina con el diagn ostico de que el n umero es primo.
Hay varios atajos que podemos seguir en este dise no. Por ejemplo, para vericar si el
n umero es m ultiplo de 2 basta con observar la posici on m as a la derecha del dividendo: si
esta posici on es 0 entonces el n umero es par y por lo tanto no es primo, y ya terminamos.
Por lo tanto se puede empezar con divisor 3 e ir incrementando de dos en dos, tomando
como divisores unicamente n umeros impares.
Daremos a continuaci on la primera parte del dise no, dejando como ejercicio la termi-
naci on del mismo.
Los smbolos de son triadas de la forma [ade] representando cada uno de los
car acteres a una de las pistas y respetando el orden. Los car acteres a, d, e y f repre-
8.3 Construcci on de MT 225
sentar an a cualquiera de 0, 1 o 2. Si en una triada se repite una o m as letras, quiere
decir que el smbolo deber a coincidir en las pistas a las que denota ese car acter.
T empieza en q
0
. Lo primero que hace es cargar un 2 binario en la segunda pista.
Suponemos que el n umero a vericar se encuentra ya en la primera pista:
(q
0
, [22]) = (q
1
, [], )
Procede a buscar el smbolo que acota al n umero por la derecha:
(q
1
, [d 22]) = (q
1
, [d 22], )
Cuando localiza al smbolo regresa un lugar:
(q
1
, [22]) = (q
2
, [], )
q
2
procede a colocar un 3 binario en la segunda pista:
(q
2
, [d22]) = (q
3
, [d 1 2], )
(q
3
, [d 2b]) = (q
4
, [d 1 2], )
Procede a copiar el contenido de la primera pista en la tercera pista. q
4
busca el
extremo derecho de la cinta:
(q
4
, [def]) = (q
4
, [def], )
(q
4
, []) = (q
5
, [], )
q
5
copia, de derecha a izquierda, cada uno de los smbolos, hasta encontrarse el ex-
tremo izquierdo de la cadena ():
(q
5
, [def]) = (q
5
, [ded], )
(q
5
, []) = (q
6
, [], )
q
6
localiza el extremo derecho de la cadena para restar la segunda pista de la tercera:
(q
6
, [def]) = (q
6
, [def], )
(q
6
, []) = (q
7
, [], )
q
7
verica si la pista 1 es igual a la pista 2:
(q
7
, [dde]) = (q
7
, [dde], )
(q
7
, []) = (q
8
, [], )
(q
7
, [def]) = (q
9
, [def], )
226 M aquinas de Turing
q
8
es el estado en el que, si T suspende su funcionamiento estando en el, el n umero
es primo.
q
9
es un estado que marca el inicio de la resta, empezando por colocar la cabeza
lectora en el extremo derecho de la cinta:
(q
9
, [def]) = (q
10
, [def], )
(q
9
, []) = (q
10
, [], )
q
10
es el estado a partir del cu al se empieza a restar, sabiendo siempre que el n umero
en la pista 3 es mayor que el n umero en la pista 2:
(q
10
, [a00]) = (q
10
, [a00], )
(q
10
, [a01]) = (q
10
, [a01], )
(q
10
, [a10]) = (q
11
, [a11], )
(q
10
, [a11]) = (q
10
, [a10], )
(q
10
, []) = (q
12
, [], )
q
11
registra si se acerca uno a la izquierda de la resta:
(q
11
, [a00]) = (q
11
, [a01], )
(q
11
, [a01]) = (q
10
, [a00], )
(q
11
, [a10]) = (q
11
, [a10], )
(q
11
, [a11]) = (q
11
, [a11], )
q
12
verica si el residuo es 0:
(q
12
, [aa0]) = (q
12
, [aa0], )
(q
12
, [aa1]) = (q
13
, [aa1], )
(q
12
, [aa]) = (q
15
, [aa], )
q
13
deber a preparar a T para vericar si el n umero en la pista 2 es mayor que el
n umero en la pista 3. q
13
mueve la cabeza de T hasta el extremo izquierdo.
(q
13
, [abc]) = (q
13
, [abc], )
(q
13
, [a b]) = (q
14
, [a b], )
q
14
recorre las pistas 2 y 3, compar andolas, de izquierda a derecha. Al irse moviendo
la cabeza hacia la derecha, estando T en q
14
puede encontrarse con un 1 en posici on
m as alta (primero) en la pista 2 que en la pista 3 o viceversa:
(q
14
, [a01]) = (q
6
, [a01], ) ; La pista 3 es mayor que la 2
(q
14
, [a10]) = (q
15
, [a10], ) ; La pista 2 es mayor que la 3
(q
14
, [a00]) = (q
14
, [a00], )
(q
14
, [a11]) = (q
14
, [a11], )
8.3 Construcci on de MT 227
Si la cabeza lectora llega al extremo de la pista quiere decir que el minuendo es igual
al sustraendo.
Dado lo detallado de la construcci on y que ya se dio una idea de c omo se va haciendo,
se suspende en este punto el ejercicio.
8.3.3. M etodo de tachar smbolos
El m etodo de tachar smbolos es un recurso util cuando se trata de comparar subcadenas
(por ejemplo ww) o bien cuando hay que comparar longitudes de cadenas. En realidad no
se tachan smbolos, sino que se adiciona a la cinta una segunda pista que puede contener un
blanco, si el smbolo correspondiente en la pista 1 no ha sido tachado y cualquier smbolo,
por ejemplo

para denotar que el smbolo correspondiente fue tachado.


Se da por supuesto que se permite combinar cualquiera de los m etodos de construcci on
en la soluci on de un problema en particular.
Ejemplo 8.4:
Dise nemos una MT que reconozca al lenguaje L = wcw[w(a+b)

.
Para dise nar esta MT utilizaremos tambi en la t ecnica de guardar informaci on en los
estados. Esto es con el objetivo de que la MT pueda recordar cual es el smbolo de la parte
izquierda de la palabra que debe aparear en la parte derecha.
La MT recorre la cinta, tachando un smbolo y yendo a buscarlo en la segunda mitad de
la cadena, para tacharlo tambi en. En cada iteraci on de este tipo, la MT recordar a cu al es el
smbolo que acaba de tachar y vericar a que el primer smbolo a continuaci on del ultimo
tachado en la segunda mitad, sea el mismo que acaba de tachar.
Q = [q, d][q = q
1
, q
2
, . . . , q
k
y d = a, b o 2.
El alfabeto de entrada, o sea, el estado de la cinta (con sus dos pistas) al empezar el c omputo
es de la forma [2, d] donde 2 es el blanco en la pista que vamos a utilizar para tachar, y d
es a, b o c. El alfabeto de la cinta, , consiste de parejas de la forma [X, d] donde X = 2 o

y d = a, b, c o 2.
El estado inicial es [q
1
, 2], pues, como en el primer ejemplo, la MT no ha visto nada.
1. Al empezar a funcionar la MT ve un smbolo y utiliza el estado q
2
para recordar cu al
smbolo vio y sigue hacia la derecha:
([q
1
, 2], [2, d]) = ([q
2
, d], [

, d], )
2. En el estado [q
2
, d] procede a buscar la c que divide a la cadena, y cuando la encuentra,
cambia de estado.
([q
2
, d], [2, e]) = ([q
2
, d], [2, e], ) ; e = a, b
([q
2
, d], [2, c]) = ([q
3
, d], [2, c], )
228 M aquinas de Turing
3. En [q
3
, d] localiza el primer smbolo no tachado a la derecha de c, brincando los
smbolos marcados.
([q
3
, d], [

, e]) = ([q
3
, d], [

, e], )
4. Al encontrar el primer smbolo no tachado, si es el mismo, regresa por el siguiente
smbolo de la primera mitad; si no, la MT suspende su ejecuci on sin aceptar.
([q
3
, d], [2, d]) = ([q
4
, 2], [

, d], )
5. El estado [q
4
, d] deber a regresar hasta que encuentre la c pasando por smbolos tacha-
dos.
([q
4
, 2], [

, d]) = ([q
4
, 2], [

, d], )
6. Al encontrarse la c, debe saltar los smbolos que no est an tachados, hasta llegar al
primero que s lo est e.
([q
4
, 2], [2, c]) = ([q
5
, 2], [2, c], )
7. Ahora vamos hacia la izquierda buscando el ultimo smbolo tachado, pero debemos
recordar si queda alguno sin tachar.
([q
5
, 2], [2, d]) = ([q
6
, 2], [2, d], )
Si inmediatamente junto a la c est a ya tachado el smbolo, se debe vericar que ya
tampoco haya smbolos sin tachar a la derecha.
([q
6
, 2], [

, d]) = ([q
1
, 2], [

, d], )
8. Si no se ha terminado de tachar la primera mitad, se busca el ultimo smbolo tachado:
([q
6
, 2], [2, d]) = ([q
6
, 2], [2, d], )
Al encontrar el ultimo smbolo tachado, se vuelve al principio de la operaci on.
([q
5
, 2], [

, d]) = ([q
7
, 2], [

, d], )
9. Si se acabaron los smbolos de la primera mitad, busco el 2 al nal de la cadena,
cuidando de pasar s olo por smbolos tachados:
([q
7
, 2], [2, c]) = ([q
8
, 2], [2, c], )
([q
8
, 2], [

, d]) = ([q
8
, 2], [

, d], )
([q
8
, 2], [2, 2]) = ([q
9
, 2], [2, 2], )
8.3 Construcci on de MT 229
Las condiciones bajo las cu ales la MT suspende su funcionamiento son las siguientes:
a. Si llega a [q
9
, 2], en cuyo caso acepta.
b. Si estando en [q
8
, 2] encuentra alg un smbolo que no est e tachado y rechaza.
c. Si estando en cualquiera de los estados que tienen como primer componente q
8
no
encuentra smbolos sin tachar, en cuyo caso la cadena a la izquierda de la c es m as
larga que la cadena a la derecha y la MT rechaza.
d. Si estando en un estado con primera componente q
3
, el smbolo que encuentra sin
tachar no coincide con la segunda componente del estado, en cuyo caso la MT sus-
pende su ejecuci on y rechaza.
Es equivalente tener dos pistas e ir tachando smbolos que sustituir un smbolo por otro
en una unica pista.
8.3.4. M etodo de corrimiento
Puede ser necesario para una m aquina de Turing el correr o recorrer sus smbolos dis-
tintos de blanco (2) un cierto n umero de celdas a la derecha, para hacer lugar en el extremo
izquierdo (o principio) de su cinta. Esto podra surgir, por ejemplo, si la MT le va a sumar
un 1 a un n umero binario, y el acarreo que esto genera obliga a buscar una celda adicional
en el extremo izquierdo del n umero (o cinta). En t erminos generales, si la MT necesita k
celdas, va recordando en el estado los ultimos k smbolos que vio (en el mismo orden en el
que aparecen en la cinta) y cada vez que ve un smbolo lo sustituye por el primer smbolo
del segundo componente del estado, quita ese smbolo de ese segundo componente y colo-
ca el smbolo que est a viendo en la cinta en el k- esimo lugar del segundo componente del
estado:
([q, A
1
A
2
. . . A
k
], 2) = ([q, A
2
. . . A
k
2], A
1
, )
y de esta forma va logrando recorrer a los smbolos.
Con este m etodo tenemos que el estado inicial es aqu el que no ha visto nada:
k veces
..
[q
0
, 22. . . 2 ]
Como se puede observar, los primeros k movimientos colocan en la cinta k blancos y
dejan a la MT en el estado [q, A
1
A
2
. . . A
k
]
Ejemplo 8.5:
Observemos nada m as la parte en la que una MT corre a un entero en binario 2 lugares
230 M aquinas de Turing
a la derecha. La funci on de transici on est a dada de la siguiente manera:
([q
1
, 22], d) = ([q
1
, 2d], 2, ),
([q
1
, 2d], e) = ([q
1
, de], 2, ),
([q
1
, de], f) = ([q
1
, ef], d, )
( con d, e, f (0 + 1)).
Cuando la MT se encuentra un 2 en su recorrido hacia la derecha, supone que termin o la
cadena, por lo que todo lo que tiene que hacer es vaciar el contenido de su memoria, que se
localiza en el segundo componente del estado en el que se encuentre:
([q
1
, de], 2) = ([q
2
, e2], d, )
([q
2
, e2], 2) = ([q
2
, 22], e, )
Veamos las DI por las que pasa la MT al recorrer la cadena 1011 a la derecha dos lugares:
[q
1
, 22]101122 2[q
1
, 21]01122 22[q
1
, 10]1122
221[q
1
, 01]122 2210[q
1
, 11]22
22101[q
1
, 12]2 221011[q
1
, 22]
8.3.5. M etodo de subrutinas
Otro m etodo, que implcitamente ya utilizamos, fue el de pensar en el proceso a desem-
pe nar por la MT como un conjunto de subprocesos (subrutinas). Las m aquinas de Turing
tienen los mecanismos para poder simular cualquier tipo de subrutina de las que se en-
cuentran en cualquier lenguaje de programaci on, y cualquiera de los mecanismos que estos
tienen para pasar par ametros. La idea general consiste en escribir parte del programa de
una MT que funcione como una subrutina. Deber a tener un estado inicial designado y un
estado nal que no tenga especicado ning un movimiento en un principio, pero que va a
servir como enlace para regresar al punto de donde sea llamado. La llamada se lleva a cabo
cuando la MT se transere al estado inicial y el regreso se lleva a cabo especicando un
movimiento desde un estado nal.
Ejemplo 8.6:
Dise nemos una MT que lleve a cabo una multiplicaci on unaria. La cinta de la MT
empieza con la cadena 0
m
10
n
y debe terminar con la cadena 0
mn
. La idea general es la de
colocar un 1 a la derecha de 0
m
10
n
y a partir de ese punto, copiar bloques de n 0 m veces,
borrando uno de los 0 de 0
m
cada vez. En este punto deberemos tener 10
n
10
mn
. Como
proceso nal, borramos 10
n
1, quedando en la cinta unicamente 0
mn
.
8.4 La MT como procedimiento 231
La parte m as importante de la MT es la subrutina que copia los n 0. Esta subrutina se
supone que empieza con la siguiente DI (en cada una de las iteraciones):
0
mk
1q
1
0
n
10
kn
y eventualmente debe llegar a una DI (antes de borrar el 0 de 0
mk
):
0
mk
1q
1
0
n
10
n(k+1)
Veamos como denimos a la subrutina Copia:
(q
1
, 0) = (q
2
, 2, ) todava no termina con los m movimientos.
(q
2
, d) = (q
2
, d, ) q
2
busca el primer espacio en blanco a la derecha.
(q
2
, 2) = (q
3
, 0, ) deposita un 0 en la extrema derecha.
(q
3
, d) = (q
3
, d, ) regresa a buscar el siguiente 0 por copiar.
(q
3
, 2) = (q
1
, 2, ) vuelve a empezar la copia
(q
1
, 1) = (q
4
, 1, ) ya se acabaron los 0 y va a regresar los 2 a 0.
(q
4
, 2) = (q
4
, 0, ) cambia el 2 por 0.
(q
4
, 1) = (q
5
, 1, ) termin o la subrutina
Nos faltara una subrutina que convirtiera la DI inicial q
0
0
m
10
n
en la DI que se debe
entregar a Copia y que es 20
m1
1q
1
0
n
1. Las transiciones que logran esto son las siguien-
tes:
(q
0
, 0) = (q
6
, 2, ) (q
6
, d) = (q
6
, d, )
(q
6
, 2) = (q
7
, 1, ) (q
7
, 0) = (q
7
, 0, )
(q
7
, 1) = (q
1
, 1, )
Tambi en necesitamos reglas que nos conviertan la DI 20
mk
1q
5
0
n
10
n(k+1)
a la DI
20
mk1
1q
1
0
n
10
n(k+1)
(que vuelve a poner las cosas en orden para que Copia vuelva a
funcionar) y otra subrutina m as que checa si i = m para que en ese caso llamemos a la su-
brutina que borra las cadenas 10
n
1 del principio. Estas subrutinas se dejan como ejercicio.
8.4. La m aquina de Turing como un procedimiento
Hasta ahora hemos pensado en la MT principalmente como un reconocedor. Hay MT
tales que no importa cual sea la entrada, la m aquina nalmente llega a un punto donde
no est a denida y la m aquina suspende su funcionamiento. Desde esa conguraci on ya no
hay movimientos posibles. Si un lenguaje es reconocido por una MT que no importando
su entrada, siempre para, entonces decimos que el lenguaje es recursivo. Esta diferencia
232 M aquinas de Turing
se marca porque hay lenguajes que s olo pueden ser reconocidos por MT que ante determi-
nadas entradas no paran y que no existe ninguna otra MT que reconozca a ese lenguaje y
suspenda su ejecuci on ante cualquier cadena de ese lenguaje. Un lenguaje que puede ser
reconocido por una MT se dice que es recursivamente enumerable. La clase de lengua-
jes recursivamente enumerables contiene propiamente a la clase de lenguajes recursivos.
Aqu ellos corresponden a los lenguajes tipo 0. Esto quiere decir que hay lenguajes que es-
capan a nuestra descripci on a trav es de lenguajes formales.
Podemos pensar en la MT tambi en como un procedimiento. En el ultimo ejemplo de
la secci on anterior, la MT tena como funci on realizar un c omputo (multiplicar m por n).
Si la pensamos as la MT suspende su funcionamiento para todas sus posibles entradas y
el procedimiento es entonces un algoritmo. Existen procedimientos para los cuales no hay
algoritmo que los ejecute. Un ejemplo de esto es tratar de determinar si una gram atica ge-
neral genera o no alguna cadena terminal (es o no vaco). Podemos construir una MT tal
que para cada palabra la m aquina verique si est a en L. La m aquina suspende su funciona-
miento en cuanto encuentra alguna, pero puede entrar en ciclo y no terminar nunca (pues
el tama no de las formas sentenciales puede mantenerse constante o hasta decrecer a trav es
de un n umero innito de aplicaciones de ciertas producciones).
Adem as de poder ser considerada como un procedimiento o un reconocedor, la MT pue-
de denir una funci on de enteros en enteros. Para esto tradicionalmente se representa a cada
entero en notaci on unaria como en el ejemplo de la secci on anterior. Para representar al en-
tero i > 0, utilizamos una cadena de i 0 (0
i
). Si la funci on tiene k argumentos, i
1
, i
2
, . . . , i
k
,
entonces estos enteros aparecen inicialmente en la cinta separados por 1, 0
i
1
10
i
2
1 . . . 10
i
k
.
Si la m aquina de Turing para con la cinta conteniendo 0
m
para alguna m, y con la
cabeza lectora
3
a la izquierda del primer 0, decimos que f(i
1
, i
2
, . . . , i
k
) = m, donde f es
la funci on de k argumentos que calcula la MT. Una MT puede calcular funciones de un
argumento, y esa misma prever el caso de 2 argumentos, etc. Tambi en, a un cuando la MT
est e preparada para calcular una funci on de k argumentos, no tiene por qu e tener valores
denidos para todas las posibles n-adas de enteros i
1
, . . . i
n
.
Si f(i
1
, . . . , i
k
) est a denida para todos los posibles valores i
1
. . . , i
k
, entonces decimos
que f es una funci on recursiva total. En general, una funci on f(i
1
, . . . , i
k
) calculada por
una MT es una funci on recursiva parcial. En cierto sentido las funciones recursivas par-
ciales corresponden a los lenguajes recursivamente enumerables y las funciones recursivas
totales a los lenguajes recursivos. Todas las funciones aritm eticas comunes son funciones
recursivas totales.
3
A esto se le llama una conguraci on can onica: en la cinta se encuentra una sucesi on ininterrumpida de
0 y la cabeza de lectora se encuentra en el extremo izquierdo de esta sucesi on; cualquier otra conguraci on
indicara que el resultado de la funci on no est a denido.
8.5 Distintos tipos de MT 233
8.5. Distintos tipos de m aquinas de Turing
El modelo de MT que hemos estado viendo es equivalente a muchas versiones modi-
cadas. Damos a continuaci on algunos de esos otros modelos y los teoremas que demuestran
su equivalencia con la MT presentada en las secciones anteriores.
8.5.1. M aquina de Turing con cinta innita en ambos sentidos
Una MT con cinta innita en ambos sentidos se denota igual que la que s olo tiene
cinta innita hacia la derecha. Se conserva tambi en toda la notaci on de descripciones ins-
tant aneas y movimientos. El unico caso que hay que examinar es cuando la cabeza lectora
se encuentra observando el primer smbolo distinto de blanco a la izquierda, qX. La no-
taci on para este caso, dependiendo de c omo est e denida la transici on, es la siguiente:
Funci on de transici on Conguraciones
(q, X) = (p, Y, ) qX p2Y
(q, X) = (p, 2, ) q2 p
La idea que se persigue es que ahora, tanto hacia la izquierda como hacia la derecha,
marcamos o anotamos aquellos smbolos distintos de blanco que se encuentren m as lejos a
la izquierda y a la derecha.
Teorema 8.1 L es reconocido por una m aquina de Turing con cinta innita en ambos
sentidos si y s olo si es reconocido por una m aquina de Turing con cinta innita s olo hacia
la derecha.
Demostraci on:
Sea M
1
con cinta innita a la derecha y M
2
con cinta innita en ambos sentidos. La
demostraci on de que M
2
puede simular a M
1
es sencilla. Al empezar a funcionar M
2
,
lo primero que hace es poner una marca especial a la izquierda de la primera celda con
datos. Si M
2
llega a ver ese smbolo durante el reconocimiento, se transere a un estado
no nal y suspende su ejecuci on.
Figura 8.3 M
2
con cinta innita en ambas direcciones
. . . A
r
A
r+1
. . . A
1
A
1
A
2
. . . A
s
. . .
porci on izquierda porci on derecha
234 M aquinas de Turing
Para hacer que M
1
simule a M
2
, doblamos la cinta innita en el punto donde empiezan
los datos y pensamos en la cinta de M
1
con dos pistas. La superior (U) contiene a los
datos de M
2
incluyendo lo que sera la primera celda por revisar y la inferior (L) contie-
ne, en orden inverso, las celdas a la izquierda de la celda inicial. Esta porci on de la cinta,
al igual que la superior, se extiende innitamente hacia la derecha. Podemos ver en la
gura 8.3 el contenido de la cinta de M
2
, y en la gura 8.4 como se representa en M
1
donde la cinta es innita unicamente hacia la derecha. Supongamos que el contenido de
la cinta de M
1
, con sus dos pistas es como se muestra en la gura 8.3. Entonces, la cinta
de M
1
, que se extiende unicamente a la derecha tendr a el contenido que se muestra en la
gura 8.4.
Figura 8.4 M
1
con cinta innita s olo hacia la derecha
A
1
A
2
. . . . . . A
s
. . . porci on derecha
# A
1
. . . . . . A
r
. . . porci on izquierda
Cuando M
2
observa alguna celda de la porci on izquierda de su cinta, M
1
se ja unica-
mente en la parte inferior, y cuando M
2
observa alguna celda de su parte derecha, M
1
se
ja unicamente en la pista superior.
Formalmente, si M
2
= (Q
2
, , ,
2
, q
2
, 2, F
2
) denimos M
1
de la siguiente manera:
Q
1
=
_
[q, U] o [q, L]

q (Q
2
q
1
)
_
La segunda componente del estado, U o L, indica, respectivamente si M
1
est a j andose
en la pista superior (U) o en la inferior (L), que corresponden, respectivamente, a la
porci on derecha e izquierda de la cinta original.
Los smbolos de
1
son de la forma [x, y] donde x, y en
2
. Adem as, y puede ser #, un
smbolo que no estaba en
2
. Resumiendo,

1
=
_
[x, y]

x, y
2
, y puede ser #, # /
2
_

1
=
_
[a, 2]

con a
2
_
F
1
=
_
[q, U], [q, ]

q F
2
_
y
1
denida de la siguiente manera:
i. Para a
2
2

1
(q
1
, [a, 2]) =([q, U], [x, #], ) si
2
(q
2
, a) =(q, x, )

1
(q
1
, [a, 2]) =([q, L], [x, #], ) si
2
(q2, a) =(q, x, )
8.5 Distintos tipos de MT 235
Si M
2
se mueve a la derecha en el primer movimiento, M
1
coloca una marca en el
extremo izquierdo de la pista inferior en el primer movimiento, hace que el segundo
componente de su estado sea U y se mueve hacia la derecha y funciona sobre
la pista superior, llevando control del estado en el que queda M
2
en su primer
componente. Si M
2
se mueve hacia la izquierda en su primer movimiento, M
1
hace
lo mismo que en el caso anterior pero en la porci on inferior de su cinta, por lo que
va hacia estados cuya segunda componente es L.
ii. Para cada [x, y]
1
, con y ,= # y D , ,

1
([q, U], [x, y]) = ([p, U], [z, y], D) si
2
(q, x) = (p, z, D)
M
1
simula a M
2
en la pista superior. El smbolo D representa cualquiera de las dos
posibles direcciones, o
iii. Para cada [x, y]
1
, con y ,= #,

1
([q, L], [x, y]) = ([p, L], [x, z], ) si
2
(q, y) = (p, z, )

1
([q, L], [x, y]) = ([p, L], [x, z], ) si
2
(q, y) = (p, z, )
M
1
simula a M
2
en la pista inferior, pero en la direcci on opuesta: si M
2
se mova
en la porci on izquierda hacia la izquierda, debe moverse en la cinta inferior hacia
la derecha, y viceversa.
iv.
1
([q, U], [x, #]) = ([p, L], [y, #], ) si
2
(q, x) = (p, y, )

1
([q, U], [x, #]) = ([p, U], [y, #], ) si
2
(q, x) = (p, y, )
M
1
simula a M
2
con la primera celda revisada originalmente. En ese momento
decide si seguirse con la pista superior o inferior, dependiendo de si el siguiente
movimiento de M
2
es hacia la izquierda o la derecha.
v.
1
([q, L], [x, #]) = ([p, U], [y, #], ) si
2
(q, x) = (p, y, )

1
([q, L], [x, #]) = ([p, L], [y, #], ) si
2
(q, x) = (p, y, )
Si M
1
se encuentra observando la cinta inferior y llega a ver el #, utiliza la pista
superior para decidir su transici on. Si la transici on en M
2
mova la cabeza hacia la
derecha, cambia de pista y se mueve hacia la derecha. Si la transici on original en
M
2
mova a la cabeza hacia la izquierda, permanece en la pista inferior y se mueve
hacia la derecha.
A un cuando no se da una demostraci on formal de este teorema, es f acil explicar el
por qu e, en efecto, M
1
imita a M
2
.
236 M aquinas de Turing
8.5.2. M aquinas de Turing con la opci on de no mover la cabeza
Una MT con la opci on de no mover la cabeza (stay option) es aqu ella donde la direcci on
del movimiento de la cabeza est a en el conjunto , , , con el tercer elemento
representando que la cabeza no se va a mover.
Teorema 8.2 Si un lenguaje L es aceptado por una MT M
1
con opci on de no mover la
cabeza, es aceptado por una MT M
2
sin esa opci on, y viceversa.
Demostraci on:
Que una MT con opci on de no mover la cabeza puede simular a una sin esa opci on
es obvio: simplemente se copia el programa de M
2
a M
1
, y como M
2
no utilizaba la
opci on de quedarse en la misma celda, el programa va a funcionar exactamente igual,
reconociendo a exactamente el mismo lenguaje.
Para que una MT est andar simule a una MT con la opci on de no mover la cabeza, debe-
mos, para cada transici on de M
2
de la forma:

2
(q, a) = (p, x, )
sustituirla por dos de la siguiente forma:

1
(q, a) = (q

, x, )

1
(q

, s) = (p, s, )
donde q

es un nuevo estado en Q
1
, s es cualquier smbolo en 2. Es f acil ver
que al introducir este movimiento de la cabeza, hacia la derecha y de regreso, la MT
est andar obtiene la opci on de no mover la cabeza.
8.5.3. M aquinas de Turing con m as de una cinta
Una MT con m as de una cinta consiste de un control nito con k cabezas lectoras y k
cintas. Cada cinta es innita en ambos sentidos. La MT dene su movimiento dependiendo
del smbolo que est a viendo cada una de sus cabezas, da reglas de sustituci on para cada
uno de los smbolos y direcci on de movimiento para cada una de las cabezas. Inicialmente,
la MT empieza con la entrada en la primera cinta y el resto de las cintas en blanco.
Teorema 8.3 Si un lenguaje L es aceptado por una MT M
1
con cintas m ultiples, es acep-
tado por una MT M
2
de una sola cinta.
8.5 Distintos tipos de MT 237
Demostraci on:
Es f acil simular a M
2
en una MT con m ultiples cintas, utilizando unicamente una de las
cintas. El programa se copia tal cual, pero las otras k 1 pistas permanecen siempre con
blancos y sus cabezas jas.
Para simular una MT con m ultiples cintas con una con una unica pista hacemos lo si-
guiente. Sea L(M
1
), un lenguaje aceptado por M
1
una MT con k cintas. Construimos M
2
de una sola cinta con 2k pistas. De cada dos pistas, la primera se usa para sustituir a la
cinta y la segunda est a toda en blanco, excepto por un smbolo que marca el lugar donde
estara la cabeza correspondiente. Por cada movimiento de M
1
, se generan varios de M
2
.
Los estados de M
2
deber an recordar informaci on respecto a cuantas marcas de cabeza
est an a su derecha (de tal forma de ir recorriendo la cinta una sola vez y encontrando a
todas las marcas que corresponden a las cabezas). Por cada movimiento de M
1
, M
2
debe
recorrer la cinta de izquierda a derecha primero y de derecha a izquierda despu es, para
registrar los smbolos apuntados por las marcas de las cabezas. En su recorrido hacia la
derecha suspende cuando ya encontr o todas las marcas, y hacia la izquierda lo suspende
cuando encuentra la primera. Al encontrarse las marcas, actualiza la celda y la marca de
cabeza. Por ultimo M
2
cambia de estado. Con esta construcci on, M
1
acepta si y s olo si
M
2
acepta.
Figura 8.5 MT con una cinta simulando a una con varias cintas
a a b b c c . . .

B B C C

c c a a

8.5.4. M aquinas de Turing fuera de lnea (off-line)


Hoy en da, decimos que una MT tiene el mismo podero que una computadora digital.
Es m as, mientras que en las MT la memoria (cinta de trabajo) es innita, esto no es cierto
en una computadora. Sin embargo, la computadora tiene la posibilidad de manejar archi-
vos externos que le permitan obtener informaci on desde fuera de la propia m aquina. Una
pregunta obvia es el si la MT tiene o no tambi en esa capacidad.
238 M aquinas de Turing
Pensemos entonces en una MT que trabaje con un archivo de entrada, adem as de su
cinta y su unidad de control, que le permite leer y escribir en la cinta, as como cambiar
de estado. Este archivo es secuencial, pues la lectura es unicamente hacia adelante y de
celda en celda (por supuesto que el archivo est a formado por registros, donde cada registro
contiene la informaci on relativa a una celda de la cinta de la MT). A este tipo de MT se les
conoce con el nombre de m aquina de Turing fuera de lnea (off-line). La denici on de una
MT fuera de lnea es muy parecida a la can onica: M
O
= (Q, , , , q
0
, 2, q
f
), con el
alfabeto para el archivo de entrada. , en lugar de ser una funci on del producto cartesiano
Q Q, es una funci on de Q Q, . Mostramos
un esquema en la gura 8.6.
Figura 8.6 M aquina de Turing fuera de lnea
archivo de entrada (s olo lectura)
a b c a b
. . . . . .
. . . . . . . . . . . .
e f
g
Unidad de
control
Teorema 8.4 Si L es aceptado por una MT est andar (M
s
), entonces es aceptado por una
MT fuera de lnea (M
F
).
Demostraci on:
Para simular una MT est andar con una fuera de lnea, simplemente suponemos un archi-
vo de entrada vaco, procediendo de la misma manera que cualquier m aquina de Turing
normal (que en todo momento observa unicamente la cinta).
Para que una MT est andar simule a una MT fuera de lnea, se requiere de una MT con 4
pistas: la primera contiene el archivo de entrada original; la segunda pista contiene una
marca a la siguiente celda a ser leda; la tercera contiene la informaci on original en la
8.5 Distintos tipos de MT 239
cinta de la M
F
y la cuarta da la posici on de la cabeza en la cinta, como se puede observar
en la gura 8.7.
Figura 8.7 Simulaci on de M
F
utilizando una M
s
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
a b c d

e
f g

. . . . . .
. . . . . .
. . . . . .
. . . . . .
archivo de entrada
siguiente celda a leer
cinta de la MT
posici on de la cabeza
en la cinta
Unidad de
control de
M
s
La simulaci on de M
F
utilizando una MT est andar, M
s
, se realiza de la siguiente manera:
Q
s
el conjunto de estados de M
s
, consiste de parejas [q, s], donde q Q
F
y s en el
alfabeto del archivo de entrada.

s
son cuartetos de smbolos representando a las 4 pistas.

s
Cada movimiento deM
F
genera varios movimientos deM
s
. Digamos que M
s
empie-
za siempre de una posici on est andar (como por ejemplo el extremo izquierdo de la
cinta) y en un cierto estado;M
s
mueve su cabeza buscando en la pista 2 cu al es el
siguiente smbolo a leer:

s
([q
i
, 2], [a, b, c, d]) = (q
i
, 2], [a, b, c, d], ) para a, b, c, d
s
,
[q
i
, 2] el estado inicial para cada paso en la MT original.

s
([q
i
, 2], [a, , c, d]) = ([q
i
, a], [a, , c, d], )
A continuaci on, se revisa la pista 4, tambi en desde una posici on est andar, buscando
la posici on de la cabeza de M
s
. Como sabemos el smbolo del archivo de entrada
(est a registrado en el estado), podemos en ese momento observar el smbolo en la
pista 3 y tomar una decisi on:
240 M aquinas de Turing

s
([q
i
, a], [a, b, c, ]) = ([q

i
, 2], [a, b, c, 2], D),

s
([q

i
, 2], [a, b, c, 2]) = ([q
j
, 2], [a, b, x, ], D),
donde
F
(q
i
, a, c) = (q
j
, x, D),
con D , y D = direcci on opuesta a D.
La primera transici on en la lista anterior permite imitar la transici on de la MT
off-line en cuanto a la sustituci on del smbolo en la cinta de la MT. La segunda
transici on mueve la cabeza de la MT
s
y realiza la transici on de estado.
8.5.5. M aquinas de Turing multidimensionales
Una m aquina de Turing multidimensional es aquella cuya cinta puede verse como ex-
tendi endose innitamente en m as de una direcci on. Por ejemplo, una m aquina de Turing
bidimensional sera aquella que su cinta se extiende innitamente hacia arriba, abajo, dere-
cha e izquierda:
Figura 8.8 MT bidimensional
c
b a
d

Unidad de
control
La cabeza de lectura/escritura empieza colocada frente a la celda cuya esquina inferior
izquierda est a marcada con . La funci on de transici on est a denida similarmente a la de
la MT est andar, excepto que el movimiento de la cabeza puede ser cualquiera del conjunto
, , U, D (izquierda, derecha, arriba, abajo respectivamente).
Para simular una MT multidimensional usando una MT est andar, podemos utilizar el
modelo de dos pistas: la superior va a contener a los smbolos y la inferior va a contener la
8.5 Distintos tipos de MT 241
Figura 8.9 Posiciones en una MT bidimensional
2,-2 2,-1 2,1 2,2
1,-1 1,1 1,2
-1,-1 -1,1 -1,2 -1,3

Unidad de
control
posici on de esos smbolos, calculada de la siguiente manera: dividimos a la cinta en cuatro
cuadrantes, con los ejes cruz andose en el punto donde se encuentra la cabeza al empezar
el proceso; cada direcci on est a dada por una pareja (rengl on, columna); a la primera cel-
da a la derecha le corresponde la pareja (1, 1). Al moverse hacia la derecha(izquierda) se
incrementa(decrementa) la columna, mientras que al moverse hacia arriba(abajo) se incre-
menta(decrementa) el rengl on. A la celda inmediatamente a la izquierda de la celda (1, 1)
le corresponde (1, 1) y a la celda inmediatamente abajo de la celda (1, 1) le corresponde
la pareja (1, 1). La cinta bidimensional queda numerada como se muestra en la gura 8.9.
Para representar a la cinta bidimensional en una unidimensional, en la primera pista
colocamos el smbolo y en la segunda pista colocamos la direcci on. Tenemos, sin embar-
go, un peque no problema, pues las direcciones no ocupan un lugar jo. Pero podemos
acomodarlas por parejas, de tal manera que la cabeza de la m aquina sepa de qu e se trata,
separando a cada entero entre s por un car acter especial, digamos el #. Los smbolos de
la cinta estaran colocados alineados con la primera coordenada de cada posici on, como se
muestra en la gura 8.10.
Figura 8.10 Representaci on de la cinta de una MT bidimensional
a b c d
1 1 1 1
# # # # # # # #
2 2 2 2
242 M aquinas de Turing
Supongamos que al iniciarse un reconocimiento, tanto la MT est andar (M
s
) y la MT bi-
dimensional (M
b
) se encuentran frente a la misma celda de la cinta original. Para queM
s
simule un movimiento de M
b
, debe hacer lo siguiente:

Hacer la sustituci on correspondiente del smbolo de la primera pista.

Calcular la nueva direcci on a la que se debe de mover, dependiendo de la direcci on


de movimiento de la cabeza.

Buscar en la segunda pista esta direcci on calculada. Si no la encuentra, agregarla al


nal de la segunda pista.

Colocar la cabeza lectora en la celda correspondiente de la primera pista (la celda


inmediatamente arriba del inicio de la direcci on).

Transferirse al estado correspondiente.


No est a en duda el que la MT pueda calcular una direcci on (es una operaci on sencilla de
sumas y restas y comparaciones contra cero) o que pueda revisar la segunda pista buscando
la pareja que sea la misma que la direcci on buscada. Posiblemente requeriramos de otra
pista para calcular la direcci on, pero eso no es problema, pues es una operaci on aritm etica.
Respecto a buscar la pareja que coincida, tampoco se ve demasiado problema, pues hemos
dise nado MT que verican si una cadena se repite.
Dada la argumentaci on anterior, es claro que estos dos modelos son equivalentes.
8.5.6. M aquinas de Turing no-deterministas
Las MT no-deterministas tienen una sola cabeza y una cinta innita en ambas direc-
ciones
4
. Para cada smbolo y estado, la MT tiene un n umero nito de opciones para el
siguiente movimiento. Cada elecci on consiste de un nuevo estado, un smbolo a imprimir y
un movimiento de la cabeza. En este caso, como en el caso de aut omatas nitos, el modelo
no-determinista no hace crecer el podero del modelo determinista.
Antes de embarcarnos en la demostraci on de esta equivalencia, observemos la MT no
determinista que reconoce a L = ww[ w (a +b)

, cuya tabla de transiciones es la 8.5.


La MT consiste de once estados que hacen las funciones siguientes:
q
0
: El estado inicial que se encarga de recoger el siguiente smbolo a tachar en la copia
izquierda de w (que identicaremos con w
i
). S olo se usa cuando no se ha identi-
cado el centro de la cadena (que puede estar propuesto en varias posiciones).
q
Ba
: Reconoce que en w
i
acaba de tachar una a y va en busca de la a en w
d
(la copia
derecha de w). En cuanto encuentra una a, la tacha y regresa a lo que cree es w
i
.
4
No hay ninguna restricci on para que una MT no-determinista tenga m as de una cabeza lectora, m as de
una cinta o cinta innita en s olo una direcci on, ya que las equivalencias mostradas para los distintos tipos
de MT deterministas, dada la equivalencia entre estas y las no-deterministas que estamos por demostrar, se
aplican tambi en en estas ultimas.
8.5 Distintos tipos de MT 243
Tambi en sigue adelante buscando otra a, pues la que encontr o pudiera estar en w
i
.
S olo se usa cuando se est a tratando de denir el centro de la cadena.
q
B
b
: Lo misma que q
Ba
pero buscando b. Al igual que q
Ba
s olo se usa para determinar el
centro de la cadena.
q
R
: Regresa buscando el primer smbolo en w
i
sin tachar, localizando el primero tacha-
do y movi endose al siguiente smbolo a la derecha. Si al moverse a la derecha se
encuentra en w
d
, pasa al estado que verica que todos los smbolos hayan sido tacha-
dos (q
2
).
q
1
: Se encarga de tachar el primer smbolo de w
i
que no ha sido tachado y se transere a
buscar la mitad de la cadena. Si no la encuentra, suspende su funcionamiento.
q
1a
: Se encarga de buscar la mitad de la cadena, recordando al car acter que acaba de
tachar en w
i
.
q
1
b
: Lo mismo que q
1a
.
q
Da
: Verica que el primer smbolo no tachada en w
d
coincida con a.
q
D
b
: Verica que el primer smbolo no tachado sea una b.
q
2
: Verica que todos los smbolos hayan sido tachados, movi endose a la derecha bus-
cando un blanco. Si encuentra alg un smbolo no tachado, suspende su funcionamien-
to sin aceptar. Si llega al blanco, pasa a un estado nal y acepta.
q
f
: Estado que no tiene transiciones, por lo que para aceptando.
Tabla 8.5 Tabla de transiciones para L = ww[ w (a +b)

Q a b A
i
B
i
A
d
B
d
2
q
0
qBa, A
i
, q
B
b
, B
i
,
q
Ba
q
R
, A
d
,
q
Ba
, b,
q
Ba
, a,
q
B
b
q
B
b
, a,
q
R
, a,
q
B
b
, b,
q
R
q
R
, a, q
R
, b, q
1
, A
i
, q
1
, B
i
, q
R
, A
d
, q
R
, B
d
,
q
Da
q
R
, A
d
, q
Da
, A
d
, q
Da
, B
d
,
q
D
b
q
R
, B
d
, q
D
b
, A
d
, q
D
b
, B
d
,
q
1
q
1a
, A
i
, q
1
b
, B
i
, q
2
, A
d
, q
2
, B
d
, q
f
, 2,
q
1a
q
1a
, a, q
1a
, b, q
Da
, A
d
, q
Da
, B
d
,
q
1
b
q
1
b
, a, q
1
b
, b, q
D
b
, A
d
, q
D
b
, B
d
,
q
2
q
2
, A
d
, q
2
, B
d
, q
f
, 2,
q
f
Trabajemos con L y veamos las conguraciones por las que pasa al reconocer
z = aabaab en la gura 8.11.
244 M aquinas de Turing
Figura 8.11 Ejecuci on de la MT que reconoce a ww = aabaab 1/2
q
0
aabbaabb
A
i
q
Ba
abaab
q
R
A
i
A
d
baab
A
i
q
1
A
d
baab
A
i
A
d
q
2
baab
ALTO
A
i
aq
Ba
baab
A
i
abq
Ba
aab
A
i
abaq
Ba
ab
A
i
abaaq
Ba
b
A
i
abaabq
Ba
ALTO
A
i
abq
R
aA
d
b
A
i
aq
R
baA
d
b
A
i
q
R
abaA
d
b
q
R
A
i
abaA
d
b
A
i
q
1
abaA
d
b
A
i
A
i
q
1a
baA
d
b
A
i
A
i
bq
1a
aA
d
b
A
i
A
i
baq
1a
A
d
b
A
i
A
i
baA
d
q
Da
b
ALTO
A
i
aq
R
bA
d
ab
A
i
q
R
abA
d
ab
q
R
A
i
abA
d
ab
A
i
q
1
abA
d
ab
A
i
A
i
q
1a
bA
d
ab
A
i
A
i
bq
1a
A
d
ab
A
i
A
i
bA
d
q
Da
ab
A
i
A
i
bq
R
A
d
A
d
b
A
i
A
i
q
R
bA
d
A
d
b
A
i
q
R
A
i
bA
d
A
d
b
A
i
A
i
q
1
bA
d
A
d
b
A
i
A
i
B
i
q
1
b
A
d
A
d
b
A
i
A
i
B
i
A
d
q
D
b
A
d
b
A
i
A
i
B
i
A
d
A
d
q
D
b
b
1
8.5 Distintos tipos de MT 245
Figura 8.11 Ejecuci on de la MT que reconoce ww = aabaab 2/2
1
A
i
A
i
B
i
A
d
q
R
A
d
B
d
A
i
A
i
B
i
q
R
A
d
A
d
B
d
A
i
A
i
q
R
B
i
A
d
A
d
B
d
A
i
A
i
B
i
q
1
A
d
q
r
A
d
B
d
A
i
A
i
B
i
A
d
q
2
A
d
B
d
A
i
A
i
B
i
A
d
A
d
q
2
B
d
A
i
A
i
B
i
A
d
A
d
B
d
q
2
A
i
A
i
B
i
A
d
A
d
q
f
B
d
Alto
Podemos observar que se generan cuatro posibles reconocimientos, uno para cada po-
sici on posible del centro de la cadena:
aa b a a b
a a b a a b
a a b aa b
a a b a a b
Supone que encontr o la mitad de la cadena cuando se repite elo primer smbolo que vio.

Unicamente la tercera suposici on es v alida, por lo que esa es la unica rama que sobrevive
para llegar al estado nal q
f
. Las otras tres suposiciones se quedan en el camino, pues se
enfrentan a transiciones que no est an denidas.
Teorema 8.5 Si L es aceptado por una MT no-determinista (M
1
), entonces es aceptado
por una MT M
2
determinista.
246 M aquinas de Turing
Demostraci on:
Para simular una MT no determinista (M
n
) utilizando una MT determinista (M
s
) debe-
mos conseguir que M
s
siga los movimientos de M
n
y si, por alg un camino M
n
acepta o
reconoce a una cadena, M
s
debe suspender su funcionamiento aceptando tambi en.
La manera como funciona el no determinismo no es al azar. Para cada transici on denida
de M
n
, existe un n umero nito de posibles acciones. El no-determinismo, lo que debe
hacer, es elegir simult aneamente todas las opciones, mientras que una MT probabilista
(que elige al azar) seguira unicamente el camino indicado por la funci on de probabili-
dad. En el caso del no-determinismo, si existe alguna sucesi on de transiciones que llevan
a M
n
desde el estado inicial a un estado nal cuando la MT suspende su funcionamiento,
entonces decimos que la MT acepta. Mientras que una MT probabilista indicara exclu-
sivamente si el camino elegido lleg o a buen n o no.
Una manera obvia de simular a M
n
utilizando una MT est andar es la de seguir, uno a
uno, todos los posibles caminos que toma M
n
. En cuanto alguno de los caminos nos
lleva a un punto muerto, o bien, a aceptar la cadena, entonces decimos que M
s
acepta.
Este proceso equivaldra a recorrer un arbol, donde los hijos de cada nodo corresponden
a cada una de las opciones que da esa transici on. Esto lo podemos hacer con una MT
de tres pistas: la primera tiene la cinta original, la segunda tiene la trayectoria que se ha
seguido en el reconocimiento y la tercera tiene una copia de la cinta en el momento en
que se elige una opci on. La trayectoria se registra numerando cada una de los reglas de
transici on (una por cada opci on) y anotando el n umero que se utiliz o, como se muestra
en la gura 8.12.
Figura 8.12 MT no determinista

N
(q, a) =
_
(p
1
, x
1
, D
1
), (p
2
, x
2
, D
2
), (p
3
, x
3
, D
3
), (p
4
, x
4
, D
4
)
_

n
(q, a)
(p
1
, x
1
, D
1
) (p
2
, x
2
, D
2
) (p
3
, x
3
, D
3
) (p
4
, x
4
, D
4
)
El problema con este esquema es que M
n
pudiera no parar en alguna de sus trayectorias y
esto provocara que M
s
se quedara en un ciclo innito sin poder tomar otra rama del arbol
que pudiera ser la que acepta. Para evitar esto, podemos generar el arbol no a profundidad
sino por niveles: para cada nivel avanzamos cada una de las trayectorias exactamente un
paso. De esta manera no corremos el riesgo de perseguir una rama innita y quedar
8.5 Distintos tipos de MT 247
empantanados en ella. Esto se hace de manera sencilla simulando la ejecuci on de BFS
sobre las opciones en cada movimiento.
Requerimos de dos cintas, una para tener la cinta original que se est a observando en ese
momento y otra que va a funcionar como la cola de BFS, donde colocaremos, conforme
se vayan encontrando, descripciones instant aneas por procesar. Empezamos con la con-
guraci on inicial en la primera cinta. Anotamos en la segunda cinta, una detr as de la otra
y separadas por # por ejemplo, cada una de las descripciones instant aneas resultantes
de dar un paso en la conguraci on inicial. A continuaci on, interpretamos en la primera
cinta la descripci on instant anea en el extremo izquierdo de la segunda pista, borrando la
anterior en la primera y borrando la que se est a copiando en la segunda. La MT se trans-
ere al estado marcado por la conguraci on y nuevamente genera, al nal de la cola, las
conguraciones resultantes de dar un paso en esta. La MT suspende su funcionamiento
si en la primera pista llega a estado nal sin m as transiciones posibles. En cambio, si la
MT original hubiese suspendido su funcionamiento unicamente en alguno de las ramas,
la MT de dos cintas, procede a interpretar la siguiente DI disponible y contin ua. Si cuan-
do en la primera cinta se suspende el funcionamiento y ya no hay ninguna DI en la cola
BFS, entonces la MT parar a sin aceptar.
Se puede ver que de esta manera, ambas MT van a aceptar al mismo lenguaje.
Ejemplo 8.7:
Veamos un ejemplo de los primeros pasos en la MT no determinista que reconoce a ww,
usando como ejemplo aabaab, cuyo arbol de DI tenemos en la gura 8.11. Observemos la
gura 8.13.
Figura 8.13 Ejecuci on determinista de una MT no determinista
a a b a a b
2 2 2 2 2 2 2 2 2 2 2 2 2

A
i
q
Ba a b a a b
#
2 2 2 2 2 2 2 2 2 2 2
q
0
BFS
A
i a b a a b
2 2 2 2 2 2 2 2 2 2 2 2 2

q
R
A
i
A
d b a a b
# A
i a
q
Ba b a a b
#
2 2 2
q
Ba
BFS
A
i
A
d b a a b
2 2 2 2 2 2 2 2 2 2 2 2 2

q
R
A
i a
q
Ba b a a b
# A
i
q
1
A
d b a a b
# BFS
2 2 2
248 M aquinas de Turing
En la gura 8.13 cada dos cintas muestran un instante de tiempo de la MT no deter-
minista. En las primeras dos cintas tenemos la situaci on cuando se eval ua la transici on
(q
0
, a) = q
Ba
, A
i
, ). Como tenemos una unica opci on, ponemos en la segunda cinta
la siguiente DI a la que se va a pasar.
En la tercera cinta se encuentra interpretada la primera (y unica, por el momento) de
la DI de la segunda cinta. En la cuarta cinta, despu es de borrar la DI que ya usamos, se
escriben las dos opciones para (q
Ba
, a) = (q
R
, A
d
, ), (q
Ba
, a, ).
En la quinta cinta se encuentra el resultado de cargar la primera DI de la cuarta cinta.
En la sexta cinta se borra esta opci on y se agrega al nal la opci on que resulta de esta DI:
(q
R
, A
i
) = (q
1
, A
i
, ).
En las pistas pares, por carecer de espacio, estamos mostrando como si recorriera a los
smbolos de la cinta hacia atr as, pero esto en realidad no sucede, sino que se busca el primer
blanco hacia la izquierda para encontrar la conguraci on que toca.
Como se ha visto hasta ahora, hay muchsimas variaciones de las m aquinas de Turing
que resultan equivalentes. Realmente, lo que proporcionan los distintos modelos son alter-
nativas para plantear las soluciones de los problemas, de tal manera que sean m as f aciles
de resolver, y no, como pudi esemos suponer, abstracciones m as o menos poderosas.
8.6. La m aquina universal de Turing
Habr a todava incr edulos que sigan sin creer que las m aquinas de Turing tienen el mis-
mo podero que una computadora digital como las conocemos hoy en da. Y pr acticamente
el unico argumento que sobrevive es que mientras que nosotros hemos demostrado la equi-
valencia de distintas concepciones para la m aquina de Turing, estas m aquinas han sido
todas de prop osito especco, mientras que la computadora digital es de prop ositos ge-
nerales: la MT est a programada para realizar un determinado proceso, mientras que a la
computadora digital se le puede reprogramar para que la misma m aquina pueda llevar a
cabo cualquier proceso susceptible de ser programado.
Se impone en este momento la presentaci on de una MT reprogramable, esto es, que sea
capaz de llevar a cabo cualquier proceso que se le indique. A esta MT se le conoce como la
m aquina universal de Turing. Esta MT debe ser capaz de seguir cualquier programa para
MT que se le d e como dato de entrada. Esto lo podemos conseguir si hacemos lo siguiente:

Trabajemos con una MT que consiste de tres cintas.

En la primera se va a encontrar el programa o la descripci on (la tabla) de la MT que


debe simular.

En la segunda cinta se va a encontrar lo que corresponde a la cinta de la MT a simular.

En la tercera cinta se encuentra el estado en el que la MT original se encontrara.


8.6 La m aquina universal de Turing 249
Figura 8.14 Esquema de una m aquina universal de Turing
Unidad de
control de
M
U
cinta original
de M
descripci on de M
estado actual
de M
Veamos el esquema en la gura 8.14.
Para poder hacer esta simulaci on debemos codicar la tabla original, de alguna manera
que sea sucientemente general. Hag amoslo con notaci on unaria. Supongamos que la MT
original tiene n estados q
1
, q
2
, . . . , q
n
, esta lista ordenada de tal manera que q
1
es el estado
inicial y q
2
el unico estado nal. Codicamos a los estados mediante su ndice:
(q
1
=1, q
2
=11, . . . , q
k
=1
k
).
Hacemos lo mismo con los smbolos del alfabeto, reservando la cadena 1 para el blanco.
En cuanto a la direcci on de movimiento de la cabeza, hacemos la siguiente codicaci on:
= 1, = 11.
Para denotar a una transici on, damos una quinteta, donde separamos a los elementos de
la quinteta entre s con 0. Por ejemplo, si los smbolos del alfabeto de la MT original son
a, b, c, d, e, la quinteta 11101011011110110 representa a la transici on (q
3
, 2) =
(q
2
, c, ) en la MT original.
Al empezar la MT universal su funcionamiento, va a tener en la primera cinta la tabla
de la MT original. En la segunda cinta tendr a la cadena de entrada, pero codicada de esta
manera, y en la tercera cinta tendr a un 1, indicando que se encuentra en el estado inicial de
la m aquina original.
Cada transici on de la MT original, la MT universal la consigue haciendo lo siguiente:
i. Localiza en la primera cinta aquella quinteta en la que el primer componente sea
igual al que se encuentra en la tercera cinta, y el segundo componente sea igual al
que se encuentra en la segunda cinta.
250 M aquinas de Turing
ii. Copia a la tercera cinta el tercer componente de la primera cinta (el estado al que se
transere).
iii. Sustituye la segunda cinta por lo que dice el cuarto componente.
iv. Interpreta el movimiento de la cabeza que se encuentra en el quinto componente,
moviendo acorde la cabeza de la segunda cinta.
Cuando la MT universal no encuentra una transici on (la MT original parara), la MT
universal se traslada a un estado donde va a vericar si se encuentra o no en estado nal (si
el contenido de la tercera cinta es 11).
Como se puede ver, la construcci on de la MT universal es un proceso sumamente deta-
llado. Sin embargo, no se ve difcil hacerlo en un lenguaje de programaci on tradicional.
El hecho de que una MT pueda ser codicada con ceros y unos tiene implicaciones
muy importantes. Podemos ver estas descripciones como enteros codicados en notaci on
binaria. Entonces, a cada MT le corresponde un entero. Debemos notar, sin embargo, que no
todos los enteros corresponden a una MT v alida (la MT debe estar descrita por quintetas).
Este hecho nos dice que podemos contar a las m aquinas de Turing, aun cuando estas sean
un n umero innito.
Teorema 8.6 El conjunto de todas las m aquinas de Turing, aunque innito,
es enumerable.
Demostraci on:
Codicamos a cada MT utilizando 0 y 1. Con esta codicaci on, construimos el siguiente
procedimiento de numeraci on:
i. Genera la siguiente cadena en 0, 1
+
en el orden apropiado.
ii. Verica que la cadena sea una MT v alida. Si s, la anota; si no, la ignora.
iii. Regresa al paso (i).
Dado que toda MT tiene una descripci on nita, toda MT va a ser generada eventualmente
por este proceso.
8.7. Aut omatas linealmente acotados
En este estudio de lenguajes y m aquinas, vimos en paralelo a la gram atica (mecanis-
mo generador) con el aut omata (mecanismo reconocedor). Sin embargo, nos saltamos la
comparaci on entre lenguajes dependientes del contexto y los aut omatas correspondientes,
y pasamos a m aquinas de Turing que corresponden a los lenguajes generales. La raz on pa-
ra ello es que los lenguajes dependientes del contexto son reconocidos por los aut omatas
linealmente acotados, que son, en realidad m aquinas de Turing restringidas.
8.7 Aut omatas linealmente acotados 251
Denici on 8.5 Un aut omata linealmente acotado (ALA) es una m aquina de Turing
no-determinista M = (Q, , , , q
0
, 2, F) como en la denici on est andar de m aquina
de Turing, con la restricci on de que debe contener dos smbolos especiales, y , que
acotan la parte utilizable de la cinta. La MT tiene la siguientes restricciones:
i. La MT no puede reescribir estos smbolos
ii. No puede tener transiciones que, cuando est e observando la marca izquierda () lo
muevan hacia la izquierda de la marca.
iii. No puede tener transiciones que, cuando est e observando la marca derecha () lo
muevan hacia la derecha de la marca.
Denici on 8.6 Una cadena w es aceptada por un aut omata linealmente acotado si existe
una sucesi on de transiciones de la forma
q
0
w

x
1
q
f
x
2

para alg un q
f
F, x
1
, x
2

. El lenguaje aceptado por este aut omata es el conjunto de


todas las cadenas que cumplen con esto.
Como ejemplos de lenguajes que acepta este tipo de aut omatas, podemos dar:
L = {a
n
b
n
c
n
| n 0}. Para aceptar a este tipo de cadenas, todo lo que tiene que hacer
el aut omata es tener estados para contar cada uno de los smbolos distintos. Esto es,
tachamos una a, a continuaci on una b y despu es una c.
L = {a
n
1
a
n
2
. . . a
n
k
| k 3, n 0}. La aceptaci on de este lenguaje se lleva a cabo
exactamente de la misma manera: el aut omata recorre de izquierda a derecha, trans-
curriendo entre los estados que tachan cada uno de los smbolos; despu es regresa de
derecha a izquierda, a encontrar el primer smbolo no tachado.
L = {a
n!
| n 0} Para reconocer a este lenguaje, el ALA puede manejar m as de una
pista, e ir dividiendo el n umero de a entre los factores de n!, como se puede ver en
la gura 8.15. La cinta de entrada tendr a en su pista superior A
n!
y en su pista de
abajo a
n
. En cada iteraci on deber a decrementar el n umero de a en la segunda pista
y proceder a vericar que ese n umero de a divide exactamente al n umero de a en la
primera pista. Si se llega a tener unicamente una a en la segunda pista, la cadena de
la primera pista est a bien construida.
Figura 8.15 ALA que acepta a
n!
[ n 0


a a a
a a a a a a
cadena a ser revisada
divisor actual
252 M aquinas de Turing
El ALA primero debe ir contando en grupos de tres las a. Si al nal del paso no logra
eliminar a todas las a, el n umero de a no es m ultiplo del divisor actual. Este proceso
prosigue, decrementando el divisor en 1 cada vez, mientras el divisor no sea 1.
Dado que estos ejemplos sabemos que no son lenguajes libres del contexto, podemos
asegurar que los ALA son m as poderosos que los aut omatas con pila. Sin embargo, para
demostrar que nuestra clasicaci on de lenguajes es acertada, deberamos poder demostrar
asimismo, que todo lenguaje libre del contexto puede ser reconocido por un ALA. Esto
no se ve directamente, pues tenemos que demostrar que el tama no de la pila al reconocer
un lenguaje libre del contexto, nunca contiene m as smbolos que los que aparecen en la
entrada. Si recurrimos a los ejemplos que hemos visto, la intuici on nos dice que esto es,
en efecto, cierto. La demostraci on de que los ALA son m as poderosos que los aut omatas
con pila y menos poderosos que las m aquinas de Turing sin restricciones requieren de
muchsimo trabajo y queda fuera de los objetivos de este material.
La jerarqua de
Chomsky
9
En primera instancia en este captulo mostramos que entre los cuatro tipos
de lenguajes que vimos, la contenci on es propia. M as a un, que fuera de estos
cuatro tipos de lenguajes existe una amplia gama de lenguajes que escapan
a estas caracterizaciones y cuya cardinalidad es mucho mayor que la de los
lenguajes generales. Terminamos el captulo con las construcciones que prue-
ban la equivalencia entre lenguajes generales y m aquinas de Turing; y entre
aut omatas linealmente acotados y lenguajes dependientes del contexto.
9.1. Lenguajes recursivos y recursivamente enumerables
De acuerdo al cuadro de aut omatas y lenguajes que dimos al principio, hay varias pre-
guntas que podemos hacernos:
Existen lenguajes que no pueden ser reconocidos por m aquinas de Turing?
Podemos establecer la equivalencia entre gram aticas sin restricciones y m aquinas
de Turing?
Las contenciones de un tipo de gram aticas a la inmediata superior son contenciones
propias?
Intentaremos de dar respuesta a estas preguntas, y plantearemos algunas m as, que vale
la pena hacerse. Para ello, tratemos de caracterizar a un mejor a las m aquinas de Turing.
254 La jerarqua de Chomsky
Debemos distinguir entre una m aquina de Turing aceptadora y una m aquina de Turing
que tiene un algoritmo para decidir membresa. Informalmente, la primera, frente a una pa-
labra del lenguaje, responde s, pero si la palabra no es del lenguaje pudiera entrar en ciclo y
no parar nunca; el segundo tipo de m aquina de Turing, al alimentarle una palabra, siempre
responde con s si la palabra pertenece al lenguaje, o con no si no pertenece. Formalmente:
Denici on 9.1 Un lenguaje L decimos que es recursivamente enumerable
1
si existe una
m aquina de Turing que lo acepta. Esto es, si
M = (Q, , , , q
0
, 2, F),
tenemos que
wL sii q
0
w

x
1
q
f
x
2
con q
f
F, x
1
y x
2

Esta denici on no nos dice qu e sucede si w / L, pues en este caso pudiera ser que M
no suspendiera su funcionamiento, o bien que lo hiciera en un estado no nal.
Denici on 9.2 Un lenguaje L se dice que es recursivo
2
si existe una m aquina de Turing
M que acepta a L y que suspende su funcionamiento frente a toda w
+
. En otras
palabras, un lenguaje es recursivo si existe un algoritmo de membresa para el.
Es obvio que los lenguajes recursivamente enumerables son m as generales que los re-
cursivos; m as a un, demostraremos que estos ultimos son un subconjunto propio de los
recursivamente enumerables.
9.1.1. M aquinas de Turing como generadores
Si bien hasta ahora hemos visto a las m aquinas de Turing como reconocedores (o cal-
culadoras de una funci on), tambi en pueden ser vistas como generadores de lenguajes. Con-
sideremos a una m aquina de Turing que tiene una cinta adicional, llamada cinta de salida,
y en la cual existe la restricci on de que la m aquina de Turing unicamente se puede mover
hacia la derecha y unicamente puede escribir. Supongamos tambi en que en la cinta de sali-
da la m aquina de Turing escribe cadenas w sobre un alfabeto , separadas entre s por #.
Podemos denir G(M), el lenguaje generado por M, como
G(M) =
_
w

M eventualmente escribe w en la cinta de salida entre dos #


_
Podemos ver que M nunca suspende su funcionamiento a menos que G(M) sea nito. No
estamos exigiendo que las palabras sean generadas en un cierto orden o que sean generadas
una unica vez. Si L es G(M) para alguna m aquina de Turing M, entonces L es recur-
sivamente enumerable y viceversa. Tambi en podemos denotar a los lenguajes recursivos
1
Tambi en se conoce a estos lenguajes como semidecidibles.
2
Tambi en se conoce a estos lenguajes como decidibles.
9.1 Recursivo vs recursivamente enumerable 255
en t erminos de m aquinas de Turing generadoras, como aquellos lenguajes que pueden ser
generados en el orden apropiado (por tama no, de menor a mayor).
Con este concepto presente, podemos caracterizar a los lenguajes recursivamente enu-
merables en t erminos de m aquinas de Turing generadoras:
Teorema 9.1 L es G(M) para alguna m aquina de Turing M si y s olo si L es un conjunto
recursivamente enumerable.
Demostraci on:
= Supongamos que L = G(M) para alguna m aquina de Turing M. Construyamos una
m aquina de Turing M
2
con una cinta m as que M, en la que M
2
va a colocar su entrada.
M
2
simula a M generando palabras. Cada vez que M escribe un # en su cinta de salida,
M
2
procede a comparar su cadena en la cinta de entrada con la que M acaba de generar.
Si son iguales, M
2
acepta. Si no son iguales, M
2
simula a M en la generaci on de la
siguiente palabra. Es claro que M
2
acepta a una cadena de entrada x si y s olo si M
genera a esa cadena x. De donde L(M
2
) = G(M).
= Supongamos ahora que tenemos un conjunto recursivamente enumerable (y por lo
tanto, por la denici on, una m aquina de Turing M
2
aceptadora que reconoce a L). No
podemos simplemente generar las cadenas de

en orden apropiado y alimentarlas


a M
2
, pues corremos el riesgo de alimentarle alguna para la que M
2
no suspenda su
funcionamiento. Debemos entonces encontrar alguna otra manera de generar y aceptar
las palabras, en orden can onico
3
, que quedar a denido seg un lo vayamos describiendo.
Construimos un m etodo para generar todas las parejas (i, j) con i, j enteros positi-
vos. Cada pareja va a representar el resultado de reconocer a la i- esima palabra en jo
menos pasos. Claramente, dada la i- esima palabra, si M
2
llega al paso j + 1, puede de-
cir que esta palabra no es aceptada en j o menos pasos (no podemos decir que no es
aceptada, sin embargo). Ac a, la intuici on nos dira que generemos estas parejas en el
orden (1, 1), (1, 2), (1, 3), . . . pero si lo hacemos as unicamente vamos a generar parejas
con un 1 como primera coordenada. Por ello, vamos a generarlas en orden de su suma:
(1, 1), (1, 2), (2, 1), (1, 3), (2, 2), . . . (diagonalizando). A esta m aquina de Turing la lla-
maremos la generadora de parejas. Despu es construimos una m aquina de Turing que
genere todas las palabras de

en orden apropiado.
Construimos M de la siguiente manera:

M genera una pareja (i, j) para el reconocimiento.

A continuaci on, genera la palabra i- esima w


i
, y la coloca en la cinta de entrada.

Simula a M
2
ejecutando j pasos sobre w
i
.

Si M
2
acepta a w
i
en el j- esimo paso, entonces M escribe w
i
en su cinta de salida.

Regresa a generar la siguiente pareja.


3
Existe un orden can onico para las palabras en

, puesto que

es un conjunto enumerable, como ya


se demostr o al inicio de este material.
256 La jerarqua de Chomsky
Es claro que G(M) = L(M
2
), ya que M no va a generar ninguna palabra que M
2
no
aceptase. Si w L, sea w la i- esima palabra en orden can onico para el alfabeto de L.
A M le lleva una cantidad nita de tiempo el generar una palabra. A M
2
, dado que
unicamente estamos viendo hasta el j- esimo paso, tambi en le lleva una cantidad nita
de tiempo decidir si acepta o no a w en ese n umero de pasos. Por lo tanto, el proceso
de decidir sobre la pareja (i, j) se hace en tiempo nito, y M puede, en ese momento,
escribir a w.
En la gura 8.3 mostramos el mecanismo de enumeraci on de los lenguajes recursiva-
mente enumerables. En este esquema, el entero que se encuentra arriba de cada palomita
corresponde al instante de tiempo en que se da ese paso para el reconocimiento de esa
palabra. El n umero 12, por ejemplo, indica que en el d ecimo segundo instante de tiempo,
se va a dar el segundo paso en el reconocimiento de w
4
.
Figura 9.1 Enumeraci on de cadenas en los lenguajes recursivamente enumerables
Palabras en orden can onico
pasos 1 2 3 4 . . . . . . . . .
por palabra
w
1
1

11

16

22

w
2
3

12

17

23

w
3
6

13

18

24

w
4
10

14

19

25

. . .
. . .
Corolario 9.2 Si L es un conjunto recursivamente enumerable, entonces existe un enu-
merador para L que cuenta a cada palabra en L exactamente una vez.
Demostraci on:
La m aquina de Turing M construida en la segunda parte del teorema 9.1 tiene esta pro-
piedad, ya que genera a w
i
s olo cuando aparece la pareja (i, j) y w
i
es aceptado por
M
2
en exactamente j pasos. Una vez reconocida w
i
, M

procede a borrarla de su cinta


de entrada, por lo que no va a ser considerada nuevamente. Y aunque no se borrara, el
9.1 Recursivo vs recursivamente enumerable 257
estado nal es siempre un estado que suspende el funcionamiento de la MT, por lo que
no se podran dar k pasos, con k > j.
9.1.2. Lenguajes que no son recursivamente enumerables
Si un lenguaje es recursivo podemos, de manera sencilla, construir un algoritmo que
enumere a las cadenas del lenguaje. Para ello, pensemos que tenemos una m aquina de
Turing M que genera, en orden de tama no, todas las cadenas de
+
. Como el lenguaje
es recursivo, tenemos otra m aquina de Turing M

que frente a cualquier cadena de


+
responde si pertenece o no al lenguaje. Modicamos levemente esta m aquina de Turing
para que si w L, la escriba en su cinta, y si no, no la escriba. Con este mecanismo, las
palabras de L quedar an en un cierto orden (respecto al tama no) en la cinta de M, y eso nos
da un mecanismo de enumeraci on.
Por otro lado, ya tambi en demostramos en la secci on anterior, que a los elementos de
los conjuntos recursivamente enumerables los podemos contar y que van a aparecer en la
cuenta exactamente una vez.
El objetivo de esta secci on, como su nombre lo indica, es demostrar que existen len-
guajes que no son recursivamente enumerables. Para demostrar esto, primero probaremos
algunos resultados auxiliares. El siguiente teorema, aunque muy conocido, lo presenta-
mos ac a.
Sea un alfabeto nito y, como hasta ahora,

el conjunto de cadenas nitas sobre


ese alfabeto. Sabemos que este conjunto es enumerable y se pueden poner en orden lexi-
cogr aco. Sea L el lenguaje que representa a

(

), codicado de la siguiente manera:


asignamos a cada subconjunto de palabras sobre una cadena binaria tal que si w
j
es una
palabra en

y
i
es un subconjunto en

(

) entonces, el dgito en la posici on j de


i
est a determinado de la siguiente manera:
d
ij
=
_
0 si w
j
,
i
1 si w
j

i
De esta manera podemos pensar en un conjunto innito enumerable (

) y el conjunto
potencia del mismo (

)). Aclarado que estamos hablando tambi en de lenguajes, pro-


cedemos a demostrar el siguiente teorema.
Teorema 9.3 Sea S un conjunto innito enumerable. Entonces, el conjunto potencia

(S) no es enumerable.
Demostraci on:
Supongamos que el conjunto

(S) es enumerable. Cada elemento de ese conjunto de-
not emosle de la siguiente manera: dado que S es enumerable podemos asignarle a cada
elemento de S un entero, que corresponde a la posici on que ocupa cada elemento al
258 La jerarqua de Chomsky
ordenarlos; cada elemento de

(S) es un subconjunto de S, por lo que podemos repre-


sentarlo a trav es de una cadena de 0 y 1, con un 0 en la posici on de los elementos de S
ausentes y un 1 en la posici on de los elementos de S presentes en ese subconjunto.
Como

(S) es enumerable, podemos dar un orden a estos elementos; supongamos
t
1
, t
2
, . . . , t
i
, . . .; list emosles en ese orden, como se muestra en la gura 9.2.
Figura 9.2 Representaci on binaria de subconjuntos
posici on 0 1 2 3 4 5 6 7 8 9 . . . . . .
subconjunto
t
1
: 0 0 1 0 1 0 0 1 0 0 . . . . . .
t
2
: 0 1 1 0 1 0 0 1 0 0 . . . . . .
t
3
: 1 1 0 0 0 0 1 1 0 0 . . . . . .
t
4
: 1 1 1 1 1 0 0 1 0 0 . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ahora tomemos la diagonal de esta matriz, y complementemos cada uno de los dgitos
(sustituimos los 0 por 1 y viceversa). Consideremos a la sucesi on que se encuentra en
la diagonal como la representaci on de un subconjunto v alido. No corresponde al primer
elemento, pues diere de el en la primera posici on; no corresponde al i- esimo elemento
pues diere de el en la i- esima posici on; y as sucesivamente. El elemento que acabamos
de construir, de hecho, no se encuentra en la lista. Pero supusimos que el conjunto

(S)
es enumerable, por lo que deberamos ser capaces de listar a todos los elementos; de
ac a que el suponer que

(S) es enumerable nos lleva a una contradicci on.


Pasemos a demostrar que los lenguajes recursivamente enumerables son un subconjunto
propio del universo de lenguajes, esto es, que existen lenguajes que no son recursivamente
enumerables.
Teorema 9.4 Para cualquier alfabeto ,= , existen lenguajes que no son recursiva-
mente enumerables.
Demostraci on:
Un lenguaje sobre un alfabeto es un subconjunto de

. El conjunto de todos los len-


guajes sobre

es

). Como

es innito y enumerable,

) no es enumerable.
Pero ya vimos que el conjunto de todas las posibles m aquinas de Turing s es enumera-
ble, por lo que existen m as lenguajes que m aquinas de Turing. De esto, habr a lenguajes
que no pueden ser reconocidos por m aquinas de Turing, y que por lo tanto no son recur-
sivamente enumerables.
9.1 Recursivo vs recursivamente enumerable 259
9.1.3. Lenguajes recursivamente enumerables que no son recursivos
Habiendo demostrado que existe contenci on propia entre el universo de lenguajes y los
recursivamente enumerables, pasemos a demostrar que esta relaci on se da tambi en entre
los recursivamente enumerables y los recursivos. Para ello, demostraremos dos teoremas
relacionados con esto.
Teorema 9.5 Existe un lenguaje recursivamente enumerable tal que su complemento no
es recursivamente enumerable
Demostraci on:
Consideremos al alfabeto = a y a todas las m aquinas de Turing que reconocen
cadenas sobre ese alfabeto. Dado que este conjunto es enumerable, podemos darles un
orden M
1
, M
2
, . . . a sus elementos. Para cada m aquina de Turing M
i
tenemos L(M
i
),
que es un lenguaje recursivamente enumerable; tambi en, para cada lenguaje sobre ,
existe una m aquina de Turing que lo reconoce.
Construimos ahora un nuevo lenguaje L de la siguiente manera: para cada i 0, a
i
L
si y s olo si a
i
L(M
i
). Por supuesto que L est a bien denido pues el predicado a
i
L
tiene valor de cierto o falso. Consideremos ahora el complemento de L sobre el mismo
alfabeto:
L =
_
a
i
[ a
i
/ L(M
i
)
_
Supongamos ahora que L es recursivamente enumerable. Como L est a formado de ca-
denas sobre = a, existe una m aquina de Turing M
k
que acepta a L, de tal manera
que L = L(M
k
).
Consideremos ahora a la cadena a
k
. Si suponemos que esta cadena est a en L, entonces
a
k
L(M
k
); pero L(M
k
) = L, por lo que a
k
L. Pero a
k
no puede estar al mismo
tiempo en L y en su complemento! La contradicci on se dio porque supusimos que L es
recursivamente enumerable.
Faltara demostrar que L s es recursivamente enumerable. Para ello contamos el n umero
de repeticiones de a en w
i
= a
i
. Despu es utilizamos el mecanismo de enumeraci on
para las m aquinas de Turing para encontrar a M
i
, usando las parejas (k, j) para que M
k
acepte a a
i
en exactamente j pasos. Finalmente le damos su descripci on a una m aquina
de Turing universal M
u
que simule a M
i
, junto con la cadena a
i
. Si a
i
L, el c omputo
que realiza M
u
nalmente se detendr a, as que L es recursivamente enumerable.
Para demostrar que hay lenguajes recursivamente enumerables que no son recursivos, nos
apoyaremos en el teorema que acabamos de demostrar:
Teorema 9.6 Si un lenguaje L y su complemento L son ambos recursivamente enumera-
bles, entonces ambos son recursivos. Si L es recursivo, entonces L tambi en es recursivo, y
consecuentemente ambos son recursivamente enumerables.
260 La jerarqua de Chomsky
Demostraci on:
Si ambos son recursivamente enumerables, existen M y

M tales que sirven como pro-
cedimientos para la enumeraci on de L y L respectivamente. M produce w
1
, w
2
, . . . en
L mientras que

M produce w
1
, w
2
, . . . L. Supongamos ahora que nos dan una cadena
w

. Dejamos que M genere w


1
y la comparamos con w. Si coinciden, ya sabemos
que w L. Si no coinciden, hacemos que

M genere w
1
. Si no coinciden, regresamos
a que M genere w
2
, y as sucesivamente. Como tanto L como L son recursivamente
enumerables, entre M y

M pueden generar cualquier w

, por lo que eventualmente


la cadena de entrada va a coincidir con alguna de las cadenas generadas por M o

M. Si
coincide con una cadena generada por M, w L y si coincide con una cadena generada
por

M entonces w L. Esto es un algoritmo que determina la membresa tanto para L
como para L. De donde tanto L como L son recursivos.
En el otro sentido de la demostraci on, supongamos que L es recursivo. Entonces, existe
un algoritmo de membresa para L, que a su vez es un algoritmo de membresa para L.
Entonces L es recursivo. Como todo lenguaje recursivo es recursivamente enumerable,
la demostraci on est a completa.
Teorema 9.7 El conjunto de lenguajes recursivos es un subconjunto propio del conjunto
de lenguajes recursivamente enumerables.
Demostraci on:
Recordemos que tenemos un conjunto L recursivamente enumerable, cuyo complemen-
to, L, no es recursivamente enumerable. Entonces L no es recursivo por el teorema an-
terior. De donde tenemos al menos un lenguaje recursivamente enumerable que no es
recursivo.
9.2. Gram aticas sin restricciones
Hemos dejado pendiente la equivalencia entre gram aticas generales y m aquinas de Tu-
ring. Procederemos en esta secci on a revisar esos resultados.
9.2.1. Lenguajes generales y m aquinas de Turing
Recordemos que una gram atica general o tipo 0 es aquella cuyas producciones son de
la forma , donde y son cadenas arbitrarias de smbolos de la gram atica, con
,= , (N T)
+
y (N T)

. Como se puede ver, estas gram aticas son, en


efecto, contrables. N otese que en este caso no estamos exigiendo que haya alg un smbolo
no terminal del lado izquierdo de la producci on, lo que hace a estas gram aticas las m as
poderosas, en el sentido de que son capaces de generar el conjunto m as grande de lenguajes
9.2 Gram aticas sin restricciones 261
que vamos a poder reconocer por medios mec anicos, lo que expresamos en los siguientes
teoremas.
Teorema 9.8 Cualquier lenguaje generado por una gram atica sin restricciones es recur-
sivamente enumerable.
Demostraci on:
Construimos una MT M no determinista con las siguientes caractersticas:

M cuenta con dos cintas, una en la que se coloca la palabra x a reconocer y otra en
la que se van generando las derivaciones desde S.

Dado que tenemos la gram atica, y el n umero de producciones es nito, podemos


generar las palabras del lenguaje en un cierto orden, parecido al que dimos para
las parejas (i, j). Primero aquellas que se generan en un solo paso; a continuaci on
aquellas que se generan en dos pasos, y as sucesivamente.

Cada vez que generamos una cadena terminal, la comparamos con la que se encuen-
tra en la primera cinta. Si son iguales, M suspende su funcionamiento y acepta. Si
no, sigue adelante.
Dado que M es aceptadora, L(M) es recursivamente enumerable.
Teorema 9.9 Para todo lenguaje recursivamente enumerable L existe una gram atica G
sin restricciones, tal que L = L(G).
Demostraci on:
Que un lenguaje sea recursivamente enumerable nos dice que existe una m aquina de Tu-
ring M=(Q, , , q
0
, 2, F) que lo reconoce. Esto es q
0
w

M
xq
f
y, con x, y

, q
f
F.
Construcci on: Debemos construir una gram atica a partir de M. Esto no es directo, pues
M empieza con la cadena w en su cinta de entrada y termina con cadenas arbitrarias, con
la restricci on de que termine en estado nal.
Para construir la gram atica, deberemos primero generar todas las cadenas posibles de la
forma xq
f
y y despu es deshacer las transiciones de la MT: partiendo de lo que es una
posible conguraci on nal, regresar hacia la cadena inicial. Desafortunadamente la con-
guraci on nal en la que queda M puede ser arbitraria, y tener un n umero arbitrario de
blancos. Veamos c omo hacer que la gram atica genere, al inicio, conguraciones nales
posibles. Los smbolos terminales de la gram atica van a estar denidos de la siguiente
manera:
N = Q ( ) A, S, #, 2 con A, S, #, 2 / (Q )
S va a ser el smbolo inicial. AAla vamos a utilizar para poder generar una conguraci on
nal, mientras que al # lo vamos a utilizar para reconocer la conguraci on inicial q
0
w.
Cuando logremos generar esta cadena, deseamos que a la izquierda no haya nada, por lo
262 La jerarqua de Chomsky
que marcamos el extremo izquierdo de las cadenas con el #, y s olo lo podemos eliminar
si se encuentra frente a q
0
.
T = esto es obvio,
S es el smbolo inicial.
Agregamos producciones de la siguiente manera:
S 2S [ S2 [ #A
Estas producciones permiten introducir en la forma sentencial un n umero arbitrario de
blancos hacia la izquierda o la derecha de la cadena, as como marcar el extremo izquier-
do de lo que va a ser la cadena nal.
Ahora debemos generar todas las posibles cadenas x
1
q
f
x
2
, que representan las posibles
conguraciones nales de M a las que se llega desde el estado inicial. Esto, como ya
mencionamos, lo logramos utilizando el smbolo A:
A aA [ Aa [ q para toda a 2 y q F
Ahora tenemos que construir las producciones que nos van a permitir pasar de
#xq
f
y a #q
0
w.

Para cada transici on de M que involucre a, b de la forma


(q
i
, a) = (q
j
, b, )
agregamos a P las producciones
bq
j
q
i
a

Para cada transici on de la forma


(q
i
, a) = (q
j
, b, )
agregamos a P todas las producciones de la forma
q
j
cb cq
i
a para toda c
En este caso, como la cabeza lectora se va a mover hacia la izquierda, brincando
a cualquier smbolo que estuviese all, tenemos que reproducir esa posibilidad; co-
mo estamos trabajando con todas las posibles cadenas que pudieran ser producidas,
debemos incluir a todos los smbolos de . Durante el reconocimiento, en realidad
no se van a presentar todos los posibles casos, por lo que algunas de estas produc-
ciones van a ser producciones in utiles (cuando nunca se logre llegar al antecedente
de la producci on), o bien producciones muertas, que no produzcan nunca cadenas
terminales.
9.2 Gram aticas sin restricciones 263

Finalmente, para deshacernos de los smbolos q


0
, # y de los blancos (2), agrega-
mos las siguientes producciones:
#q
0
2
con lo que eliminamos a estos smbolos. En el caso de la cadena #q
0
, esta tiene que
aparecer tal cual, por lo que el smbolo del estado deber a aparecer a lo largo de la
derivaci on, e irse moviendo hacia el smbolo #, pues este s olo puede aparecer en el
extremo izquierdo de la forma sentencial (cuando m as con blancos a su izquierda).
Los blancos, en cambio, se pueden eliminar no importando d onde aparezcan. Sin
embargo, es importante notar que unicamente pueden aparecer en los extremos de
la cadena, pues s olo pueden ser generados en el primer paso.
Correctud: Veamos c omo se utilizan estas producciones para derivar una cadena que es
reconocida por M, de tal manera que si
q
0
w

xq
f
y entonces S=

w
Derivando desde S tenemos la siguiente derivaci on:
S =

2. . . 2S2. . . 2 =2. . . 2#A2. . . 2


= 2. . . 2#A2. . . 2
= 2. . . 2#a
1
a
2
. . . a
k
A2. . . 2
= 2. . . 2#a
1
a
2
. . . a
k
Ab
1
b
2
. . . b
n
2. . . 2
(igual a 2. . . 2#xAy2. . . 2)
= 2. . . 2#xq
f
y2. . . 2.
Hasta este punto vamos bien, pues S puede producir cadenas de este tipo. Falta por ver
c omo conseguir la derivaci on
2. . . 2#xq
f
y2. . . 2=

2. . . 2#q
0
w2. . . 2
que corresponde a los movimientos de la m aquina de Turing en orden inverso. Para ver
que esto es posible, observemos dos conguraciones consecutivas de M
a
1
. . . a
n
q
i
b
1
. . . b
m
scriptscriptstyle
a
1
. . . q
j
a
n
b
2
. . . b
m
;
para las cuales la funci on de transici on estaba denida como
(q
i
, b
1
) = (q
j
, c, ).
264 La jerarqua de Chomsky
Pero en este caso, tenemos la producci on
q
j
a
n
c a
n
q
i
b
1
.
De manera similar podemos argumentar para movimientos de la cabeza hacia la derecha
de la cinta, pues una transici on de la forma
a
1
. . . a
n
q
i
b
1
. . . b
m
scriptscriptstyle
a
1
. . . a
n
cq
j
b
2
. . . b
m
s olo puede llevarse a cabo de existir la regla
(q
i
, b
1
) = (q
j
, c, );
pero entonces, por construcci on, contamos con la producci on
cq
j
q
i
b
1
,
de donde podemos tener la siguiente derivaci on:
a
1
. . . a
n
cq
j
b
2
. . . b
m
=a
1
. . . a
n
q
i
b
1
b
2
. . . b
m
.
De estas consideraciones y con un argumento inductivo, se sigue que si
#q
0
w

#xq
f
y
entonces
2. . . 2#xq
f
y2. . . 2=

2. . . 2#q
0
w2. . . 2
Por lo que podemos utilizar en este punto las producciones que eliminan los blancos y la
pareja #q
0
para llegar nalmente a w, de donde tenemos
S=

w.
Nos falta todava demostrar que S genera unicamente palabras aceptadas por M, esto
es que
#xq
f
y=

#q
0
w
implica que
q
0
w

xq
f
y.
Supongamos que
a
1
. . . a
n
cq
j
b
2
. . . b
m
=a
1
. . . a
n
q
i
b
1
b
2
. . . b
m
9.2 Gram aticas sin restricciones 265
es un paso en la derivaci on de w y que el lado derecho representa una posible congura-
ci on de M. Pero entonces, este paso de la derivaci on se hizo utilizando la producci on
cq
j
q
i
b
1
;
de donde M debe tener la regla de transici on
(q
i
, b
1
) = (q
j
, c, )
por lo que la transici on es posible. Como q
0
w es la conguraci on inicial cuando M
procesa a w, podemos mostrar por inducci on que q
0
w

scriptscriptstyle
xq
f
y se
cumple.
Veamos un ejemplo de la construcci on de la gram atica en la siguiente p agina, para que
quede m as claro el procedimiento.
Ejemplo 9.1:
Sea M = (Q, , , q
0
, 2, F) una m aquina de Turing con:
Q = q
0
, q
1

= 0, 1
= 0, 1, 2
F = q
1

y
(q
0
, 0) = (q
0
, 0, ),
(q
0
, 2) = (q
1
, 2, )
Esta m aquina acepta al lenguaje L(00

). Siguiendo el algoritmo de construcci on, la gram ati-


ca queda como sigue:
1. Agregamos las producciones que involucran a S, A y #:
S 2S [ S2 [ #A
A 0A [ A0 [ 1A [ A1 [ q
1
2. Volteamos las transiciones:
De la regla: Sacamos la(s) producci on(es)
(q
0
, 0) = (q
0
, 0, ) 0q
0
q
0
0;
(q
0
, 2) = (q
1
, 2, ) q
1
02 0q
0
2,
q
1
12 1q
0
2,
q
1
22 2q
0
2.
266 La jerarqua de Chomsky
Finalmente, agregamos las producciones que nos permiten eliminar los blancos y a
la pareja #q
0
:
2
#q
0

Veamos una derivaci on de cadenas con esta gram atica:
S =S2 = S22 =#A22 =#0A22 =#0A022
= #0q
1
022 =#00q
0
22=
2
#q
0
0022=
2
#q
0
00 =00
que es una cadena en L(00

). En cambio, veamos la derivaci on


S=
3
S222 =#A222=
2
#0A1222 =#0q
1
1222 =#01q
0
222
que cuando llega a este punto ya no podemos aplicar ninguna de las producciones, mas que
aquellas que eliminan los blancos. Dado que la cadena no es terminal, no es generada por
la gram atica.
9.2.2. Lenguajes dependientes del contexto
y aut omatas linealmente acotados
Recordemos la denici on de un lenguaje dependiente del contexto:
Denici on 9.3 Un lenguaje L es dependiente del contexto si existe una gram atica G de-
pendiente del contexto, tal que L = L(G) o bien L = L(G) .
B asicamente le estamos pidiendo a la gram atica que no tenga producciones contrables,
excepto tal vez por S , pero con S no apareciendo del lado derecho de ninguna pro-
ducci on.
Vimos ya varios ejemplos de lenguajes dependientes del contexto, de los cuales el ejem-
plo tpico es L = a
n
b
n
c
n
[ n 1. Vimos tambi en ya ejemplos de gram aticas de este
tipo, por lo que pasaremos directamente a lo que nos preocupa en este captulo, que es la
equivalencia entre los ALA y las gram aticas dependientes del contexto y las propiedades
de los lenguajes de este tipo.
Teorema 9.10 Para todo lenguaje dependiente del contexto L que no incluya a , existe
un aut omata linealmente acotado M tal que L = L(M).
Demostraci on:
9.2 Gram aticas sin restricciones 267
Como L es dependiente del contexto, existe una gram atica G tambi en dependiente del
contexto que genera L. Las derivaciones de palabras en L(G) pueden ser simuladas
por un aut omata linealmente acotado de la siguiente manera: el aut omata linealmente
acotado tiene dos pistas, una para la cadena de entrada w y otra conteniendo las formas
sentenciales derivadas utilizando G. Un punto crucial en este argumento es que ninguna
forma sentencial en la derivaci on de w puede tener longitud mayor a [w[ (esto es porque
la gram atica, al no contener L a , es no contrable). Otro punto importante es que los
aut omatas linealmente acotados son no-deterministas. Esto nos permite generar en M, de
manera no determinista, derivaciones de palabras en L(G). Cada vez que una derivaci on
tenga tama no mayor a w M se detiene con respecto a esa derivaci on, pues no puede
usar m as cinta que la que ocupa w. De esto, existe la posibilidad de una ejecuci on que
siempre elija las producciones correctas a utilizar en la derivaci on de w y que, adem as,
en ning un momento va a utilizar m as espacio que el tama no de w. Como el n umero de
producciones es nito, as como el n umero de smbolos no terminales, el proceso de
revisar todas las posibles derivaciones de w est a acotado. Por lo que la demostraci on que
se dio para probar que toda gram atica genera un lenguaje recursivamente enumerable,
agregando el hecho de lo acotado de la cinta, demuestra este teorema; i.e., un lenguaje
dependiente del contexto es reconocido por un aut omata linealmente acotado.
Teorema 9.11 Si un lenguaje L es aceptado por alg un aut omata linealmente acotado,
entonces existe una gram atica G dependiente del contexto que genera L.
Demostraci on:
La construcci on de la gram atica es similar a la de los lenguajes sin restricciones, excepto
que una gram atica dependiente del contexto no puede tener producciones contrables.
Las producciones
#q
0
y 2
son producciones contrables, por lo que no pueden ser parte de una gram atica depen-
diente del contexto. Para darle la vuelta a esta restricci on, pensemos en smbolos triples,
donde cada smbolo no terminal de la gram atica es una trada de la forma
(a, q, x) con a , q (Q 2) y x 2, #.
La primera pista contiene smbolos terminales; la segunda pista indica d onde se encuen-
tra la cabeza del aut omata y en cu al estado, poniendo el estado bajo el smbolo adecuado,
y 2 bajo el resto de los smbolos; la tercera pista marca la posici on del #. Para producir
cadenas terminales, agregamos las producciones
(a, 2, 2) a a .
268 La jerarqua de Chomsky
Sea w L(M); entonces tenemos #q
0
w

#xq
f
y. Supongamos que xy=a
1
a
2
. . . a
n
y que w=b
1
b
2
. . . b
m
; podemos organizar todo de tal manera que en lugar de derivar
S=

a
1
a
2
. . . q
f
a
k
. . . a
n
se produzcan las tradas correspondientes:
S=

(a
1
, 2, #) . . . (a
k
, q
f
, 2) . . . (a
n
, 2, 2)
y de ac a derivar
(b
1
, q
0
, #)(b
2
, 2, 2) . . . (b
n
, 2, 2),
que representa a la conguraci on #q
0
w. En este punto nos deshacemos de los smbolos
que utilizamos como marcadores con la siguiente producci on:
(b
1
, q
0
, #) (b
1
, 2, 2),
que es una producci on no contrable. A partir de este punto, eliminamos las tradas utili-
zando las producciones de la forma arriba expuestas.
Veamos una por una c omo transformar las producciones:
Producciones en MT Producciones en ALA
S 2S [ Se eliminan pues como es acotado no
S2 [ se sale del espacio predeterminado
#A (A, 2, #)
A aA [ (A, 2, #) (a, 2, #)(A, 2, 2) [
Aa [ (A, 2, #)(a, 2, 2) [
q (a, q, #)
(A, 2, 2) (a, 2, 2)(A, 2, 2) [
(A, 2, 2)(a, 2, 2) [
(a, q, 2)
Se queda como ejercicio transformar las producciones que se derivan de las transiciones
del aut omata.
Otro resultado muy importante es el relativo a si los lenguajes dependientes del contexto
son conjuntos recursivos o recursivamente enumerables. A pesar de que se parecen mucho
a las m aquinas de Turing, las restricciones impuestas sobre ellas para obtener los aut omatas
linealmente acotados hacen que estos lenguajes sean recursivos.
9.2 Gram aticas sin restricciones 269
Teorema 9.12 Los lenguajes dependientes del contexto son conjuntos recursivos.
Demostraci on:
Si L es un lenguaje libre del contexto, existe un aut omata linealmente acotado que lo
acepta. Observemos las siguientes propiedades de un ALA B al aceptar a una cadena w:

B puede estar en alguno de sus [ Q [ estados.

La cinta sobre la que va a trabajar B es de longitud [w[ + 2.

Cada una de las celdas de la cinta puede contener alg un smbolo en (un n umero
nito) y la cabeza lectora puede estar apuntando a cualquiera de las celdas.
De esto, el n umero total de conguraciones en las que puede estar B es:
M aximo de configuraciones = Max
conf
=[ Q [
|w|+2
([w[ + 2),
que puede ser muy grande, pero es nito.
Si B ejecuta m as de Max
conf
pasos, estar a repitiendo alguna conguraci on por la que
ya pas o, y repetir a lo que hizo la primera vez. Por lo que si B ejecutara m as de Max
conf
pasos durante el reconocimiento, estara entrando a un ciclo y nunca parara.
De esta propiedad, podemos denir una MT no determinista M que decide sobre (B, w).
M(B, w) =
1. Simula todas las trayectorias posibles de B con w, recorriendo esas trayectorias
hasta que se alcancen los Max
conf
pasos o B se detenga, lo que suceda primero.
2. Si alguna trayectoria acepta, B acepta. Si no, rechaza.
Desde cada conguraci on hay un n umero nito de opciones, y cada trayectoria es de
tama no nito, por lo que B va a poder probar todas las trayectorias en un n umero nito
de pasos. Por lo que al cabo de un n umero nito de pasos B suspende su funcionamiento
y responde s o no.

Esta es la denici on de un conjunto recursivo.
Corolario 9.13 El problema de membresa de un lenguaje dependiente del contexto es
decidible.
La pregunta que nos viene a la mente es la de cu ales propiedades de cerradura presentan
los lenguajes dependientes del contexto. Una vez m as, en contra de nuestra intuici on, re-
cuperamos algunas de las propiedades de cerradura que no se presentan en los lenguajes
libres del contexto.
Lema 9.14 Los lenguajes dependientes del contexto son cerrados bajo uni on.
Demostraci on:
270 La jerarqua de Chomsky
Sean L
1
y L
2
lenguajes dependientes del contexto. Entonces existen G
1
= (N
1
, T
1
, P
1
, S
1
)
y G
2
= (N
2
, T
2
, P
2
, S
2
) tales que L
1
= L(G
1
) y L
2
= L(G
2
). Vamos a hacer algo si-
milar a lo que hicimos para demostrar la cerradura de la uni on en lenguajes libres del
contexto. Supongamos que si S
1
P
1
, entonces S no aparece del lado dere-
cho de ninguna producci on. Trabajemos con L
1
; (lo mismo para L
2
). Para construir
G = (N, T, P, S) tal que L(G) = L
1
L
2
, deberemos:

Asegurarnos de que N
1
N
2
= . Si no es as, renombrar smbolos.

Sea S , N
1
N
2
.

Agregamos las producciones S S


1
y S S
2
.
Como no introdujimos ninguna producci on contrable, si las gram aticas originales eran
dependientes del contexto, tambi en G lo es.
Lema 9.15 Los lenguajes dependientes del contexto son cerrados bajo concatenaci on.
9.2 Gram aticas sin restricciones 271
Demostraci on:
Procedemos de manera similar a como lo hicimos para demostrar la concatenaci on de
lenguajes libres del contexto, renombrando los smbolos no terminales de ser necesario
y agregando el smbolo S y la producci on S S
1
S
2
.
Desafortunadamente, en este caso se nos presenta un peque no problema: qu e pasa si
S
1

= A y S
2

= b, y en alguna de las gram aticas tenemos una producci on de


la forma Ab ? Esto es, que en la frontera entre los dos lenguajes se pudiera aplicar
alguna producci on que no corresponde ni a la primera ni a la segunda gram atica. Para
evitar esto, introducimos una forma normal para las gram aticas dependientes del contex-
to, que es la forma norma noterminal (FNN) y que consiste en que en toda producci on
, debe consistir de smbolos no terminales y tambi en, excepto en el caso
de que consista de un unico smbolo terminal. El proceso para transformar cualquier
gram atica DDC es exactamente el mismo que utilizamos para obtener la FNC, por lo que
se deja al lector.
Si partimos de que las gram aticas van a estar en FNN, entonces en la frontera entre las
dos formas sentenciales puede haber unicamente smbolos no-terminales, cuya combina-
ci on no puede ubicarse completamente en ninguna de las dos gram aticas, o bien smbolos
terminales, que no aparecen del lado izquierdo de ninguna producci on. De esta mane-
ra conseguimos generar unica y exclusivamente la concatenaci on de los dos lenguajes
dependientes del contexto.
Lema 9.16 Los lenguajes dependientes del contexto son cerrados bajo complemento.
Demostraci on:
Sea L un LDC. Como ya demostramos, L es recursivo. Sea M la MT reconocedora para
L. Construimos M, que es igual a M pero intercambiamos los estados q
y
y q
n
(o los
estados nales y los no nales). Si M acepta a w, entonces M la rechaza y viceversa. De
esto, M es tambi en una MT reconocedora y por lo tanto M es un conjunto recursivo.
Teorema 9.17 Los lenguajes dependientes del contexto son cerrados bajo estrella
de Kleene.
Demostraci on:
Sea L un lenguaje dependiente del contexto y Guna GDC que lo genera. Lo que tenemos
que hacer es construir una nueva gram atica que se encargue de generar cero o m as copias
de cadenas del lenguajes. Podemos suponer que G est a en FNN. Y las producciones
triviales que podramos agregar seran S S
1
, S S
1
S
1
, S .
Pero ac a se nos va a presentar un problema similar al de la concatenaci on de cadenas,
pues en este caso, como no podemos distinguir entre los smbolos de la palabra corres-
pondiente a la primera concatenaci on y la correspondiente a la segunda, podemos tener
en las fronteras de las concatenaciones la posibilidad de usar el nal de una y el principio
272 La jerarqua de Chomsky
de otra y generar palabras que no est an en la concatenaci on. Para evitar esto, debemos
marcar de manera clara la frontera entre palabras. Adem as de un nuevo smbolo termi-
nal, agregamos a la gram atica un smbolo nuevo T y las producciones S y S T.
Para la generaci on de palabras en G
1
agregamos las producciones T TS
1
y T S
1
.
Desafortunadamente estas producciones no resuelven el problema en la frontera, pues
podramos tener alguna regla AB en G, y por otro lado la posibilidad de tener
las siguientes derivaciones S
1
A y S
1
B en G
1
. En este caso, podramos
aplicar la producci on con AB del lado izquierdo, generando una palabra que no est a en
la concatenaci on.
Tenemos que hacer algo parecido a lo que hicimos en la concatenaci on. Pero si se trata
de la misma gram atica c omo diferenciamos los smbolos no terminales de cada encar-
naci on? La soluci on es muy sencilla. Vamos a construir G
2
, con las producciones de G,
agregamos cuatro nuevos smbolos, S, S
2
, T y T
2
; duplicamos todas las producciones
de G, renombrando los smbolos no terminales (S
1
se renombra con S
2
), de tal manera
que L(G) = L(G
2
). Para la generaci on de la concatenaci on arbitraria, alternamos las
producciones de G con las nuevas de G
2
de la siguiente manera:
S ; S T; T T

S
1
; T S
1
; T

TS
2
; T

S
2
.
De esta forma nunca van a compartir la frontera smbolos no terminales de G, por lo que
no se va a poder utilizar la frontera como lado izquierdo de ninguna producci on.
Teorema 9.18 Los lenguajes dependientes del contexto son cerrados bajo intersecci on.
Demostraci on:
Sean L
1
y L
2
LDC; entonces existen B
1
y B
2
, ambas ALA, que reconocen respectiva-
mente a L
1
y L
2
. Sea L = L
1
L
2
. Construiremos B, un ALA que reconozca a L.
Sea B un ALA con dos pistas. Colocamos a w en la primera pista y la copiamos a la
segunda. En la primera pista simulamos a B
1
hasta que acepte (o rechace) a w. Una vez
que sabemos que w L
1
, simulamos a B
2
en la segunda pista. Si B
2
acepta entonces
w L
1
L
2
= L.
Como B
1
no ocupa m as cinta que la ocupada por w, lo mismo que B
2
, B tambi en es
ALA. De esto, los lenguajes dependientes del contexto son cerrados bajo intersecci on.
Nos debera asaltar la duda de si los lenguajes dependientes del contexto son equiva-
lentes a los conjuntos recursivos. La respuesta a esto es que los lenguajes dependientes del
contexto son un subconjunto propio de los lenguajes recursivos. Esto lo demostramos en el
siguiente teorema.
Teorema 9.19 Existe un lenguaje recursivo que no es dependiente del contexto.
9.2 Gram aticas sin restricciones 273
Demostraci on:
Consideremos el conjunto de todos las gram aticas dependientes del contexto que produ-
cen cadenas formadas con el alfabeto T = a, b. Podemos pensar en cada gram atica
con su conjunto de smbolos no terminales de la forma N = N
0
, N
1
, . . ..
Como toda gram atica est a completamente denida por sus producciones, podemos pen-
sar en una cadena que represente a esa gram atica poniendo todas las producciones en
sucesi on:
x
1
y
1
; x
2
y
2
; . . . x
m
y
m
.
A esta cadena la podemos transformar en una cadena de ceros y unos mediante las si-
guientes reglas (un isomorsmo h):
h(a) =010
h(b) =01
2
0
h() =01
3
0
h(; ) =01
4
0
h(N
i
) =0q
i+5
0
De esto, podemos representar a cada gram atica como un elemento del conjunto regular
(011

0)

. A cada gram atica dependiente del contexto le corresponde una unica palabra
en este lenguaje y viceversa.
Veamos ahora a todos los n umeros binarios (en (0 + 1)(0 + 1)

). Estas cadenas tie-


nen un orden, el que le dan los naturales a los que representan, y las identicamos con
w
1
, w
2
, . . . . No todas las cadenas w
i
representan a una gram atica dependiente del con-
texto, pero si lo hacen llamaremos a esa gram atica G
i
.
Construyamos ahora un lenguaje L = w
i
(0+1)(0+1)

[ w
i
= G
i
w
i
, L(G
i
). Es-
te lenguaje est a bien denido pues se puede vericar de manera sencilla si w
i
representa
o no a una gram atica dependiente del contexto. Si no es as, w
i
, L. Si w
i
representa a
una gram atica dependiente del contexto, como G
i
es recursivo, podemos vericar si w
i
puede o no ser generada por G
i
. A ambas respuestas nos van a responder armativa o
negativamente, por lo que L es recursivo.
Pero L no es dependiente del contexto; si lo fuera, existira G
k
tal que L = L(G
k
) y
w
k
= G
k
. Podemos entonces pasar a preguntar si w
k
est a en L(G
k
). Si w
k
L, por
construcci on, w
k
, L(G
k
). Pero L = L(G
k
), lo que nos lleva a una contradicci on
(para estar en L tiene que no estar en L!). Por lo tanto G
k
no puede existir y L no es
dependiente del contexto pero s recursivo.
274 La jerarqua de Chomsky
Por todo lo anterior, la jerarqua de lenguajes queda como se muestra en la gura 9.3.
Figura 9.3 Jerarqua de lenguajes
Regulares
Libres del contexto
deterministas
Libres del contexto
no deterministas
Dependientes del contexto
Recursivos
Recursivamente numerables
L

Con esto damos por terminada la demostraci on de lo que aseveramos al principio de


estas notas, que la jerarqua de lenguajes dada por Chomsky est a en relaci on uno a uno con
las m aquinas aceptadoras (generadoras).
Introducci on a
decidibilidad
10
En este captulo revisamos el concepto de decidibilidad mostrando algunos
ejemplos cl asicos de problemas no decidibles, como lo son el problema de la
detenci on, la detenci on frente a una cinta en blanco y la transferencia a un
estado determinado. Terminaremos con el teorema de Rice que nos dice que
cualquier propiedad no trivial de las m aquinas de Turing es indecidible.
10.1. Signicado del concepto de indecidibilidad
A lo largo de este material hemos visto (y demostrado) que existen funciones para
las cu ales no hay algoritmo que las calcule. Pero m as a un, ni siquiera podemos dar un
procedimiento que nos garantice entregar un resultado. En t erminos de lenguajes, existen
lenguajes que no pueden ser aceptados por una m aquina de Turing, ya que la cardinalidad
del n umero de lenguajes que podemos denir sobre un alfabeto nito es no enumerable,
mientras que las posibles m aquinas de Turing s lo son.
Cuando pensamos en problemas que no tienen soluci on, intuitivamente asignamos una
dicultad enorme al simple enunciado de estos problemas. Sin embargo, lo que veremos a
continuaci on es que hay problemas cuyos enunciados son muy sencillos de entender, que
la intuici on nos dice que debe haber soluci on, y que si embargo se puede demostrar que
no son decidibles. Veremos entonces, desde el punto de vista de lenguajes formales, que
276 Introducci on a decidibilidad
existen lenguajes sobre los que no se pueden decidir preguntas importantes y sencillas,
como por ejemplo:
(a) Dado L sobre y w

, pertenece w a L?
(b) Dado un lenguaje libre del contexto, existe un algoritmo para determinar si este
lenguaje es o no ambiguo?
(c) Dada una MT M y una cadena w, M aplicada a w va a parar?
(d) Existe una MT aceptadora que reconozca a un cierto lenguaje?
(e) Dado un programa con una iteraci on para realizar un c omputo, el programa va a
lograr salir de la iteraci on no va a caer en un ciclo innito?
Un problema famoso entre los problemas indecidibles es el conocido como el 3x +1.
Tenemos la codicaci on en el listado 10.1
C odigo 10.1 Problema de 3x + 1
bool ean s us pende ? ( i n t x )
whi l e ( x ,= 1)
s i e s pa r ( x ) e nt onc e s x
x
2
s i no x 3x + 1

Claramente, si el argumento a esta funci on es una potencia de 2, la iteraci on termina


cuando x vale 1. Desafortunadamente, no se ha podido demostrar que se sale del ciclo para
todos los enteros, aunque hasta ahora as ha sido. Por lo pronto, y mientras no se demuestre
lo contrario, este problema es indecidible.
Otro problema sencillo de plantear que es indecidible es el de si un lenguaje depen-
diente del contexto es o no vaco. La demostraci on se hace por reducci on al problema de la
detenci on, pero queda fuera del alcance de este texto.
En lo que sigue vamos a caracterizar el problema relativo a la indecidibilidad, relacio-
nado con lenguajes y con m aquinas de Turing.
Para poder argumentar de manera m as concisa usaremos la siguiente notaci on:
(M, w) La m aquina de Turing M aplicada a la cadena w.
w
M
La codicaci on de una m aquina de Turing en una cadena binaria
(recordar a M
u
).
Trabajaremos unicamente con un subconjunto de problemas, aquellos a los que se puede
responder simplemente s o no utilizando para ello una m aquina de Turing. Las preguntas
10.2 El problema de la detenci on 277
que listamos en el p arrafo anterior son de este estilo. El calcular una funci on, por ejemplo,
no lo es. Cuando para un problema s/no existe una MT que termina diciendo s o no,
decimos que el problema es decidible, y es indecidible si tal MT no existe, o si hay cadenas
de entrada para la MT con las cu ales no se puede garantizar que la MT termine
1
. Las
preguntas que hagamos las tenemos que hacer sobre toda una clase de problemas, no sobre
casos particulares.
10.2. El problema de la detenci on
Ya demostramos que existen lenguajes que no son recursivamente enumerables. Ahora
haremos esta demostraci on con el famossimo problema de la detenci on de una m aquina
de Turing.
Es un hecho que hay m aquinas de Turing que frente a ciertas cadenas de entrada nunca
van a detenerse. Sera util saber, dada una MT arbitraria y w

, si la MT se detendr a o
no cuando procese a w. Si tuvi esemos una MT, a la que llamaremos H, que predijera el
comportamiento de otra MT, sera equivalente a decir que todos los lenguajes recursiva-
mente enumerables son recursivos: en lugar de alimentarle las cadenas a la M original, se
las alimentamos a H, junto con la descripci on de M; Si H dice que M va a detenerse,
echamos a andar a M con la cadena w para ver si acepta o no. Si H dice que M no va a
detenerse al procesar w, sabemos que M rechaza a w. Dada esta situaci on, para una MT
arbitraria y una cadena w podramos decir si M la acepta o no, sin caer en ciclo innito.
Demostraremos que Hno puede existir. A este problema se le conoce en la literatura como
el problema de la detenci on (Halting Problem).
Teorema 10.1 El problema de la detenci on es indecidible, esto es, no existe un algorit-
mo (una m aquina de Turing reconocedora) que pueda decidir si una MT arbitraria va a
detenerse o no frente a una cadena arbitraria.
Demostraci on:
Supongamos que s existe esa m aquina de Turing H, que recibe como entrada m aquinas
de Turing codicadas como para la m aquina universal, y cadenas de entrada codicadas
de la misma manera. Las conguraciones inicial y nal est an denidas acorde de la
siguiente manera:
q
0
w
M
w

H
x
1
q
y
x
2
si M se detendra frente a w;
q
0
w
M
w

H
y
1
q
n
y
2
si M no se detendra frente a w.
1
Claramente, como ya habamos mencionado, los lenguajes recursivos son decidible, mientras que los
recursivamente enumerables son indecidibles (o semidecidibles).
278 Introducci on a decidibilidad
H termina en el estado que dice s (q
y
) si M parara frente a la cadena w; H termina en
el estado que dice no (q
n
) si M entrara en un ciclo innito frente a la cadena w. Lo que
queremos es una MT H que se comporte como se muestra en la gura 10.1.
Figura 10.1 Ejecuci on de H frente a w
M
w
H
q
0
q
y
q
n
w
M
w
Vamos a demostrar que Hno puede existir
2
. Supongamos que s existe y que funciona de
la siguiente manera: si una MT arbitraria M se detendra frente a una cadena w, entonces,
al aliment arsele a H la cadena w
M
que corresponde a la descripci on de M junto con
la cadena w, H termina en el estado q
y
reportando que M s se detendra. Si M no se
detendra al aplicarla a w entonces Hse detiene en el estado q
n
reportando que M caera
en ciclo innito al tratar de aceptar a w.
Podemos denir una nueva MT H

, que usa a H como subrutina, como se muestra en la


gura 10.2.
Figura 10.2 Ejecuci on de H

frente a w
M
w
H H
/
q
0
q
y
q
n
q
a
q
b
w
M
w
Con la gr aca en la gura 10.2 lo que queremos esquematizar es que la transici on de q
y
a q
a
y entre los estados q
a
y q
b
se hace incondicionalmente, no importando qu e smbolo
est e viendo H

y sin modicar la cinta ni la posici on de la cabeza. Si comparamos H y


2
En la discusi on que sigue supondremos que la cadena w que se le alimenta a cada una de las MT que
describiremos, es una codicaci on que corresponde a alguna MT.
10.2 El problema de la detenci on 279
H

, cuando H llegue a q
y
y se detenga, lo que hace en este caso H

es transferirse a q
a
y
circular indenidamente entre q
a
y q
b
, no terminando nunca su ejecuci on. Formalmente,
la ejecuci on de H

aplicada a w
M
w, si M se detiene frente a w, se describe de la siguiente
manera.
q
0
w
M
w

x
1
q
y
x
2
1
H

q
a

1
H

q
b

1
H

q
a

.
Si H termina en el estado q
n
al procesar w
M
w H est a diciendo que M no se detiene al
tratar de aceptar a w H

suspende su funcionamiento en el estado q


n
. La ejecuci on de
H

queda especicada de la siguiente manera:


q
0
w
M
w

y
1
q
n
y
2
En resumen, H

entra en ciclo innito si M se detendra al procesar w, pero s se detiene


si M no parara al procesar w.
Proponemos ahora una tercera MT

H, que usa a H

como subrutina (quien usa a H a


su vez como subrutina);

H empieza en su propio estado inicial; lo primero que hace es
hacer una copia de su cinta de entrada
3
, despu es se coloca en el extremo izquierdo de la
entrada y entonces le cede el control a H

en el estado inicial de H

ver gura 10.3.


H

espera a ver que le responde H respecto a la detenci on de M, representada por w, al


procesar a la misma w. Si Hle contesta que M va a parar con w, H

se sigue ejecutando
eternamente. Si en cambio H le reporta a H

que M no parara frente a w, H

se detiene
reportando el no. Formalmente, la ejecuci on de

H es la siguiente:
q
0
w

b
H
q
0
ww

b
H
y
1
q
n
y
2
si M aplicada a w no parara y
q
0
w

b
H
q
0
ww

b
H
x
1
q
y
x
2
1
b
H

1
q
a

1
1
b
H

2
q
b

b
H
;
si M aplicada a w parara.
Figura 10.3 Ejecuci on de

H frente a w
H H
/
q
0
q
y
q
n
q
a
q
b
ww

H
w
3
De esta manera podemos decir que que

H trabaja sobre una unica cadena w.
280 Introducci on a decidibilidad
Como

Hes una MT, tiene una representaci on nita en (0+1)

, digamos w, que, adem as


de ser la descripci on de

H, puede ser usada como cadena de entrada. Podramos entonces
legtimamente preguntar qu e pasara si a

H se le presenta w = w
b
H
.
Figura 10.4 Ejecuci on de

H frente a s misma
H H
/
q
0
q
y
q
n
q
a
q
b
w w

H
w
Le alimentamos w a

H, que produce la cadena w w y se la pasa a H

para que la procese.


H

se la pasa primero a H. Si H le responde a H

que

H parara con w, H

se transere
a un estado en el que la ejecuci on no termina. Si Hle responde a H

que

Hno parara al
procesar a w, entonces

H se detiene cuando H

suspende su funcionamiento reportando


que

H no parara frente a w. De acuerdo a esto, tenemos
q
0
w

b
H
q
0
w w

b
H
.
Si

H aplicado a w suspendera su funcionamiento, entonces

H no se detiene nunca y
q
0
w

b
H
q
0
w w

b
H
x
1
q
n
x
2
si

H no parara frente a w, entonces

H se detiene. En resumen, si

H parara frente a la
cadena w, entonces

Hno para frente a la cadena w y viceversa. Esto es una contradicci on
que surge de haber supuesto que H exista.
Hno puede existir y este problema es indecidible.
Por lo anterior, decimos que es indecidible si una MT arbitraria va a parar o no frente a
una cadena dada. Por supuesto que este no es el caso de una m aquina especca por lo que
no hay que confundir el problema general con una especicaci on particular.
10.3 Reducci on 281
10.3. Reducci on
Reducimos un problema P en uno o m as problemas P
1
, . . . P
k
, cuando describimos la
soluci on de P en t erminos de las soluciones a P
1
, . . . , P
k
. Lo natural es elegir a P
1
, . . . , P
k
que sean m as sencillos que P, para que la reducci on valga la pena, pero en ocasiones nos
va a convenir reducir en alg un problema m as complejo simplemente porque ya tenemos la
soluci on a este. En la vida real, y sobre todo los comput ologos, hacen esto todo el tiempo,
como en el chascarrillo siguiente:
Chascarrillo: Un empresario desea contratar a un programador, pero
las entrevistas no le han indicado a qui en elegir. Por lo tanto decide poner
un problema a un ingeniero y a un comput ologo. Los invita a una ocina
en la que hay una mesa y un librero; pone un libro en la mesa y les pide a
ambos candidatos que coloquen el libro en el librero. Ambos candidatos
toman el libro y lo colocan en el librero.
A continuaci on coloca el libro en el piso y les pide que lo coloquen en
el librero. El ingeniero procede a colocar el libro en el librero, pero el
comput ologo lo coloca en la mesa. Al pregunt arsele al comput ologo por
qu e no coloc o el libro en el librero contest o que como ya tena una sub-
rutina que mova el libro de la mesa al librero, con dejarlo en la mesa e
invocar a esa subrutina, el trabajo quedaba realizado.
El empresario contrat o al comput ologo por su alta conciencia hacia la
reutilizaci on.
El comput ologo redujo el problema de mover el libro del piso al librero en dos: mover
el libro del piso a la mesa y utilizar el movimiento del libro de la mesa al librero como
problema ya resuelto.
A continuaci on revisaremos algunas tareas donde el concepto de reducci on entra en acci on.
Ejemplo 10.1: Para preparar la comida el problema se puede reducir a preparar el plato
de principio, preparar la sopa, preparar el plato fuerte y preparar el postre. El problema se
redujo a cuatro subproblemas m as sencillos.
Ejemplo 10.2: Supongamos que queremos demostrar que x(R(x)) y contamos con el
teorema que dice (P R) (P R) = R. En este caso podemos proceder a demostrar
que x(P(x) R(x)) se satisface y que x(P(x) R(x)) tambi en se satisface, en cuyo
caso queda demostrado que x(R(x)) se satisface.
Ejemplo 10.3: El problema de multiplicar dos enteros n y m representados en unario en
una m aquina de Turing se redujo al problema de sumar m veces n.
282 Introducci on a decidibilidad
Ahora damos un ejemplo de matem aticas que ilustra este camino.
Ejemplo 10.4: Dado un angulo arbitrario, queremos demostrar que no hay algoritmo que,
utilizando unicamente escuadra y comp as, pueda dividir a un angulo en 6 partes iguales.
Reducimos el problema de dividir un angulo en tres partes iguales usando unicamente
escuadra y comp as a este problema de la siguiente manera:
C odigo 10.2 Trisecci on de un angulo usando s olo escuadra y comp as
t r i s e c c i o n ( a : angul o )
Di vi de a en s e i s p a r t e s
i g u a l e s .
I gnor a cada d i v i s i o n i mpar
en e l angul o .

Si el problema de dividir a un angulo en seis partes iguales tuviera soluci on, entonces
habra tambi en una soluci on para el problema de la trisecci on de un angulo. Como sabemos
que esta ultima soluci on no existe tenemos que concluir que tampoco existe la divisi on de
un angulo en seis partes iguales usando regla y comp as.
10.4. Otros problemas indecidibles
Es sumamente importante tener clara la indecidibilidad del problema de la detenci on
para demostrar que otros problemas relacionados con las m aquinas de Turing tambi en son
indecidibles. La estrategia que se sigue es la conocida como reducci on de Turing, que es
una demostraci on por contradicci on. Funciona como se muestra en la gura 10.5.
Supongamos que tenemos un problema P que hemos demostrado que es indecidible y
deseamos demostrar que un problema P

tambi en es indecidible. Suponemos que P

tiene
soluci on (que existe una MT M
P
que lo decide) y planteamos una MT M
P
para resolver
P

de tal forma que sea usado como subrutina en M


P
. Esto es, reducimos el problema P a
usar la supuesta soluci on a P

para poderlo resolver.


Requerimos, adem as de M
P
que supuestamente decide P

, una MT (un algoritmo) que


transforme la entrada a M
P
en una entrada a M
P
. Una vez que M
P
decide (o entrega su
resultado), requerimos de otro algoritmo que convierta la salida de M
P
en la salida que
pedimos usualmente de M
P
.
10.4 Otros problemas indecidibles 283
Figura 10.5 Construcci on de pruebas por reducci on de Turing
Convertidor
de la
entrada
MT hipot etica
que decide
P
/
Convertidor
de la
salida
x
f(x)
s
no
s
no
MT que decide P
En el proceso se justica (demuestra) que tanto la MT que convierte la entrada como
la MT que traduce la salida existen y hacen lo que queremos que hagan. Por lo tanto, si
tuvi esemos a M
P
, tendramos una MT para decidir P. Como sabemos que esta ultima MT
no existe, tenemos que concluir que M
P
tampoco existe.
Denici on 10.1 (REDUCIDIBILIDAD DE TURING) Sean L
1

1
, L
2

2
dos proble-
mas. Decimos que el problema L
1
es Turing-reducible al problema L
2
si y s olo si existe
una funci on computable F :

2
tal que w L
1
f(w) L
2
. Esta relaci on se
escribe L
1

M
L
2
.
Figura 10.6 Reducibilidad de Turing
L
1
L
2

2
f
f
f
f
10.4.1. El problema de la cinta en blanco
En este problema se pretende predecir el comportamiento de una MT M cualquiera
frente a una cinta en blanco (frente a ). Deseamos saber si M va a suspender su funciona-
miento o no frente a una cinta en blanco.
Sabemos que el problema es, al menos, semidecidible. Construyamos una MT H
2
que
semidecida sobre este problema, de la siguiente manera:
284 Introducci on a decidibilidad
C odigo 10.3 Operaci on de M
2
Sea H
2
l a m aqui na de Tur i ng que va a d e c i d i r
s i c u a l q u i e r o t r a m aqui na de Tur i ng M
s e d e t i e n e f r e n t e a una c i n t a en bl a nc o
H
2
(M)=
1. Ej e c ut a M s obr e una c i n t a en bl anc o
2. Repor t a s i M a c e p t a o no a
H
2
reporta si M acepta o no a si es que M se detiene frente a una cinta en blanco,
pues s olo si M suspende su funcionamiento, H
2
va a ejecutar el paso 2. Por lo que H
2
es
una MT semidecidible.
Para ver que este problema no es decidible, debemos hacer una reducci on de Turing
del problema de la detenci on a este problema, suponiendo que una MT H
2
que decide el
problema de la cinta en blanco existe. Veamos c omo se comportara H frente a una MT
M y una cadena w (la cadena w
M
w). Construimos H con tres bloques: el primero, que se
muestra en la gura 10.7, convierte a la cadena w
M
w en la cadena w
Mw
. La primera cadena
es la que le alimentamos a H para que nos diga si M va a detenerse o no frente a w.
Figura 10.7 Construcci on de M
w
w
M
w
w
Mw
2
T
M
w
El segundo bloque es la MT hipot etica H
2
, a la que le alimentamos la cadena w
Mw
,
seguida de una cinta en blanco, para que nos diga si M
w
se detiene o no frente a una cinta
en blanco. El tercer bloque es la MT que interpreta la salida de H
2
, que en este caso no
hace nada m as que pasar la respuesta tal cual para que H pueda contestar si M se va a
detener o no frente a w. Esta construcci on se presenta en la gura 10.8.
Figura 10.8 Reducci on de Ha H
2
T
M
w
H
2
H
w
M
w
w
Mw
2
s s
no no
10.4 Otros problemas indecidibles 285
Construir la funci on que transforma a la entrada w
M
w la MT M junto con la cadena
w en la cadena w
Mw
una MT construida para procesar precisa y exactamente a w es
un proceso algortmico; simplemente es una MT que lo primero que hace es escribir w en
su cinta y despu es le cede el control a M.
Estamos suponiendo que H
2
existe, por lo que le podemos alimentar la codicaci on de
cualquier MT en particular M
w
. Ante esta entrada, H
2
nos responde si M
w
va a parar
frente a una cinta en blanco o no. Pero si M
w
se detiene frente a una cinta en blanco, quiere
decir que M se detendra frente a w. Por otra parte, si M
w
no se detiene frente a una cinta
en blanco, M tampoco lo hara frente a w. De esto, la respuesta de H
2
frente a w
Mw
es la
misma que dara H frente a w
M
w. Sabemos que H no puede existir; pero si H
2
existiera,
tendramos un algoritmo para el problema de la detenci on! De lo anterior, H
2
tampoco
puede existir y el problema de la cinta en blanco es indecidible.
10.4.2. El problema de alcanzar un estado
Este problema consiste de lo siguiente: dada una MT M = (Q, , , , q
0
, 2, F) y
cualquier q Q, decidir si M aplicada a w alcanza este estado en alg un momento.
Podemos construir M
q
a partir de cualquier otra MT M de la siguiente manera: pode-
mos pensar que una MT M cualquiera tiene un unico estado que acepta y un unico estado
que rechaza esto no signica que la MT siempre se detenga frente a una cadena arbitraria.
UN estado que hace que la MT se detenga debe tener transiciones sin denir, pues esto es
lo unico que obliga a una MT a detenerse. Tomamos todas las transiciones no denidas de
estos estados y las cambiamos por transiciones a un estado q , Q. El problema de saber si
M se va a detener frente a una cadena w es equivalente a saber si M
q
va a llegar al estado
q frente a una cadena w. La construcci on de M
q
se puede ver en la gura 10.9.
Figura 10.9 Construcci on de M
q
M
q
0
p
y
p
n
q
M
q
w w
Denimos H de la siguiente manera. H consiste de dos bloques; el primero es el que
construye M
q
a partir de M. El segundo bloque es la MT hipot etica H
q
que nos va a decir
si M, al procesar a w, llegara o no al estado q. El esquema se puede ver en la gura 10.10.
286 Introducci on a decidibilidad
Figura 10.10 Reducci on de Ha H
q
T
M
q
H
q
H
w
M
w
w
Mq
w
s llega s para
no llega no para
Comprobemos que la implementaci on de H funciona. Ya vimos que contamos con un
algoritmo simple que convierte a una MT M arbitraria en M
q
, por lo que podemos tener
un traductor T
Mq
que construye la cadena M
Mq
w a partir de w
M
w. Estamos suponiendo,
asimismo, que H
q
existe. De esto, si H
q
existiese entonces H existira tambi en. Como
sabemos que H no puede existir, tampoco existe H
q
.
10.4.3. Una funci on no computable
Un problema de decisi on termina siendo una funci on cuyo rango es s, no. Pode-
mos pensar en funciones m as generales y decidir si son computables o no. Mostramos a
continuaci on una funci on que no es computable.
Sea = 0, 1, 2 el alfabeto de una MT y sea f(n) una funci on que calcula el m aximo
n umero de pasos que va a ejecutar cualquiera de las MT que se detienen frente a una cinta
en blanco y que tienen exactamente n estados.
f(n) est a denida para toda n, pues el n umero de MT distintas con n estados es nito:
Q y son conjuntos nitos, de donde tiene dominio y rango nitos, donde el dominio
consiste de los elementos del producto cartesiano Q y el rango de elementos del pro-
ducto cartesiano Q , . Por lo tanto hay un n umero nito de deniciones para
y de esto un n umero nito de MT diferentes con n estados.
De entre las MT con n estados hay algunas que siempre van a parar. Por ejemplo, la
MT que no tiene denida ninguna transici on para su estado inicial o aquella para la que
todos los procesos lleven a un estado sin transiciones denidas. Hay MT con n estados que
nunca suspenden su funcionamiento, pero estas no entran en la denici on de f. Cada una
de las MT que s se detiene, lo hace en un cierto n umero de pasos. Como es un n umero
nito, tomamos el mayor de estos n umeros y ese es el valor para f(n).
Ninguna MT con n estados que se detenga frente a una cinta en blanco puede ejecutar
m as de f(n) pasos, pues f(n) es el m aximo entre las MT que s se detienen frente a una
cinta en blanco.
Hagamos la reducci on del problema de la cinta en blanco. Tomemos cualquier MT M y
un entero positivo m. Construimos

M a partir de M, con la caracterstica de que

M siempre
10.4 Otros problemas indecidibles 287
termina con una de dos respuestas: M aplicada a una cinta en blanco no va a ejecutar m as
de m pasos; o bien, M aplicada a una cinta en blanco realiza m as de m pasos. Todo lo que
tenemos que hacer para ello es programar a

M para que se comporte como M pero que
cuente sus pasos y suspenda su funcionamiento en cuanto d e el paso m+ 1.
Supongamos ahora que a f la puede calcular una MT F. Construimos una nueva m aqui-
na donde conectamos a F y a

M, como se muestra en la gura 10.11. Primero le pedimos a
F que calcule f([Q[), donde Qes el conjunto de estados de M. Le alimentamos el resultado
(m) y la descripci on de M a una MT que construye a

M. Despu es le damos la descripci on
de

M a una MT universal M
u
, que nos va a decir si M aplicada a una cinta en blanco va a
parar en a lo m as mpasos. Si encontramos que M va a realizar m as de mpasos frente a una
cinta en blanco, querra decir que M no es de las m aquinas que siempre paran frente a una
cinta en blanco, ya que m es el m aximo n umero de pasos de las m aquinas que se detienen
frente a una cinta en blanco. Por lo tanto, si contamos con la funci on f la podemos usar
para resolver el problema de la cinta en blanco.
Figura 10.11 Reducci on de f al problema de la cinta en blanco
T

M
F
M
u
m = f(|Q|)
Mse detiene
en m pasos
M no se de-
tiene en m
pasos
w
M
wc
M
Para
No para
H
2
De la serie de bloques que tenemos que conectar sabemos que M
u
existe y que puede
procesar a cualquier MT. Tambi en sabemos que la construcci on de

M dados M y un entero
m, es sencillo. Pero sabemos que H
2
no puede existir! El unico bloque hipot etico con el
que contamos es F, la MT que calcula f(n). Por lo tanto F no puede existir y f(n) es no
computable.
10.4.4. Es L(M) =

?
Sea H

una MT que decide si una MT M arbitraria acepta a cualquier cadena w

.
Vamos a usar en este problema una reducci on de H. Veamos la serie de procesos que
conectamos. Primero, al recibir a la cadena w
M
w, construimos w
Mw
. Esta MT es f acil de
288 Introducci on a decidibilidad
construir: M
w
, al iniciar su funcionamiento, borra lo que tenga en su cinta y escribe w en
ella. Una vez hecho esto, le cede el control a M para que procese a w.
Figura 10.12 Construcci on de M
w
T
M
w
w
M
w w
Mw
2
Para saber si M acepta a w, w

, construimos la siguiente serie de MT: una primera


que transforma a la cadena w
M
w en la cadena w
Mw
2; le seguira otra MT que recibe w
Mw
y una cadena de entrada arbitraria x, borra a x y deja que M trabaje sobre w (en M
w
). A
continuaci on se encuentra H

que va a decidir si M
w
acepta a cualquier cadena en

. Si
M acepta a w, M se detiene y H

reporta que acepta a toda

, ya que tanto w como x


son arbitrarias. De otra manera, M cae en ciclo y H

reporta que M no acepta a todo

.
Pero si H

puede decir s o no, H podra decir si M va a caer en ciclo frente a w o no, lo


que ya demostramos que es indecidible. Por lo tanto, H

no puede existir y L(M) =

es indecidible. Este proceso se muestra en la gura 10.13.


Figura 10.13 Reducci on de H a H

T
M
w
H

(w
M
w)
T
w
M
w
M
w w
Mw
x
x
s s
no no
w
Mw
H
10.4.5. Problema de membresa (w L(M)?)
Es muy sencillo demostrar que el problema de membresa
_
si w L(M)
_
es tambi en
indecidible, con una reducci on del problema de la detenci on. Supongamos que contamos
con H

que decide si w L(M). Construyamos H de la siguiente forma:


10.4 Otros problemas indecidibles 289
i. Le alimentamos a H

la cadena w
M
w para que nos diga si M acepta a w o no.
ii. Si H

nos dice que s, H puede contestar que M se va a detener frente a w.


iii. Si H

nos dice que no, entonces Hpuede decir que M no se va a detener frente a w.
Esta construcci on, la primera que se nos ocurre, no funciona, porque aun cuando M
rechace a w pudiera ser que M se detuviese. En este caso, la respuesta no de H

no
podra ser traducida directamente a H, puesto que puede suceder que para w , L(M), M
se detuviese rechazando la cadena. Para evitar esto construimos

M como se muestra en la
gura 10.14. Es claro que w L(M) M suspende su funcionamiento. Tambi en es
claro que w L(M) w L(

M), por lo que el algoritmo de membresa se le podra


aplicar tanto a M como a

M.
Figura 10.14 Construcci on de

M
w
q
0
q
y
q
n
n

w
M

M
De lo anterior, podemos hablar del problema de la membresa aplicado a

M en lugar
de aplicarlo a M. Tenemos entonces el proceso que se muestra en la gura 10.15. T
M
construye

M a partir de M y T
c
M
convierte a la salida de

M en la salida de M.
Figura 10.15 Reducci on de H a H

w
M
w w
b M
w
w L(

M) w L(M)
s se detiene
w , L(

M) w , L(M)
no se detiene
H

H
T
M
T

M
La respuesta que da H

se puede trasladar a la respuesta que dara H. Si w L(M),


M se detiene frente a w; y si w , L(M) entonces M no se detendr a frente a w. Por ello, si
cont aramos con H

, que nos dijera si w L(M), la usaramos para determinar si M se va


a detener frente a w o no. Pero H no puede existir, de donde tampoco H

.
290 Introducci on a decidibilidad
10.4.6. Problema de vacuidad (L(M) = ?)
Para este problema haremos una reducci on del problema de membresa al problema de
la vacuidad, como esquematizamos en la gura 10.16. Supongamos que tenemos una MT
M de la que queremos saber si L(M) = . Supongamos que tenemos una MT H

que lo
decide. Esperaramos que frente a cualquier w, M no la aceptara. Vamos a reducir a H

de la siguiente manera: le alimentamos a H

la cadena w
M
w. Lo primero que hacemos es
construir w
Mw
, que es una MT que unicamente procesa a w. Entonces, L(M
w
) ,=
w L(M).
Una vez construida w
Mw
, se la damos a H

para que nos diga si L(M


w
) = . Si nos
dice que s, quiere decir que M rechaza w, mientras que si nos dice que no, implica que M
s acepta a w. Esto es, de hecho, una respuesta a la pregunta de si M acepta o rechaza a w,
problema que ya demostramos que es indecidible.
Figura 10.16 Reducci on de H

a H

T
M
w
H

w
M
w w
Mw
L(M
w
) = acepta
L(M
w
) =
rechaza
H

10.5. De la indecidibilidad de los problemas sobre las MT


De los ejemplos anteriores surge la pregunta de cu al es el tipo de problemas relativos a
MT que s son decidibles. Discutiremos eso en esta secci on.
Todas las preguntas que se hacen respecto a c omo est a construida fsicamente una MT
M son decidibles. Por ejemplo, una MT que me diga el n umero de estados de cualquier
otra MT se resuelve de la siguiente manera. Codicar a M como w
M
y despu es proceder a
contar los estados.
Tambi en es decidible si una MT va a parar en un tiempo jo t. Es muy sencillo el algo-
ritmo de decisi on. Modicamos a la MT a que cuente los pasos que va dando y su funci on
de transici on para que desde los estados que aceptan se transera a un nuevo estado que
va a aceptar. Si para antes de que el contador llegue a t, realiza esta transferencia entonces
acepta. Modicamos tambi en las transiciones para que en cuanto el contador llegue a t +1
se transera a un estado que rechace. De esto, este problema es decidible.
10.5 De la indecidibilidad de los problemas sobre las MT 291
Estas dos preguntas no se reeren al comportamiento de una MT, sino a su estructura.
En el segundo problema estamos haciendo una pregunta que versa sobre alg un detalle de la
MT. Ninguno de los dos problemas se reere al lenguaje aceptado por la MT. Por ejemplo,
para un lenguaje dado puede haber una MT M con k estados y otra MT M

con m ,= k
estados que lo acepten. Por lo tanto, si pregunt asemos el n umero de estados de las MT
que aceptan a determinado lenguaje, en otras palabras si asociamos la pregunta al lenguaje
aceptado por la MT, estos problemas no son decidibles. En cambio, los problemas sobre MT
que no involucran al lenguaje aceptado por ellas, como los problemas que mencionamos en
el p arrafo anterior, son decidibles. Debemos tener cuidado con confundir un problema que
creemos es sobre detalles del comportamiento cuando se pueden transformar en preguntas
sobre la salida que produce la MT. Estos ultimos problemas, como vamos a demostrar a
continuaci on con el teorema de Rice, son todos indecidibles. Ya vimos algunos de ellos.
10.5.1. El teorema de Rice
Antes de entrar al enunciado y la demostraci on del Teorema de Rice vamos a dar algu-
nas deniciones.
Denici on 10.2 (TURING-ACEPTABLE) Un lenguaje es Turing-aceptable si es recursi-
vamente enumerable, esto es, si existe alguna MT que lo acepta.
Denotaremos con RE al conjunto de lenguajes recursivamente enumerables (Turingdecidibles).
Denici on 10.3 (PROPIEDAD) Una propiedad T de los lenguajes recursivamente enu-
merables es simplemente un subconjunto de RE: T RE. Decimos que un lenguaje L
tiene la propiedad T si L T.
Por ejemplo, la propiedad de estar formado por ceros y unos es el conjunto de lenguajes
recursivamente enumerables donde cada lenguaje es un subconjunto de (0 + 1)

: T =
L; L (0 + 1)

. La propiedad de ser un lenguaje vaco es el conjunto L = que


consiste de todos aquellos lenguajes que son iguales al conjunto vaco. Hay que notar que
esto no es lo mismo que el conjunto vaco, subconjunto de cualquier conjunto. Esta ultima
propiedad no la cumple ning un lenguaje, ni siquiera aquellos que son iguales al conjunto
vaco.
Denici on 10.4 (PROPIEDAD TRIVIAL) Una propiedad T de RE es no trivial si tanto T
como su complemento T no son el conjunto vaco. Esto es, hay al menos un lenguaje en
RE que tiene la propiedad y al menos un lenguaje en RE que no la tiene.
En otras palabras, una propiedad es trivial si corresponde al conjunto vaco ning un
lenguaje en RE est a en ese conjunto, T RE = o bien T = RE. De no ser ninguno
de estos dos casos, la propiedad se considera no trivial.
292 Introducci on a decidibilidad
El teorema de Rice demuestra que cualquier propiedad no trivial de un lenguaje en RE
(semidecidible) es indecidible. El teorema de Rice no se reere a las propiedades de una
MT que acepte a un determinado lenguaje L, sino a las propiedades de L, independiente-
mente de cu al sea la formalizaci on que elijamos para describirlo una MT, conjuntos, una
gram atica general .
Sea T una propiedad en RE. Es difcil determinar si un determinado lenguaje est a o
no en T, porque los lenguajes tienden a tener un n umero innito de elementos y eso hara
difcil reconocer a L. Por eso mejor trabajamos con descripciones nitas de esos lenguajes,
como lo son las MT que los aceptan. De esto, Si T es una propiedad de los lenguajes
recursivamente enumerables, L
P
es el conjunto de c odigos de MT w
M
i
tales que L(M
i
)
es n lenguaje en T
_
L
P
= w
M
i
[ L(M
i
) T
_
. Cuando hablamos de la decidibilidad
de una propiedad T estamos hablando de la decidibilidad del lenguaje L
P
. T no es un
conjunto arbitrario, ya que si L(M
1
) = L(M
2
) entonces M
1
T M
2
T.
Teorema 10.2 (TEOREMA DE RICE) Sea T una propiedad no trivial de RE. El lenguaje
L
P
= w
M
[ L(M) T
es indecidible; esto es, es imposible decidir si un lenguaje aceptado por una m aquina de
Turing dada M tiene la propiedad T.
Demostraci on:
Supongamos que tenemos una MT H
P
que decide si el lenguaje aceptado por una MT
cualquiera est a en T. Supongamos tambi en que T es una propiedad no trivial. Para
demostrar que H
P
no puede existir haremos una reducci on de H a H
P
. Supongamos
que le alimentamos a H la cadena w
M
w. Tenemos un proceso a la entrada de H que
transforma el problema w
M
w en alguna MT M

, de tal manera que si H


P
contesta que
L(M

) T sea si y s olo si M va a detenerse frente a w, mientras que si L(M

) , T
entonces esa respuesta se pueda tomar como la respuesta de que M no se va a detener
frente a w. El unico problema que queda es c omo construir M

para que esto se cumpla.


Como T es no trivial, quiere decir que T , = y que no todos los lenguajes est an en
T. Tomemos a un lenguaje L T. Podemos suponer, sin p erdida de generalidad, que
, T (si esto no fuera as, podemos tomar T, que tambi en es una propiedad no trivial
donde se cumplira que , T) y que tambi en tiene a alg un lenguaje L que tiene la
propiedad T. Sea M
L
la MT que acepta a L.
Vamos a construir M

de la siguiente manera:

toma la entrada w que se le da a H y procede a simular a M en el reconoci-


miento de w.

Si M se detiene frente a w, M

lee una cadena x cualquiera y simula a M


L
en el
reconocimiento de x.

acepta a x M
L
acepta a x.
10.6 Problemas indecidibles que no se reeren a MT 293
Mostramos el funcionamiento de M

en la gura 10.17.
Figura 10.17 Construcci on de M

en el teorema de Rice
x
w
M
/
M
M
L
acepta
empza
acepta acepta
De c omo funciona M

podemos deducir lo siguiente:

Si M se detiene frente a w, entonces M

va a aceptar exactamente al lenguaje


aceptado por M
L
, esto es, L(M

) = L(M
L
) = L.

Si M no se detiene frente a w, entonces L(M

) = , pues nunca va a procesar


nada.
Le alimentamos w
M
a H
P
. Si L = L(M

), como supusimos que L T, H


P
va a
contestar que L(M

) T. Si en cambio, L(M

) = , como supusimos que , T, H


P
contesta que L(M

) , T.
De lo anterior, podemos usar M

y H
P
para decidir si M se va a detener frente a w o no:
L(M

) = L M s se detiene frente a w y H
P
va a contestar s. Por otro lado, M
no se detiene frente a w L(M

) = y H
P
contestar a no. Mostramos la reducci on
de H en H
P
en la gura 10.18.
Figura 10.18 Reducci on de H a H
P
T
M
H
T
H
w
M
w w
M

L(M

) T
L(M

) , T
w
M
w H
w
M
w , H
294 Introducci on a decidibilidad
10.6. Problemas indecidibles que no se reeren a MT
Hasta ahora, todos los problemas indecidibles que hemos revisado tienen que ver con
el comportamiento de m aquinas de Turing. En esta secci on mencionaremos algunos pro-
blemas que no est an directamente relacionados con MT, pero que para demostrar que son
indecidibles existe una reducci on del problema de la detenci on, de la cinta en blanco, de la
MT que acepta todo, entre otros. En este texto unicamente mencionaremos los problemas
sin dar la justicaci on de por qu e son indecidibles.
Ecuaciones diofantinas
Una ecuaci on diofantina es un polinomio donde las variables unicamente pueden tener
valores enteros. Es importante en areas donde no se pueden dividir los objetos, como el
n umero de personas para un evento, la combinaci on de objetos de un cierto tipo que cabe
en un volumen dado y otros problemas similares.
El problema de las ecuaciones diofantinas, planteado por Hilbert en 1900 como su
d ecimo problema del siglo XX, se enuncia de la siguiente manera:
Dado un sistema de ecuaciones diofantinas, existe una soluci on entera?
En 1970 Yuri Matiyasevich demostr o que este problema es indecidible, plante andolo como
un lenguaje w) [ w es un sistema de ecuaciones diofantinas que tiene soluci on entera.
Lo que hizo Matiyasevich es demostrar que todo lenguaje recursivamente enumerable se
puede reducir a un sistema de ecuaciones diofantinas con soluci on entera, de lo que se
concluye que si el problema del sistema de ecuaciones diofantinas es decidible entonces
todos los lenguajes recursivamente enumerables son recursivo, algo que ya demostramos
que no es verdad.
Entre los problemas con los sistemas de ecuaciones diofantinas se tienen los siguientes
resultados:

El problema de las ecuaciones diofantinas de grado 1 no s olo son decidibles, sino


que existe un algoritmo eciente para hacerlo.

Los sistemas diofantinos cuadr aticos se pueden resolver, pero no se ha encontrado un


algoritmo eciente que las resuelva en tiempo polinomial.

El problema de los sistemas diofantinos generales es indecidible, as que ni siquiera


un algoritmo ineciente para resolverlos existe (el probar todas las combinaciones de
enteros no es posible).
10.6 Problemas indecidibles que no se reeren a MT 295
El problema de correspondencia de Post
Supongamos que tenemos dos cadenas X = x
1
, x
2
, . . . , x
n
y Y = y
1
, y
2
, . . . , y
n
. Ha-
cemos la siguiente pregunta sobre estas listas:
Existe alguna sucesi on de ndices que se puedan a aplicar a X y a Y de tal
manera que al concatenar los smbolos en estos ndices el resultado en X es
el mismo que en Y ?
Por ejemplo, si elegimos los ndices 3,5,6,8, la pregunta sera si x
3
x
5
x
6
x
8
= y
3
y
5
y
6
y
8
.
Este problema fue formulado por Emile Post en 1940.
Para demostrar que este problema es indecidible se codica el problema de Post en
cadenas y se demuestra primero que una MT aceptadora que prueba primero las soluciones
de tama no uno, luego las de tama no dos, y as sucesivamente.
Se reduce del problema de la detenci on y se demuestra que si el problema se pudiera
decidir, esto llevara a que el problema de la detenci on fuera decidible.
El problema del enlosado
Consideremos una clase de losetas llamadas losetas de Wang que est an divididas en
cuatro regiones, cada una con un dibujo diferente. Y supongamos que tenemos una cantidad
innita de losetas de un n umero nito de estilos. Por ejemplo, en la gura 10.19, tenemos
disponibles una innidad de losetas de los tres modelos que se muestran:
Figura 10.19 Un problema de enlosado
a
a a
a
a
a
a
a
a
a
a
a
a
a a
a b
b
b
b
b
b
b
b
La pregunta es si podemos enlosar una supercie arbitraria con los dise nos con que
contamos y siguiendo las siguientes reglas:
1. Cada loseta se debe colocar tocando a sus vecinos en los cuatro lados. Esto es, no
puede haber huecos.
296 Introducci on a decidibilidad
2. Cuando se colocan dos losetas adyacentes, el lado en el que se tocan debe tener la
misma gura.
3. No se permiten rotaciones o inversiones de las losetas.
Se representan los distintos modelos como cadenas y se plantea de la siguiente manera:
Sea T un enlosado con n distintos modelos y sea L el conjunto de enlosados correctos.
Se describe alguna manera de transformar una MT M al conjunto de enlosados de forma
tal que T L M no se detiene frente a la cinta en blanco. Si se pudiera resolver
el problema del enlosado, entonces podramos resolver el problema de la cinta en blan-
co (simplemente invertimos las respuestas de la MT que se detiene frente a una cinta en
blanco).
Si el problema se plantea en t erminos particulares, es decir, dada una supercie concreta
y un conjunto de k losetas, k un n umero jo, se puede enlosar esa supercie?, el problema
es decidible: simplemente se prueban todos los enlosados posibles. El n umero de enlosados
posibles es nito, por lo que una soluci on combinatoria decide el problema, aunque la
soluci on no sea eciente.
Colof on
Con esto damos por terminado el tema de decidibilidad. Podramos haber dado muchos
ejemplos m as de problemas que se ha demostrado que son indecidibles, con sus reducciones
correspondientes, pero como este tema no es el objetivo principal de este texto, creemos que
con esto es suciente para despertar el inter es en los lectores en este tema tan importante
para computabilidad.
Bibliografa
[1] A.V. Aho, R. Sethi, and J.D. J.D. Ullman. C0MPILADORES, Principios, t ecnicas y
herramientas. Addison-Wesley Iberoamericana, 1990.
[2] Pascal Caron and Djelloul Ziadi. Characterization of glushkov automata. Theor.
Comput. Sci, 233(1-2):7590, 2000.
[3] Paul E. Ceruzzi. A History of Modern Computing. The MIT Press, 2nd. edition, 2003.
[4] Keith D. Cooper and Linda Torkzon. Engineering a Compiler. Morgan Kaufman
Publishers, 2004.
[5] John E. Hopcroft, Rajeev Motwani, and Jeffrey Ullman. Introduction to Automata
Theory, Languages, and Computation. Addison-Wesley Publishing Company, second
edition edition, 2001.
[6] Georges Ifrah, E. F. Harding, David Bellos, Sophie Wood, and Harding E. F. The
Universal History of Computing: From the Abacus to Quantum Computing. John
Wiley & Sons, Inc., 2000.
[7] Dexter C. Kozen. Automata and Computability. Springer-Verlag TELOS, 1997.
[8] Peter Linz. An Introduction to Formal Languages and Automata. D.C. Heath and
Company, fourth edition edition, 2006.
[9] Gonzalo Navarro and Mathieu Rafnot. Compact DFA representation for fast regular
expression search. Lecture Notes in Computer Science, 2141:112, 2001.
[10] Elaine Rich. Automata, Computability and Complexity, theory and applications. Pear-
son Prentice Hall, 2008.
[11] Michael Sipser. Introduction to the Theory of Computation. PWS Publishing Com-
pany, second edition, 2005.
[12] Thomas A. Sudkamp. Languages and Machines. Addisson-Wesley, second edition,
1997.
[13] R. Gregory Taylor. Models of Computation and Formal Languages. Oxford Univer-
sity Press, 1998.
298 BIBLIOGRAF

IA
[14] Bruce W. Watson. A taxonomy of nite automata construction algorithms. Technical
report, Universit e de Rouen, January 28 1993.
Convenciones y traducciones
usadas
En esta secci on anotamos la traducci on elegida para muchos de los t erminos,
de tal manera de evitar confusi on al lector. Asimismo marcamos la notaci on
preferida, cuando hay m as de una en la literatura.
adivina:
guesses.
AF:
aut omata nito, nite automata; se reere al concepto general que puede incluir
transiciones-, o ser no-determinista.
AFD:
aut omata nito determinista.
AFE:
aut omata nito con transiciones-.
AFN:
aut omata nito no-determinista.
AFS:
aut omata de pila, stack automata.
ALA:
aut omata linealmente acotado, LBA, linear bounded automata.
alcanzable:
reachable.
analizador lexicogr aco:
lexical analyzer.
aseveraci on:
assertion.
300 Nomenclatura
arbol de derivaci on:
derivation tree.
atomo:
token.
ATS:
traductor con pila, stack automata translator.
aut omata linealmente acotado:
linear bounded automata.
botar:
pop.
cadena, cuerda, frase, palabra:
string, word, phrase.
casar:
matching.
cinta:
tape, en las m aquinas de Turing cada una tiene su propia cabeza lectora.
cinta innita en ambas direcciones:
two-way innite tape.
cinta innita s olo a la derecha:
one-way-innite tape.
computacionalmente difciles, duros de resolver:
computationally hard.
conectado:
connected.
contrable:
contractable.
correctores de ortografa:
spellers.
correctud:
correctness, correctez, correctitud.
:
transition function; a veces se usa para denotar a la funci on de transici on.
Nomenclatura 301
decidibilidad:
decidibility, se puede decidir.
dependientes del contexto:
context sensitive.
derivaci on por la derecha:
rightmost derivation.
derivaci on por la izquierda:
leftmost derivation.
descripci on estructural:
structural description.
digr aca:
digraph, gr aca dirigida, grafo dirigido.
:
palabra vaca, cadena vaca empty string, null string.
-cerradura:
-closure.
entrada, datos:
input.
enunciado:
proposition, statement.
estados abandonables:
leavable states, desde los que hay un camino a alg un estado nal.
estados alcanzables:
reachable states.
cha:
token.
FNC:
forma normal de Chomsky.
FNG:
forma normal de Greibach, Greibach Normal Form.
forma normal de Chomsky:
Chomsky Normal Form.
302 Nomenclatura
forma sentencial:
sentential form.
fuera de lnea:
off-line.
fuertemente conectado:
strongly connected.
generar una frase:
produce a word.
GLC:
gram atica libre del contexto, context free grammar.
gram atica lineal a la derecha:
right linear grammar.
gram aticas contrables:
contractable grammars.
gram aticas de estructura de frase:
phrase structure grammars.
inalcanzable:
unreachable.
LDC:
lenguaje dependiente del contexto, context sensitive language.
lema del bombeo:
Pumping Lemma.
lenguajes libres del contexto:
context free languages.
libre del contexto:
context free.
LLC:
lenguaje libre del contexto, context free language.
mapea, transforma:
maps.
m aquina con un n umero nito de estados:
nite state machine.
Nomenclatura 303
m as de una cinta:
multiple tapes.
decidible:
del ingl es decidible, se reere a aquellos lenguajes donde la m aquina de Turing
siempre suspende su funcionamiento, ya sea para aceptar o para rechazar una cade-
na.
membresa:
membership.
MT:
m aquina de Turing, Turing Machine.
notaci on unaria:
notaci on en la que cada unidad est a representada por alg un smbolo predenido.
semidecidible:
del ingl es semidecidible, se reere a aquellas m aquinas de Turing que suspenden
su funcionamiento al aceptar, pero que no se tiene la garanta de que rechacen a la
cadena suspendiendo su funcionamiento.
objetivo:
target.
opci on de no mover la cabeza:
with stay option.
palabra vaca, empty word; algunos autores usan :
.
pila:
stack.
pista:
track, en las m aquinas de Turing unicamente dan una manera de codicar cada
smbolo de la pista.
presencia, ocurrencia, aparici on:
occurrence.
problema de la detenci on:
halting problem; algunos autores lo traducen como el problema del paro.
producci on:
production rule.
304 Nomenclatura
salida, resultados:
output.
transiciones-:
-transitions, transiciones vacas, transiciones sin leer ning un smbolo.
trayectoria, camino:
path.
vacuidad:
emptyness.

You might also like