Sie sind auf Seite 1von 228

Teor a de la Computacion

Lenguajes, automatas, gram aticas

Rodrigo De Castro Korgi


Ph.D. en Matematicas University of Illinois, U.S.A. Departamento de Matematicas Universidad Nacional de Colombia, Bogota

Teor a de la Computaci on
Lenguajes, aut omatas, gram aticas c Universidad Nacional de Colombia Facultad de Ciencias Juan Manuel Tejeiro, Decano Natalia Ruiz, Vicedecana Acad emica Gustavo Rubiano, Director de Publicaciones c Rodrigo De Castro Korgi Profesor Asociado Departamento de Matem aticas Primera edici on, 2004 A Diagramaci on en L TEX realizada por el autor Impresi on: UNIBIBLOS Universidad Nacional de Colombia Bogot a D.C., 2004

Indice general

Pr ologo Introducci on. Qu e es la Teor a de la Computaci on? 1. Alfabetos, cadenas y lenguajes 1.1. Alfabetos y cadenas . . . . . . . . . . 1.2. Concatenaci on de cadenas . . . . . . . 1.3. Potencias de una cadena . . . . . . . . 1.4. Longitud de una cadena . . . . . . . . 1.5. Reexi on o inversa de una cadena . . . 1.6. Subcadenas, prejos y sujos . . . . . 1.7. Lenguajes . . . . . . . . . . . . . . . . 1.8. Operaciones entre lenguajes . . . . . . 1.9. Concatenaci on de lenguajes . . . . . . 1.10. Potencias de un lenguaje . . . . . . . . 1.11. La clausura de Kleene de un lenguaje 1.12. Reexi on o inverso de un lenguaje . . 1.13. Lenguajes regulares . . . . . . . . . . . 1.14. Expresiones regulares . . . . . . . . . .

1 3 5 5 7 8 8 9 9 10 11 12 14 14 17 18 19 25 25 28 29 33 38 43

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

2. Aut omatas nitos 2.1. Aut omatas nitos deterministas (AFD) . . . . . . . . 2.2. Diagrama de transiciones de un aut omata . . . . . . . 2.3. Dise no de aut omatas . . . . . . . . . . . . . . . . . . . 2.4. Aut omatas nitos no-deterministas (AFN) . . . . . . . 2.5. Equivalencia computacional entre los AFD y los AFN 2.6. Aut omatas con transiciones (AFN-) . . . . . . . . iii

. . . . . .

. . . . . .

. . . . . .

iv

INDICE GENERAL

2.7. Equivalencia computacional entre los AFN- y los AFN 2.8. Teorema de Kleene. Parte I . . . . . . . . . . . . . . . . 2.9. Ejemplos de la parte I del Teorema de Kleene . . . . . . 2.10. Lema de Arden . . . . . . . . . . . . . . . . . . . . . . . 2.11. Teorema de Kleene. Parte II . . . . . . . . . . . . . . . . 2.12. Ejemplos de la parte II del Teorema de Kleene . . . . . 3. Otras propiedades de los lenguajes regulares 3.1. Lema de bombeo . . . . . . . . . . . . . . . . 3.2. Propiedades de clausura . . . . . . . . . . . . 3.3. Propiedades de clausura para aut omatas . . . 3.4. Homomorsmos . . . . . . . . . . . . . . . 3.5. Imagen inversa de un homomorsmo . . . 3.6. Algoritmos de decisi on . . . . . . . . . . . . . 4. Lenguajes y gram aticas independientes del 4.1. Gram aticas generativas . . . . . . . . . . . 4.2. Gram aticas independientes del contexto . . 4.3. Arbol de una derivaci on . . . . . . . . . . . 4.4. Gram aticas ambiguas . . . . . . . . . . . . 4.5. Gram aticas para lenguajes de programaci on 4.6. Gram aticas para lenguajes naturales . . . 4.7. Gram aticas regulares . . . . . . . . . . . . . 4.8. Eliminaci on de las variables in utiles . . . . 4.9. Eliminaci on de las producciones . . . . . 4.10. Eliminaci on de las producciones unitarias . 4.11. Forma Normal de Chomsky (FNC) . . . . . 4.12. Forma Normal de Greibach (FNG) . . . 4.13. Lema de bombeo para LIC . . . . . . . . . 4.14. Propiedades de clausura de los LIC . . . . . 4.15. Algoritmos de decisi on para GIC . . . . . .

. . . . . .

. . . . . .

47 49 52 55 57 58 63 63 67 69 72 74 75 81 81 82 88 91 94 96 98 102 107 110 113 120 125 130 135 143 143 149 154 157 160

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

5. Aut omatas con pila 5.1. Aut omatas con Pila Deterministas (AFPD) . 5.2. Aut omatas con pila no-deterministas (AFPN) 5.3. Aceptaci on por pila vac a . . . . . . . . . . . 5.4. Aut omatas con pila y LIC. Parte I. . . . . . . 5.5. Aut omatas con pila y LIC. Parte II. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

INDICE GENERAL

v 167 167 174 176 179 180 180 181 181 183 186 186 186 188 193 198 198 199 201 201 206 209 211 212 215 221

6. M aquinas de Turing 6.1. M aquinas de Turing como aceptadoras de lenguajes . . . . . 6.2. Subrutinas o macros . . . . . . . . . . . . . . . . . . . . . . 6.3. M aquinas de Turing como calculadoras de funciones . . . . 6.4. M aquinas de Turing como generadoras de lenguajes . . . . . 6.5. Variaciones del modelo est andar de MT . . . . . . . . . . . 6.5.1. Estado de aceptaci on u nico . . . . . . . . . . . . . . 6.5.2. M aquina de Turing con cinta dividida en pistas . . . 6.5.3. M aquina de Turing con m ultiples cintas . . . . . . . 6.5.4. M aquinas de Turing no-deterministas (MTN) . . . . 6.6. Simulaci on de aut omatas por medio de m aquinas de Turing 6.6.1. Simulaci on de aut omatas . . . . . . . . . . . . . . . 6.6.2. Simulaci on de aut omatas con pila . . . . . . . . . . . 6.7. Aut omatas con dos pilas (AF2P) . . . . . . . . . . . . . . 6.8. Propiedades de clausura . . . . . . . . . . . . . . . . . . . . 6.9. MT, computadores, algoritmos y la tesis de Church-Turing 6.9.1. M aquinas de Turing y algoritmos . . . . . . . . . . . 6.9.2. M aquinas de Turing y computadores . . . . . . . . . 7. Problemas indecidibles 7.1. Codicaci on y enumeraci on de m aquinas de Turing 7.2. M aquina de Turing universal . . . . . . . . . . . . 7.3. Algoritmos de aceptaci on para lenguajes RE . . . . 7.4. Lenguajes que no son RE . . . . . . . . . . . . . . 7.5. Lenguajes RE no recursivos . . . . . . . . . . . . . 7.6. Problemas indecidibles o irresolubles . . . . . . . . Bibliograf a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vi

INDICE GENERAL

Prologo
Este libro contiene lo m nimo que los estudiantes de las carreras de ingenier a de sistemas y de matem aticas deber an saber sobre los fundamentos matem aticos de la teor a de la computaci on. Est a basado en el material de clase utilizado por el autor durante los u ltimos a nos en la Universidad Nacional de Colombia, sede de Bogot a.

A estudiantes y profesores
El libro est a escrito tanto para estudiantes de matem aticas quienes, es de suponer, tienen m as experiencia con razonamientos abstractos y demostraciones como para estudiantes de ingenier a. Es el profesor quien debe establecer el tono del curso, enfatizando ya sea el rigor matem atico o una presentaci on m as intuitiva y pr actica. Los resultados est an presentados en forma de teoremas, corolarios y lemas, con sus respectivas demostraciones; estas pueden omitirse, si as lo estima el profesor. En los cursos dirigidos a estudiantes de ingenier a de sistemas, el enfasis debe residir tanto por parte del profesor como por parte del estudiante en los ejemplos y ejercicios pr acticos; hay que resaltar m as el signicado de los enunciados que sus demostraciones formales. El libro contiene gran cantidad de ejemplos y problemas resueltos, con aplicaciones o ilustraciones directas de la teor a. Como prerrequisito, es imprescindible que el estudiante haya tomado al menos un curso de matem aticas discretas en el que se haya familiarizado con las nociones b asicas y la notaci on de la teor a intuitiva de conjuntos, grafos, inducci on matem atica y l ogica elemental. La experiencia previa en programaci on es muy u til pero, de ninguna manera, necesaria. El material se presenta en secciones relativamente cortas, lo que permite alguna exibilidad en la selecci on de los t opicos del curso. As , si el tiempo 1

PROLOGO

disponible no es holgado, o no es posible avanzar con la velocidad suciente, podr an suprimirse las secciones demarcadas con el s mbolo . Casi todas las secciones poseen ejercicios, de variada dicultad; los m as dif ciles est an precedidos de un s mbolo de admiraci on ! y podr an ser considerados opcionales. Es responsabilidad del estudiante resolver los ejercicios que sean asignados por el profesor. La u nica manera de aprender y asimilar las ideas y t ecnicas presentadas en la clase es trabajar seria y completamente los ejercicios.

Material de apoyo en la red


Versiones preliminares de estas notas aparecieron, de forma incompleta, en el curso virtual de Teor a de la Computaci on perteneciente al programa Universidad Virtual de la la Universidad Nacional de Colombia. Es la intenci on del autor mantener y actualizar permanentemente la versi on virtual interactiva de este curso, con material de apoyo como temas y ejercicios nuevos, correcci on de errores, software, enlaces a otra p aginas Web, etc. Se puede acceder libremente al curso virtual en el portal http://www.virtual.unal.edu.co/ siguiendo los enlaces: CursosFacultad de CienciasMatem aticasTeor a de la Computaci on.

Agradecimientos
Durante la elaboraci on de estas notas he recibido por parte de estudiantes atentos muchas observaciones u tiles que han ayudado a mejorar sustancialmente la presentaci on. Quiero expresarles mis agradecimientos a todos ellos, demasiado numerosos para mencionarlos individualmente. La primera versi on del curso virtual fue realizada con la ayuda del estudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reconocimiento. Para la preparaci on de la presente versi on tuve la suerte de contar con la colaboraci on del estudiante de matem aticas Camilo Cubides, con quien estoy muy agradecido por la calidad y seriedad de su trabajo. Finalmente, quiero agradecer a Gustavo Rubiano, Director de las ocina de publicaciones de la Facultad de Ciencias, por su continuo apoyo y su cooperaci on desinteresada.

Introduccion

Qu e es la Teor a de la Computaci on?


La Teor a de la Computaci on estudia modelos abstractos de los dispositivos concretos que conocemos como computadores, y analiza lo que se puede y no se puede hacer con ellos. Este estudio te orico se inici o varias d ecadas antes de la aparici on de los primeros computadores reales y contin ua creciendo, a medida que que la computaci on incrementa su sosticaci on. Entre los muchos t opicos que conforman la teor a de la computaci on, s olo tendremos la oportunidad de tratar someramente los dos siguientes: Modelos de computaci on. Las investigaciones en este campo comenzaron en la d ecada de los 30 del siglo XX con el trabajo del l ogico norteamericano Alonzo Church (19031995) y del matem atico brit anico Alan Turing (19121954). Church introdujo el formalismo conocido como c alculo- y enunci o la tesis hoy conocida como tesis de Church de que las funciones efectivamente computables, es decir, computables por cualquier m etodo computacional concebible, son exactamente las funciones -computables. En contraste con el enfoque m as abstracto de Church, Turing (quien fue alumno doctoral de Church en la universidad de Princeton) propuso un modelo concreto de m aquina computadora, hoy conocida como la m aquina de Turing, capaz de simular las acciones de cualquier otro dispositivo f sico de computaci on secuencial. Curiosamente, las propuestas de Church y Turing se publicaron exactamente en el mismo a no: 1936. Los dos formalismos resultaron ser equivalentes y, desde entonces, se han propuesto muchos otros modelos de computaci on. Como todos han resultados ser equivalentes entre s , ha ganado 3

INTRODUCCION

aceptaci on universal la tesis de Church-Turing: no hay modelo de computaci on m as general ni poderoso que la m aquina de Turing. En los a nos 40 y 50 del siglo XX se adelantaron investigaciones sobre m aquinas de Turing con capacidad restringida, surgiendo as la noci on de m aquina de estado nito o aut omata nito (aut omata es sin onimo de m aquina de c omputo autom atico). Los aut omatas han resultado ser modelos muy u tiles para el dise no de diversos tipos de software y hardware. Lenguajes y gram aticas formales. Una l nea investigativa, aparentemente alejada de los modelos de computaci on, surgi o con los estudios del ling uista norteamericano Noam Chomsky1 . Chomsky introdujo en 1956 la noci on de gram atica generativa con el prop osito de describir los lenguajes naturales como el espa nol, el ingl es, el franc es, etc. Chomsky clasic o las gram aticas en cuatro tipos, dependiendo de la forma de sus producciones, que son las reglas que utiliza una gram atica para generar palabras o cadenas de s mbolos. Pocos a nos despu es se estableci o que hay una estrecha relaci on entre aut omatas y gram aticas: los lenguajes de la llamada jerarqu a de Chomsky corresponden a los lenguajes que pueden ser reconocidos por tipos especiales de aut omatas. La interacci on entre los aut omatas (mecanismos para procesar cadenas de s mbolos) y las gram aticas (mecanismos para generar cadenas de s mbolos) es una fuente de resultados profundos y signicativos. Desde la aparici on de los inuyentes textos de Hopcroft y Ullman ([HU1], 1969) y ([HU2], 1979), un curso semestral b asico de teor a de la computaci on se ha centrado en el estudio de aut omatas y gram aticas. Estas notas de clase reejan esa tradici on.

1 En el a no 2002, la Universidad Nacional de Colombia otorg o el doctorado Honoris Causa a Noam Chomsky.

Cap tulo

Alfabetos, cadenas y lenguajes


De manera muy amplia podr a decirse que la computaci on es la manipulaci on de secuencias de s mbolos. Pero el n umero de s mbolos disponibles en cualquier mecanismo de c omputo es nito y todos los objetos usados como entradas o salidas (inputs/outputs) deben ser identicados en un tiempo nito. Desde el punto de vista te orico esto impone dos restricciones b asicas: el conjunto de s mbolos (alfabeto) debe ser nito y se deben considerar u nicamente cadenas (secuencias de s mbolos) de longitud nita. Surgen as los ingredientes esenciales de una teor a abstracta de la computaci on: alfabetos y cadenas. Los conjuntos de cadenas (ya sean nitos o innitos) se denominar an lenguajes.

1.1.

Alfabetos y cadenas

Un alfabeto es un conjunto nito no vac o cuyos elementos se llaman s mbolos. Denotamos un alfabeto arbitrario con la letra . Una cadena o palabra sobre un alfabeto es cualquier sucesi on (o secuencia) nita de elementos de . Admitimos la existencia de una u nica cadena que no tiene s mbolos, la cual se denomina cadena vac a y se denota con . La cadena vac a desempe na, en la teor a de la computaci on, un papel similar al del conjunto vac o en la teor a de conjuntos.

Ejemplo

Sea = {a, b} el alfabeto que consta de los dos s mbolos a y aba ababaaa aaaab. 5

b. Las siguientes son cadenas sobre :

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Obs ervese que aba = aab. El orden de los s mbolos en una cadena es signicativo ya que las cadenas se denen como sucesiones, es decir, conjuntos secuencialmente ordenados.

Ejemplo

El alfabeto = {0, 1} se conoce como alfabeto binario. Las

cadenas sobre este alfabeto son secuencias nitas de ceros y

unos, llamadas secuencias binarias, tales como 001 1011 001000001.


Ejemplo

= {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z }, el alfabeto del

idioma castellano. Las palabras ociales del castellano (las que

aparecen en el diccionario DRA) son cadenas sobre . Ejemplo El alfabeto utilizado por muchos de los llamados lenguajes de
programaci on (como Pascal o C) es el conjunto de caracte-

res ASCII (o un subconjunto de el) que incluye, por lo general, las letras may usculas y min usculas, los s mbolos de puntuaci on y los s mbolos matem aticos disponibles en los teclados est andares. El conjunto de todas las cadenas sobre un alfabeto , incluyendo la cadena vac a, se denota por .

Ejemplo

Sea = {a, b, c}, entonces

= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}. En la siguiente tabla aparece la notaci on corrientemente utilizada en la teor a de la computaci on. De ser necesario, se emplean sub ndices. Notaci on usada en la teor a de la computaci on denotan alfabetos. denota el conjunto de todas las cadenas que se pueden formar con los s mbolos del alfabeto . denotan s mbolos de un alfabeto. denotan cadenas, es decir, sucesiones nitas de s mbolos de un alfabeto. denota la cadena vac a, es decir, la u nica cadena que no tiene s mbolos.

a, b, c, d, e,. . . u, v, w, x, y, z, . . . , , , . . .

A, B, C, . . . , L, M, N ,. . . denotan lenguajes (denidos m as adelante).

DE CADENAS 1.2. CONCATENACION

Algunos autores denotan la cadena vac a con la letra griega . Preferimos denotarla con porque tiende a confundirse con el s mbolo usado para la relaci on de pertenencia. Si bien un alfabeto es un conjunto nito, es siempre un conjunto innito (enumerable). En el caso m as simple, contiene solo un s mbolo, = {a}, y = {, a, aa, aaa, aaaa, aaaaa, . . .}. Hay que distinguir entre los siguientes cuatro objetos, que son todos diferentes entre s : , , {} y {}. La mayor parte de la teor a de la computaci on se hace con referencia a un alfabeto jo (pero arbitrario).

 

1.2.

Concatenaci on de cadenas

Dado un alfabeto y dos cadenas u, v , la concatenaci on de u y v se denota como u v o simplemente uv y se dene descriptivamente as : 1. Si v = , entonces u = u = u. Es decir, la concatenaci on de cualquier cadena u con la cadena vac a, a izquierda o a derecha, es igual a u. 2. Si u = a1 a2 an , v = b1 b2 bm , entonces u v = a1 a2 an b1 b2 bm . Es decir, u v es la cadena formada escribiendo los s mbolos de u y a continuaci on los s mbolos de v . La concatenaci on de cadenas se puede denir inductiva o recursivamente de la siguiente manera. Si u, v , a , entonces 1. u = u = u. 2. u (va) = (u v )a. Propiedad. La concatenaci on de cadenas es una operaci on asociativa. Es decir, si u, v, w , entonces (uv )w = u(vw). Demostraci on . Se puede hacer escribiendo expl citamente las cadenas u, v , w y usando la denici on descriptiva de concatenaci on. Tambi en se puede dar una demostraci on inductiva usando la denici on recursiva de concatenaci on (ejercicio opcional).

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.3.

Potencias de una cadena

Dada u y n N, se dene (descriptivamente) un en la siguiente forma u0 = , un = uu u .


n veces

Como ejercicio, el estudiante puede dar una denici on recursiva de un .

1.4.

Longitud de una cadena

La longitud de una cadena u se denota |u| y se dene como el n umero de s mbolos de u (contando los s mbolos repetidos). Es decir, | u| =

0, si u = , n, si u = a1 a2 an .

Ejemplo Ejemplo

|aba| = 3, |baaa| = 4.

Si w , n, m N, demostrar que |wn+m | = |wn | + |wm |.

Esta no es una propiedad realmente importante (no la usare-

mos nunca en este libro!); la presentamos aqu para enfatizar los conceptos involucrados e ilustrar los razonamientos estrictos. Soluci on. lado, |wn | + |wm | = | ww w | + | ww w | = n|w| + m|w|.
n veces m veces

Caso n, m 1. |wn+m | = | ww w | = (n + m)|w|. Por otro


n+m veces

Caso n = 0, m 1. |wn+m | = |w0+m | = |wm |. Por otro lado, | w n | + | w m | = | w 0 | + | w m | = | | + | w m | = 0 + | w m | = | w m | . Caso m = 0, n 1. Similar al caso anterior. Caso n = 0, m = 0. |wn+m | = |w0+0 | = || = 0. Por otro lado, |wn | + |wm | = |w0 | + |w0 | = || + || = 0 + 0 = 0.

O INVERSA DE UNA CADENA 1.5. REFLEXION

1.5.

Reexi on o inversa de una cadena

La reexi on o inversa de una cadena u se denota uR y se dene descriptivamente as : uR = , si u = , an a2 a1 , si u = a1 a2 an .

De la denici on se observa claramente que la reexi on de la reexi on de una cadena es la misma cadena, es decir, (uR )R = u,  para u .

Algunos autores escriben u1 en lugar de uR para denotar la reexi on de una cadena u.


Ejercicios de la secci on 1.5

Dar una denici on recursiva de uR . Si u, v , demostrar que (uv )R = v R uR . Generalizar esta propiedad a la concatenaci on de n cadenas.

1.6.

Subcadenas, prejos y sujos

Una cadena v es una subcadena o una subpalabra de u si existen cadenas x, y tales que u = xvy . N otese que x o y pueden ser y, por lo tanto, la cadena vac a es una subcadena de cualquier cadena y toda cadena es subcadena de s misma. Un prejo de u es una cadena v tal que u = vw para alguna cadena w . Se dice que v es un prejo propio si v = u. Similarmente, un sujo de u es una cadena v tal que u = wv para alguna cadena w . Se dice que v es un sujo propio si v = u. Obs ervese que es un prejo y un sujo de toda cadena u ya que u = u = u. Por la misma raz on, toda cadena u es prejo y sujo de s misma.

Ejemplo

Sean = {a, b, c, d} y u = bcbaadb.

10

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Prejos de u : b bc bcb bcba bcbaa bcbaad bcbaadb

Sujos de u : b db adb aadb baadb cbaadb bcbaadb

1.7.

Lenguajes

Un lenguaje L sobre un alfabeto es un subconjunto de , es decir L . Casos extremos: L = , L = , lenguaje vac o. lenguaje de todas las cadenas sobre .

Todo lenguaje L satisface L , y puede ser nito o innito. Los lenguajes se denotan con letras may usculas A, B, C, . . . , L, M, N, . . .. En la siguiente gr aca se visualizan dos lenguajes A y B sobre .

B A

Ejemplos

Los siguientes son ejemplos de lenguajes sobre los alfabetos

especicados.

= {a, b, c}. L = {a, aba, aca}. = {a, b, c}. L = {a, aa, aaa, . . .} = {an : n 1}.

1.8. OPERACIONES ENTRE LENGUAJES

11

= {a, b, c}. L = {, aa, aba, ab2 a, ab3 a, . . .} = {abn a : n 0} {}. = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z }. L = {u : u aparece en el diccionario espa nol DRA}. L es un lenguaje nito. = {a, b, c}. L = {u : u no contiene el s mbolo c}. Por ejemplo, abbaab L pero abbcaa / L. = {0, 1}. L = conjunto de todas las secuencias binarias que contienen un n umero impar de unos. = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n umeros naturales se puede denir como un lenguaje sobre , en la siguiente forma: N = {u : u = 0 o 0 no es un prejo de u}. Como ejercicio, el estudiante puede denir el conjunto de los enteros Z = {. . . , 2, 1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado.  El concepto abstracto de lenguaje, tal como se ha denido, no es exactamente la misma noci on utilizada en la expresi on lenguaje de programaci on. Para precisar la relaci on entre estos conceptos, consideremos el alfabeto de los caracteres ASCII. Un programa en C o en Pascal, por ejemplo, es simplemente una cadena de s mbolos de y, por lo tanto, un conjunto de programas es un lenguaje (en el sentido formal denido en esta secci on).

1.8.

Operaciones entre lenguajes

Puesto que los lenguajes sobre son subconjuntos de , las operaciones usuales entre conjuntos son tambi en operaciones v alidas entre lenguajes. As , si A y B son lenguajes sobre (es decir A, B ), entonces los siguientes tambi en son lenguajes sobre : AB AB AB A = A Uni on Intersecci on Diferencia Complemento

Estas operaciones entre lenguajes se llaman operaciones conjuntistas o booleanas para distinguirlas de las operaciones ling u sticas (concatenaci on, potencia, inverso, clausura) que son extensiones a los lenguajes de las operaciones entre cadenas.

12

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.9.

Concatenaci on de lenguajes

La concatenaci on de dos lenguajes A y B sobre , notada A B o simplemente AB se dene como AB = {uv : u A, v B }. En general, AB = BA.

Ejemplo

Si = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces AB = {ab, ab2 , ab2 , ab3 , acb, acb2 }. BA = {ba, bab, bac, b2 a, b2 ab, b2 ac}.

Ejemplo

Si = {a, b, c}, A = {ba, bc}, B = {bn : n 0}, entonces AB = {babn : n 0} {bcbn : n 0}. BA = {bn ba : n 0} {bn bc : n 0} = {bn+1 a : n 0} {bn+1 c : n 0} = {bn a : n 1} {bn c : n 1}.

Propiedades de la concatenaci on de lenguajes. Sean A, B, C lengua jes sobre , es decir A, B, C . Entonces 1. A = A = . 2. A {} = {} A = A. 3. Propiedad Asociativa, A (B C ) = (A B ) C. 4. Distributividad de la concatenaci on con respecto a la uni on, A (B C ) = A B A C. (B C ) A = B A C A. 5. Propiedad distributiva generalizada. Si {Bi }iI es una familia cualquiera de lenguajes sobre , entonces A
i I

Bi =
i I

( A Bi ) , (Bi A).
i I

Bi A =
i I

DE LENGUAJES 1.9. CONCATENACION

13

Demostraci on . 1. A = {uv : u A, v } = . 2. A {} = {uv : u A, v {}} = {u : u A} = A. 3. Se sigue de la asociatividad de la concatenaci on de cadenas. 4. Caso particular de la propiedad general, demostrada a continuaci on. 5. Demostraci on de la igualdad A
i I

Bi =
i I

(A Bi ):

xA

i I

Bi
i I

x = u v, con u A & v iI Bi x = u v, con u A & v Bj , para alg un j I x A Bj , para alg un j I x i I ( A B i ) . (Bi A) se demuestra de forma similar.
i I

La igualdad  

Bi A =

La propiedad asociativa permite escribir concatenaciones de tres o m as lenguajes sin necesidad de usar par entesis. En general, no se cumple que A (B C ) = A B A C . Es decir, la concatenaci on no es distributiva con respecto a la intersecci on. Contraejemplo: A = {a, }, B = {}, C = {a}. Se tiene: A (B C ) = {a, } = . Por otro lado, A B A C = {a, } {} {a, } {a} = {a, } {a2 , a} = {a}.

Ejercicios de la secci on 1.9

Dar un ejemplo de un alfabeto y dos lenguajes diferentes A, B sobre tales que AB = BA. Una de las dos contenencias siguientes es verdadera y la otra es falsa. Demostrar o refutar, seg un sea el caso: (i) A (B C ) A B A C . (ii) A B A C A (B C ).

14

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.10.

Potencias de un lenguaje

Dado un lenguaje A sobre , (A ), y un n umero natural n N, se n dene A en la siguiente forma A0 = {}, An = AA A = {u1 un : ui A, para todo i, 1 i n}.
n veces

De esta forma, A2 es el conjunto de las concatenaciones dobles de cadenas de A, A3 est a formado por las concatenaciones triples y, en general, An es el conjunto de todas las concatenaciones de n cadenas de A, de todas las formas posibles. Como ejercicio, el estudiante puede dar una denici on recursiva de An .

1.11.

La clausura de Kleene de un lenguaje

La clausura de Kleene o estrella de Kleene o simplemente la estrella de un lenguaje A, A , es la uni on de todas las potencias de A y se denota por A . (Descripci on 1) A =
i 0

Ai = A0 A1 A2 An

Seg un la denici on de las potencias de una lenguaje, A consta de todas las concatenaciones de cadenas de A consigo mismas, de todas las formas posibles. Tenemos as una u til descripci on de A : A = conjunto de todas las concatenaciones de cadenas de A, incluyendo = {u1 un : ui A, n 0}

(Descripci on 2)

De manera similar se dene la clausura positiva de un lenguaje A, A , denotada por A+ . A+ =


i 1

Ai = A1 A2 An

A+ se puede describir de la siguiente manera A+ = = conjunto de todas las concatenaciones de cadenas de A {u1 un : ui A, n 1}

1.11. LA CLAUSURA DE KLEENE DE UN LENGUAJE

15

Obs ervese que A = A+ {} y que A = A+ si y solamente si A. Propiedades de y +. Sea A un lenguaje sobre , es decir, A . 1. A+ = A A = A A . 2. A A = A . 3. A 4. A
n

= A , para todo n 1. = A .

5. A+ A+ A+ . 6. A 7. A+ 8. A+
+ +

= A . = A . = A+ .

9. Si A y B son lenguajes sobre , entonces (A B ) = (A B ) . Demostraci on . 1. A A = A (A0 A1 A2 ) = A1 A2 A3 = A+ . Similarmente se demuestra que A A = A+ . 2. Si x A A , entonces x = u v , con u A , v A . De modo que, x = u v , con u = u1 u2 un , ui A, n 0 y v = v1 v2 vm , vi A, m 0. De donde x = u v = u1 u2 un v 1 v 2 v m . con ui A, vi A, n 0. Por lo tanto, x es una concatenaci on de n + m cadenas de A. As que x A . Rec procamente, si x A , entonces x = x A A . Esto prueba la igualdad de los conjuntos A A y A . 3. 4. Se sigue de la propiedad anterior. A
0 1 2

= A = A .

= {} A A A

16

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

5. La demostraci on de esta propiedad es similar a la de la propiedad 2, pero con la restricci on m, n 1. En general, no se tiene la igualdad A+ A+ = A+ ; m as adelante se mostrar a un contraejemplo. 6. A
+

= A

(A

(A

= A A A = A .
0 1 + 2

7.

A+

= A+

A+
+

A+
+

= {} A A A = A (conjuntos contenidos en A+ ) = A .
+ 1 2 3

8.

A+

= A+
+

A+

A+

= A (conjuntos contenidos en A+ ) = A+ . 9. Seg un la Descripci on 2, el lenguaje (A B ) est a formado por las concatenaciones de cadenas de A consigo mismas, las concatenaciones de cadenas de B consigo mismas y las concatenaciones de cadenas de A con cadenas de B , de todas las formas posibles y en cualquier orden. Si se usa tambi en la Descripci on 2, se observa que eso mismo se obtiene al efectuar (A B ) .  Contraejemplo de A+ A+ = A+ . Sea = {a, b}, A = {a}. Se tiene A+ = A1 A2 = {a} {aa} {aaa} = {an : n 1}. Por otro lado, A+ A+ = {a, a2 , a3 , . . . } {a, a2 , a3 , . . . } = {a2 , a3 , a4 , . . . } = {an : n 2}.  Seg un las deniciones dadas, tiene dos signicados: = conjunto de las cadenas sobre el alfabeto . = conjunto de todas las concatenaciones de cadenas de . No hay conicto de notaciones porque las dos deniciones anteriores de dan lugar al mismo conjunto.

O INVERSO DE UN LENGUAJE 1.12. REFLEXION

17

1.12.

Reexi on o inverso de un lenguaje


AR = {uR : u A}.

Dado A un lenguaje sobre , se dene AR de la siguiente forma:

AR se denomina la reexi on o el inverso de A. Propiedades. Sean A y B lenguajes sobre (es decir, A, B ). 1. (A B )R = B R AR . 2. (A B )R = AR B R . 3. (A B )R = AR B R . 4. AR


R

= A.

5. (A )R = AR . 6. (A+ ) = AR
R +

Demostraci on . Demostraremos las propiedades 1 y 5; las dem as se dejan como ejercicio para el estudiante. 1. x (A B )R x = uR , x = uR ,
R

donde u A B donde u = vw, v A, w B donde v A, w B donde v A, w B

x = (vw) , x = wR v R , x B A .
R R

5.

x (A )R x = uR , donde u A x = (u1 u2 un )R , donde los ui A, n 0


R R x = uR n u2 u1 , donde los ui A, n 0

x (AR ) .

Ejercicios de la secci on 1.12

Demostrar las propiedades 2, 3, 4 y 6 de la reexi on de cadenas. Se pueden generalizar las propiedades 2 y 3 anteriores para uniones e intersecciones arbitrarias, respectivamente?

18

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.13.

Lenguajes regulares

Los lenguajes regulares sobre un alfabeto dado son todos los lenguajes que se pueden formar a partir de los lenguajes b asicos , {}, {a}, a , por medio de las operaciones de uni on, concatenaci on y estrella de Kleene. A continuaci on presentamos una denici on recursiva de los lenguajes regulares. Sea un alfabeto. 1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estos son los denominados lenguajes regulares b asicos. 2. Si A y B son lenguajes regulares sobre , tambi en lo son AB AB A (uni on), (concatenaci on), (estrella de Kleene).

Obs ervese que tanto como son lenguajes regulares sobre . La uni on, la concatenaci on y la estrella de Kleene se denominan operaciones regulares. Ejemplos Sea = {a, b}. Los siguientes son lenguajes regulares sobre : 1. El lenguaje A de todas las cadenas que tienen exactamente una a: A = {b} {a} {b} . 2. El lenguaje B de todas las cadenas que comienzan con b: B = {b} {a, b} . 3. El lenguaje C de todas las cadenas que contienen la cadena ba: C = {a, b} {ba} {a, b} . 4. ({a} {b} ) {a}. 5. {a} {b} {b} .

Es importante observar que todo lenguaje nito L = {w1 , w2 , . . . , wn } es regular ya que L se puede obtener con uniones y concatenaciones: L = {w1 } {w2 } {wn }, y cada wi es la concatenaci on de un n umero nito de s mbolos, wi = a1 a2 ak ; por lo tanto, {wi } = {a1 } {a2 } {ak }.

1.14. EXPRESIONES REGULARES

19

1.14.

Expresiones regulares

Con el prop osito de simplicar la descripci on de los lenguajes regulares se denen las llamadas expresiones regulares. La siguiente es la denici on recursiva de las expresiones regulares sobre un alfabeto dado. 1. Expresiones regulares b asicas: es una expresi on regular que representa al lenguaje . es una expresi on regular que representa al lenguaje {}. a es una expresi on regular que representa al lenguaje {a}, a . 2. Si R y S son expresiones regulares sobre , tambi en lo son: (R)(S ) (R S ) (R ) (R)(S ) representa la concatenaci on de los lenguajes representados por R y S ; (R S ) representa su uni on, y (R) representa la clausura de Kleene del lenguaje representado por R. Los par entesis ( y ) son s mbolos de agrupaci on y se pueden omitir si no hay peligro de ambig uedad. Para una expresi on regular R cualquiera se utiliza en ocasiones la siguiente notaci on: L(R) := lenguaje representado por R. Utilizando esta notaci on y la denici on recursiva de expresi on regular podemos escribir las siguientes igualdades en las que R y S son expresiones regulares arbitrarias: L( ) = . L() = {}. L(a) = {a}, a . L(RS ) = L(R)L(S ). L(R S ) = L(R ) L(S ). L(R ) = L(R ) .

Ejemplo

Dado el alfabeto = {a, b, c}, (a b )a (bc)

20

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

es una expresi on regular que representa al lenguaje ({a} {b} ) {a} {bc} .

Ejemplo

Dado el alfabeto = {a, b}, ( a) (a b) (ba)

es una expresi on regular que representa al lenguaje ({} {a}) ({a} {b}) {ba} .

Ejemplos

Podemos representar los tres primeros lenguajes de la sec-

ci on 1.13 con expresiones regulares:

1. El lenguaje A de todas las cadenas que tienen exactamente una a: A = b ab . 2. El lenguaje B de todas las cadenas que comienzan con b: B = b( a b) . 3. El lenguaje C de todas las cadenas que contienen la cadena ba: C = (a b) ba(a b) . 

La representaci on de lenguajes regulares por medio de expresiones regulares no es u nica. Es posible que haya varias expresiones regulares diferentes para el mismo lenguaje. Por ejemplo, b(a b) y b(b a) representan el mismo lenguaje. Otro ejemplo: las dos expresiones regulares (a b) y (a b ) representan el mismo lenguaje por la propiedad 9 de la secci on 1.11.

Ejemplos

Encontrar expresiones regulares que representen los siguientes

lenguajes, denidos sobre el alfabeto = {a, b}:

1. Lenguaje de todas las cadenas que comienzan con el s mbolo b y terminan con el s mbolo a. Soluci on. b( a b) a .

1.14. EXPRESIONES REGULARES

21

2. Lenguaje de todas las cadenas que tienen un n umero par de s mbolos (cadenas de longitud par). on regular para este lenSoluci on. (aa ab ba bb) . Otra expresi guaje es [(a b)(a b)] . 3. Lenguaje de todas las cadenas que tienen un n umero par de aes. Soluciones: b (b ab ab ) . (ab a b) . (b ab ab ) b .

Ejemplos

Encontrar expresiones regulares que representen los siguientes

lenguajes, denidos sobre el alfabeto = {0, 1}:

1. Lenguaje de todas las cadenas que tienen exactamente dos ceros. Soluci on. 1 01 01 .

2. Lenguaje de todas las cadenas cuyo pen ultimo s mbolo, de izquierda a derecha, es un 0. Soluci on. (0 1) 0(0 1). Usando la propiedad distributiva obtenemos otra expresi on regular para este lenguaje: (0 1) 00 (0 1) 01.

Ejemplo

Sea = {0, 1}. Encontrar una expresi on regular que represente

el lenguaje de todas las cadenas que no contienen dos ceros

consecutivos. Soluci on. La condici on de que no haya dos ceros consecutivos implica que todo cero debe estar seguido necesariamente de un uno, excepto un cero al nal de la cadena. Por lo tanto, las cadenas de este lenguaje se obtienen concatenado unos con bloques 01, de todas las formas posibles. Hay que tener en cuenta, adem as, que la cadena puede terminar ya sea en 1 o en 0. A partir de este an alisis, llegamos a la expresi on regular (1 01) (1 01) 0. Usando la propiedad distributiva, obtenemos otra expresi on para este lenguaje: (1 01) ( 0).

Ejemplo

Sea = {a, b, c}. Encontrar una expresi on regular que repre-

sente el lenguaje de todas las cadenas que no contienen la ca-

dena bc.

22

CAP ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Soluci on. Una b puede estar seguida solamente de otra b o de una a, mientras que las aes y las ces pueden estar seguidas de cualquier s mbolo. Teniendo en cuenta todas las restricciones y posibilidades, arribamos a la siguiente expresi on regular: ( a c b+ a ) b . La condici on de que no aparezca la cadena bc signica que una c puede estar precedida solamente de una a y de otra c. Siguiendo esta descripci on, obtenemos otra expresi on regular para el lenguaje en cuesti on: c (b ac ) .

Ejercicios de la secci on 1.14

Encontrar expresiones regulares para los lenguajes descritos a continuaci on: (i) = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con 2 y terminan con 1. (ii) = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero par de s mbolos. (iii) = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de s mbolos. (iv) = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero impar de s mbolos. (v) = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de aes. (vi) = {a, b}. Lenguaje de todas las cadenas que tienen la cadena ab un n umero par de veces. (vii) = {a, b}. Lenguaje de todas las cadenas que tienen un n umero par de aes o un n umero impar de bes. (viii) = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen dos unos consecutivos. Encontrar expresiones regulares para los siguientes lenguajes denidos sobre el alfabeto = {0, 1}: (i) Lenguaje de todas las cadenas que tienen por lo menos un 0 y por lo menos un 1.

1.14. EXPRESIONES REGULARES

23

(ii) Lenguaje de todas las cadenas que tienen a lo sumo dos ceros consecutivos. (iii) Lenguaje de todas las cadenas cuyo quinto s mbolo, de izquierda a derecha, es un 1. (iv) Lenguaje de todas las cadenas de longitud par 2 formadas por ceros y unos alternados. (v) Lenguaje de todas las cadenas cuya longitud es 4. (vi) Lenguaje de todas las cadenas de longitud impar que tienen unos u nicamente en las posiciones impares. (vii) Lenguaje de todas las cadenas cuya longitud es un m ultiplo de tres. (viii) Lenguaje de todas las cadenas que no contienen tres ceros consecutivos. (ix) Lenguaje de todas las cadenas que no contienen cuatro ceros consecutivos. !(x) Lenguaje de todas las cadenas que no contienen la subcadena 101.  No todos los lenguajes sobre un alfabeto dado son regulares. M as adelante se mostrar a que el lenguaje L = {, ab, aabb, aaabbb, . . . } = {an bn : n 0} sobre = {a, b} no se puede representar por medio de una expresi on regular, y por lo tanto, no es un lenguaje regular.

Cap tulo

Aut omatas nitos


Los aut omatas son m aquinas abstractas con capacidad de computaci on. Hist oricamente, su estudio se origin o con la llamada m aquina de Turing, que fue propuesta en 1936 por el matem atico brit anico Alan Turing (1912 1954) con el prop osito de precisar las caracter sticas y las limitaciones de un dispositivo de computaci on mec anica. En los a nos 40 y 50 del siglo XX se adelantaron investigaciones sobre m aquinas de Turing con capacidad restringida, lo que dio lugar a la noci on de aut omata nito.

2.1.

Aut omatas nitos deterministas (AFD)

Los aut omatas nitos son m aquinas abstractas que procesan cadenas de entrada, las cuales son aceptadas o rechazadas: Aut omata M Cadena de entrada u no (u es rechazada) cinta semiuna cadena unidad de unidad de si (u es aceptada)

El aut omata act ua leyendo los s mbolos escritos sobre una innita, dividida en celdas o casillas, sobre la cual se escribe de entrada u, un s mbolo por casilla. El aut omata posee una control (tambi en llamada cabeza lectora, control nito o 25

26

CAP ITULO 2. AUTOMATAS FINITOS

memoria) que tiene un n umero nito de conguraciones internas, llamadas estados del aut omata. Entre los estados de un aut omata se destacan el estado inicial y los estados nales o estados de aceptaci on. Formalmente, un aut omata nito M est a denido por cinco par ametros o componentes, M = (, Q, q0 , F, ), a saber: 1. Un alfabeto , llamado alfabeto de cinta. Todas las cadenas que procesa M pertenecen a . 2. Q = {q0 , q1 , . . . , qn }, conjunto de estados internos del aut omata. 3. q0 Q, estado inicial. 4. F Q, conjunto de estados nales o de aceptaci on. F = . 5. La funci on de transici on del aut omata : Q Q (q, s) (q, s) Una cadena de entrada u se coloca en la cinta de tal manera que el primer s mbolo de u ocupa la primera casilla de la cinta. La unidad de control est a inicialmente en el estado q0 escaneando la primera casilla:
u

a
Unidad de control

La funci on de transici on indica el estado al cual pasa el control nito, dependiendo del s mbolo escaneado y de su estado actual. As , (q, s) = q signica que, en presencia del s mbolo s, la unidad de control pasa del estado q al estado q y se desplaza hacia la derecha. Esta acci on constituye un paso computacional: (q, s) = q

2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD)

27

Puesto que la funci on est a denida para toda combinaci on estados mbolo, una cadena de entrada cualquiera es procesada completamente, hasta que la unidad de control encuentra la primera casilla vac a. La unidad de control de un aut omata siempre se desplaza hacia la derecha; no puede retornar ni escribir s mbolos sobre la cinta.

Ejemplo

Consideremos el aut omata denido por los siguientes cinco

componentes:

= {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci on. Funci on de transici on : a b ( q0 , a ) = q0 ( q1 , a ) = q1 ( q2 , a ) = q1 ( q 0 , b) = q 1 ( q 1 , b) = q 2 ( q 2 , b) = q 1 .

q0 q0 q1 q1 q1 q2 q2 q1 q1

Vamos a ilustrar el procesamiento de dos cadenas de entrada. 1. u = aabab. u a q0 a q0 b q0 a q1 b q1 q2

Como q2 es un estado de aceptaci on, la cadena de entrada u es aceptada. 2. v = aababa. v a q0 a q0 b q0 a q1 b q1 a q2 q1

Puesto que q1 no es un estado de aceptaci on, la entrada v es rechazada.

28

CAP ITULO 2. AUTOMATAS FINITOS

Caso especial: la cadena es la cadena de entrada. q0 Como q0 es un estado de aceptaci on, la cadena es aceptada. En general se tiene lo siguiente: la cadena vac a es aceptada por un aut omata M si y solamente si el estado inicial q0 de M tambi en es un estado de aceptaci on. Los aut omatas nitos descritos anteriormente se denominan aut omatas nitos deterministas (AFD) ya que para cada estado q y para cada s mbolo a , la funci on de transici on (q, a) siempre est a denida. Es decir, la funci on de transici on determina completa y un vocamente la acci on que el aut omata realiza cuando la unidad de control se encuentra en un estado q leyendo un s mbolo s sobre la cinta. Dado un aut omata M , el lenguaje aceptado o reconocido por M se denota L(M ) y se dene por L(M ) := {u : M termina el procesamiento de la cadena de entrada u en un estado q F }.

2.2.

Diagrama de transiciones de un aut omata

Un aut omata nito se puede representar por medio de un grafo dirigido y etiquetado. Recu erdese que un grafo es un conjunto de v ertices o nodos unidos por arcos o conectores; si los arcos tienen tanto direcci on como etiquetas, el grafo se denomina grafo dirigido y etiquetado o digrafo etiquetado. El digrafo etiquetado de un aut omata se obtiene siguiendo las siguientes convenciones: Los v ertices o nodos son los estados del aut omata. El estado q se representa por: q El estado inicial q0 se representa por: >q0 Un estado nal q se representa por: q

DE AUTOMATAS 2.3. DISENO

29

La transici on = (q, s) = p se representa en la forma s q p Dicho grafo se denomina diagrama de transiciones del aut omata y es muy u til para hacer el seguimiento completo del procesamiento de una cadena de entrada. Una cadena u es aceptada si existe una trayectoria etiquetada con los s mbolos de u, que comienza en el estado q0 y termina en un estado de aceptaci on.

Ejemplo

Diagrama de transiciones del aut omata presentado en la sec-

ci on anterior.

= {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci on. Funci on de transici on : a b ( q0 , a ) = q0 ( q1 , a ) = q1 ( q2 , a ) = q1 a > q0 a, b b q2 ( q 0 , b) = q 1 ( q 1 , b) = q 2 ( q 2 , b) = q 1 a q1

q0 q0 q1 q1 q1 q2 q2 q1 q1

Examinando el diagrama de transiciones podemos observar f acilmente que la entrada aaababbb es aceptada mientras que aabaaba es rechazada.

2.3.

Dise no de aut omatas

Para aut omatas deterministas se adopta la siguiente convenci on adicional con respecto a los diagramas de transiciones: se supone que los arcos no

30

CAP ITULO 2. AUTOMATAS FINITOS

dibujadas expl citamente conducen a un estado limbo de no-aceptaci on. Es decir, en el diagrama de transiciones se indican u nicamente los arcos que intervengan en trayectorias de aceptaci on. Esto permite simplicar considerablemente los diagramas. En este cap tulo abordaremos dos tipos de problemas: 1. 2. Dado un lenguaje regular L dise nar un aut omata nito M que acepte o reconozca a L, es decir, tal que L(M ) = L. Dado un aut omata M determinar el lenguaje aceptado por M .

M as adelante se demostrar a, en toda su generalidad, que estos problemas siempre tienen soluci on. Consideremos inicialmente problemas del primer tipo.

Ejemplo

L = a = {, a, a2 , a3 , . . .}. AFD M tal que L(M ) = L: a > q0 b a q1 b a

Versi on simplicada:

> q0

Ejemplo

L = a+ = {a, a2 , a3 , . . .}. AFD M tal que L(M ) = L: a > q0 b a q2 b a a a q1 b

Versi on simplicada:

> q0

q1

Ejemplo

= {a, b}. L = lenguaje de las cadenas que contienen exacta-

mente dos aes = b ab ab . AFD M tal que L(M ) = L:

DE AUTOMATAS 2.3. DISENO

31

b > q0

b q1

b q2

Ejemplo

= {0, 1}. L = lenguaje de las cadenas sobre que tienen un

n umero par de s mbolos (cadenas de longitud par). AFD M

tal que L(M ) = L: 0, 1 > q0 0, 1


q1

Ejemplo

= {0, 1}. L = lenguaje de las cadenas sobre que contienen 1 > q0 0 1 q1

un n umero par de ceros. AFD M tal que L(M ) = L:

Ejemplo

= {a, b}. L = lenguaje de las cadenas sobre que terminan a > q0 a b q1

en b. AFD M tal que L(M ) = L:

Ejercicios de la secci on 2.3

Dise nar aut omatas nitos deterministas que acepten los siguientes lenguajes: (i) = {0, 1}. L = lenguaje de las cadenas sobre de longitud impar. (ii) = {0, 1}. L = lenguaje de las cadenas sobre que contienen un n umero impar de unos.

32

CAP ITULO 2. AUTOMATAS FINITOS

(iii) = {a, b}. L = ab+ . (iv) = {a, b}. L = ab ab a. (v) = {0, 1}. L = (0 10) . (vi) = {0, 1}. L = (01 10) . (vii) = {0, 1}. Lenguaje de todas las cadenas que no contienen dos unos consecutivos. (viii) = {a, b}. L = {a2i b3j : i, j 0}. (ix) = {a, b}. L = lenguaje de las cadenas sobre que contienen un n umero par de aes y un n umero par de bes. Ayuda: utilizar 4 estados. (x) = {a, b}. Para cada combinaci on de las condiciones par e impar y de las conectivas o e y, dise nar un AFD que acepte el lenguaje L denido por L = lenguaje de las cadenas con un n umero par/impar de aes y/o un n umero par/impar de bes. Ayuda: utilizar el aut omata de 4 estados dise nado en el ejercicio anterior, modicando adecuadamente el conjunto de estados nales. Determinar los lenguajes aceptados por los siguientes AFD. Describir los lenguajes ya sea por medio de una propiedad caracter stica o de una expresi on regular. (i) 0 > q0 1 (ii) 1 > q0 1 q1 0 q2 0 q3 q1 1 0 q2 1 0 q3 1 0 0 q4 1

2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

33

(iii) q1 0 > q0

1 0 1 q2 1 1 q3

(iv) b > q0 b q1 b a a q2

2.4.

Aut omatas nitos no-deterministas (AFN)

Los aut omatas nitos no-deterministas (AFN) se asemejan a los AFD, excepto por el hecho de que para cada estado q Q y cada a , la transici on (q, a) puede consistir en m as de un estado o puede no estar denida. Concretamente, un AFN est a denido por M = (, Q, q0 , F, ) donde: 1. es el alfabeto de cinta. 2. Q es un conjunto (nito) de estados internos. 3. q0 Q es el estado inicial. 4. = F Q es el conjunto de estados nales o estados de aceptaci on. 5. : Q (Q) (q, s) (q, s) = {qi1 , qi2 , . . . , qik } donde

(Q) es el conjunto de subconjunto de Q.

34

CAP ITULO 2. AUTOMATAS FINITOS

El signicado de (q, s) = {qi1 , qi2 , . . . , qik } es el siguiente: estando en el estado q , en presencia del s mbolo s, la unidad de control puede pasar (aleatoriamente) a uno cualquiera de los estados qi1 , qi2 ,. . . , qik , despu es de lo cual se desplaza a la derecha. Puede suceder que (q, s) = , lo cual signica que, si durante el procesamiento de una cadena de entrada u, M ingresa al estado q leyendo sobre la cinta el s mbolo s, el c omputo se aborta. C omputo abortado: u s q La noci on de diagrama de transiciones para un AFN se dene de manera an aloga al caso AFD, pero puede suceder que desde un mismo nodo (estado) salgan dos o m as arcos con la misma etiqueta:

s q s s q

Un AFN M puede procesar una cadena de entrada u de varias maneras. Sobre el diagrama de transiciones del aut omata, esto signica que pueden existir varias trayectorias, desde el estado q0 , etiquetadas con los s mbolos de u. La siguiente es la noci on de aceptaci on para aut omatas no-deterministas: L(M ) = lenguaje aceptado o reconocido por M = {u : existe por lo menos un c omputo completo de u que termina en un estado q F }

2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

35

Es decir, para que una cadena u sea aceptada, debe existir alg un c omputo en el que u sea procesada completamente y que nalice estando M en un estado de aceptaci on.

Ejemplo a > q0 a q3 b

Sea M el siguiente AFN: a q1 b b q2 q0 q1 q2 q3 a {q0 , q1 , q3 } {q1 } b {q2 } {q1 , q2 } {q3 }

Para la cadena de entrada u = abb, existen c omputos que conducen al rechazo, c omputos abortados y c omputos que terminan en estados de aceptaci on. Seg un la denici on de lenguaje aceptado, u L(M ). u C omputo de rechazo: a q0 b q1 u C omputo de aceptaci on: a q0 b q3 b q3 q3 b q2 q2

u Otro c omputo de aceptaci on: a q0 b q1 b q2 q1

36

CAP ITULO 2. AUTOMATAS FINITOS

u C omputo abortado: a q0 b q0 b

Ejemplo

En el u ltimo ejemplo de la secci on 2.3 se dise n o el siguiente

AFD que acepta el lenguaje de las cadenas sobre = {a, b}

que terminan en b: a > q0 a b b q1

Un AFN que acepta el mismo lenguaje y que es, tal vez, m as f acil de concebir, es el siguiente: a > q0 b Este aut omata se asemeja a la expresi on regular (a b) b.

q1

Ejemplo

Consid erese el lenguaje L = ab a+ sobre el alfabeto = {a, b}. El siguiente AFN M satisface L(M ) = L. a > q0 a a q2 b q1

Ejemplo

= {0, 1}, L = (01 010) . El siguiente AFN acepta a L.

2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

37

0 > q0 0 q2 0 q3 1 q1

1 Otro AFN que acepta el mismo lenguaje y que tiene s olo tres estados es el siguiente: 0 1 q1 q2 > q0 1 0

Ejercicios de la secci on 2.4 = {a, b}. L = ab+ a .

Dise nar aut omatas AFD o AFN que acepten los siguientes lenguajes: = {a, b}. L = a(a ab) . = {a, b, c}. L = a b c . = {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzan con 0 y terminan con 2. = {0, 1}. Lenguaje de las cadenas de longitud par 2 formadas por ceros y unos alternados. = {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos ceros consecutivos. = {0, 1}. Lenguaje de las cadenas de longitud impar que tienen unos u nicamente en las posiciones impares. = {a, b, c}. L = lenguaje de las cadenas sobre que contienen la cadena bc. = {a, b, c}. L = lenguaje de las cadenas sobre que no contienen la cadena bc. En el u ltimo ejemplo de la secci on 1.14 se presentaron dos expresiones regulares para L. Nota: se puede construir un AFD con s olo dos estados para aceptar este lenguaje!

38

CAP ITULO 2. AUTOMATAS FINITOS

2.5.

Equivalencia computacional entre los AFD y los AFN

En esta secci on se mostrar a que los modelos AFD y AFN son computacionalmente equivalentes. En primer lugar, es f acil ver que un AFD M = (, Q, q0 , F, ) puede ser considerado como un AFN M = (, Q, q0 , F, ) deniendo (q, a) = { (q, a)} para cada q Q y cada a . Para la armaci on rec proca tenemos el siguiente teorema. 2.5.1 Teorema. Dado un AFN M = (, Q, q0 , F, ) se puede construir un AFD M equivalente a M , es decir, tal que L(M ) = L(M ). Este teorema, cuya demostraci on se dar a en detalle m as adelante, establece que el no-determinismo se puede eliminar. Dicho de otra manera, los aut omatas deterministas y los no-deterministas aceptan los mismos lenguajes. La idea de la demostraci on consiste en considerar cada conjunto de estados {p1 , . . . , pj }, que aparezca en la tabla de la funci on del aut omata no-determinista, como un u nico estado del nuevo aut omata determinista. La tabla de se completa hasta que no aparezcan nuevas combinaciones de estados. Los estados de aceptaci on del nuevo aut omata son los conjuntos de estados en los que aparece por lo menos un estado de aceptaci on del aut omata original. El siguiente ejemplo ilustra el procedimiento.

Ejemplo

Consideremos el AFN M , presentado en la secci on 2.4, que

acepta el lenguaje L(M ) = ab a+ sobre = {a, b}:

a > q0 a a q2

b q1 q0 q1 q2 a {q1 , q2 } {q2 } b {q1 }

El nuevo AFD M construido a partir de M tiene un estado m as, {q1 , q2 }, y su funci on de transici on tiene el siguiente aspecto:

2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

39

q0 q1 q2 {q1 , q2 }

a {q1 , q2 } {q2 } {q2 }

b {q1 } {q1 }

El diagrama de transiciones de este aut omata es: a a > {q0 }


{q1 , q2 }

a
{q2 }

{q1 }

b Los estados de aceptaci on son aqu ellos en los que aparezcan q1 o q2 , que son los estados de aceptaci on del aut omata original. Para mayor simplicidad, podemos cambiar los nombres de los estados del nuevo aut omata: a > p0
p1

a
p2

b
p3

Ejemplo

El siguiente AFN M , presentado en la secci on 2.4, acepta el

lenguaje L = (01 010) sobre = {0, 1}.

40

CAP ITULO 2. AUTOMATAS FINITOS

0 > q0 1 0 q1

1 q2

La tabla de la funci on de transici on de M se extiende para completar la funci on del nuevo AFN: q0 q1 q2 {q0 , q2 } {q0 , q1 } 0 {q1 } {q0 } {q0 , q1 } {q1 } 1 {q0 , q2 } {q0 , q2 }

El diagrama de transiciones del nuevo aut omata es: 0 0 > {q0 }


{q1 } {q2 }

1 0
{q0 , q2 }

{q0 , q1 }

Los estados de aceptaci on son aqu ellos en los que aparezca q0 ya que q0 es el u nico estado de aceptaci on del aut omata original. Puesto que el nuevo estado {q2 } no interviene en la aceptaci on de cadenas, el aut omata se puede simplicar en la siguiente forma:

2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

41

0 > p0
p1

1 0
p2

p3

Para la demostraci on del Teorema 2.5.1, conviene extender la denici on de la funci on de transici on, tanto de los aut omatas deterministas como de los no-deterministas. 2.5.2 Denici on. Sea M = (, Q, q0 , F, ) un AFD. La funci on de transici on : Q Q se extiende a una funci on : Q Q por medio de la siguiente denici on recursiva: (q, ) = q, q Q, (q, a) = (q, a), q Q, a , (q, wa) = ( (q, w), a), q Q, a , w .

Seg un esta denici on, para una cadena de entrada w , (q0 , w) es el estado en el que el aut omata termina el procesamiento de w. Por lo tanto, podemos describir el lenguaje aceptado por M de la siguiente forma: L(M ) = {w : (q0 , w) F }. Notaci on. Sin peligro de ambig uedad, la funci on extendida (q, w) se notar a simplemente (q, w). 2.5.3 Denici on. Sea M = (, Q, q0 , F, ) un AFN. La funci on de tran sici on : Q (Q) se extiende inicialmente a conjuntos de estados. Para a y S F se dene (S, a) :=
q S

(q, a).

42

CAP ITULO 2. AUTOMATAS FINITOS

Luego se extiende a una funci on : Q (Q), de manera similar a como se hace para los AFD. Recursivamente, (q, ) = {q }, q Q, (q, a) = (q, a), q Q, a , (q, wa) = ((q, w), a) = (p, a), q Q, a , w .
p(q,w)

Seg un esta denici on, para una cadena de entrada w , (q0 , w) es el conjunto de los posibles estados en los que terminan los c omputos completos de w. Si el c omputo se aborta durante el procesamiento de w, se tendr a (q0 , w) = . Usando la funci on extendida , el lenguaje aceptado por M se puede describir de la siguiente forma: L(M ) = {w : (q0 , w) contiene un estado de aceptaci on}. Notaci on. Sin peligro de ambig uedad, la funci on extendida (q, w) se notar a simplemente (q, w). Demostraci on del Teorema 2.5.1: Dado el AFN M = (, Q, q0 , F, ), construimos el AFD M as : M = (, (Q), {q0 }, F , )

donde

: (Q) (Q) (S, a) (S, a) := (S, a). F = {S (Q) : S F = }.

Se demostrar a que L(M ) = L(M ) probando que, para toda cadena w , ({q0 }, w) = (q0 , w). Esta igualdad se demostrar a por inducci on sobre w. Para w = , claramente se tiene ({q0 }, ) = (q0 , ) = {q0 }. Para w = a, a , se tiene ({q0 }, a) = ({q0 }, a) = (q0 , a). Sup ongase (hip otesis de inducci on) que ({q0 }, w) = (q0 , w), y que a . ({q0 }, wa) = ( ({q0 }, w), a) = (({q0 }, w), a) = ({q0 }, wa) = (q0 , wa) (denici on de la extensi on de ) (hip otesis de inducci on) (denici on de la extensi on de ) (denici on de la extensi on de ).

= (({q0 }, w), a) (denici on de )

2.6. AUTOMATAS CON TRANSICIONES (AFN-)

43

Ejercicios de la secci on 2.5

Dise nar AFD equivalentes a los siguientes AFN: b > q0 b q2 a 0 > q0 0 q3 1 0 0 q1 1 1 1 q2 b q3 a q1

2.6.

Aut omatas con transiciones (AFN-)

Un aut omata nito con transiciones (AFN-) es un aut omata nodeterminista M = (, Q, q0 , F, ) en el que la funci on de transici on est a denida como: : Q ( {}) (Q). on , transici on La transici on (q, ) = {pi1 , . . . , pin }, llamada transici nula o transici on espont anea, tiene el siguiente signicado computacional: estando en el estado q , el aut omata puede cambiar a uno cualquiera de mbolo le do y sin mover los estados pi1 , . . . , pin , independientemente del s la unidad de control. Dicho de otra manera, las transiciones permiten al aut omata cambiar internamente de estado sin procesar o consumir el s mbolo le do sobre la cinta. En el diagrama del aut omata, las transiciones dan lugar a arcos con etiquetas . Una cadena de entrada w es aceptada por un AFN- si existe por lo menos una trayectoria, desde el estado q0 , cuyas etiquetas son exactamente los s mbolos de w, intercalados con cero, uno o m as s.

44

CAP ITULO 2. AUTOMATAS FINITOS

En los aut omatas AFN-, al igual que en los AFN, puede haber m ultiples c omputos para una misma cadena de entrada, as como c omputos abortados.

Ejemplo

M: a > q0 a q3 b q4 a q1 b b q2

Ejemplos de cadenas aceptadas por M : u = aab v = abaa w = abbaa C omputos de aceptaci on de u = aab y v = abaa: a q0 q1 a q1 b q1 q2

a q0

b q3

a q3 q4

a q4

q4

2.6. AUTOMATAS CON TRANSICIONES (AFN-)

45

Los AFN- permiten a un m as libertad en el dise no de aut omatas, especialmente cuando hay numerosas concatenaciones.

Ejemplo

= {a, b, c}. L = a b c . AFD que acepta a L: a > q0 b b q1 c c c q2

AFN- que acepta a L: a > q0 b q1 c q2

Este aut omata se asemeja a la expresi on regular a b c : las concatenaciones han sido reemplazadas por transiciones .

Ejemplo

= {a, b}. L = lenguaje de todas las cadenas sobre que

tienen un n umero par de aes o un n umero par de bes.

AFD que acepta el lenguaje de las cadenas con un n umero par de aes: b > q0 a AFD que acepta el lenguaje de las cadenas con un n umero par de bes: a > q0 b AFN- que acepta el lenguaje de las cadenas con un n umero par de aes o un n umero par de bes: a q1 b q1

46

CAP ITULO 2. AUTOMATAS FINITOS

b > q0 q1

a a b

b q2

q3 a b

q4 a

A diferencia de los AFD y los AFN, en los AFN- pueden existir c omputos innitos, es decir c omputos que nunca terminan. Esto puede suceder si el aut omata ingresa a un estado desde el cual haya varias transiciones encadenadas que retornen al mismo estado, como por ejemplo:

Ejercicios de la secci on 2.6

Dise nar AFN- que acepten los siguientes lenguajes: (ab b) ab , sobre = {a, b}. a(a c) b+ , sobre = {a, b, c}. ab ba b(ab ba) , sobre = {a, b}. ab ba b(ab ba) , sobre = {a, b}. (0 010) 0 (01 10) , sobre = {0, 1}. 0+ 1(010) (01 10) 1+ , sobre = {0, 1}. = {a, b}. L = lenguaje de todas las cadenas sobre que tienen un n umero par de aes y un n umero par de bes.

2.7. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFN- Y LOS AFN

47

2.7.

Equivalencia computacional entre los AFN- y los AFN

En esta secci on se mostrar a que el modelo AFN- es computacionalmente equivalente al modelo AFN. O dicho m as gr acamente, las transiciones se pueden eliminar, a nadiendo transiciones que las simulen, sin alterar el lenguaje aceptado. En primer lugar, un AFN M = (, Q, q0 , F, ) puede ser considerado como un AFN- en el que, simplemente, hay cero transiciones . Para la armaci on rec proca tenemos el siguiente teorema. 2.7.1 Teorema. Dado un AFN- M = (, Q, q0 , F, ), se puede construir un AFN M equivalente a M , es decir, tal que L(M ) = L(M ). Bosquejo de la demostraci on . Para construir M a partir de M se requiere la noci on de -clausura de un estado. Para un estado q Q, la clausura de q , notada [q ], es el conjunto de estados de M a los que se puede llegar desde q por 0, 1 o m as transiciones . N otese que, en general, [q ] = (q, ). Por denici on, q [q ]. La -clausura de un conjunto de estados {q1 , . . . , qk } se dene por: [{q1 , . . . , qk }] := [q1 ] [qk ]. Adem as, [] := . Sea M = (, Q, q0 , F , ) donde : Q (q, a)

( Q)
(q, a) := ([q ], a) .

M simula as las transiciones de M teniendo en cuenta todas las posibles trayectorias. F se dene como: F = {q Q : [q ] contiene al menos un estado de aceptaci on}. Es decir, los estados de aceptaci on de M incluyen los estados de aceptaci on de M y aquellos estados desde los cuales se puede llegar a un estado de aceptaci on por medio de una o m as transiciones . Como se puede apreciar, la construcci on de M a partir de M es puramente algor tmica.

Ejemplo

Vamos a ilustrar el anterior algoritmo con el AFN- M , pre-

sentado en el segundo ejemplo de la secci on 2.6.

48

CAP ITULO 2. AUTOMATAS FINITOS

a > q0

b q1

c q2

L(M ) = a b c . Las -clausuras de los estados vienen dadas por: [q0 ] = {q0 , q1 , q2 }. [q1 ] = {q1 , q2 }. [q2 ] = {q2 }. La funci on de transici on : Q {a, b, c} ({q0 , q1 , q2 }) es: ( q0 , a ) ( q 0 , b) ( q 0 , c ) ( q1 , a ) ( q 1 , b) ( q 1 , c ) ( q2 , a ) ( q 2 , b) ( q 2 , c ) = = = = = = = = = [([q0 ], a)] = [({q0 , q1 , q2 }, a)] = [{q0 }] = {q0 , q1 , q2 }. [([q0 ], b)] = [({q0 , q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }. [([q0 ], c)] = [({q0 , q1 , q2 }, c)] = [{q2 }] = {q2 }. [([q1 ], a)] = [({q1 , q2 }, a)] = [] = . [([q1 ], b)] = [({q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }. [([q1 ], c)] = [({q1 , q2 }, c)] = [{q2 }] = {q2 }. [([q2 ], a)] = [({q2 }, a)] = [] = . [([q2 ], b)] = [({q2 }, b)] = [] = . [([q2 ], c)] = [({q2 }, c)] = [{q2 }] = {q2 }.

El aut omata M as obtenido es el siguiente: a, b, c

> q0 a

q1 a, b

q2 b, c c

Ejercicios de la secci on 2.7

Construir AFN equivalentes a los siguientes AFN-: > q0 a, q2 b q3 b q1

2.8. TEOREMA DE KLEENE. PARTE I

49

a > q0 q3 b a q1 b b q2

2.8.

Teorema de Kleene. Parte I

En las secciones anteriores se ha mostrado la equivalencia computacional de los modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:

AFD AFN AFN-


Esto quiere decir que para cada aut omata de uno de estos tres modelos se pueden construir aut omatas equivalentes en los otros modelos. Por lo tanto, los modelos AFD, AFN y AFN- aceptan exactamente los mismos lenguajes. El Teorema de Kleene establece que tales lenguajes son precisamente los lenguajes regulares. 2.8.1. Teorema de Kleene. Un lenguaje es regular si y s olo si es aceptado por un aut omata nito (AFD o AFN o AFN-). Para demostrar el teorema consideraremos las dos direcciones por separado. Primero demostraremos que para un lenguaje regular L dado existe un AFN- tal que L(M ) = L. En la secci on 2.11 demostraremos que, a partir de un AFD M , se puede encontrar una expresi on regular R tal que L(M ) = R. En ambas direcciones las demostraciones son constructivas. Las construcciones de este cap tulo se pueden presentar as : AFN AFD
T. de Kleene II Lenguajes regulares

AFN-
T. de Kleene I

50

CAP ITULO 2. AUTOMATAS FINITOS

Parte I. Dada una expresi on regular R sobre un alfabeto , se puede construir un AFN- M tal que el lenguaje aceptado por M sea exactamente el lenguaje representado por R.
Procedimiento algor tmico

M AFN-
tal que L(M ) = R.

Expresi on regular R

Demostraci on . Puesto que la denici on de las expresiones regulares se hace recursivamente, la demostraci on se lleva a cabo razonando por inducci on sobre R. Para las expresiones regulares b asicas, podemos construir f acilmente aut omatas que acepten los lenguajes representados. As , el aut omata > q0 q1

acepta el lenguaje , es decir, el lenguaje representado por la expresi on regular R = . El aut omata > q0 acepta el lenguaje {}, es decir, el lenguaje representado por la expresi on regular R = . El aut omata > q0 a q1

acepta el lenguaje {a}, a , es decir, el lenguaje representado por la expresi on regular R = a. Paso inductivo: sup ongase que para las expresiones regulares R y S existen AFN- M1 y M2 tales que L(M1 ) = R y L(M2 ) = S . Esquem aticamente vamos a presentar los aut omatas M1 y M2 en la siguiente forma: M1 > . . . > M2 . . .

2.8. TEOREMA DE KLEENE. PARTE I

51

Los estados nales o de aceptaci on se dibujan a la derecha, pero cabe advertir que el estado inicial puede ser tambi en un estado de aceptaci on. Obviando ese detalle, podemos ahora obtener AFN- que acepten los lenguajes R S , RS y R . Aut omata que acepta R S . Los aut omatas M1 y M2 se conectan en paralelo y los estados nales del nuevo aut omata son los estados nales de M1 junto con los de M2 :

M1 . . .

> M2 . . .

Aut omata que acepta RS . Los aut omatas M1 y M2 se conectan en serie y los estados nales del nuevo aut omata son u nicamente los estados nales de M2 : M1 > . . . . . . Aut omata que acepta R . Los estados nales del nuevo aut omata son los estados nales de M1 junto con el estado inicial. M2 . . .

52

CAP ITULO 2. AUTOMATAS FINITOS

M1 > . . .

Esto concluye la demostraci on de la parte I del Teorema de Kleene. En la siguiente secci on se presentan ejemplos concretos del procedimiento utilizado en la demostraci on.

2.9.

Ejemplos de la parte I del Teorema de Kleene

De acuerdo con las construcciones presentadas en la demostraci on de la parte I del Teorema de Kleene, un AFN- que acepta el lenguaje a es: > a

Para simplicar las pr oximas construcciones utilizaremos, en su lugar, el bucle de un estado: a >

Ejemplo

Vamos a utilizar el procedimiento del teorema para construir

un AFN- que acepte el lenguaje a (ab ba) a(b a ) sobre

el alfabeto {a, b}. Aut omata que acepta ab:

a >

2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE

53

Aut omata que acepta ba:

b >

Aut omata que acepta ab ba:

a > b

Aut omata que acepta (ab ba) :

a > b

54

CAP ITULO 2. AUTOMATAS FINITOS

Aut omata que acepta a (ab ba) :

a a > b

Aut omata que acepta b a : b > a Aut omata que acepta a(b a ): b a > a

2.10. LEMA DE ARDEN

55

Aut omata que acepta a (ab ba) a(b a ):

a a b > a

Ejercicios de la secci on 2.9

Dise nar aut omatas AFN- que acepten los siguientes lenguajes sobre el alfabeto = {a, b, c}: a (b ab ab a)c (a b)(a ac) . c a(a ba) (abc) c (a cb c). (ac) a(a ab a) (abc) (cba) (c ab ba ca) (ca cb) .

2.10.

Lema de Arden

Vamos a utilizar el siguiente resultado, conocido como lema de Arden, para demostrar la segunda parte del Teorema de Kleene. 2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y A, entonces la ecuaci on X = AX B tiene una u nica soluci on dada por X = A B .

56

CAP ITULO 2. AUTOMATAS FINITOS

Demostraci on . Si X es una soluci on de X = AX B , entonces B AX B = X . Tambi en se tiene AX X ; a partir de esta contenencia y usando inducci on sobre n, se puede demostrar que An X X para todo n N. Por lo tanto An B An X X para todo n N. As que A B =
n 0

An B =
n 0

An B X.

Esto muestra que toda soluci on de X = AX B contiene a A B y es f acil vericar que, de hecho, A B es una soluci on: A(A B ) B = A+ B B = (A+ )B = A B. Para la unicidad, demostraremos que si A B C , con C A B = , es una soluci on de la ecuaci on, entonces C = . A B C = A(A B C ) B = A+ B AC B = (A+ )B AC = A B AC. Intersectando con C ambos lados de la anterior igualdad, se tiene: (A B C ) C = (A B C ) (AC C ), C = AC C. Por lo tanto, C AC . Si se tuviera C = , existir a una cadena u C de longitud m nima. Entonces u = vw, con v A, w C . Como A, v = ; por consiguiente |w| < |u|. Esta contradicci on muestra que necesariamente C = , tal como se quer a.

Ejemplo Ejemplo

La ecuaci on X = aX b ab tiene soluci on u nica X = a b ab. La ecuaci on X = a2 X b+ X ab se puede escribir en la forma

X = (a2 b+ )X ab. Por el lema de Arden la ecuaci on tiene

soluci on u nica X = (a2 b+ ) ab. Ejemplo La ecuaci on X = ab2 X aX a b b a se puede escribir como
X = (ab2 a)X (a b b a). Por lema de Arden la ecuaci on

tiene soluci on u nica X = (ab2 a) (a b b a).

2.11. TEOREMA DE KLEENE. PARTE II

57

Ejercicios de la secci on 2.10

Encontrar las soluciones ( unicas) de las siguientes ecuaciones: (i) X = aX bX. (ii) X = aX b ab bX a . ! Demostrar de si A, entonces Y es una soluci on de la ecuaci on X = AX B si y solo si Y = A (B D) para alg un D .

2.11.

Teorema de Kleene. Parte II

En esta secci on demostraremos que para todo AFN M = (, Q, q0 , F, ) existe una expresi on regular R tal que L(M ) = R. Un aut omata tiene un u nico estado inicial pero cambiando dicho estado surgen nuevos aut omatas. Para cada qi Q, sea Mi el aut omata que coincide con M pero con estado inicial qi ; m as precisamente, Mi = (, Q, qi , F, ). Al lenguaje aceptado por Mi lo denotaremos Ai ; es decir, L(Mi ) = Ai . En particular, A0 = L(M ). Puesto que los estados de aceptaci on no se han alterado, se tiene que Ai = {w : (qi , w) F = }. Cada Ai se puede escribir como {aAj : qj (qi , a)}, (2.1) Ai = a {aAj : qj (qi , a)} .
a

si qi F, si qi F.

donde cada coeciente Cij o es o es un s mbolo de . El t ermino se a nade a una ecuaci on solamente si el estado correspondiente es un estado de aceptaci on.

Si Q = {q0 , q1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un sistema de n + 1 ecuaciones con n + 1 inc ognitas (los Ai ): A0 = C01 A0 C02 A1 C0n An () A1 = C11 A0 C12 A1 C1n An () . . . . .. An = Cn1 A0 Cn2 A1 Cnn An ()

58

CAP ITULO 2. AUTOMATAS FINITOS

Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema de ecuaciones siempre se puede solucionar y su soluci on es u nica. En efecto, comenzando con la u ltima ecuaci on, se escribe An en t erminos de los dem as Ai , para lo cual se usa el lema de Arden si es necesario. Este valor de An se reemplaza en las dem as ecuaciones y el sistema se reduce a n ecuaciones con n inc ognitas. Similarmente, An1 se escribe en t erminos de los dem as Ai , usando el lema de Arden si es necesario, y tal valor se reemplaza en las ecuaciones restantes. Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuaci on cuya inc ognita es precisamente A0 . Esta ecuaci on se soluciona recurriendo una vez m as al lema de Arden. Puesto que los coecientes Cij diferentes de son s mbolos de , se obtiene una expresi on regular R tal que L(M ) = A0 = R.

2.12.

Ejemplos de la parte II del Teorema de Kleene

A continuaci on ilustraremos el procedimiento de la secci on 2.11 para encontrar L(M ) a partir de un AFN M = (, Q, q0 , F, ) dado.

Ejemplo

Consid erese el siguiente AFN M : a > q0 b a q1 a a q2 b

Por simple inspecci on sabemos que L(M ) = (a b) a2 (a b) , pero utilizaremos el m etodo descrito para encontrar expl citamente L(M ). El sistema de ecuaciones (1) (2) (3) A2 = (a b)A2 . A2 = (a b) = (a b) . asociado con el aut omata M es: A0 = aA0 bA0 aA1 A1 = aA2 A2 = aA2 bA2 .

La ecuaci on (3) se puede escribir como (4)

Aplicando el lema de Arden en (4): (5)

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

59

Reemplazando (5) en (2): (6) A1 = a(a b) . A0 = (a b)A0 a2 (a b) .

Reemplazando (6) en (1): (7)

Aplicando el lema de Arden en (7) concluimos: A0 = (a b) a2 (a b)


Ejemplo

Encontrar una expresi on regular para el lenguaje aceptado por b q2 a q3 a a

el siguiente AFN M :

a > q0 q1

b q4

Reemplazando (5) en (4): (6)

El sistema de ecuaciones asociado con el aut omata M es: (1) A0 = aA1 (2) A1 = aA2 (3) A2 = bA2 bA3 (4) A3 = aA3 bA4 (5) A4 = aA2 aA3 A3 = aA3 baA2 baA3 b = (a ba)A3 baA2 b. A3 = (a ba) (baA2 b) = (a ba) baA2 (a ba) b. A2 = bA2 b(a ba) baA2 b(a ba) b .

Aplicando el lema de Arden en (6): (7)

Reemplazando (7) en (3): (8)

El sistema original de cinco ecuaciones y cinco inc ognitas se reduce al sistema de tres ecuaciones y tres inc ognitas formado por (1), (2) y (8). La ecuaci on (8) se puede escribir como

60 (9) (10)

CAP ITULO 2. AUTOMATAS FINITOS

A2 = b b(a ba) ba A2 b(a ba) . A2 = b b(a ba) ba

Aplicando el lema de Arden en (9): b(a ba) b . Si se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en (1), se obtiene nalmente: A0 = a2 b b(a ba) ba

b(a ba) b

Ejemplo

Encontrar una expresi on regular para el lenguaje L de todas

las cadenas sobre = {a, b} que tienen un n umero par de aes

y un n umero par de bes. El siguiente aut omata acepta el lenguaje L: a > q0 a b q2 a Este aut omata da lugar al siguiente sistema de ecuaciones: (1) A0 = aA1 bA2 (2) A = aA bA 1 0 3 (3) A2 = aA3 bA0 (4) A = aA bA 3 2 1 A2 = a2 A2 abA1 bA0 . A1 = aA0 baA2 b2 A1 . b a q3 b b q1

Reemplazando (4) en (3): (5) (6) Reemplazando (4) en (2):

El sistema original de cuatro ecuaciones y cuatro inc ognitas se reduce a un sistema de tres ecuaciones y tres inc ognitas, a saber: (1) A0 = aA1 bA2 (6) A1 = aA0 baA2 b2 A1 (5) A2 = a2 A2 abA1 bA0

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

61

Aplicando el lema de Arden en (5): (7) A2 = (a2 ) (abA1 bA0 ) = (a2 ) abA1 (a2 ) bA0 . A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1 . A0 = aA1 b(a2 ) abA1 b(a2 ) bA0 .

Reemplazando (7) en (6): (8)

Reemplazando (7) en (1): (9)

Aplicando el lema de Arden en (8): (10) A1 = ba(a2 ) ab b2


El sistema se reduce ahora a dos ecuaciones: (9) A0 = aA1 b(a2 ) abA1 b(a2 ) bA0 (8) A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1 = ba(a2 ) ab b2 A1 aA0 ba(a2 ) bA0 . aA0 ba(a2 ) bA0

= ba(a2 ) ab b2 aA0 ba(a2 )ab b2 ba(a2 ) bA0 .

Haciendo R = ba(a2 ) ab b2 , (10) se puede escribir como (11) A1 = RaA0 Rba(a2 ) bA0 .

Aplicando el lema de Arden en (9): (12) A0 = b(a2 ) b


aA1 b(a2 ) abA1


= b(a2 ) b aA1 b(a2 ) b b(a2 ) abA1 b(a2 ) b .

Haciendo S = b(a2 ) b , (12) se puede escribir como: (13) A0 = SaA1 Sb(a2 ) abA1 S .

Al sustituir (11) en (13), el sistema original se reduce a una sola ecuaci on: (14) A0 = Sa RaA0 Rba(a2 ) bA0 Sb(a2 ) ab RaA0 Rba(a2 ) bA0 S. Agrupando los t erminos en los que aparece A0 y factorizando, se obtiene (15) A0 = SaRa SaRba(a2 ) b Sb(a2 )a bRa Sb(a2 ) abRba(a2 ) b A0 S. Aplicando lema de Arden en (15): (16) A0 = SaRa SaRba(a2 ) b Sb(a2 ) abRa Sb(a2 ) abRba(a2 ) b S. Si sustituimos R y S en (16) obtenemos una expresi on regular para L.

62

CAP ITULO 2. AUTOMATAS FINITOS

Ejercicios de la secci on 2.12

Utilizando el lema de Arden, encontrar expresiones regulares para los siguientes lenguajes sobre = {a, b}: (i) El lenguaje L de todas las cadenas que tienen un n umero par de aes y un n umero impar de bes. (ii) El lenguaje L de todas las cadenas que tienen un n umero par de aes o un n umero impar de bes. Utilizando el lema de Arden, encontrar expresiones regulares para los lenguajes aceptados por los siguientes AFN: (i) b a > q0 b
q1

a
q2

q3

b (ii) b > q0 b q1 a q2 b q3 b a q4

Cap tulo

Otras propiedades de los lenguajes regulares


En los dos cap tulos anteriores hemos presentado las propiedades b asicas de los lenguajes regulares pero no hemos visto c omo se puede demostrar que un lenguaje no es regular. El llamado lema de bombeo, expuesto en este cap tulo, sirve para tal prop osito. Tambi en veremos que la regularidad es una propiedad que se preserva por las operaciones booleanas usuales, por homomorsmos y por las im agenes inversas de homomorsmos. Finalmente, analizaremos ciertos problemas de decisi on referentes a aut omatas y a lenguajes regulares.

3.1.

Lema de bombeo

El llamado lema de bombeo (pumping lemma, en ingl es) es una propiedad de los lenguajes regulares que es muy u til para demostrar que ciertos lenguajes no son regulares. 3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabeto dado ) existe una constante n N, llamada constante de bombeo para L, tal que toda cadena w L, con |w| n, satisface la siguiente propiedad: (B ) w se puede descomponer como w = uvx, con |uv | n, v = , y para todo i 0 se tiene uv i x L.

Demostraci on . Por el Teorema de Kleene y por los teoremas de equivalencia de los modelos AFD, AFN y AFN-, existe un AFD M tal que L(M ) = L. 63

64 Sea

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

n = # de estados de M. Si w L y |w| n, entonces durante el procesamiento completo de w, hay por lo menos un estado que se repite. Sea q el primer estado que se repite. Tal como se muestra en la siguiente gr aca, w se puede descomponer como w = uvx, donde |uv | n, v = . w q0 u q v q x p

N otese que tanto u como x pueden ser la cadena vac a , pero v = . Adem as, la cadena v se puede bombear, en el sentido de que uv i x es aceptada por M para todo i 0. En el diagrama de estados, se puede visualizar esta propiedad de bombeo de v : v u > q0 q x p

Uso del lema de bombeo. El lema de bombeo se puede usar para concluir que un cierto lenguaje dado L no es regular, recurriendo a un razonamiento por contradicci on (o reducci on al absurdo). El razonamiento utilizado tiene la siguiente forma: 1. Si L fuera regular, existir a una constante de bombeo n para L. 2. Se escoge una cadena adecuada w L y se aplica la propiedad (B ) del lema de bombeo, descomponiendo w como w = uvx, v = , |uv | n.

3. Se llega a la siguiente contradicci on: (I) Por el lema de bombeo, uv i x L, para todo i 0.

3.1. LEMA DE BOMBEO

65

(II) uv i x no puede estar en L, para alg un i I . Por lo general, basta escoger valores peque nos de i como i = 0 o i = 2.

Ejemplo

Usar el lema de bombeo para demostrar que el lenguaje L =

{ai bi : i 0} no es regular.

a una constante de bombeo n para L. Soluci on. Si L fuera regular, existir Sea w = an bn L. Entonces w se puede descomponer como w = uvx, con |v | 1 y |uv | n. Por lo tanto, u y v constan u nicamente de aes: u = ar , v = as , Entonces, x = a n ( r + s ) bn = a n r s bn . Por el lema de bombeo, uv i x L para todo i 0. En particular, si i = 0, ux L. Pero ux = ar anrs bn = ans bn . Como n s = n, la cadena ux / L lo cual es una contradicci on. Se concluye entonces que L no puede ser regular. Tomando i = 2 tambi en se llega a una contradicci on: por un lado, uv 2 x L, pero uv 2 x = ar as as anrs bn = ar+2s+nrs bn = an+s bn . Como s 1, an+s bn no est a en L. El argumento anterior tambi en sirve para demostrar que el lenguaje L = {ai bi : i 1} no es regular.

para alg un r 0, para alg un s 1.

Ejemplo

Demostrar que el lenguaje de los pal ndromos sobre {a, b} no

es un lenguaje regular. Recu erdese que un pal ndromo es una

cadena w tal que w = wR . a una constante de bombeo n para L. Soluci on. Si L fuera regular, existir Sea w = an ban L. Entonces w se puede descomponer como w = uvx, con |v | 1, |uv | n, y para todo i 0, uv i x L. Por lo tanto, u y v constan u nicamente de aes: u = ar , v = as , Entonces, x = an(r+s) ban = anrs ban . para alg un r 0, para alg un s 1.

66

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Tomando i = 0, se concluye que ux L, pero ux = ar anrs ban = ans ban . Como s 1, ans ban no es un pal ndromo. Esta contradicci on muestra que L no puede ser regular.

Ejemplo

Demostrar que el lenguaje L = ai : i 0 no es regular. L est a formado por cadenas de aes cuya longitud es un cuadrado

perfecto. Soluci on. Si L fuera regular, existir a una constante de bombeo n para L. 2 Sea w = an L. Entonces w se puede descomponer como w = uvx, con |v | 1, |uv | n. Por el lema de bombeo, uv 2 x L, pero por otro lado, n2 < n2 + |v | = |uvx| + |v | = |uv 2 x| n2 + |uv | n2 + n < (n + 1)2 . Esto quiere decir que el n umero de s mbolos de la cadena uv 2 x no es un cuadrado perfecto y, por consiguiente, uv 2 x L. En conclusi on, L no es regular.

Ejercicios de la secci on 3.1

Usar el lema de bombeo para demostrar que los siguientes lenguajes no son regulares: (i) L = {w {a, b} : w tiene el mismo n umero de aes que de bes}. (ii) L = {ai bai : i 1}, sobre = {a, b}. (iii) L = {ai bj ai : i, j 0}, sobre = {a, b}. (iv) L = {0i 12i : i 0}, sobre = {0, 1}. (v) L = {1i 01i 0 : i 1}, sobre = {0, 1}. (vi) L = {ai bj ci+j : i, j 0}, sobre = {a, b, c}. (vii) L = {ai bj : j > i 0}, sobre = {a, b}. (viii) L = {ww : w }, siendo = {a, b}. (ix) L = {wwR : w }, siendo = {a, b}. (x) L = {ai : i es un n umero primo}, sobre = {a}. Es L = {(ab)i : i 0} un lenguaje regular? Encontrar la falacia en el siguiente argumento: Seg un la propiedad (B ) del enunciado del lema de bombeo, se tiene que uv i x L para todo i 0. Por consiguiente, L posee innitas cadenas y, en conclusi on, todo lenguaje regular es innito.

3.2. PROPIEDADES DE CLAUSURA

67

3.2.

Propiedades de clausura

Las propiedades de clausura arman que a partir de lenguajes regulares se pueden obtener otros lenguajes regulares por medio de ciertas operaciones entre lenguajes. Es decir, la regularidad es preservada por ciertas operaciones entre lenguajes; en tales casos se dice que los lenguajes regulares son cerrados bajo las operaciones. El siguiente teorema establece que la colecci on R ( ) de los lenguajes regulares sobre un alfabeto es cerrada bajo todas las operaciones booleanas. 3.2.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto , tambi en lo son: (1) L1 L2 (2) L1 L2 (3) L (4) L+ (5) L = L (6) L1 L2 (7) L1 L2 (8) L1 L2 Demostraci on . (uni on) (concatenaci on) (estrella de Kleene) (clausura positiva) (complemento) (intersecci on) (diferencia) (diferencia sim etrica)

(1), (2) y (3) se siguen de la denici on de los lenguajes regulares. (4) Por (2), (3) y L+ = L L. (5) Por el Teorema de Kleene y por los teoremas de equivalencia de los modelos AFD, AFN y AFN-, existe un AFD M = (, Q, q0 , F, ) tal que L(M ) = L. Para construir un AFD que acepte el complemento de L basta intercambiar los estados nales con los no nales. Si M es el aut omata (, Q, q0 , Q F, ), entonces L(M ) = L. (6) Se sigue de (1) y (5) teniendo en cuenta que L1 L2 = L1 L2 . (7) Se sigue de (5) y (6) teniendo en cuenta que L1 L2 = L1 L2 . (8) Puesto que L1 L2 = (L1 L2 ) (L1 L2 ) = (L1 L2 ) (L2 L1 ) el resultado se sigue de (1), (6), (7).

68

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

(X ) cerrada bajo las operaciones de uni on, intersecci on y complemento,


tal que A, X A.

Recu erdese que un algebra booleana de conjuntos es una familia A

3.2.2 Corolario. La colecci on R ( ) de todos los lenguajes regulares sobre un alfabeto es un algebra booleana de conjuntos. Demostraci on . Se sigue del Teorema 3.2.1 y del hecho de que y son lenguajes regulares sobre .  Hemos visto que un lenguaje nito es regular y que la uni on nita de lenguajes regulares es regular. Pero una uni on innita de lenguajes regulares no necesariamente es regular; consid erese, por ejemplo, L = {an bn : n 1} = {ai bi }.
i 1

Cada conjunto {ai bi } es regular (porque posee s olo una cadena) pero L no lo es.  Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente regular, es decir, la familia de los lenguajes regulares no es cerrada para subconjuntos. Dicho de otra forma, un lenguaje regular puede contener sublenguajes no-regulares. Por ejemplo, L = {an bn : n 1} es un sublenguaje del lenguaje regular a b , pero L mismo no es regular.

Las propiedades de clausura permiten concluir, razonando por contradicci on, que ciertos lenguajes no son regulares. Esto se ilustra en los siguientes ejemplos en los que se usa el hecho de que los lenguajes L = {ai bi : i 0} y L = {ai bi : i 1} no son regulares.

Ejemplo Ejemplo

L = {ai bj : i, j 0, i = j } no es regular. Si lo fuera, a b L tambi en lo ser a, pero a b L = {ai bi : i 0}.

El lenguaje L = {wbn : w , |w| = n, n 1} sobre

= {a, b} no es regular. Si L fuera regular, tambi en lo ser a

L a b pero L a b = {an bn : n 1}.


Ejercicios de la secci on 3.2

Demostrar que a b es la uni on de dos lenguajes disyuntos no-regulares.

3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

69

Sea L un lenguaje no-regular y N un subconjunto nito de L. Demostrar que L N tampoco es regular. Demostrar o refutar las siguientes armaciones: (i) Un lenguaje no-regular debe ser innito. (ii) Si el lenguaje L1 L2 es regular, tambi en lo son L1 y L2 . (iii) Si los lenguajes L1 y L2 no son regulares, el lenguaje L1 L2 tampoco puede ser regular. (iv) Si el lenguaje L es regular, tambi en lo es L. (v) Si L es regular y N es un subconjunto nito de L, entonces L N es regular. (vi) Un lenguaje regular L es innito si y s olo si en cualquier expresi on regular de L aparece por lo menos una . Utilizar las propiedades de clausura para concluir que los siguientes lenguajes no son regulares: (i) L = {1i 01j 0 : i, j 1, i = j }, sobre = {0, 1}. Ayuda: utilizar el ejercicio 1(v) de la secci on 3.1. (ii) L = {uvuR : u, v {a, b}+ }, sobre = {a, b}. Ayuda: utilizar el ejercicio 1(ii) de la secci on 3.1. (iii) L = {u : |u| es un cuadrado perfecto}, sobre = {a, b, c}. Ayuda: utilizar el u ltimo ejemplo de la secci on 3.1.

3.3.

Propiedades de clausura para aut omatas

Las propiedades de clausura del Teorema 3.2.1 se pueden enunciar como procedimientos algor tmicos para la construcci on de aut omatas nitos. 3.3.1 Teorema. Sean M , M1 y M2 aut omatas nitos (ya sean AFD o AFN o AFN-) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir aut omatas nitos que acepten los siguientes lenguajes: (1) (2) (3) (4) L1 L2 . L1 L2 . L . L+ . (5) (6) (7) (8) L = L. L1 L2 . L1 L2 . L1 L2 .

Demostraci on . La construcci on de aut omatas para L1 L2 , L1 L2 , L y L+ se present o en la demostraci on de la parte I del Teorema de Kleene. En el

70

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

numeral (5) del Teorema 3.2.1 se vio c omo se puede construir un AFD M que acepte L a partir de un AFD M que acepte L. Los procedimientos de construcci on de (1), (2), (3), (4) y (5) se pueden combinar para obtener aut omatas que acepten los lenguajes L1 L2 , L1 L2 y L1 L2 . Para dise nar un aut omata que acepte L1 L2 , seg un el argumento del Teorema 3.3.1, hay que usar la igualdad L1 L2 = L1 L2 y los procedimientos para uni on, complemento, eliminaci on de transiciones y eliminaci on del no-determinismo. El siguiente teorema muestra que existe una construcci on m as sencilla para el caso L1 L2 . 3.3.2 Teorema. Sean M1 = (, Q1 , q1 , F1 , 1 ) y M2 = (, Q2 , q2 , F2 , 2 ) dos AFD. Entonces el AFD M = (, Q1 Q2 , (q1 , q2 ), F1 F2 , ) donde : (Q1 Q2 ) Q1 Q2 ((qi , qj ), a) = (1 (qi , a), 2 (qj , a))

satisface L(M ) = L(M1 ) L(M2 ). Demostraci on . Sea w . La conclusi on del teorema se sigue demostrando primero por inducci on sobre w que ((q1 , q2 ), w) = (1 (q1 , w), 2 (q2 , w)) para toda cadena w (aqu se usan las funciones extendidas de , 1 y 2 , seg un la denici on 2.5.2). Finalmente, se observa que: w L(M )

((q1 , q2 ), w) F1 F2 (1 (q1 , w), 2 (q2 , w)) F1 F2 (q1 , w) F1 & (q2 , w) F2 w L ( M1 ) & w L ( M2 ) w L ( M 1 ) L ( M2 ) .

Ejemplo

Utilizar el Teorema 3.3.2 para construir un AFD que acepte el

lenguaje L de todas las cadenas sobre = {a, b} que tienen

un n umero par de aes y un n umero par de bes. AFD M1 que acepta las cadenas con un n umero par de aes: b > q1 a a b q3

3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

71

AFD M2 que acepta las cadenas con un n umero par de bes: a > q2 b Entonces L = L(M1 ) L(M2 ). El nuevo aut omata tiene 4 estados: (q1 , q2 ), (q1 , q4 ), (q3 , q2 ) y (q3 , q4 ); el u nico estado de aceptaci on es (q1 , q2 ). Su funci on de transici on es ((q1 , q2 ), a) = (1 (q1 , a), 2 (q2 , a)) = (q3 , q2 ) ((q1 , q2 ), b) = (1 (q1 , b), 2 (q2 , b)) = (q1 , q4 ) ((q1 , q4 ), a) = (1 (q1 , a), 2 (q4 , a)) = (q3 , q4 ) ((q1 , q4 ), b) = (1 (q1 , b), 2 (q4 , b)) = (q1 , q2 ) ((q3 , q2 ), a) = (1 (q3 , a), 2 (q2 , a)) = (q1 , q2 ) ((q3 , q2 ), b) = (1 (q3 , b), 2 (q2 , b)) = (q3 , q4 ) ((q3 , q4 ), a) = (1 (q3 , a), 2 (q4 , a)) = (q1 , q4 ) ((q3 , q4 ), b) = (1 (q3 , b), 2 (q4 , b)) = (q3 , q2 ) El diagrama de estados del aut omata as obtenido es: b > ( q1 , q2 ) b a a b ( q3 , q2 ) b

a q4

( q1 , q4 )

( q3 , q4 )

Ejercicios de la secci on 3.3

Utilizar el Teorema 3.3.2 para construir AFD que acepten los siguientes los siguientes lenguajes sobre el alfabeto {a, b, c}: (i) El lenguaje L de todas las cadenas que tienen longitud par y terminan en a.

72

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

(ii) El lenguaje L de todas las cadenas de longitud par que tengan un n umero impar de bes. (iii) El lenguaje L de todas las cadenas de longitud impar que tengan un n umero par de ces. (iv) El lenguaje L de todas las cadenas de longitud impar que tengan exactamente dos aes. Utilizar el procedimiento del Teorema 3.3.1 para construir un aut omata que acepte el lenguaje L de todas las cadenas sobre = {a, b} que tienen un n umero par de aes y un n umero par de bes. Comp arese con el AFD construido en el u ltimo ejemplo de esta secci on.

3.4.

Homomorsmos

Un homomorsmo es una sustituci on h que reemplaza cada s mbolo a de un alfabeto de por una cadena h(a) , donde es otro alfabeto (por supuesto, y pueden ser el mismo alfabeto). M as precisamente, un homomorsmo es una funci on h : tal que h() = y para toda cadena u = a1 a2 an , con ai , se tiene h(a1 a2 an ) = h(a1 )h(a2 ) h(an ). Un homomorsmo h est a completamente determinado por sus im agenes en los s mbolos de , es decir, por los valores h(a), con a .

Ejemplo

Sean = {a, b, c}, = {0, 1} y h : el homomorsmo

denido por h(a) = 0, h(b) = 1 y h(c) = 010. El homomorsmo

h convierte cadenas de en cadenas de siguiendo las siguientes reglas: cada a se reemplaza por 0, cada b por 1 y cada c se reemplaza por la cadena 010. As , h(a2 b2 ) = h(aabb) = h(a)h(a)h(b)h(b) = 0011. h(acb2 c) = h(a)h(c)h(b)2 h(b) = 001011010. Tambi en se deduce f acilmente que h(a b c ) = 0 1 (010) . El siguiente teorema arma que los homomorsmos preservan lenguajes regulares; dicho de otra manera, la imagen homomorfa de un lenguaje regular es un lenguaje regular. 3.4.1 Teorema. Sea h : un homomorsmo.

3.4. HOMOMORFISMOS

73

(1) Para cadenas u, v y lenguajes A, B se tiene h(uv ) = h(u)h(v ), h(A B ) = h(A) h(B ), h(AB ) = h(A)h(B ), h(A ) = [h(A)] . (2) Si L es un lenguaje regular sobre , entonces h(L) es un lenguaje regular sobre . Demostraci on . (1) Se sigue directamente de la denici on de homomorsmo; los detalles se dejan al estudiante. (2) Por inducci on sobre el n umero de operandos (uniones, concatenaciones y estrellas) en la expresi on regular que representa a L. La base de la inducci on es inmediata ya que h() = , para cada a , h(a) es una cadena determinada en y h() = . La hip otesis de inducci on arma que si L es regular tambi en lo es h(L). Para el paso inductivo se supone, en tres casos, que L = A B , L = AB o L = A . Utilizando la hip otesis de inducci on y la parte (1) del presente teorema se llega a la conclusi on deseada. La parte (2) del Teorema 3.4.1 es muy u til para demostrar que ciertos lenguajes no son regulares, razonando por contradicci on. En los siguientes ejemplos ilustramos la t ecnica que se usa en estas situaciones.

Ejemplo

Sabiendo que {ai bi : i 1} no es regular (secci on 3.1), pode-

mos concluir que L = {0i 1i : i 1} tampoco lo es. Razonamos

de la siguiente manera: si L fuera regular, lo ser a tambi en h(L) donde h es el homomorsmo h(0) = a, h(1) = b. Pero h(L) = {h(0)i h(1)i : i 1} = {ai bi : i 1}. Por consiguiente, L no es regular.

Ejemplo

L = {0n 21n : n 1} no es regular; si lo fuera, h(L) tambi en

lo ser a, donde h es el homomorsmo h(0) = 0, h(1) = 1,

h(2) = . Pero h(L) = {0n 1n : n 1} no es regular, como se dedujo en el ejemplo anterior.


Ejercicios de la secci on 3.4

Llenar los detalles de la demostraci on de la parte (1) del Teorema 3.4.1.

74

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Utilizar homomorsmos y el hecho de que los lenguajes {ai bi : i 1} y {0i 1i : i 1} no son regulares para concluir que los siguientes lenguajes tampoco lo son: (i) L = {ai baj : i, j 1, i = j }, sobre = {a, b}. (ii) L = {ai bi ci : i 1}, sobre = {a, b, c}. (iii) L = {ai bj ci : i, j 1}, sobre = {a, b, c}. (iv) L = {0i 1j 2k : i, j, k 0, i + j = k }, sobre = {a, b, c}.

3.5.

Imagen inversa de un homomorsmo

Dado un homomorsmo h : y un lenguaje B , la imagen inversa de A por h es h1 (B ) := {u : h(u) B }. La regularidad es tambi en preservada por im agenes inversas de homomorsmos, tal como lo arma el siguiente teorema. 3.5.1 Teorema. Sea h : un homomorsmo y B un lenguaje regular sobre . La imagen inversa h1 (B ) es un lenguaje regular sobre . Demostraci on . Comenzando con un AFD M = (, Q, q0 , F, ) que acepte a B podemos construir un AFD M = (, Q, q0 , F, ) que acepte h1 (B ). La funci on de transici on se dene mediante (q, a) = (q, h(a)) (aqu se usa la funci on extendida , seg un la denici on 2.5.2). No es dif cil demostrar por inducci on sobre w que (q0 , w) = (q0 , h(w)), para toda cadena w . Como los estados de aceptaci on de M y M coinciden, M acepta a w si y s olo si M acepta a h(w). Por lo tanto, w L(M ) h(w) L(M ) = B w h1 (B ) Esto quiere decir que L(M ) = h1 (B ). Con la ayuda del Teorema 3.5.1 y de las dem as propiedades de clausura tambi en podemos concluir que ciertos lenguajes no son regulares. El lenguaje L = {0n 10n : n 1} no es regular ya que si lo fuera, tambi en lo ser a h1 (L) donde h es el homomorsmo h(0) = h(1) = 0, h(2) = 1. Pero Ejemplo h1 (L) = {0, 1}n 2{0, 1}n : n 1 .

3.6. ALGORITMOS DE DECISION

75

Entonces h1 (L) 0 21 ser a regular; este u ltimo lenguaje es igual a {0n 21n : n 1}. Finalmente, por medio del homomorsmo g (0) = 0, g (1) = 1, g (2) = se concluir a que g {0n 21n : n 1} = {0n 1n : n 1} es regular, lo cual sabemos que no es cierto.

Ejercicios de la secci on 3.5

Por medio de un razonamiento similar al del ejemplo de esta secci on, demostrar que los siguientes lenguajes sobre = {0, 1} no son regulares: L = {ww : w }. Ayuda: intersectar primero L con 0 10 1. L = {wwR : w }. Ayuda: intersectar primero L con 0 110 .

3.6.

Algoritmos de decisi on
Un algoritmo es un procedimiento sistem atico, claro y preciso, que termina en un n umero nito de pasos para cualquier entrada dada.

La noci on de algoritmo que consideraremos en esta secci on es la corriente:

Dada una propiedad P, referente a aut omatas sobre un alfabeto , un problema de decisi on para P consiste en buscar un algoritmo, aplicable a un aut omata arbitrario M , que responda SI o NO a la pregunta: satisface M la propiedad P? El siguiente diagrama ilustra la situaci on.

SI M satisface P

Aut omata M

Algoritmo de decisi on

NO

M no satisface P

Si existe un algoritmo de decisi on, se dice que el problema P es decidible o resoluble; en caso contrario, el problema P es indecidible o irresoluble.

76

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Es importante tener presente que, para que un problema P sea decidible, no basta responder SI o NO a la pregunta satisface M la propiedad P? para uno o varios aut omatas aislados M ; es necesario exhibir un algoritmo aplicable a todos los aut omatas. Es posible que en algunos casos concretos se pueda decidir armativa o negativamente sobre la satisfabilidad de una propiedad P y, sin embargo, el problema P sea indecidible. El primer problema de decisi on que consideraremos es el problema de decidir si un aut omata M acepta o no alguna cadena; es decir, decidir si L(M ) = o L(M ) = . Este problema, llamado problema de la vacuidad, diere del siguiente problema P: Dado un aut omata (AFD o AFN o AFN-) M y una cadena w , acepta M la cadena w?

En el problema P anterior las entradas son aut omatas M y cadenas w ; para resolverlo es suciente el siguiente algoritmo: convertir M en un AFD M (utilizando los algoritmos ya conocidos para tal efecto) y luego procesar w con M . S olo habr a dos salidas: M acepta a w o M no acepta a w. El problema de la vacuidad no se puede resolver usando esta misma idea porque no podemos examinar todas las entradas w (hay innitas cadenas w). Se requiere entonces una idea diferente, como la presentada en el siguiente teorema. 3.6.1 Teorema. Sea un alfabeto dado. Existe un algoritmo para el siguiente problema de decisi on referente a aut omatas sobre : Dado un aut omata (AFD o AFN o AFN-) M , Es L(M ) = ? (es decir, acepta M alguna cadena?). Demostraci on . Podemos dise nar un algoritmo sencillo para encontrar los estados que son accesibles (o alcanzables) desde el estado inicial de M , es decir, los estados para los cuales existen trayectorias desde el estado inicial. Si alg un estado de aceptaci on es alcanzable, se tendr a L(M ) = ; en caso contrario L(M ) = . En el recuadro de la parte superior de la p agina siguiente aparece el algoritmo para encontrar el conjunto ALC de estados alcanzables. Claramente, el aut omata M acepta alguna cadena (o sea, L(M ) = ) si y solo si ALC contiene alg un estado de aceptaci on. 3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los siguientes problemas de decisi on referentes a aut omatas sobre :

3.6. ALGORITMOS DE DECISION

77

INICIALIZAR: ALC := {q0 }, donde q0 es el estado inicial de M . REPETIR: Para cada q ALC buscar los arcos que salen de q y a nadir a ALC los estados p para los cuales haya un arco de q a p con cualquier etiqueta (puede ser ). HASTA: No se a naden nuevos estados a ALC.

(1) Dados dos aut omatas M1 y M2 (AFD o AFN o AFN-), L(M1 ) L ( M2 ) ? (2) Dados dos aut omatas M1 y M2 (AFD o AFN o AFN-), L(M1 ) = L ( M2 ) ? Demostraci on . (1) Sea L1 = L(M1 ) y L2 = L(M2 ). Se tiene L1 L2 L1 L2 = . Algoritmo: construir un AFD M que acepte el lenguaje L1 L2 (esto se puede hacer en raz on de la parte (7) del Teorema 3.3.1). Utilizar luego el procedimiento del Teorema 3.6.1 para decidir si L1 L2 es o no vac o. (2) L(M1 ) = L(M2 ) L(M1 ) L(M2 ) y L(M2 ) L(M1 ). Por lo tanto, basta aplicar dos veces el algoritmo de la parte (1). Tambi en se puede encontrar un algoritmo de decisi on teniendo en cuenta que L1 = L2 L1 L2 = junto con la parte (8) del Teorema 3.3.1. El argumento utilizado en la demostraci on del lema de bombeo sirve para establecer un criterio que permite decidir si el lenguaje aceptado por un aut omata es o no innito. El criterio aparece en el siguiente teorema. 3.6.3 Teorema. Sea M un AFD con n estados y sea L = L(M ). L es innito si y solo si M acepta una cadena w tal que n |w| < 2n. on del Demostraci on . Si w M y n |w| < 2n, entonces por la demostraci lema de bombeo, w se puede descomponer como w = uvx, donde |uv | n, v = . M acepta innitas cadenas: uv i x para todo i 0.

78

CAP ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Rec procamente, si L es innito, existe w L con |w| n. Por la demostraci on del lema de bombeo, w = uvx donde |uv | n, v = . Si |w| < 2n la demostraci on termina. Si |w| 2n, puesto que |v | |uv | n, se tendr a |ux| n y ux L. De nuevo, si |ux| < 2n, la demostraci on termina; en caso contrario, se prosigue de esta forma hasta encontrar una cadena en L cuya longitud satisfaga n < 2n. 3.6.4 Corolario. Sea un alfabeto dado. Existe un algoritmo para el siguiente problema de decisi on referente a aut omatas sobre : Dado un aut omata M (AFD o AFN o AFN-), Es L(M ) innito? Demostraci on . Algoritmo: construir un AFD M que acepte el lenguaje L(M ) y chequear la aceptaci on o rechazo de todas las cadenas w tales que n |w| < 2n, donde n = # de estados de M . Hemos trabajado con problemas de decisi on referentes a aut omatas, pero tambi en podemos considerar problemas sobre lenguajes regulares. Dada una propiedad P, referente a lenguajes regulares sobre un alfabeto , un problema de decisi on para P consiste en buscar un algoritmo, aplicable a todo lenguaje regular L (es decir, a toda expresi on regular R), que responda SI o NO a la pregunta: satisface L la propiedad P? Puesto que conocemos algoritmos de conversi on entre la representaci on por expresiones regulares y la representaci on por aut omatas, los problemas decidibles sobre aut omatas corresponden a problemas decidibles sobre lenguajes regulares y viceversa. As por ejemplo, en raz on del Corolario 3.6.4, el siguiente problema es decidible: Dada una expresi on regular R, es L(R) innito?

Ejercicios de la secci on 3.6

Sea un alfabeto dado. Encontrar algoritmos para los siguientes problemas de decisi on referentes a aut omatas sobre : (i) Dado un aut omata M (AFD o AFN o AFN-), es L(M ) = ? (ii) Dado un aut omata M (AFD o AFN o AFN-), acepta M todas las cadenas de longitud impar? (iii) Dado un aut omata M (AFD o AFN o AFN-) y una cadena w , acepta M la cadena wwR ? (iv) Dados dos aut omatas M1 y M2 (AFD o AFN o AFN-), existe alguna cadena que no sea aceptada por ninguno de los aut omatas M1 y M2 ?

3.6. ALGORITMOS DE DECISION

79

(v) Dado un aut omata M (AFD o AFN o AFN-), es L(M ) conito? (Un conjunto es conito si su complemento es nito). (vi) Dado un aut omata M (AFD o AFN o AFN-), acepta M alguna cadena de longitud 1250? Ayuda: hay un n umero nito de cadenas con longitud 1250. (vii) Dado un aut omata M (AFD o AFN o AFN-), acepta M alguna cadena de longitud mayor que 1250? Ayuda: habr a un n umero innito de cadenas por examinar; usar el Teorema 3.6.3. (viii) Dado un aut omata M (AFD o AFN o AFN-), acepta M por lo menos 1250 cadenas? Ayuda: usar la misma idea del problema (vii). ! Encontrar algoritmos de decisi on, que no utilicen aut omatas, para resolver los siguientes problemas: (i) Dada una expresi on regular R, es L(R) = ? Ayuda: puesto que las expresiones regulares se denen recursivamente, el algoritmo requiere descomponer la expresi on R y utilizar criterios de vacuidad para la estrella de Kleene, la uni on y la concatenaci on de lenguajes. (ii) Dada una expresi on regular R, contiene L(R) por lo menos 150 cadenas?   Al considerar problemas de decisi on lo importante es la existencia o no de algoritmos de decisi on, no tanto la eciencia de los mismos. En el Cap tulo 7 se mostrar a que existen problemas indecidibles, es decir, problemas para los cuales no hay algoritmos de decisi on.

Cap tulo

Lenguajes y gram aticas independientes del contexto


Como se ha visto, los aut omatas son dispositivos que procesan cadenas de entrada. En cap tulos posteriores consideraremos modelos de aut omatas con mayor poder computacional que el de los modelos AFD, AFN y AFN-. En el presente cap tulo estudiaremos una noci on completamente diferente, aunque relacionada, la de gram atica generativa, que es un mecanismo para generar cadenas a partir de un s mbolo inicial. Los aut omatas procesan cadenas Las gram aticas generan cadenas

4.1.

Gram aticas generativas

Las gram aticas generativas fueron introducidas por Noam Chomsky en 1956 como un modelo para la descripci on de los lenguajes naturales (espa nol, ingl es, etc). Chomsky clasic o las gram aticas en cuatro tipos: 0, 1, 2 y 3. Las gram aticas de tipo 2, tambi en llamadas gram aticas independientes del contexto, se comenzaron a usar en la d ecada de los sesenta para presentar la sintaxis de lenguajes de programaci on y para el dise no de analizadores sint acticos en compiladores. En este curso u nicamente tendremos oportunidad de estudiar gram aticas de tipos 2 y 3. El estudiante puede pasar directamente a la secci on 4.2; el resto de la presente secci on es material (opcional) de referencia. Una gram atica generativa es una cu adrupla, G = (V, , S, P ) formada 81

82

LENGUAJES LIC Y GRAMATICAS GIC

por dos alfabetos disyuntos V (alfabeto de variables o no-terminales ) y (alfabeto de terminales ), una variable especial S V (llamada s mbolo inicial ) y un conjunto nito P (V ) (V ) de producciones o reglas de re-escritura. Una producci on (v, w) P se denota por v w y se lee v produce w; v se denomina la cabeza y w el cuerpo de la producci on. Se exige que la cabeza de la producci on tenga por lo menos una variable. El signicado de la producci on v w es: la cadena v se puede reemplazar (sobre-escribir) por la cadena w. Comenzando con el s mbolo inicial S y aplicando las producciones de la gram atica, en uno o m as pasos, se obtienen cadenas de terminales y/o no-terminales. Aquellas cadenas que s olo tengan terminales conforman lo que se denomina el lenguaje generado por G. Las gram aticas se clasican de acuerdo con el tipo de sus producciones: Gram aticas de tipo 0. No tienen restricciones. Tambi en se llaman gram aticas no-restringidas o gram aticas con estructura de frase en raz on de su origen ling u stico. Gram aticas de tipo 1. Las producciones son de la forma u1 Au2 v1 wv2 , donde A es una variable y w = . Tambi en se llaman gram aticas sensibles al contexto o gram aticas contextuales. Gram aticas de tipo 2. Las producciones son de la forma A w donde A es una variable. Tambi en se llaman gram aticas independientes del contexto o gram aticas no-contextuales. Gram aticas de tipo 3. Las producciones son de la forma A a o de la forma A aB , donde A y B son variables y a es un s mbolo terminal. Tambi en se llaman gram aticas regulares. Se dice que un lenguaje es de tipo i si es generado por una gram atica de tipo i. Esta clasicaci on de lenguajes se conoce como la jerarqu a de Chomsky.

4.2.

Gram aticas independientes del contexto

Una gram atica independiente del contexto (GIC), tambi en llamada gram atica no-contextual o gram atica de tipo 2, es una cu adrupla, G = (V, , S, P ) formada por: 1. Un alfabeto V cuyos elementos se llaman variables o s mbolos noterminales.

4.2. GRAMATICAS INDEPENDIENTES DEL CONTEXTO

83

2. Un alfabeto cuyos elementos se llaman s mbolos terminales. Se exige que los alfabetos y V sean disyuntos. 3. Una variable especial S V , llamada s mbolo inicial de la gram atica. 4. Un conjunto nito P V (V ) de producciones o reglas de re-escritura. Una producci on (A, w) P de G se denota por A w y se lee A produce w; su signicado es: la variable A se puede reemplazar (sobre-escribir) por la cadena w. En la producci on A w, A se denomina la cabeza y w el cuerpo de la producci on. Notaci on y deniciones. Las variables se denotan con letras may usculas A, B, C, . . . Los elementos de o s mbolos terminales se denotan con letras min usculas a, b, c, . . .. Si u, v (V ) y A w es una producci on, se dice que uwv se deriva directamente de uAv , lo cual se denota por uAv = uwv. Si se quiere hacer referencia a la gram atica G, se escribe uAv = uwv
G

o uAv =G uwv.

Si u1 , u2 , . . . , un son cadenas en (V ) y hay una sucesi on de derivaciones directas G G G u1 = u2 , u2 = u3 , . . . , un1 = un se dice que un se deriva de u1 y se escribe u1 = un . La anterior sucesi on de derivaciones directas se representa como u1 = u2 = u3 = = un1 = un y se dice que es una derivaci on o una generaci on de un a partir de u1 . Para toda cadena w se asume que w = w; por lo tanto, u = v signica que v se obtiene de u utilizando cero, una o m as producciones + de la gram atica. An alogamente, u = v signica que v se obtiene de u utilizando una o m as producciones. El lenguaje generado por una gram atica G se denota por L(G) y se dene como + L(G) := {w : S = w}. Un lenguaje L sobre un alfabeto se dice que es un lenguaje independiente del contexto (LIC) si existe una GIC G tal que L(G) = L. Dos GIC G1 y G2 son equivalentes si L(G1 ) = L(G2 ).

84

LENGUAJES LIC Y GRAMATICAS GIC

La denominaci on independiente del contexto proviene del hecho de cada producci on o regla de re-escritura A w se aplica a la variable A independientemente de los caracteres que la rodean, es decir, independientemente del contexto en el que aparece A.

Ejemplo

Sea G una gram atica (V, , S, P ) dada por: V = {S } = {a} P = {S aS, S }

Se tiene S = y S = aS = a aS = a a. Por consiguiente, L(G) = a . De manera m as simple, podemos presentar una gram atica GIC listando sus producciones y separando con el s mbolo | las producciones de una misma variable. Se supone siempre que las letras may usculas representan variables y las letras min usculas representan s mbolos terminales. As la gram atica del ejemplo anterior se presenta simplemente como: S aS | .

Ejemplo

La gram atica G = (V, , S, P ) dada por:

V = {S, A} = {a, b} P = {S aS, S bA, S , A bA, A b, A } se puede presentar como S aS | bA | A bA | b | Se tiene S = . Todas las dem as derivaciones en G comienzan ya sea con la producci on S aS o con S bA. Por lo tanto, tenemos S = aS = a aS = a a. S = bA = b bA = b b. S = aS = a aS = a abA = a ab bA = a ab b. Por consiguiente L(G) = a b .

4.2. GRAMATICAS INDEPENDIENTES DEL CONTEXTO

85

Las siguientes gram aticas tambi en generan el lenguaje a b y son, por lo tanto, equivalentes a G: S AB S AB | S aS | A A aA | A aA | a | A bA | B bB | B bB | b |

Ejemplo

La gram atica S aS | aA A bA | b

genera el lenguaje a+ b+ . Otra gram atica equivalente es: S AB A aA | a B bB | b Ejemplo


La gram atica

S 1A | 0 A 0A | 1A | genera el lenguaje de los n umeros naturales en numeraci on binaria. N otese que la u nica cadena que comienza con 0, generable con esta gram atica, es la cadena 0. Ejemplo Encontrar una GIC que genere el lenguaje 0 10 10 sobre = {0, 1}, es decir, el lenguaje de todas las cadenas con exactamente dos unos. Soluci on. G: S A1A1A A 0A |

Una gram atica equivalente es S 0S | 1A A 0A | 1B B 0B |

86

LENGUAJES LIC Y GRAMATICAS GIC

Ejemplo

Encontrar una GIC que genere el lenguaje L = {ai bi : i 0} sobre = {a, b}, el cual no es un lenguaje regular. S aSb | .

Soluci on.

Ejemplo

Encontrar una GIC que genere el lenguaje de todos los

pal ndromos sobre = {a, b}, el cual no es lenguaje regular.

Soluci on. S aSa | bSb | a | b | .


Ejemplo

Encontrar una GIC que genere el lenguaje de todas las cadenas

sobre = {a, b} que tienen un n umero par de s mbolos.

Soluci on. S aSa | bSb | aSb | bSa | Dos gram aticas equivalentes son: S aaS | bbS | abS | baS |

S AAS | Aa|b

Ejemplo

Encontrar una GIC que genere el lenguaje (ab ba) sobre

= {a, b}.

Soluci on. S abS | baS | .


Ejemplo

Demostrar que la gram atica G dada por: S (S )S |

genera el lenguaje de todas las cadenas de par entesis anidados y equilibrados; es decir, cadenas como (()), ()()(), (())((())). acil ver que G genera cadenas de par entesis anidados y equiSoluci on. Es f librados ya que cada aplicaci on de la producci on S (S )S da lugar a un par de par entesis equilibrados. Para establecer la direcci on rec proca demostraremos por inducci on sobre n la siguiente armaci on: Toda cadena con 2n par entesis anidados y equilibrados se puede generar en G. n = 1: n = 2: () se genera con S = (S )S = (). ()() se genera con S = (S )S = (S )(S )S = ()(). (()) se genera con S = (S )S = ((S )S )S = (()).
3 3 2

4.2. GRAMATICAS INDEPENDIENTES DEL CONTEXTO

87

Paso inductivo: una cadena con 2n par entesis anidados y equilibrados es de la forma (u) o (u)v donde u y v tienen estrictamente menos de 2n + par entesis anidados y equilibrados. Por hip otesis de inducci on S = u y + S = v . Por lo tanto, S = (S )S = (u)S = (u). S = (S )S = (u)S = (u)v.

+ + +

Ejercicios de la secci on 4.2

Encontrar GIC que generen los siguientes lenguajes sobre = {a, b}: (i) El lenguaje de las cadenas que tienen un n umero par de bes. (ii) El lenguaje de las cadenas que comienzan con b y terminan con ba. (iii) a b a. (iv) a b b a. (v) (ab b a) . (vi) {ai b2i : i 0}. (vii) {abi abi : i 1}. Encontrar GIC que generen los siguientes lenguajes sobre = {a, b, c, d}: (i) {ai bj cj di : i, j 1}. (ii) {ai bi cj dj : i, j 1}. (iii) {ai bj cj di : i, j 1} {ai bi cj dj : i, j 1}. (iv) {ai bj ci+j : i 0, j 1}. Demostrar que la gram atica S SS | (S ) | tambi en genera el lenguaje de todas las cadenas de par entesis anidados y equilibrados. Encontrar una gram atica que genere el lenguaje de todas las cadenas de par entesis circulares y/o angulares, anidados y equilibrados. Es decir cadenas como ([()]), ([])[()], [()([[()()]])], etc. Cadenas como ([)] o [([)]] tienen par entesis equilibrados pero no anidados y, por lo tanto, no pertenecen a este lenguaje. ! Sea = {0, 1}. Encontrar una GIC que genere el lenguaje de las cadenas que tienen igual n umero de ceros que de unos.

88

LENGUAJES LIC Y GRAMATICAS GIC

4.3.

Arbol de una derivaci on

Un arbol con ra z es un tipo muy particular de grafo no-dirigido; est a formado por un conjunto de v ertices o nodos conectados entre s por arcos o aristas, con la siguiente propiedad: existe un nodo especial, llamado la ra z del arbol, tal que hay una u nica trayectoria entre cualquier nodo y la ra z. De esta manera, la ra z se ramica en nodos, llamados descendientes inmediatos, cada uno de los cuales puede tener, a su vez, descendientes inmediatos, y as sucesivamente. La propiedad que caracteriza a un arbol garantiza que un nodo puede tener 0, 1, o m as descendientes inmediatos pero un u nico antecesor inmediato. El u nico nodo que no tiene antecesores es la ra z. Los nodos que tienen descendientes, excepto la ra z, se denominan nodos interiores. Los nodos que no tienen descendientes se llaman hojas del arbol. En la terminolog a usualmente utilizada, los descendientes de un nodo tambi en se denominan hijos y los antecesores padres o ancestros. El n umero de v ertices (y por lo tanto, el n umero de arcos) de un arbol puede ser innito.

Ejemplo

Algunos arboles con ra z:

4.3. ARBOL DE UNA DERIVACION

89

El arbol de una derivaci on S = w, w , en una GIC es un arbol con ra z que se forma de la siguiente manera: 1. La ra z est a etiquetada con el s mbolo inicial S . 2. Cada nodo interior est a etiquetado con un no terminal. 3. Cada hoja est a etiquetada con terminal o con . 4. Si en la derivaci on se utiliza la producci on A s1 s2 sk , donde si (V ) , el nodo A tiene k descendientes inmediatos: s1 , s2 ,. . . , sk , escritos de izquierda a derecha. De esta forma, las hojas del arbol de derivaci on de S = w son precisamente los s mbolos de la cadena w, le dos de izquierda a derecha y, posiblemente, algunos . La b usqueda de un arbol de derivaci on para una cadena w se denomina an alisis sint actico de w. Los arboles de derivaci on tambi en se suelen llamar arboles sint acticos o arboles de an alisis sint actico. atica: Ejemplo Sea G la gram

El arbol de la derivaci on

S AB | AaB A aA | a B bBa | b

S = AB = AbBa = abBa = abba es S

A a b b

B B a

El anterior es tambi en el arbol de la derivaci on S = AB = aB = abBa = abba.

90

LENGUAJES LIC Y GRAMATICAS GIC

Esto muestra que dos derivaciones diferentes pueden tener el mismo arbol de derivaci on ya que en el arbol aparecen las producciones utilizadas pero no el orden en que han sido aplicadas.

Ejemplo

Sea G la gram atica: S BAa A bBC | a B bB | b | C aB | aa

El arbol de la derivaci on

S = BAa = bAa = bbBCa = bbbCa = bbbaBa = bbbaa es S

B b b B b

a C a B

Ejercicios de la secci on 4.3

Sea G siguiente gram atica: S aS | AaB A aA | a B bBbB | b

G:

Encontrar una derivaci on de la cadena aaaabbbb y hallar el arbol de tal derivaci on.

4.4. GRAMATICAS AMBIGUAS

91

Sea G la siguiente gram atica: S ABC | BaC | aB A Aa | a G: B BAB | bab C cC |

Encontrar derivaciones de las cadenas w1 = abab, w2 = babacc, w3 = ababababc y hallar los arboles de tales derivaciones.

4.4.

Gram aticas ambiguas

La noci on de ambig uedad se puede presentar en t erminos de arboles sint acticos o en t erminos de ciertas derivaciones est andares: las llamadas derivaciones a izquierda. 4.4.1 Denici on. Una derivaci on se llama derivaci on a izquierda (o derivaci on m as a la izquierda) si en cada paso se aplica una producci on a la variable que est a m as a la izquierda. Una derivaci on cualquiera se puede transformar siempre en una u nica derivaci on a izquierda aplicando, en cada paso, producciones a la variable que est e m as a la izquierda. 4.4.2 Denici on. Una GIC G es ambigua si existe una cadena w para la cual hay dos derivaciones a izquierda diferentes. Equivalentemente, una GIC G es ambigua si existe una cadena w con dos arboles de derivaci on diferentes.

Ejemplo

Consid erese el alfabeto =

0, 1, +, , (, ) . La siguiente

gram atica Gsp para generar n umeros naturales, sumas y pro-

ductos, en numeraci on binaria, es ambigua: S S + S | S S | (S ) | 0S | 1S | 0 | 1 La cadena 1 + 1 0 tiene dos derivaciones a izquierda diferentes: S = S + S = 1 + S = 1 + S S = 1 + 1 S = 1 + 1 0. S = S S = S + S S = 1 + S S = 1 + 1 S = 1 + 1 0. Los arboles de derivaci on correspondientes a las anteriores derivaciones son:

92 S

LENGUAJES LIC Y GRAMATICAS GIC

S + S 1

S S S + S 0

En la gram atica Gsp la ambig uedad se puede eliminar introduciendo par entesis: S (S + S ) | (S S ) | (S ) | 0S | 1S | 0 | 1 Aunque la introducci on de par entesis elimina la ambig uedad, las expresiones generadas tienen un excesivo n umero de par entesis lo que diculta el an alisis sint actico (en un compilador, por ejemplo). Lo m as corriente en estos casos es utilizar gram aticas ambiguas como Gsp siempre y cuando se establezca un orden de precedencia para los operadores. Lo usual es establecer que tenga una mayor orden de precedencia que +, es decir, por convenci on act ua antes que +. Por ejemplo, la expresi on 1 1 + 0 se interpreta como (1 1) + 0 y la expresi on 10 + 11 110 + 1 se interpreta como 10 + (11 110) + 1.

Ejemplo

La siguiente gram atica es ambigua: S aSA | A bA |

G:

G es ambigua porque para la cadena aab hay dos derivaciones a izquierda diferentes. S = aSA = aaSAA = aaAA = aaA = aabA = aab. S = aSA = aaSAA = aaAA = aabAA = aabA = aab. Los arboles de derivaci on para estas dos derivaciones son:

4.4. GRAMATICAS AMBIGUAS

93 S A

S a a S A a a S A b A S S

A b A

Para ver que la gram atica G no es ambigua se puede razonar de la siguiente manera: la cadena se puede generar de manera u nica con la derivaci on S = . Una derivaci on de una cadena no vac a debe comenzar aplicando la producci on S AB ; la variable A genera cadenas de aes de manera u nica y B genera cadenas de bes tambi en de manera u nica. Por consiguiente, toda cadena tiene una u nica derivaci on a izquierda.  Existen lenguajes independientes del contexto para los cuales toda gram atica es ambigua. Tales lenguajes se llaman inherentemente ambiguos. Un ejemplo es el lenguaje L = {ai bi cj dj : i, j 1} {ai bj cj di : i, j 1}. sobre el alfabeto {a, b, c, d}. En el Ejercicio (iii) de la secci on 4.2 se pidi o mostrar que L es un LIC. La demostraci on de que L es inherentemente ambiguo es bastante intrincada y puede encontrarse en la referencia [HU1].  No existe ning un algoritmo que permita determinar si una GIC dada es o no ambigua. Con la terminolog a de la secci on 3.6, esto quiere decir que el problema de la ambig uedad para GIC es in decidible. Este no es un resultado trivial; para su demostraci on remitimos al estudiante a la referencia [HMU].

El lenguaje generado por esta gram atica es . Se puede construir una gram atica no-ambigua que genere el mismo lenguaje: S AB | G : A aA | a B bB | a + b

94

LENGUAJES LIC Y GRAMATICAS GIC

Ejercicios de la secci on 4.4

Mostrar que las siguientes gram aticas son ambiguas: (i) S aSbS | bSaS | . (ii) S abS | abScS | . Mostrar que las gram aticas G1 y G2 siguientes son ambiguas. En cada caso, encontrar el lenguaje generado por la gram atica y construir luego una gram atica no-ambigua que genere el mismo lenguaje. S AaSbB | G1 : A aA | a B bB | S ASB | AB G2 : A aA | a B bB |

Encontrar una GIC no-ambigua que genere el lenguaje a b(a b) .

4.5.

Gram aticas para lenguajes de programaci on

La sintaxis de los lenguajes de programaci on, o al menos una gran porci on de esta, se presenta usualmente por medio de gram aticas GIC. En tales casos se dice que el lenguaje est a en la forma Backus-Naur o, simplemente, en la forma BNF. Los lenguajes que est an en BNF ofrecen ventajas signicativas para el dise no de analizadores sint acticos en compiladores.

Ejemplo

A continuaci on se exhibe una gram atica para generar los n ume-

ros reales sin signo, similar a la utilizada en muchos lenguajes

de programaci on. Las variables aparecen encerradas entre par entesis y real es la variable inicial de la gram atica. El alfabeto de terminales es {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -, E}. En el contexto de los lenguajes de programaci on los terminales se denominan tambi en componentes l exicos, lexemas o tokens. real d gitos decimal exp d gitos decimal exp d gitos d gitos | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 . d gitos | E d gitos | E+ d gitos | E- d gitos |

4.5. GRAMATICAS PARA LENGUAJES DE PROGRAMACION

95

Esta gram atica genera expresiones como 47.236, 321.25E+35, 0.8E9 y 0.8E+9. Las partes decimal y exponencial son opcionales debido a las producciones decimal y exp , pero no se generan expresiones como .325, E125, 42.5E ni 0.1E+.

Ejemplo

Gram atica para generar los identicadores en lenguajes de

programaci on, es decir, cadenas cuyo primer s mbolo es una le-

tra que va seguida de letras y/o d gitos. Las variables aparecen encerradas entre par entesis e identicador es la variable inicial de la gram atica. La variable lsds representa letras o d gitos. Los terminales en esta gram atica son las letras, min usculas o may usculas, y los d gitos. identicador lsds letra d gito

letra lsds letra lsds | d gito lsds | a | b | c| | x | y | z | A | B | C | | Y | Z 0|1|2|3|4|5|6|7|8|9


Ejercicios de la secci on 4.5

Con la gram atica del primer ejemplo de esta secci on hacer derivaciones y arboles de derivaci on para las cadenas 235.101E+25 y 0.01E-12. Encontrar una GIC, con una sola variable, para generar los identicadores, es decir, el lenguaje del segundo ejemplo de esta secci on. Una gram atica similar a la siguiente se usa en muchos lenguajes de programaci on para generar expresiones aritm eticas formadas por sumas y productos de n umeros en binario: expresi on t ermino factor n umero t ermino | expresi on + t ermino factor | t ermino * factor n umero | ( expresi on ) 1 n umero | 0 n umero | 0 | 1

El alfabeto de terminales de esta gram atica es {0, 1, +, *, (, )}. (i) Hacer derivaciones y arboles de derivaci on para las siguientes cadenas: 10+101*10 (101+10*10) (10+111)*(100+10*101+1111) (ii) Demostrar que esta gram atica no es ambigua.

96

LENGUAJES LIC Y GRAMATICAS GIC

4.6.

Gram aticas para lenguajes naturales

Para los lenguajes naturales, como el espa nol, se pueden presentar GIC que generen las frases u oraciones permitidas en la comunicaci on hablada o escrita. Una GIC para generar una porci on de las oraciones del idioma espa nol se presenta a continuaci on; las variables aparecen encerradas entre par entesis y Oraci on es la variable inicial de la gram atica. Los terminales son las palabras propias del idioma.
Oraci on Sujeto Verbo Compl. Directo | Sujeto Verbo Compl. Directo Compl. Circunst. | Sujeto Verbo Compl. Indirecto Compl. Circunst. Sujeto Compl. Directo Sustant. | Juan | Pedro | Mar a | Prepos. Art culo Sustant. | Prepos. Art culo Sustant. Prepos. Art culo Sustant. | Prepos. Art culo Sustant. Prepos. Sustant. Adjetivo Compl. Indirecto Prepos. Art culo Sustant. | Prepos. Art culo Sustant. Adjetivo | Prepos. Sustant. Prepos. Sustant. Compl. Circunst. Prepos. Art culo Sustant. | Prepos. Art culo Sustant. Adjetivo | Adverbio | Prepos. Art culo Sustant. Prepos. Art culo Sustant. Sustant. Adjetivo Prepos. Art culo Adverbio Verbo casa | perro | libro | l apiz | mesa | | rojo | azul | inteligente | malvado | u til | | a | ante | bajo | con | contra | de | desde | en | entre | hacia | hasta | para | por | seg un | sin | so | sobre | tras | | el | la | lo | las | los | un | uno | una | unas | unos | muy | bastante | poco | demasiado | lento | lentamente | r apido | r apidamente | | escribir | escribo | escribe | escribes | escriben | escrib | escribiste | escribieron |

Los lenguajes naturales son casi siempre ambiguos porque existen muchas reglas de producci on, lo que da lugar a m ultiples arboles de derivaci on para ciertas oraciones.

Ejemplo

La oraci on Juan mira a una persona con un telescopio

4.6. GRAMATICAS PARA LENGUAJES NATURALES

97

es ambigua. La ambig uedad surge porque las producciones permiten dos arboles de derivaci on:
Oraci on

Sujeto

Verbo

Compl.Indirecto

Compl. Circunst.

Juan

mira Prepos. Art. Sustant.

Prepos. Art. Sustant.

a Oraci on

una

persona

con

un telescopio

Sujeto

Verbo

Compl. Directo

Juan

mira

Prepos.

Art.

Sustant.

Prepos.

Art.

Sustant.

una

persona

con

un

telescopio

Ejercicios de la secci on 4.6

Usando la gram atica exhibida en la presente secci on, mostrar que las siguientes oraciones del idioma espa nol son ambiguas. En cada caso hacer los arboles de derivaci on. Mar a escucha la conversaci on tras la puerta. Pedro ve la televisi on en la mesa. Manuel observa a la chica con vestido rojo. Ana so no con un gato en pijama.

98

LENGUAJES LIC Y GRAMATICAS GIC

4.7.

Gram aticas regulares

4.7.1 Denici on. Una GIC se llama regular si sus producciones son de la forma A aB, a , B V. A . Los siguientes teoremas establecen la conexi on entre los lenguajes regulares y las gram aticas regulares. 4.7.2 Teorema. Dado un AFD M = (Q, , q0 , F, ), existe una GIC regular G = (V, , S, P ) tal que L(M ) = L(G). an dadas Demostraci on . Sea V = Q y S = q0 . Las producciones de G est por q ap si y s olo si (q, a) = p. q si y s olo si q F. Demostraremos primero que para toda w , w = y para todo p, q Q se tiene (1) Si (q, w) = p entonces q = wp.

La demostraci on de (1) se hace por inducci on sobre w. Si w = a y (q, a) = p, entonces q ap es una producci on de G y obviamente se concluye q = ap. Para el paso inductivo, sea (q, wa) = p . Entonces p = (q, wa) = ( (q, w), a) = (p, a) donde (q, w) = p. Por hip otesis de inducci on q = wp y como (p, a) = p , entonces p = ap . Por lo tanto, q = wp = wap que era lo que se quer a demostrar. A continuaci on demostraremos el rec proco de (1): para toda w , w = y para todo p, q Q se tiene (2) Si q = wp entonces

(q, w) = p.

La demostraci on de (2) se hace por inducci on sobre la longitud de la deri vaci on q = wp, es decir, por el n umero de pasos o derivaciones directas que hay en q = wp. Si la derivaci on tiene longitud 1, necesariamente q = ap lo cual signica que (q, a) = p. Para el paso inductivo, sup ongase

4.7. GRAMATICAS REGULARES

99

que q = wp tiene longitud n + 1, w = w a y en el u ltimo paso se aplica la producci on p ap. Entonces q = w p = w ap = wp. Por hip otesis de inducci on, (q, w ) = p y por consiguiente (q, w) = (q, w a) = ( (q, w ), a) = (p , a) = p, que era lo que se quer a demostrar. Como consecuencia de (1) y (2) se puede ahora demostrar que (3) Para toda cadena w , ( q0 , w ) F si y s olo si S =G w,

lo cual arma que L(M ) = L(G). En efecto, si w = , (q0 , w) F si y s olo si q0 F . Por lo tanto, q0 es una producci on de G. As que S = . Rec procamente, si S = , necesariamente S = , q0 F y (q0 , ) F . Sea ahora w = . Si (q0 , w) = p F , por (1) se tiene q0 = w, o sea, S = w. Rec procamente, si S =G w, entonces q0 =G wp = w donde p . Utilizando (2), se tiene (q0 , w) = p F .

Ejemplo

El siguiente AFD M , presentado en el u ltimo ejemplo de la a > q0 a b q1

secci on 2.3, acepta las cadenas que terminan en b:

M induce la gram atica regular G: q0 aq0 | bq1 q1 bq1 | aq0 |

que cumple L(M ) = L(G). Las variables de G son q0 y q1 , siendo q0 la variable inicial. Para el lenguaje regular 0 10 10 , sobre = {0, 1} (el lenguaje de todas las cadenas con exactamente dos unos), vimos en la secci on 4.2 una gram atica que lo genera: Ejemplo S A1A1A A 0A | Esta gram atica no es regular, pero por medio del AFD

100

LENGUAJES LIC Y GRAMATICAS GIC

0 >S

0 A

0 B

y el Teorema 4.7.2 se puede obtener una GIC regular que genere 0 10 10 : S 0S | 1A A 0A | 1B B 0B | Demostraci on . Se construye M = (Q, , q0 , F, ) haciendo Q = V , q0 = S y B (A, a) para cada producci on A aB. AF si A . Usando razonamientos similares a los del Teorema 4.7.2, se puede demostrar que A =G wB

4.7.3 Teorema. Dada una GIC regular G = (V, , S, P ), existe un AFN M = (Q, , q0 , F, ) tal que L(M ) = L(G).

si y s olo si

B (A, w), para todo w , w = ,

de donde L(M ) = L(G). Los detalles se dejan como ejercicio. 4.7.4 Corolario. 1. Un lenguaje es regular si y solamente si es generado por una gram atica regular. 2. Todo lenguaje regular es un LIC (pero no viceversa). Demostraci on . 1. Se sigue del Teorema 4.7.2, el Teorema 4.7.3 y del Teorema de Kleene. 2. Se sigue de la parte 1. Por otro lado, {ai bi : i 0} es LIC pero no es regular. 4.7.5 Denici on. Una GIC se llama regular por la derecha si sus producciones son de la forma A wB, A w , B V,

4.7. GRAMATICAS REGULARES

101

4.7.6 Teorema. Las gram aticas regulares y las gram aticas regulares por la derecha generan los mismos lenguajes, es decir, los lenguajes regulares. Dicho de otra manera, la denici on de gram atica regular es equivalente a la denici on de gram atica regular por la derecha. Demostraci on . Una gram atica regular es obviamente regular por la derecha. Rec procamente, en una gram atica regular por la derecha G = (V, , S, P ), una producci on de la forma A a1 a2 an B donde los ai , n 2, B V , se puede simular con producciones de la forma A aB y A . En efecto, se introducen n 1 variables nuevas A1 , . . . , An1 cuyas u nicas producciones son: A A1 a1 A1 a2 A2 . . .

An1 an B De esta manera se puede construir una gram atica regular equivalente a G.

Ejercicios de la secci on 4.7

Encontrar GIC regulares que generen los siguientes lenguajes: (i) ab a. (ii) (ab ba) . (iii) a+ b b+ a b. (iv) 0 (10 01 ). Una GIC se llama regular por la izquierda si sus producciones son de la forma: A Bw, w , B V A Demostrar que las gram aticas regulares y las gram aticas regulares por la izquierda generan los mismos lenguajes. ! Completar los detalles de la demostraci on del Teorema 4.7.3.

102

LENGUAJES LIC Y GRAMATICAS GIC

4.8.

Eliminaci on de las variables in utiles

En una GIC puede haber dos tipos de variables in utiles: aqu ellas que nunca aparecen en el curso de una derivaci on y aqu ellas que no se pueden convertir en cadenas de terminales. A continuaci on se precisan estos conceptos. 4.8.1. Deniciones. (i) Una variable A es alcanzable o accesible si existen u, v (V ) tales que S = uAv . La variable inicial S es alcanzable por denici on. (ii) Una variable A es terminable si existe w tal que A = w. En particular, si A es una producci on entonces A es terminable. (iii) A es una variable in util si no es alcanzable o no es terminable. Existen algoritmos para detectar todas las variables in utiles de una GIC que permiten construir una gram atica G equivalente a una gram atica G dada, de tal manera que G no tenga variables in utiles. 4.8.2. Algoritmo para encontrar las variables terminables. El siguiente algoritmo sirve para encontrar todas las variables terminables de una GIC.
TERM1 := A V : Existe una producci on de la forma A w, w . TERMi+1 := TERMi A V : producci on A w, w ( TERMi ) .

Obtenemos una sucesi on creciente de conjuntos de variables: TERM1 TERM2 TERM3 Como el conjunto de variables es nito, existe k tal que TERMk = TERMk+1 = TERMk+2 = El conjunto TERM de variables terminables es entonces TERM :=
i 1

TERMi

El anterior algoritmo se puede presentar de la siguiente forma:

DE LAS VARIABLES INUTILES 4.8. ELIMINACION

103

INICIALIZAR: TERM := A V : producci on A w, w REPETIR: TERM := TERM A V : producci on A w, w ( TERM) HASTA: No se a naden nuevas variables a TERM

Ejemplo

Soluci on.

Encontrar las variables terminables de la siguiente gram atica. S ACD | bBd | ab A aB | aA | C B aDS | aB G: C aCS | CB | CC D bD | ba E AB | aDb

TERM1 = {S, D}. TERM2 = {S, D} {B, E } = {S, D, B, E }. TERM3 = {S, D, B, E } {A} = {S, D, B, E, A}. TERM4 = {S, D, B, E, A} { } = {S, D, B, E, A}. TERM = {S, A, B, D, E }. Conjunto de variables no terminables: {C }. 4.8.3. Algoritmo para encontrar las variables alcanzables. El siguiente algoritmo sirve para encontrar todas las variables alcanzables de una GIC.
ALC1 := {S }. ALCi+1 := ALCi {A V : produc. B uAv, B ALCi u, v (V ) }.

Obtenemos una sucesi on creciente de conjuntos de variables: ALC1 ALC2 ALC3 Como el conjunto de variables es nito, existe k tal que ALCk = ALCk+1 = ALCk+2 =

104

LENGUAJES LIC Y GRAMATICAS GIC

El conjunto ALC de variables alcanzables es entonces ALC =


i 1

ALCi

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR: ALC := {S } REPETIR: ALC := ALC A V : producci on B uAv , B ALC y u, v (V ) HASTA: No se a naden nuevas variables a ALC

Ejemplo

Encontrar las variables alcanzables de la siguiente gram atica. S aS | AaB | ACS A aS | AaB | AC B bB | DB | BB C aDa | ABD | ab D aD | DD | ab E F F | aa F aE | EF

G:

Soluci on.

ALC1 = {S }. ALC2 = {S } {A, B, C } = {S, A, B, C }. ALC3 = {S, A, B, C } {D} = {S, A, B, C, D}. ALC4 = {S, A, B, C, D} { } = {S, A, B, C, D} ALC = {S, A, B, C, D}. Conjunto de variables no alcanzables: {E, F }. Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.8.2 y algoritmo 4.8.3) se pueden llevar a cabo en dos ordenes diferentes:
(I) G
Algoritmo

Eliminar variables no-terminables

G1

Algoritmo

Eliminar variables no-alcanzables

G2

DE LAS VARIABLES INUTILES 4.8. ELIMINACION

105

(II) G

Algoritmo

Algoritmo Eliminar variables Eliminar variables G3 G4 no-alcanzables no-terminables

Esto da lugar a las siguientes preguntas: (1) Es G2 = G4 ? (2) G2 tiene variables in utiles? (3) G4 tiene variables in utiles? El siguiente ejemplo muestra que la respuesta a la pregunta (1) es no y que al realizar los algoritmos en el orden (II) pueden permanecer en G4 algunas variables in utiles.

Ejemplo

Consid erese la siguiente gram atica G. G: S a | AB A aA |

Aplicaci on de los algoritmos en el orden (I): Variables terminables de G: TERM= {S, A}. G1 : Sa A aA |

Variables alcanzables de G1 : ALC= {S }. G2 : Se tiene que L(G2 ) = {a}. Aplicaci on de los algoritmos en el orden (II): Variables alcanzables de G: ALC={S, A, B }. G3 : S a | AB A aA | Sa

Variables terminables de G3 : TERM={S, A}. G4 : Sa A aA |

Se observa que en G4 , A no es alcanzable. Adem as, G2 = G4 .

106

LENGUAJES LIC Y GRAMATICAS GIC

No obstante, si los algoritmos se llevan a cabo en el orden (I) la gram atica G2 ya no tiene variables in utiles. Nos podemos convencer de eso observando que las variables alcanzables obtenidas al nalizar el procedimiento siguen siendo terminables. M as precisamente, si una variable A permanece al nalizar el procedimiento completo, ser a es alcanzable, y si la derivaci on A = w, con w , se pod a hacer antes de eliminar las variables no alcanzables, tambi en se podr a realizar en la gram atica nal ya que todas las variables que aparezcan en esa derivaci on ser an alcanzables.

Ejemplo

Eliminar las variables in utiles de la siguiente gram atica G. S SBS | BC | Bb A AA | aA B aBCa | b C aC | ACC | abb D aAB | ab E aS | bAA F aDb | aF

G:

Soluci on. Ejecutamos los algoritmos en el orden (I): TERM1 TERM2 TERM3 TERM4 = {B, C, D}. = {B, C, D} {S, F }. = {B, C, D, S, F } {E } = {B, C, D, S, F, E }. = {B, C, D, S, F, E } { }.

Variables alcanzables de G1 :

La u nica variable no-terminable de G es A. Por lo tanto, G es equivalente a la siguiente gram atica G1 : S SBS | BC | Bb B aBCa | b C aC | abb G1 : D ab E aS F aDb | aF ALC1 = {S }. ALC2 = {S } {B, C }. ALC3 = {S, B, C } { }.

DE LAS PRODUCCIONES 4.9. ELIMINACION

107

Las variables D, E, F son no alcanzables. Por lo tanto, G es equivalente a la siguiente gram atica G2 , que no tiene variables in utiles. S SBS | BC | Bb G2 : B aBCa | b C aC | abb

Ejercicios de la secci on 4.8

4.9.

Eliminar las variables in utiles de la siguiente gram atica: S EA | SaBb | aEb A DaD | bD B bB | Ab | G: C aC | bBC D aEb | ab E aA | bB | F Fb | Fa | a

Eliminar las variables in utiles de la siguiente gram atica: S SS | SBB | CCE A aE | bE B bB | Db G: C aC | bB D aDb | ab | E aA | bB

Eliminaci on de las producciones

4.9.1. Deniciones. (i) Una producci on de la forma A se llama producci on . (ii) Una variable A se llama anulable si A = . 4.9.2. Algoritmo para encontrar las variables anulables.

108

LENGUAJES LIC Y GRAMATICAS GIC

ANUL1 := {A V : A es una producci on}. ANULi+1 := ANULi A V : producci on A w, w (ANULi ) . Obtenemos una sucesi on creciente de conjuntos de variables: ANUL1 ANUL2 ANUL3 Como el conjunto de variables es nito, existe k N tal que ANULk = ANULk+1 = ANULk+2 = El conjunto ANUL de variables anulables es entonces ANUL :=
i 1

ANULi

El anterior algoritmo se puede presentar de la siguiente forma: INICIALIZAR: ANUL := {A V : A es una producci on} REPETIR: ANUL := ANUL A V : prod. A w, w (ANUL) HASTA: No se a naden nuevas variables a ANUL 4.9.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente a G sin producciones , excepto (posiblemente) S . Demostraci on . Una vez que haya sido determinado el conjunto ANUL de variables anulables, por medio del algoritmo 4.9.2, las producciones de se pueden eliminar (excepto S ) a nadiendo nuevas producciones que simulen el efecto de las producciones eliminadas. M as concretamente, por cada producci on A u de G se a naden las producciones de la forma A v obtenidas suprimiendo de la cadena u una, dos o m as variables anulables presentes, de todas las formas posibles. La gram atica G as obtenida es equivalente a la gram atica original G.

Ejemplo

Eliminar las producciones de la siguiente gram atica G. S AB | ACA | ab A aAa | B | CD B bB | bA C cC | D aDc | CC | ABb

G:

DE LAS PRODUCCIONES 4.9. ELIMINACION

109

Soluci on. Primero encontramos las variables anulables de G por medio del algoritmo 4.9.2: ANUL1 ANUL2 ANUL3 ANUL4 ANUL5 = {C }. = {C } {D} = {C, D}. = {C, D} {A} = {C, D, A}. = {C, D, A} {S } = {C, D, A, S }. = {C, D, A, S } { } = {C, D, A, S }.

Al eliminar de G la producciones (la u nica es C ) se obtiene la siguiente gram atica equivalente a G: S AB | ACA | ab | B | CA | AA | AC | A | C | A aAa | B | CD | aa | C | D B bB | bA | b C cC | c D aDc | CC | ABb | ac | C | Bb

G :

Ejercicios de la secci on 4.9

Eliminar las producciones de la siguiente gram atica: S BCB A aA | ab B bBa | A | DC C aCb | D | b D aB |

G:

Eliminar las producciones de la siguiente gram atica: S EA | SaBb | aEb A DaD | bD | BEB B bB | Ab | D aEb | ab E aA | bB |

G:

110

LENGUAJES LIC Y GRAMATICAS GIC

4.10.

Eliminaci on de las producciones unitarias

4.10.1. Deniciones. (i) Una producci on de la forma A B donde A y B son variables, se llama producci on unitaria. (ii) El conjunto unitario de una variable A (tambi en llamado conjunto cadena de A) se dene de la siguiente manera: UNIT(A) := {X V : una derivaci on A = X que usa u nicamente producciones unitarias}. Por denici on, A UNIT(A). 4.10.2. Algoritmo para encontrar las producciones unitarias. El siguiente algoritmo sirve para encontrar el conjunto unitario UNIT(A) de una variable A.
UNIT1 (A) := {A}. UNITi+1 (A) := UNITi (A) {X V : producci on Y X, Y UNITi (A)}.

Para el conjunto de producciones unitarias se tiene que: UNIT1 (A) UNIT2 (A) UNIT3 (A) Puesto que el conjunto de variables es nito, la anterior es una sucesi on nita y se tiene UNIT(A) = UNITi (A)
i 1

El anterior algoritmo se puede representar de la siguiente forma: INICIALIZAR: UNIT(A):={A} REPETIR: UNIT(A):= UNIT(A) X V : una producci on Y X con Y UNIT(A) HASTA: No se a naden nuevas variables UNIT(A)

DE LAS PRODUCCIONES UNITARIAS 4.10. ELIMINACION

111

4.10.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente a G sin producciones unitarias. nadienDemostraci on . Las producciones unitarias de G se pueden eliminar a do para cada variable A de G las producciones (no unitarias) de las variables contenidas en el conjunto unitario UNIT(A). La gram atica G as obtenida es equivalente a la gram atica original G.

Ejemplo

Soluci on. Aplicando el algoritmo para cada una de las variables de G, se tiene que: UNIT1 (S ) = {S }. UNIT2 (S ) = {S } { } = {S }. UNIT1 (A) = {A}. UNIT2 (A) = {A} { } = {A}. UNIT1 (B ) = {B }. UNIT2 (B ) = {B } {C } = {B, C }. UNIT3 (B ) = {B, C } {B } = {B, C }. UNIT1 (C ) = {C }. UNIT2 (C ) = {C } {B } = {C, B }. UNIT3 (C ) = {C, B } {C } = {C, B }. Eliminando las producciones unitarias se obtiene una gram atica G equivalente: S AS | AA | BA | A aA | a G : B bB | bC | aA | bA | ab C aA | bA | ab | bB | bC

Eliminar las producciones unitarias de la siguiente gram atica. S AS | AA | BA | A aA | a G: B bB | bC | C C aA | bA | B | ab

Ejemplo

Eliminar las producciones unitarias de la siguiente gram atica. S ACA | CA | AA | A | C | A aAa | aa | B | C G: B cC | D | C C bC D aA |

112

LENGUAJES LIC Y GRAMATICAS GIC

Soluci on. Realizando el algoritmo para cada una de las variables de G se obtiene: UNIT(S ) = {S, A, C, B, D}. UNIT(A) = {A, B, C, D}. UNIT(B ) = {B, C, D}. UNIT(C ) = {C }. UNIT(D) = {D}. Eliminando las producciones unitarias se obtiene una gram atica G equivalente: S ACA | CA | AA | | aAa | aa | bC | cC | aA A aAa | aa | cC | bC | aA | G B cC | bC | aA | C bC D aA |

Ejercicios de la secci on 4.10

Eliminar las producciones unitarias de la siguiente gram atica: S BBa | A | B | ab | A Aa | B | D | aC G: B bB | aA | b C ABb | A | aB D cC | c

Eliminar las producciones unitarias de la siguiente gram atica: S Ba | A | G: A Aa | a B bB | S

Eliminar las producciones unitarias de la siguiente gram atica: S ACA | ab | B | CA | A | C | A aAa | B | CD | aa | D G: B bB | bA | b C cC | c D ABb | ac | C | Bb

4.11. FORMA NORMAL DE CHOMSKY (FNC)

113

4.11.

Forma Normal de Chomsky (FNC)

Una GIC G est a en Forma Normal de Chomsky (FNC) si satisface: 1. G no tiene variables in utiles. 2. G no tiene producciones (excepto posiblemente S ). 3. Todas las producciones son de la forma: A a (producciones simples) o A BC (producciones binarias). En particular, una gram atica en FNC no tiene producciones unitarias. 4.11.1 Teorema (Procedimiento de conversi on a FNC). Toda GIC G es equivalente a una gram atica en Forma Normal de Chomsky. Demostraci on . Podemos transformar G en una gram atica en FNC, equivalente a G, ejecutando los algoritmos de las secciones anteriores en el siguiente orden: 1. Eliminar las variables no terminales. 2. Eliminar las variables no alcanzables. 3. Eliminar las producciones (excepto, posiblemente, S ). 4. Eliminar las producciones unitarias. 5. Las producciones resultantes (diferentes de S ) son de la forma: A a o A w, donde |w| 2. Estas u ltimas se pueden simular con producciones de la forma A BC o A a. Se introduce primero, para cada a , una variable nueva Ta cuya u nica producci on es Ta a. A continuaci on, se introducen nuevas variables, con producciones binarias, para simular las producciones deseadas. La parte 5 del procedimiento anterior se ilustra en los dos siguientes ejemplos.

Ejemplo

Simular la producci on A abBaC con producciones simples

y binarias.

Soluci on. Introducimos las variables Ta y Tb , y las producciones Ta a y Tb b. Entonces A abBaC se simula con: A Ta Tb BTa C Ta a Tb b

114

LENGUAJES LIC Y GRAMATICAS GIC

Ahora introducimos nuevas variables T1 , T2 , T3 y las producciones binarias necesarias. Las u nicas producciones de estas nuevas variables son las mostradas: A T a T1 T 1 T b T2 T BT 2 3 T T C 3 a T a a T b b

Ejemplo

Simular la producci on A BAaCbb con producciones simples

y binarias.

Ahora introducimos nuevas variables T1 , T2 , T3 , T4 y las producciones binarias necesarias. Las u nicas producciones de estas nuevas variables son las mostradas: A BT1 T1 AT2 T 2 T a T3 T3 CT4 T 4 T b Tb Ta a Tb b

Soluci on. Introducimos las variables Ta y Tb , y las producciones Ta a y Ta b. Entonces A BAaCbb se simula con: A BATa CTb Tb Ta a Tb b

En los siguientes ejemplos se ilustra el procedimiento completo para convertir una gram atica dada a la Forma Normal de Chomsky (FNC). Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la S AB | aBC | SBS A aA | C B bbB | b C cC |

gram atica:

G:

4.11. FORMA NORMAL DE CHOMSKY (FNC)

115

Soluci on. El conjunto de variables terminables es TERM = {B, C, S, A}, y el conjunto de variables alcanzables es ALC = {S, A, B, C }. Es decir, la gram atica no tiene variables in utiles. El conjunto de variables anulables es ANUL = {C, A}. Al eliminar las producciones de G (la u nica es C ) se obtiene la gram atica equivalente G1 : S AB | aBC | SBS | B | aB A aA | C | a G1 : B bbB | b C cC | c UNIT(S ) = {S, B }. UNIT(A) = {A, C }. UNIT(B ) = {B }. UNIT(C ) = {C }. Al eliminar las producciones unitarias obtenemos la gram atica equivalente G2 : S AB | aBC | SBS | aB | bbB | b A aA | a | cC | c G2 : B bbB | b C cC | c Luego introducimos las variables nuevas Ta , Tb y Tc , y las producciones Ta a, Tb b y Tc c con el prop osito de que todas las producciones sean unitarias o de la forma A w, donde |w| 2. S AB | Ta BC | SBS | Ta B | Tb Tb B | b A T a A | a | Tc C | c B Tb Tb B | b G3 : C Tc C | c Ta a Tb b Tc c

A continuaci on encontramos los conjuntos unitarios de todas las variables:

116

LENGUAJES LIC Y GRAMATICAS GIC

Finalmente, se introducen nuevas variables, con producciones binarias, para simular las producciones de la forma A w, donde |w| 2: S AB | Ta T1 | ST2 | Ta B | Tb T3 | b A Ta A | TC C | a | c B Tb T 3 | b C Tc C | c T BC 1 T2 BS T3 Tb B Ta a Tb b T c c S aS | aA | D A aAa | aAD | B aB | BC C aBb | CC | D aB | bA | aa | A

G4 :

Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la

gram atica:

G:

El conjunto de las variables alcanzables de G1 es ALC = {S, A, D}. Eliminando la variable no-alcanzable C obtenemos: S aS | aA | D A aAa | aAD | D bA | aa | A

Soluci on. TERM = {A, C, D, S }. Eliminando la variable no-terminable B obtenemos: S aS | aA | D A aAa | aAD | G1 : C CC | D bA | aa | A

G2 :

4.11. FORMA NORMAL DE CHOMSKY (FNC)

117

El conjunto de variables anulables de G2 es ANUL = {A, D, S }. Eliminando las producciones obtenemos: S aS | aA | D | a | G3 : A aAa | aAD | aa | aA | aD | a D bA | aa | A | b A continuaci on encontramos los conjuntos unitarios de todas las variables: UNIT(S ) = {S, D, A}. UNIT(A) = {A}. UNIT(D) = {D, A}. Al eliminar las producciones unitarias obtenemos la gram atica equivalente G4 : S aS | aA | a | | aAa | aAD | aa | aD | bA | b G4 : A aAa | aAD | aa | aA | aD | a D bA | aa | b | aAa | aAD | aa | aA | aD | a Finalmente, simulamos las producciones de G4 con producciones unitarias y binarias: S Ta S | Ta A | Ta T1 | Ta T 2 | Ta Ta | Ta D | Tb A | a | b | A Ta T1 | Ta T 2 | Ta Ta | Ta A | Ta D | a D Tb A | Ta Ta | b | Ta T 1 | Ta T2 | T a Ta | Ta A | T a D | a G5 : T1 ATa T2 AD Ta a Tb b

En algunas aplicaciones de la FNC es necesario exigir que la variable inicial S no aparezca en el cuerpo de ninguna producci on. Si S aparece en el lado derecho de alguna producci on se dice que S es recursiva ya que esto + da lugar a derivaciones de la forma S = uSv , con u, v (V ) . El siguiente teorema es un resultado muy sencillo; establece que cualquier GIC se puede transformar en una GIC equivalente en la cual la variable inicial no es recursiva. 4.11.2 Teorema. Dada una GIC G = (V, , S, P ) se puede construir una GIC G = (V , , S , P ) equivalente a G de tal manera que el s mbolo inicial S de G no aparezca en lado derecho de las producciones de G .

118

LENGUAJES LIC Y GRAMATICAS GIC

Demostraci on . La nueva gram atica G tiene una variable m as que G, la variable S , que act ua como la nueva variable inicial. Es decir, V = V {S }. El conjunto de producciones P est a dado por P = P {S S }. Es claro que L(G) = L(G ) y el s mbolo inicial S no aparece en el cuerpo de las producciones. Seg un este resultado, el papel de la variable inicial de la nueva gram atica G es u nicamente iniciar las derivaciones.

Ejemplo

Encontrar una GIC G equivalente a la siguiente gram atica G de tal manera que la variable inicial de G no sea recursiva. S ASB | BB A aA | a B bBS |

G:

un se indic o en la demostraci on del Teorema 4.11.2, la gram atiSoluci on. Seg ca pedida G es S S S ASB | BB G : A aA | a B bBS |

N otese que S sigue siendo recursiva pero ya no es la variable inicial de la gram atica. Ejemplo

Encontrar una GIC en FNC equivalente a la gram atica G del

ejemplo anterior, de tal manera que su variable inicial no sea

recursiva. Soluci on. Comenzamos transformando G en G , como se hizo en el ejemplo anterior. En G todas las variable son u tiles y ANUL = {B, S, S }. Eliminando las producciones obtenemos: S S | S ASB | BB | AB | AS | A G1 : A aA | a B bBS | bS | bB | b Los conjuntos unitarios son: UNIT(S ) = {S , S }, UNIT(S ) = {S, A}, UNIT(A) = {A}, UNIT(B ) = {B }. Eliminando las producciones unita-

4.11. FORMA NORMAL DE CHOMSKY (FNC)

119

Simulando las producciones de G2 con producciones unitarias y binarias se obtiene: S AT1 | BB | AB | AS | Ta A | a | S AT1 | BB | AB | AS | Ta A | a A Ta A | a B T T | T S | T B | b b 2 b b G3 : Ta a Tb b T1 SB T BS 2

rias se obtiene la gram atica: S ASB | BB | AB | AS | aA | a | S ASB | BB | AB | AS | aA | a G2 : A aA | a B bBS | bS | bB | b

Ejercicios de la secci on 4.11

Encontrar una gram atica en FNC equivalente a la siguiente GIC: S ABC | BaC | aB A Aa | a G: B BAB | bab C cC | c

Para la gram atica del ejercicio encontrar una GIC equivalente en FNC, de tal manera que su variable inicial no sea recursiva.

Encontrar una gram atica en FNC equivalente a la siguiente GIC: S aASb | BAb A Aa | a | G: B BAB | bAb C cCS |

120

LENGUAJES LIC Y GRAMATICAS GIC

4.12.

Forma Normal de Greibach (FNG)

Una GIC est a en Forma Normal de Greibach (FNG) si 1. La variable inicial no es recursiva. 2. G no tiene variables in utiles. 3. G no tiene producciones (excepto posiblemente S ). 4. Todas las producciones son de la forma: A a (producciones simples) o A aB1 B2 . . . Bk , donde las Bi son variables. Las derivaciones en una gram atica que est e en FNG tienen dos caracter sticas notables: en cada paso aparece un u nico terminal y, en segundo lugar, la derivaci on de una cadena de longitud n (n 1) tiene exactamente n pasos. Existe un procedimiento algor tmico para transformar una GIC dada en una gram atica equivalente en FNG. Para presentar el procedimiento necesitamos algunos resultados preliminares. 4.12.1 Denici on. Una variable se llama recursiva a la izquierda si tiene una producci on de la forma: A Aw, w (V ) .

La recursividad a izquierda se puede eliminar, como se muestra en el siguiente teorema. 4.12.2 Teorema (Eliminaci on de la recursividad a la izquierda). Las producciones de una variable A cualquiera se pueden dividir en dos clases: A A1 | A2 | | An A 1 | 2 | | m donde i , i (V ) y el primer s mbolo de i es diferente de A. Sin alterar el lenguaje generado, las anteriores producciones se pueden simular, reemplaz andolas por las siguientes: A 1 | 2 | | m | 1 Z | 2 Z | | m Z Z 1 | 2 | | n | 1 Z | 2 Z | | n Z donde Z es una variable completamente nueva.

4.12. FORMA NORMAL DE GREIBACH (FNG)

121

Demostraci on . Se puede observar que, tanto con las producciones originales como las nuevas, A genera el lenguaje {1 , 2 , . . . , m } {1 , 2 , . . . , n } 4.12.3 Lema. En una GIC cualquiera, una producci on A uBv se puede reemplazar (simular) por A uw1 v | uw2 v | | uwn v siendo B w1 | w2 | | wn todas las producciones de B . Demostraci on . Inmediato.

4.12.4 Teorema (Procedimiento de conversi on a FNG). Toda GIC G es equivalente a una gram atica en Forma Normal de Greibach. Demostraci on . Suponemos que la gram atica dada est a en FNC. Esto simplica el procedimiento, aunque este es v alido (con modicaciones menores) para una gram atica arbitraria si se eliminan primero las variables in utiles, las producciones y las producciones unitarias. La conversi on a FNG se realiza ejecutando los siguientes pasos: 1. Enumerar las variables en un orden arbitrario pero jo durante el procedimiento. S debe ser la variable con orden 1. 2. Para cada variable A de la gram atica original, siguiendo el orden elegido, modicar sus producciones de tal manera que el primer s mbolo del cuerpo de cada producci on (primer s mbolo a la derecha de la echa) sea un terminal o una variable con orden mayor que el de A. Para lograrlo se usa el teorema de eliminaci on de la recursividad a la izquierda, Teorema 4.12.2, y el Lema 4.12.3, todas las veces que sea necesario. 3. Utilizar el Lema 4.12.3 para modicar las producciones de las variables originales de tal manera que el primer s mbolo del cuerpo de cada producci on sea un terminal. Esto se hace siguiendo el orden inverso de enumeraci on de las variables: u ltima, pen ultima, etc. 4. Utilizar de nuevo el Lema 4.12.3, para modicar las producciones de las variables nuevas de tal manera que el primer s mbolo del cuerpo de cada producci on sea un terminal.

122

LENGUAJES LIC Y GRAMATICAS GIC

Ejemplo

Encontrar una gram atica en FNG equivalente a la siguiente

gram atica (que est a en FNC):

G:

S AA | a A AA | b

Paso 1: Aqu solamente hay un orden posible para variables: S, A. Paso 2: En este paso s olo hay que eliminar la recursividad a izquierda de la variable A. Al hacerlo se obtiene la gram atica: S AA | a A b | bZ Z A | AZ S bA | bZA | a A b | bZ Z A | AZ

Paso 3:

Paso 4:

Ejemplo

Encontrar una gram atica en FNG equivalente a la siguiente S AB | BC A AB | a

S bA | bZA | a A b | bZ Z b | bZ | BZZ

gram atica (que a en FNC): est

Paso 1: Orden de las variables: S, B, A, C . Este orden es muy adecuado porque el cuerpo de las producciones de B comienza con A o C , que son variables de orden mayor. S AB | BC B AA | CB | a A AB | a C a | b

B AA | CB | a C a | b

4.12. FORMA NORMAL DE GREIBACH (FNG)

123

Paso 2:

Paso 3:

S AB | BC B AA | CB | a A a | aZ Ca|b Z B | BZ S aB | aZB | aAC | aZAC | aBC | bBC | aC B aA | aZA | aB | bB | a A a | aZ Ca|b Z B | BZ

Paso 4: S aB | aZB | aAC | aZAC | aBC | bBC | aC B aA | aZA | aB | bB | a A a | aZ Ca|b Z aA | aZA | aB | bB | a | aAZ | aZAZ | aBZ | bBZ | aZ El siguiente ejemplo ilustra que el procedimiento de conversi on a la forma FNG puede dar lugar a docenas de producciones, incluso a partir de una gram atica relativamente sencilla.

Ejemplo

Encontrar una gram atica en FNG equivalente a la siguiente S AB A AB | CB | a B AB | b C AC | c

gram atica:

Paso 1: Orden de las variables: S, A, B, C .

124 Paso 2:

LENGUAJES LIC Y GRAMATICAS GIC

Paso 3:

Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de la variable C: S AB A CB | a | CBZ1 | aZ1 B CBB | aB | CBZ B | aZ B | b 1 1 C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2 Z1 B | BZ1 Z BC | BZ C | BCZ | BZ CZ 2 1 2 1 2 S 14 producciones A a | aZ1 | 6 producciones | 6 producciones B aB | aZ B | b | 6 producciones | 6 producciones 1 C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2 Z1 B | BZ1 Z BC | BZ C | BCZ | BZ CZ 2 1 2 1 2

S AB A CB | a | CBZ1 | aZ1 B CBB | aB | CBZ1 B | aZ1 B | b C CBC | aC | CBZ1 C | aZ1 C | c Z1 B | BZ1

Paso 4: El n umero de producciones de la nueva gram atica se incrementa dr asticamente: S 14 producciones A a | aZ1 | 6 producciones | 6 producciones B aB | aZ1 B | b | 6 producciones | 6 producciones C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2 Z1 15 producciones | 15 producciones Z2 15 producciones | 15 producciones | 15 producciones | 15 producciones

La gram atica original ten a 8 producciones; la nueva gram atica en FNG tiene un total de 139 producciones.

4.13. LEMA DE BOMBEO PARA LIC

125

Ejercicios de la secci on 4.12

Encontrar una gram atica en FNG equivalente a la siguiente GIC: S CA | AC | a A BA | AB | b B AA | a | b C AC | CC | a

Encontrar una gram atica en FNG equivalente a la siguiente GIC: S BB | BC | b A AC | CA | a B BB | a C BC | CA | a

Encontrar una gram atica en FNG equivalente a la siguiente GIC: S SC | AA | a A CA | AB | a B AC | b C CA | AS | b Nota: hay que eliminar primero la recursividad de la variable S .

4.13.

Lema de bombeo para LIC

Una de las consecuencias m as importantes de la Forma Normal de Chomsky es el lema de bombeo para lenguajes independientes del contexto, el cual es u til, entre muchas aplicaciones, para demostrar que ciertos lenguajes no son LIC. Nos referiremos a gram aticas en FNC con variable inicial no recursiva. Puesto que las producciones son unitarias (A a) o binarias (A BC ), en cada nodo el arbol de una derivaci on se ramica en dos nodos, a lo sumo. Tales arboles se denominan binarios. Si la producci on S est a presente, su u nico prop osito es generar la cadena . 4.13.1 Teorema. Sea G = (V, , S, P ) una gram atica en FNC y w . Si la longitud de la trayectoria m as larga en un arbol de derivaci on de S = w tiene k (o menos) nodos, entonces |w| 2k2 . Aqu k 2.

126

LENGUAJES LIC Y GRAMATICAS GIC

Demostraci on . La siguiente tabla muestra las relaciones obtenidas entre k = n umero de nodos de la trayectoria m as larga de S = w y la longitud de w, en los casos k = 2, k = 3, k = 4 y k = 5. En la tabla se muestran los casos extremos, es decir, los arboles con el mayor n umero posible de nodos. k 2 Se observa que |w| 2 . Una demostraci on rigurosa del caso general se hace por inducci on sobre k .
k = n umero de nodos de la trayectoria m as larga S k=2 |w| = 1 = 20 = 2k2 Arbol de derivaci on Longitud de w

S k=3 |w| 2 = 21 = 2k2

S |w| 4 = 22 = 2k2

k=4

k=5

|w| 8 = 23 = 2k2

4.13.2 Corolario. Sea G = (V, , S, P ) una gram atica en FNC y w . (1) Si la longitud de la trayectoria m as larga en un a rbol de derivaci on de S = w tiene k + 2 (o menos) nodos, entonces |w| 2k . Aqu k 0.

4.13. LEMA DE BOMBEO PARA LIC

127

(2) Si |w| > 2k (con k 0) entonces la longitud de la trayectoria m as larga en un arbol de derivaci on de S = w tiene m as de k + 2 nodos. Demostraci on . (1) Se sigue inmediatamente del Teorema 4.13.1. (2) Es la armaci on contra-rec proca de la parte (1). 4.13.3. Lema de bombeo para LIC. Dado un LIC L, existe una constante n (llamada constante de bombeo de L) tal que toda z L con |z | > n se puede descomponer en la forma z = uvwxy donde: (1) |vwx| n. (2) uv i wxi y L para todo i 0. (3) v = o x = . Demostraci on . Sea G = (V, , S, P ) una gram atica en FNC, con variable inicial no recursiva, tal que L(G) = L. Tal gram atica existe por los Teoremas 4.11.1 y 4.11.2. Sea k = |V | = n umero de variables de G y n = 2k . Sea k z L con |z | > n = 2 . Por la parte (2) del Corolario 4.13.2, la trayectoria m as larga en el arbol de una derivaci on S = z tiene m as de k + 2 nodos. Consideremos los u ltimos k + 2 nodos de tal trayectoria (siguiendo el orden que va desde la ra z S hasta las hojas del arbol). El u ltimo nodo de esa trayectoria es un terminal a y los restantes k + 1 nodos son variables. Como hay s olo k variables en la gram atica, entonces hay por lo menos una variable A = S repetida en la trayectoria. Por lo tanto, existen cadenas u, v, w, x, y tales que S = uAy, As que S = uAy = uvAxy = uvwxy = z. La siguiente gr aca ilustra la situaci on:

A = vAx,

A = w.

128

LENGUAJES LIC Y GRAMATICAS GIC

Puesto que la trayectoria m as larga en el arbol de derivaci on de A = vAx = vwx tiene k +2 nodos o menos, por la parte (1) del Corolario 4.13.2, podemos concluir que |vwx| 2k = n. Adem as: S = uAy = uvAxy = uv i Axi y = uv i wxi y,

para todo i 0.

Obs ervese que el caso i = 0 corresponde a la derivaci on S = uAy = uwy . Finalmente, la derivaci on A = vAx se puede escribir como A = BC = vAx utilizando una producci on de la forma A BC como primer paso. Se deduce que u y x no pueden ser ambas porque se tendr a BC = A, lo cual es imposible en una gram atica en FNC (recu erdese que la u nica producci on en la gram atica es, posiblemente, S ; pero S no aparece en el cuerpo de ninguna producci on de G ya que S no es recursiva). Se deduce entonces que v = o x = . Esto demuestra las propiedades (1), (2) y (3) del lema de bombeo.

4.13. LEMA DE BOMBEO PARA LIC

129

Demostrar que el lenguaje L = {ai bi ci : i 0} sobre = {a, b, c} no es un LIC. Soluci on. Argumento por contradicci on. Si L fuera LIC, por el lema de bombeo, existir a una constante de bombeo n. Sea z = an bn cn ; se tiene que z L y |z | > n. Por lo tanto, z se puede descomponer como z = an bn cn = uvwxy con las propiedades (1), (2) y (3) del lema de bombeo. Puesto que |vwx| n, en la cadena vwx no pueden aparecer los tres terminales a, b y c simult aneamente (para que aparezcan los tres terminales simult aneamente, una subcadena de an bn cn debe tener longitud n +2). Como v = o x = , se distinguen dos casos: Ejemplo Caso 1. Alguna de las cadenas v o x contiene dos tipos de terminales. Entonces en uv 2 wx2 y aparecen algunas bes seguidas de aes o algunas ces seguidas de bes. En cualquier caso, uv 2 wx2 y / L. Caso 2. Las cadenas v y x contienen un s olo tipo de terminal cada una (o s olo aes o s olo bes o s olo ces). Como en vwx no aparecen los tres terminales a, b y c simult aneamente, en la cadena bombeada uv 2 wx2 y se altera el n umero de dos de los terminales a, b, c, a lo sumo, pero no de los tres. Por lo tanto, uv 2 wx2 y / L. Pero el lema de bombeo arma que uv 2 wx2 y L. Esta contradicci on muestra que L no es un LIC.

Ejemplo

Demostrar que el lenguaje L = {ai : i es primo} sobre = {a}

no es un LIC.

Soluci on. Argumento por contradicci on. Si L fuera LIC, por el lema de bombeo, existir a una constante de bombeo n. Sea z = am con m primo m > n y m > 2 (m existe porque el conjunto de los n umeros primos es innito). Entonces z L y |z | > n. Por lo tanto, z se puede descomponer como z = am = uvwxy con las propiedades (1), (2) y (3) del lema de bombeo. Sea |u| + |w| + |y | = k ; entonces |v | + |x| = m k 1. Por el lema de bombeo, uv i wxi y L para todo i 0; es decir, |uv i wxi y | es primo para todo i 0. Pero |uv i wxi y | = k + |v i | + |xi | = k + i|v | + i|x| = k + i(|v | + |x|) = k + i(m k ). (i) Si k = 0, tomando i = m se obtiene que k + i(m k ) = 0 + i(m 0) = im = mm que no es primo, pues m > 2. (ii) Si k = 1, tomando i = 0 se obtiene que k + i(m k ) = 1 + i(m 1) = 1 + 0(m 1) = 1 que no es un n umero primo.

130

LENGUAJES LIC Y GRAMATICAS GIC

(iii) Si k > 1, tomando i = k se obtiene que |uv k wxk y | = k + k (m k ) = k (1 + m k ), el cual no es un n umero primo pues k > 1 y como m k 1, entonces 1 + m k 2. Por (i), (ii) y (iii) se puede escoger i de tal manera que |uv i wxi y | no sea un n umero primo, lo cual contradice que uv i wxi y L para todo i 0. Esta contradicci on muestra que L no es un LIC.

Ejercicios de la secci on 4.13

Utilizar el lema de bombeo para demostrar que los siguientes lenguajes no son LIC: L = {ai bi cj : j i}, sobre = {a, b, c}. L = {ai bj ck : 1 i j k }, sobre = {a, b, c}. L = {0i 12i 0i : i 1}, sobre = {0, 1}. L = {ai bi ci di : i 0}, sobre = {a, b, c, d}. L = {ai bj ci dj : i, j 0}, sobre = {a, b, c, d}. L = ww : w {0, 1} . ! L = {ai : i es un cuadrado perfecto}.

4.14.

Propiedades de clausura de los LIC

En la secci on 3.2 se vio que los lenguajes regulares son cerrados bajo la uni on, la concatenaci on, la estrella de Kleene y todas las operaciones booleanas. Los LIC poseen propiedades de clausura mucho m as restringidas: son cerrados para las operaciones regulares (Teorema 4.14.1) pero, en general, no son cerrados para intersecci on, complementos ni diferencias (Teorema 4.14.2). 4.14.1 Teorema. La colecci on de los lenguajes independientes del contexto es cerrada para las operaciones regulares (uni on, concatenaci on y estrella de Kleene). Es decir, dadas GIC G1 = (V1 , , S1 , P1 ) y G2 = (V2 , , S2 , P2 ) tales que L(G1 ) = L1 y L(G2 ) = L2 , se pueden construir GIC que generen los lenguajes L1 L2 , L1 L2 y L 1 , respectivamente.

4.14. PROPIEDADES DE CLAUSURA DE LOS LIC

131

Demostraci on . Si p erdida de generalidad, podemos suponer que G1 y G2 no tienen variables en com un (en caso contrario, simplemente cambiamos los nombres de las variables). Para construir una GIC G que genere L1 L2 introducimos una variable nueva S , la variable inicial de G, junto con las producciones S S1 y S S2 . Las producciones de G1 y G2 se mantienen. Concretamente, G = V1 V2 {S }, , S, P1 P2 {S S1 , S S2 } . Esquem aticamente, G tiene el siguiente aspecto: S S1 | S2 S1 . . . . . . S2 . . . . . . producciones de G1 producciones de G2

Claramente, L(G) = L1 L2 . Una GIC G que genere L1 L2 se construye similarmente, a nadiendo la producci on S S1 S2 . Es decir, G = V1 V2 {S }, , S, P1 P2 {S S1 S2 } . Esquem aticamente, G es la gram atica: S S1 S2 S1 . . . . . . S2 . . . . . . producciones de G1 producciones de G2

Claramente, L(G) = L1 L2 . Para generar L 1 se dene G como G = V1 {S }, , S, P1 {S S1 S, S } . Esquem aticamente, G es la gram atica: S S1 S | S1 . . . . . . producciones de G1

132

LENGUAJES LIC Y GRAMATICAS GIC

Ejemplo

Utilizar las construcciones del Teorema 4.14.1 para encontrar

{ai bj ai : i 0, j 1}. Soluci on. El lenguaje L1 se puede generar con la gram atica S1 bA A aA | a y L2 con S2 aS2 a | bB B bB | La siguiente gram atica genera L 2: S3 S2 S3 | S2 aS2 a | bB B bB |

una GIC que genere el lenguaje L L donde L = ba+ y L = 1 2 1 2

Finalmente, el lenguaje L1 L 2 se puede generar con S S1 S3 S1 bA A aA | a S3 S2 S3 | S2 aS2 a | bB B bB | . (1) Intersecci on. (2) Complemento. (3) Diferencia. Demostraci on .

4.14.2 Teorema. La colecci on de los lenguajes independientes del contexto no es cerrada (en general) para las siguientes operaciones:

(1) La intersecci on de dos LIC puede ser un lenguaje que no es LIC. Consid erense, como ejemplo, los lenguajes L1 = {ai bi cj : i, j 0}, L2 = {ai bj cj : i, j 0}.

4.14. PROPIEDADES DE CLAUSURA DE LOS LIC

133

Pero L1 L2 = {ai bi ci : i 0} no es un LIC, seg un se mostr o, usando el lema de bombeo, en la secci on 4.13.

Tanto L1 como L2 son LIC porque son generados por las gram aticas G1 y G2 , respectivamente: S AB S AB G1 : G2 : A aAb | A aA | B cB | B bBc |

(2) Razonamos por contradicci on: si el complemento de todo LIC fuera un LIC se podr a concluir que la intersecci on de dos LIC L1 y L2 ser a un LIC ya que L1 L2 = L1 L2 . Esto estar a en contradicci on con la parte (1) del presente teorema. (3) Razonamos por contradicci on: si la diferencia de dos LIC cualesquiera fuera un LIC se podr a concluir que el complemento de un LIC L ser a a en contradicci on con tambi en un LIC ya que L = L. Esto estar la parte (2) del presente teorema. El siguiente teorema arma que los LIC tambi en son cerrados bajo homomorsmos. 4.14.3 Teorema. Sea h : un homomorsmo. Si L es un LIC sobre , entonces h(L) es un LIC sobre . on consiste en transformar una gram atica Demostraci on . La demostraci G que genere el lenguaje L en una gram atica G que genere h(L). Para ello basta mantener las mismas variables de G y denir las producciones de G , a partir de las de G, cambiando cada terminal a por h(a). Es f acil ver que + una derivaci on S = w en G, con w , se puede transformar en una + derivaci on S = h(w) en G ; esto muestra h(L) L(G ). Para establecer la otra contenencia, es decir, L(G ) h(L), hay que + demostrar que si S =G z , con z , entonces z es de la forma z = h(w) para alg un w L. Esto puede hacerse considerando el arbol de la + derivaci on S =G z . Dicho arbol se puede transformar en un arbol de una derivaci on en G, modicando adecuadamente las hojas: las hojas del nuevo arbol forman una cadena w y las hojas del arbol inicial forman la cadena h(w).

Ejemplo

Utilizar homomorsmos para concluir que el lenguaje L =

{0i 1i 2i 3i : i 0}, sobre el alfabeto {0, 1, 2, 3} no es LIC.

134

LENGUAJES LIC Y GRAMATICAS GIC

Soluci on. La idea es convertir L en el lenguaje {ai bi ci : i 0}, que no es LIC, seg un se mostr o en la secci on 4.13. Razonamos de la siguiente manera: si L fuera un LIC, lo ser a tambi en h(L), donde h es el homomorsmo h : {0, 1, 2, 3} {a, b, c} denido por h(0) = a, h(1) = b, h(2) = c y h(3) = . Pero h(L) = {h(0)i h(1)i h(2)i h(3)i : i 0} = {ai bi ci : i 0}. Por consiguiente, L no es un LIC.

Ejercicios de la secci on 4.14

Utilizar las construcciones del Teorema 4.14.1 para encontrar GIC que generen los siguientes lenguajes: (i) a+ (a bab) (b a b).
+ i i (ii) (L1 L2 )L 3 , donde L1 = ab a, L2 = ab y L3 = {a ba : i 0}. i j j i (iii) L1 L 2 L3 , donde L1 = ab a, L2 = {a b c d : i, j 1} y + L3 = b .

Sea G = (V, , S, P ) una gram atica que genera al lenguaje L. La gram atica G = V, , S, P {S SS, S } genera a L ? (i) Mostrar que los dos lenguajes siguientes, sobre = {a, b, c, d}, son LIC: L1 = {ai bi cj dj : i, j 1}, L2 = {ai bj cj dk : i, j, k 1}. (ii) Demostrar que L1 L2 no es un LIC. Utilizar homomorsmos para concluir que los siguientes lenguajes sobre el alfabeto {0, 1} no son LIC: (i) L = {u : |u| es un n umero primo}. (ii) L = {u : |u| es un cuadrado perfecto}. Demostrar que los LIC son cerrados para la operaci on de reexi on. Concretamente, demostrar que si L es un LIC, tambi en lo es el lenguaje LR = {wR : w L}.

PARA GIC 4.15. ALGORITMOS DE DECISION

135

4.15.

Algoritmos de decisi on para GIC

En esta secci on consideraremos problemas de decisi on para GIC, similares a los problemas para aut omatas presentados en la secci on 3.6. Dada una propiedad P, referente a gram aticas independientes del contexto, un problema de decisi on para P consiste en buscar un algoritmo, aplicable a una GIC arbitraria G, que responda SI o NO a la pregunta: satisface G la propiedad P? Los algoritmos vistos en el presente cap tulo (para encontrar las variables terminables, las alcanzables, las anulables, etc) son frecuentemente u tiles en el dise no de algoritmos de decisi on m as complejos. Problema 1 (Problema de la vacuidad). Dada una gram atica G = (V, , S, P ), es L(G) = ? Algoritmo de decisi on: ejecutar el algoritmo para determinar el conjunto TERM de variables terminables. L(G) = si y s olo si S TERM. Problema 2 (Problema de la pertenencia). Dada una GIC G = (V, , S, P ) y una cadena w , se tiene w L(G)? Para resolver este problema primero convertimos G a la forma FNC, con variable inicial no recursiva, siguiendo el procedimiento de la secci on 4.11. A partir de una GIC G en FNC podemos dise nar un algoritmo bastante ineciente para decidir si w L(G): se encuentran todas las posibles derivaciones a izquierda (o los arboles de derivaci on) que generen cadenas de longitud n = |w|. M as espec camente, las cadenas de longitud 1 se pueden derivar u nicamente con producciones de la forma S a. Las cadenas de longitud 2 s olo tienen arboles de derivaci on de la forma: S A1 a1 a2 A2

en los que aparecen exactamente 3 variables. Para derivar cadenas de longitud 3 s olo se puede proceder de dos formas: S = A1 A2 = B1 B1 A2 = a1 a2 a3 , o Los arboles de estas derivaciones son: S = A1 A2 = a1 A2 = a1 B1 B2 = a1 a2 a3 .
2 3

136 S A1 B1 a1 a2 B2

LENGUAJES LIC Y GRAMATICAS GIC

S A2 a3 A1 a1 B1 a2 a3 A2 B2

Cada uno de estos arboles tiene exactamente 5 nodos etiquetados con variables. La situaci on general es la siguiente: un arbol de derivaci on de una cadena de longitud n tiene exactamente 2n 1 nodos etiquetados con variables. Puesto que la ra z del arbol es S y S no es recursiva, en un arbol de derivaci on de una cadena de longitud n hay exactamente 2n 2 nodos interiores etiquetados con variables. La demostraci on general puede hacerse por inducci on sobre n y la dejamos como ejercicio para el estudiante. Por consiguiente, para determinar si una cadena dada de longitud n es o no generada por G, consideramos todos los posibles arboles de derivaci on con 2n 2 variables interiores. Este algoritmo es ineciente porque si G tiene k variables, hay que chequear no menos de k 2n2 arboles (esto sin contar las posibilidades para las hojas). Por consiguiente, el procedimiento tiene complejidad exponencial con respecto al tama no de la entrada. Para resolver el problema de la pertenencia hay un algoritmo muy eciente (su complejidad es polinomial) en el que se usa la llamada programaci on din amica o tabulaci on din amica, t ecnica para llenar tablas progresivamente, re-utilizando informaci on previamente obtenida. El algoritmo que presentaremos se denomina algoritmo CYK (nombre que corresponde a las iniciales de los investigadores Cocke, Younger y Kasami). El algoritmo (exhibido en la p agina siguiente) tiene como entrada una GIC G en FNC y una cadena de n terminales w = a1 a2 an ; se aplica llenando una tabla de n las (una por cada terminal de la entrada w) y n columnas. Xij es el conjunto de variables de las que se puede derivar la subcadena de w cuyo primer s mbolo est a en la posici on i y cuya longitud es j . O sea, Xij = conjunto de variables A tales que A = ai ai+1 ai+j 1 . Al determinar los conjuntos Xij se obtienen las posibles maneras de derivar subcadenas de w que permitan construir una derivaci on de la cadena completa w. La tabla se llena por columnas, de arriba hacia abajo; la primera columna (j = 1) corresponde a las subcadenas de longitud 1, la segunda columna (j = 2) corresponde a las subcadenas de longitud 2, y as sucesivamente. La u ltima columna (j = n) corresponde a la u nica subcadena de
+

PARA GIC 4.15. ALGORITMOS DE DECISION

137

longitud n que tiene w, que es la propia cadena w. Se tendr a que w L(G) si y s olo si S X1n . Algoritmo CYK

Entrada:
Gram atica G en FNC y cadena de n terminales w = a1 a2 an . Inicializar: j = 1. Para cada i, 1 i n, Xij = Xi1 := conjunto de variables A tales que A ai es una producci on de G.

Repetir:
j := j + 1. Para cada i, 1 i n j + 1, Xij := conjunto de variables A tales que A BC es una producci on de G, con B Xik y C Xi+k,j k , considerando todos los k tales que 1 k < j 1.

Hasta: j = n. Salida: w L(G) si y s olo si S X1n .


Ejemplo

Vamos a aplicar el algoritmo CYK a la gram atica: S BA | AC A CC | b B AB | a C BA | a

G:

y a la cadena w = bbab. Se trata de determinar si w L(G) o no. La tabla obtenida al hallar los Xij , 1 i 4, es la siguiente: j=1 b b a b i=1 i=2 i=3 i=1 {A} {A} {B, C } {A} j=2 {B, S } {S, C } j=3 {B } {S, C } j=4 {S, C }

138

LENGUAJES LIC Y GRAMATICAS GIC

A continuaci on se indica de manera detallada c omo se obtuvo la tabla anterior, columna por columna:

j = 1. j = 2.

j = 3.

j = 4.

Se obtiene directamente de las producciones de G. Para X12 se buscan cuerpos de producciones en X11 X21 = {A}{A} = {A}. As que X12 = { }. Para X22 se buscan cuerpos de producciones en X21 X31 = {A}{B, C } = {AB, AC }. As que X22 = {B, S }. Para X23 se buscan cuerpos de producciones en X31 X41 = {B, C }{A} = {BA, CA}. As que X23 = {S, C }. Para X13 se buscan cuerpos de producciones en X11 X22 X12 X31 = {A}{B, S } { } = {AB, AS }. As que X13 = {B }. Para X23 se buscan cuerpos de producciones en X21 X32 X22 X41 = {A}{S, C } {B, S }{A} = {AS, AC } {BA, SA}. As que X23 = {S, C }. Para X14 se buscan cuerpos de producciones en X11 X23 X12 X32 X13 X41 = {A}{S, C } { } {B }{A} = {AS, AC } {BA}. As que X14 = {S, C }.

Puesto que la variable S pertenece al conjunto X14 , se concluye que la cadena w = bbab es generada por G. Consideremos ahora la entrada w = baaba, de longitud 5. Al hallar los Xij , 1 i 5, se obtiene la tabla siguiente. Como S X15 , se concluye que w L(G).

j=1 b a a b a i=1 i=2 i=3 i=4 i=5 {A} {B, C } {B, C } {A} {B, C }

j=2 {B, S } {A} {S, C } {B, S }

j=3 {A} {A}

j=4 {S, B, C }

j=5 {S, B, C }

Al procesar la entrada w = aaba se obtiene la tabla siguiente. Como S no pertenece al conjunto X14 , se deduce que w no es generada por G.

PARA GIC 4.15. ALGORITMOS DE DECISION

139

j=1 a a b a i=1 i=2 i=3 i=4 {B, C } {B, C } {B } {B, C }

j=2 {A}

j=3 {B }

j=4

Problema 3 (Problema de la innitud). Dada una gram atica G = (V, , S, P ), es L(G) innito? El lema de bombeo sirve para establecer un criterio que permite resolver este problema (de manera an aloga a lo que sucede en el caso de los lenguajes regulares). El criterio aparece en el siguiente teorema. 4.15.1 Teorema. Sea G = (V, , S, P ) una gram atica en FNC, con variable inicial no recursiva, tal que L(G) = L, y sea k = |V | = n umero de variables de G. El lenguaje L es innito si y solo si contiene una cadena z tal que 2k < |z | 2k+1 . Demostraci on . Si z L y 2k < |z | 2k+1 , entonces por la demostraci on del lema de bombeo, z se puede descomponer como z = uvwxy , donde |vwx| 2k , v = . L posee innitas cadenas: uv i wxi y para todo i 0. Rec procamente, si L es innito, existe z L con |z | 2k . Por la demostraci on del lema de bombeo, w = uvwxy donde |vwx| 2k ; adem as, k +1 k +1 v = o x = . Si |z | 2 , la demostraci on termina. Si |z | > 2 = 2k + 2k , puesto que |z | = |uy | + |vwx|, se tendr a |uwy | |uy | = |z | |vwx| |z | 2k > 2k . De nuevo, si |uwy | < 2k+1 , la demostraci on termina; en caso contrario, se prosigue de esta forma hasta encontrar una cadena en L cuya longitud satisfaga 2k < 2k+1 . Utilizando el Teorema 4.15.1 podemos ahora presentar un algoritmo de decisi on para el problema de la innitud: 1. Convertir la gram atica G dada a una gram atica equivalente G en Forma Normal de Chomsky. 2. Aplicar el algoritmo CYK a G , con cada una de las cadenas |z | cuya longitud satisfaga 2k < 2k+1 , siendo k el n umero de variables de G . L es innito si y s olo si alguna de las cadenas examinadas est a en L(G ).

140

LENGUAJES LIC Y GRAMATICAS GIC

Obs ervese que este algoritmo tiene de complejidad exponencial ya que k el n umero de cadenas z tales que 2k < |z | 2k+1 es m2 , donde m es el n umero de terminales en la gram atica dada.  Hay muchos problemas referentes a gram aticas que son indecidibles, es decir, problemas para los cuales no existen algoritmos de decisi on. Aunque no tenemos las herramientas para demostrarlo, los siguientes problemas son indecidibles: 1. Dada una gram atica G, es G ambigua? 2. Dada una gram atica G, genera G todas las cadenas de terminales?, es decir, L(G) = ? 3. Dadas dos gram aticas G1 y G2 , generan G1 y G2 el mismo lenguaje?, es decir, L(G1 ) = L(G2 )?

Ejercicios de la secci on 4.15

Sea G = (V, , S, P ) una gram atica dada. Encontrar algoritmos para los siguientes problemas de decisi on: (i) Genera G la cadena vac a ? (ii) Hay dos variables diferentes A y B tales que A = B ? (iii) Hay en L(G) alguna cadena de longitud 1250? Ayuda: hay un n umero nito de cadenas con longitud 1250. (iv) Hay en L(G) alguna cadena de longitud mayor que 1250? Ayuda: habr a un n umero innito de cadenas por examinar; usar el Teorema 4.15.1. (v) Hay en L(G) por lo menos 1250 cadenas? Ayuda: usar la misma idea del problema (iv). Encontrar un algoritmo para el siguiente problema de decisi on: dada una gram atica G = (V, , S, P ) y una variable A V , es A recur+ siva?, es decir, existe una derivaci on de la forma A = uAv , con u, v (V ) ? Encontrar un algoritmo para el siguiente problema de decisi on: dado un lenguaje nito L y una GIC G, se tiene L L(G)?

PARA GIC 4.15. ALGORITMOS DE DECISION

141

Sea G la gram atica S BA | AB A CA | a B BB | b C BA | c

G:

Ejecutar el algoritmo CYK para determinar si las siguientes cadenas w son o no generadas por G: (i) (ii) w = bca. w = acbc. (iii) (iv) w = cabb. w = bbbaa.

Cap tulo

Aut omatas con pila


En el presente cap tulo presentamos el modelo de aut omata requerido para aceptar los lenguajes independientes del contexto: el aut omata con pila nodeterminista. Existe tambi en la versi on determinista pero, a diferencia de lo que sucede con los modelos AFD y AFN, los aut omatas con pila deterministas y no-deterministas no resultan ser computacionalmente equivalentes.

5.1.

Aut omatas con Pila Deterministas (AFPD)

Un Aut omata Finito con Pila Determinista (AFPD) es una 7-upla, M = (Q, q0 , F, , , z0 , ), con los siguientes componentes: 1. Q es el conjunto (nito) de estados internos de la unidad de control. 2. q0 Q es el estado inicial. 3. F es el conjunto de estados nales o de aceptaci on, = F Q. 4. es el alfabeto de entrada, tambi en llamado alfabeto de cinta. 5. es el alfabeto de pila. 6. z0 es el marcador de fondo, tambi en llamado s mbolo inicial de pila (z0 no pertenece al alfabeto de entrada ). 7. es la funci on de transici on del aut omata: : Q ( ) (Q ). 143

144

CAP ITULO 5. AUTOMATAS CON PILA

Como en los modelos ya considerados (AFD, AFN y AFN-), un AFPD procesa cadenas sobre una cinta de entrada semi-innita, pero hay una cinta adicional, llamada pila, que es utilizada por el aut omata como lugar de almacenamiento. En un momento determinado, la unidad de control del aut omata escanea un s mbolo a sobre la cinta de entrada y el s mbolo s en el tope o cima de la pila, como lo muestra la siguiente gr aca: . . . s . . . a q La transici on (q, a, s) = (q , ) representa un paso computacional: la unidad de control pasa al estado q y se mueve a la derecha; adem as, borra el s mbolo s que est a en el tope de la pila, escribe la cadena (cadena que pertenece a ) y pasa a escanear el nuevo tope de la pila. La gr aca que aparece en la parte superior de la p agina siguiente ilustra un paso computacional. Recalcamos que en cada momento, el aut omata s olo tiene acceso al s mbolo que est a en el tope de la pila; adem as, el contenido de la pila siempre se lee desde arriba (el tope) hacia abajo. Por estas dos razones la pila se dibuja verticalmente. Casos especiales de transiciones: 1. (q, a, s) = (q , s). En este caso, el contenido de la pila no se altera. 2. (q, a, s) = (q , ). El s mbolo s en el tope de la pila se borra y la unidad de control pasa a escanear el nuevo tope de la pila, que es el s mbolo colocado inmediatamente debajo de s.

5.1. AUTOMATAS CON PILA DETERMINISTAS (AFPD)

145

. . . . . . s Un paso computacional . . .

. . . a q

. . . a q

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

3. (q, , s) = (q , ). Esta es una transici on o transici on espont anea: el s mbolo sobre la cinta de entrada no se procesa y la unidad de control no se mueve a la derecha, pero el tope s de la pila es reemplazado por la cadena . Para garantizar el determinismo, (q, a, s) y (q, , s), con a , no pueden estar simult aneamente denidos (de lo contrario el aut omata tendr a una opci on no-determinista). Las transiciones espont aneas en un AFPD permiten que el aut omata cambie el contenido de la pila sin procesar (o consumir) s mbolos sobre la cinta de entrada. Conguraci on o descripci on instant anea. Es una tripla (q, au, s ) que representa lo siguiente: el aut omata est a en el estado q , au es la parte no procesada de la cadena de entrada y la unidad de control est a escaneando el s mbolo a. La cadena s es el contenido total de la pila; siendo s el s mbolo colocado en el tope. La notaci on (q, au, s ) para conguraciones instant aneas es muy c omoda: para representar el paso computacional de la gura que aparece arriba escribimos simplemente (q, au, s ) (q , u, ). Aqu el aut omata utiliz o la transici on (q, a, s) = (q , ). La notaci on (q, u, ) (p, v, )

146

CAP ITULO 5. AUTOMATAS CON PILA

signica que el aut omata pasa de la conguraci on instant anea (q, u, ) a la conguraci on instant anea (p, v, ) en cero, uno o m as pasos computacionales. Conguraci on inicial. Para una cadena de entrada w , la conguraci on inicial es (q0 , w, z0 ). Al comenzar el procesamiento de toda cadena de entrada, el contenido de la pila es z0 , que sirve como marcador de fondo. Conguraci on de aceptaci on. La conguraci on (p, , ), siendo p un estado nal o de aceptaci on, se llama conguraci on de aceptaci on. Esto signica que, para ser aceptada, una cadena de entrada debe ser procesada completamente y la unidad de control debe terminar en un estado de aceptaci on. La cadena que queda en la pila puede ser cualquier cadena perteneciente a . Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD M se dene como L(M ) := {w : (q0 , w, z0 ) (p, , ), p F }. O sea, una cadena es aceptada si se puede ir desde la conguraci on inicial hasta una conguraci on de aceptaci on, en cero, uno o m as pasos.  En el modelo AFPD se permite que la transici on (q, a, s) no est e denida, para algunos valores q Q, a , s . Esto implica que el c omputo de algunas cadenas de entrada puede abortarse sin que se procesen completamente. No se debe confundir la tripla que aparece en la funci on de transici on (q, a, s) con la tripla (q, u, ) que representa una conguraci on instant anea. La denici on de la funci on de transici on requiere que haya por lo menos un s mbolo en la pila. No hay c omputos con pila vac a. Para los aut omatas con pila se pueden hacer diagramas de transiciones, similares a los ya conocidos, pero resultan de poca utilidad pr actica ya que el procesamiento completo de una cadena de entrada depende del contenido de la pila, el cual puede cambiar en cada paso computacional. Los analizadores sint acticos en compiladores se comportan generalmente como aut omatas con pila deterministas.

 

5.1. AUTOMATAS CON PILA DETERMINISTAS (AFPD)

147

Un AFPD puede simular un AFD simplemente ignorando la pila; de esto se deduce que los lenguajes regulares son aceptados por aut omatas AFPD. El siguiente teorema establece formalmente este resultado. 5.1.1 Teorema. Todo lenguaje regular L es aceptado por alg un AFPD. Demostraci on . Sea M = (Q, q0 , F, , ) un AFD que acepta a L. El AFPD M = (Q, q0 , F, , , z0 , ) denido haciendo = {z0 } y (q, a, z0 ) = ( (q, a), z0 ), para todo a , q Q, satisface claramente L(M ) = L(M ) = L. Sin usar la pila un AFPD no puede hacer nada m as que un AFD, pero utilizando la pila como lugar de almacenamiento, un AFPD puede aceptar lenguajes no regulares, como se muestra en el siguiente ejemplo.

Dise nar un AFPD que acepte el lenguaje L = {ai bi : i 1}, sobre el alfabeto = {a, b}. Recordemos que L no es regular y no puede ser aceptado por ning un aut omata normal (sin pila). Ejemplo Soluci on. La idea es copiar las aes en la pila y borrar luego una a por cada b que sea le da sobre la cinta. Una cadena ser a aceptada si es procesada completamente y en la pila s olo queda el marcador de fondo z0 . Concretamente, M = (Q, q0 , F, , , z0 , ), donde = {a, b}, = {z0 , A, B }, Q = {q0 , q1 , q2 }, F = {q2 }, y la funci on de transici on est a dada por: (q0 , a, z0 ) = (q0 , Az0 ), (q0 , a, A) = (q0 , AA), (q0 , b, A) = (q1 , ), (q1 , b, A) = (q1 , ), (q1 , , z0 ) = (q2 , z0 ). Podemos ilustrar el procesamiento de varias cadenas de entrada. Sea, inicialmente, u = aaabbb. (q0 , aaabbb, z0 ) (q0 , aabbb, Az0 ) (q0 , abbb, AAz0 ) (q0 , bbb, AAAz0 ) (q1 , bb, AAz0 ) (q1 , b, Az0 ) (q1 , , z0 ) (q2 , , z0 ).

148

CAP ITULO 5. AUTOMATAS CON PILA

La u ltima es una conguraci on de aceptaci on; por lo tanto la cadena u = aaabbb es aceptada. Para la cadena de entrada v = aabbb, se obtiene el siguiente procesamiento: (q0 , aabbb, z0 ) (q0 , abbb, Az0 ) (q0 , bbb, AAz0 ) (q1 , bb, Az0 ) (q1 , b, z0 ) (q2 , b, z0 ). [c omputo abortado]

Obs ervese que el aut omata ha ingresado al estado de aceptaci on q2 pero la cadena de entrada no es aceptada debido a que no se ha procesado completamente; (q2 , b, z0 ) no es una conguraci on de aceptaci on. Para la cadena de entrada w = aaabb, se tiene: (q0 , aaabb, z0 ) (q0 , aabb, Az0 ) (q0 , abb, AAz0 ) (q0 , bb, AAAz0 ) (q1 , b, AAz0 ) (q1 , , Az0 ). A pesar de que se ha procesado completamente la cadena de entrada w, la conguraci on (q0 , , Az0 ) no es de aceptaci on. Por lo tanto, w = aaabb no es aceptada.

Ejemplo

Dise nar un AFPD que acepte el lenguaje L = wcwR : w {a, b} .

sobre el alfabeto = {a, b, c}. N otese que las cadenas w y wR s olo poseen aes y/o bes. Soluci on. La idea es acumular los s mbolos en la pila hasta que aparezca la c. Luego se comparan los s mbolos le dos con los almacenados en la pila, borrando en cada paso el tope de la pila. La cadena de entrada ser a aceptada si es procesada completamente y en la pila s olo queda el marcador de fondo z0 . En detalle, M = (Q, q0 , F, , , z0 , ), donde = {a, b}, = {z0 , A, B }, Q = {q0 , q1 , q2 }, F = {q2 },

5.2. AUTOMATAS CON PILA NO-DETERMINISTAS (AFPN)

149

y la funci on de transici on est a dada por: (q0 , a, z0 ) = (q0 , Az0 ), (q0 , b, z0 ) = (q0 , Bz0 ), (q0 , c, z0 ) = (q2 , z0 ) (q0 , a, A) = (q0 , AA), (q0 , a, B ) = (q0 , AB ), (q0 , b, A) = (q0 , BA), (q0 , b, B ) = (q0 , BB ), (q0 , c, A) = (q1 , A), (q0 , c, B ) = (q1 , B ), (q1 , a, A) = (q1 , ), (q1 , b, B ) = (q1 , ), (q1 , , z0 ) = (q2 , z0 ).

(para aceptar la cadena c),

Ejercicios de la secci on 5.1

Dise nar AFPD que acepten los siguientes lenguajes sobre = {a, b}: (i) L = {ai b2i : i 1}. (ii) L = {a2i bi : i 1}. Dise nar AFPD que acepten los siguientes lenguajes sobre = {0, 1}: (i) L = {0i 1j 0i : i, j 1}. (ii) L = {1i 0j 1i+j : i, j 1}.

5.2.

Aut omatas con pila no-deterministas (AFPN)

Un Aut omata Finito con Pila No-Determinista (AFPN) consta de los mismos siete par ametros de un AFPD, M = (Q, q0 , F, , , z0 , ), pero la funci on de transici on est a denida como: : Q ( ) f (Q ), donde f (Q ) es el conjunto de subconjuntos nitos de Q . Para q Q, a {} y s , (q, a, s) es de la forma (q, a, s) = {(p1 , 1 ), (p2 , 2 ), . . . , (pk , k )}.

150

CAP ITULO 5. AUTOMATAS CON PILA

El signicado de esta transici on es: al leer el s mbolo a sobre la cinta de entrada, la unidad de control puede pasar (aleatoriamente) a uno de los estados pi (1 i k ) y se mueve a la derecha. Sobre la pila hace lo siguiente: borra el s mbolo s que est a en el tope y escribe la cadena i (cadena que pertenece a ). A diferencia de lo que sucede con los AFPD, en el modelo AFPN las transiciones , (q, , s), no tienen restricci on alguna. El lenguaje aceptado por un AFPN M se dene como: L(M ) := {w : existe un c omputo (q0 , w, z0 ) (p, , ), p F }. O sea, una cadena w es aceptada si existe por lo menos un procesamiento de w desde la conguraci on inicial hasta una conguraci on de aceptaci on. La cadena que queda en la pila puede ser cualquier cadena de .

Ejemplo

Dise nar un AFPN que acepte el lenguaje {ai bi : i 0}, sobre el alfabeto = {a, b}.

Soluci on. Para aceptar la cadena vac a se necesita una transici on desde el estado inicial. El aut omata presentado a continuaci on coincide con el aut omata del primer ejemplo de la secci on 5.1, excepto por dicha transici on espont anea. M = (Q, q0 , F, , , z0 , ) donde = {a, b}, = {z0 , A, B }, Q = {q0 , q1 , q2 }, F = {q2 }, y la funci on de transici on es: (q0 , , z0 ) = {(q2 , z0 )} (q0 , a, A) = {(q0 , AA)}, (q0 , b, A) = {(q1 , )}, (q1 , b, A) = {(q1 , )}, (q1 , , z0 ) = {(q2 , z0 )}. En este aut omata el no-determinismo surge u nicamente por la presencia simult anea de (q0 , , z0 ) y (q0 , a, z0 ). (para aceptar ),

(q0 , a, z0 ) = {(q0 , Az0 )},

5.2. AUTOMATAS CON PILA NO-DETERMINISTAS (AFPN)

151

Ejemplo

Dise nar un AFPN que acepte el lenguaje de las cadenas sobre

el alfabeto = {a, b} con igual n umero de aes que de bes.

Soluci on. La idea es acumular las aes o bes consecutivas en la pila. Si en el tope de la pila hay una A y el aut omata lee una b, se borra la A; similarmente, si en el tope de la pila hay una B y el aut omata lee una a, se borra la B . La cadena de entrada ser a aceptada si es procesada completamente y en la pila s olo queda el marcador de fondo z0 . S olo se requieren dos estados. Concretamente, M = (Q, q0 , F, , , z0 , ), donde = {a, b}, = {z0 , A, B }, Q = {q0 , q1 }, F = {q1 }, y la funci on de transici on est a dada por: (q0 , a, z0 ) = {(q0 , Az0 )}, (q0 , b, z0 ) = {(q0 , Bz0 )}, (q0 , a, A) = {(q0 , AA)}, (q0 , b, B ) = {(q0 , BB )}, (q0 , a, B ) = {(q0 , )}, (q0 , b, A) = {(q0 , )}, (q0 , , z0 ) = {(q1 , z0 )}. El no-determinismo se presenta u nicamente por la presencia simult anea de (q0 , a, z0 ), (q0 , b, z0 ) y (q0 , , z0 ). En contraste con lo que sucede con los modelos AFD y AFN, los modelos de aut omata con pila determinista (AFPD) y no-determinista (AFPN) no resultan ser computacionalmente equivalentes: existen lenguajes aceptados por aut omatas AFPN que no pueden ser aceptados por ning un AFPD. Un ejemplo concreto es el lenguaje L = {wwR : w }. Como se mostrar aa continuaci on, se puede construir un aut omata con pila no-determinista para aceptar a L, pero no es posible dise nar ning un AFPD que lo haga. La demostraci on de esta imposibilidad es bastante complicada y no la podemos presentar en el presente curso.

Ejemplo

Dise nar un AFPN que acepte el lenguaje L = {wwR : w },

donde = {a, b}. No es dif cil ver que L es el lenguaje de los

pal ndromos de longitud par.

152

CAP ITULO 5. AUTOMATAS CON PILA

Soluci on. En el u ltimo ejemplo de la secci on 5.1 se construy o un AFPD que acepta el lenguaje {wcwR : w {a, b} }. El lenguaje L del presente ejemplo es similar, excepto que ya no aparece el separador c entre w y wR . El no-determinismo se puede usar para permitirle al aut omata la opci on de adivinar cu al es la mitad de la cadena de entrada. Si acierta, proceder aa comparar el resto de la cadena de entrada con los s mbolos acumulados en la pila. Si no acierta, el aut omata continuar a acumulando s mbolos en la pila y no llegar a a un estado de aceptaci on. Si la cadena de entrada tiene la forma deseada, entre todos los c omputos posibles estar a aqu el en el que el aut omata adivina correctamente cu ando ha llegado a la mitad de la cadena. M se dene como M = (Q, q0 , F, , , z0 , ) donde = {a, b}, = {z0 , A, B }, Q = {q0 , q1 , q2 }, F = {q2 }, y la funci on de transici on est a dada por: (q0 , a, z0 ) = {(q0 , Az0 )}, (q0 , b, z0 ) = {(q0 , Bz0 )}, (q0 , , z0 ) = {(q2 , z0 )} (q0 , a, B ) = {(q0 , AB )}, (q0 , b, A) = {(q0 , BA)}, (q0 , b, B ) = {(q0 , BB ), (q1 , )}, (q1 , a, A) = {(q1 , )}, (q1 , b, B ) = {(q1 , )}, (q1 , , z0 ) = {(q2 , z0 )}. Entre estas transiciones se destacan (q0 , a, A) = {(q0 , AA), (q1 , )}, (q0 , b, B ) = {(q0 , BB ), (q1 , )} las cuales le permiten al aut omata una opci on no-determinista: o seguir acumulando s mbolos en la pila, en el estado q0 , o suponer que se ha llegado a la mitad de la cadena de entrada. En este u ltimo caso, la unidad de control (para aceptar ), (q0 , a, A) = {(q0 , AA), (q1 , )},

5.2. AUTOMATAS CON PILA NO-DETERMINISTAS (AFPN)

153

pasa al estado q1 y comienza a borrar los s mbolos ya almacenados en la pila.


Ejercicios de la secci on 5.2

Dise nar APFN que acepten los siguientes lenguajes: (i) L = {0i 1j : i, j 0, i = j }, sobre = {0, 1}. (ii) L = {ai bj : i j 0}. !(iii) L = {a2i b3i : i 0}, sobre = {a, b}. !(iv) L = {0i 1j : 0 i j 2i}, sobre = {0, 1}. Como se demostr o en la secci on 4.13, el lenguaje L = {ai bi ci : i 0} no es LIC y, por consiguiente, no puede ser aceptado por ning un aut omata con pila. No obstante, podr amos concebir el siguiente plan para aceptar a L: acumular en la pila dos Aes por cada a le da en la cinta, borrar luego una A por cada b le da y, nalmente, borrar una A por cada c. Si la cadena de entrada es de la forma ai bi ci , se llegar a al marcador de fondo z0 en el preciso momento en el que se consume completamente la entrada. Concretamente, M est a denido como M = (Q, q0 , F, , , z0 , ) donde = {a, b, c}, = {z0 , A}, Q = {q0 , q1 , q2 , q3 , q4 }, F = {q4 }, y la funci on de transici on est a dada por: (q0 , , z0 ) = {(q4 , z0 )} (para aceptar ),

(q0 , a, z0 ) = {(q1 , AAz0 )}, (q1 , a, A) = {(q1 , AAA)}, (q1 , b, A) = {(q2 , )}, (q2 , b, A) = {(q2 , )}, (q2 , c, A) = {(q3 , )}, (q3 , c, A) = {(q3 , )}, (q3 , , z0 ) = {(q4 , z0 )}. Acepta este aut omata el lenguaje {ai bi ci : i 0}? En caso contrario, qu e lenguaje acepta?

154

CAP ITULO 5. AUTOMATAS CON PILA

5.3.

Aceptaci on por pila vac a

En todos los modelos de aut omatas que hemos considerado en este curso, la aceptaci on de cadenas est a determinada por los estados nales o de aceptaci on. Para los aut omatas con pila existe otra noci on de aceptaci on: la aceptaci on por pila vac a, denida a continuaci on. Cuando se usa esta noci on, los aut omatas no requieren un conjunto F de estados nales, solamente los seis restantes componentes: Q, q0 , , , z0 y . 5.3.1 Denici on. Dado un aut omata con pila M = (Q, q0 , , , z0 , ), ya sea AFPD o AFPN, el lenguaje aceptado por M por pila vac a se dene como N (M ) := {w : (q0 , w, z0 ) (p, , )}. O sea, una cadena es aceptada por pila vac a si se puede ir, en cero, uno o m as pasos, desde la conguraci on inicial hasta una conguraci on en la que la pila est e completamente desocupada1 . N otese que, para ser aceptada, la cadena de entrada w debe ser procesada completamente. Para aut omatas AFPN las nociones de aceptaci on por pila vac a y por estados nales resultan ser equivalentes, como se establece en los dos siguientes teoremas. Es importante anotar que para aut omatas deterministas AFPD los dos tipos de aceptaci on no resultan ser equivalentes. 5.3.2 Teorema. Si L = L(M ) para alg un aut omata con pila AFPN M , entonces L = N (M ) para alg un AFPN M . Es decir, M acepta por pila vac a lo que M acepta por estado nal. Demostraci on . Sea M = (Q, q0 , F, , , z0 , ). M se dise na modicando M de tal manera que vac e su pila cuando M haya aceptado una cadena de entrada. Concretamente, se dene M como M = (Q {p0 , p}, p0 , , {r0 }, r0 , ) donde p0 (estado inicial) y p son estados nuevos, y r0 es el nuevo marcador de fondo. La funci on de transici on se dene as : 1. (p0 , , r0 ) = {(q0 , z0 r0 )}. Transici on mediante la cual el nuevo s mbolo inicial de pila se coloca en el fondo. Esto impedir a que una cadena sea accidentalmente aceptada si el aut omata original M vac a la pila.
1 La N en la notaci on N (M ) proviene de la expresi on pila nula, sin onimo de pila vac a.

POR PILA VAC 5.3. ACEPTACION IA

155

2. (q, a, s) (q, a, s) para todo q Q, a o a = y s . Esto quiere decir que M simula a M : todas las transiciones del aut omata original tambi en se pueden realizar en el nuevo aut omata. 3. (p, s) (q, , s) para todo q F , s {r0 }. Mediante esta transici on , M pasa al nuevo estado p siempre que q sea un estado de aceptaci on de M . 4. (p, , s) = {(p, )}. Mediante esta transici on , M borra todo el contenido de la pila. Obs ervese que las transiciones de los numerales 3 y 4 no consumen ning un s mbolo en la cadena de entrada. Adem as, la u nica manera de que M vac e completamente la pila es ingresando al estado p, lo cual puede hacer u nicamente desde un estado de aceptaci on de M . Si w es aceptada por M , o sea si w L(M ), M realiza un c omputo de la forma (q0 , w, z0 ) (q, , ) donde q F y . Entonces en M se puede efectuar el siguiente c omputo: (p0 , w, r0 ) (q0 , w, z0 r0 ) (q, , r0 ) (p, , r0 ) (p, , ). Por lo tanto, w N (M ). Un razonamiento similar muestra que w N (M ) implica w L(M ) (ejercicio para el estudiante). En conclusi on, L(M ) = N (M ). 5.3.3 Teorema. Si L = N (M ) para alg un aut omata con pila AFPN M , entonces L = L(M ) para alg un AFPN M . Es decir, M acepta por estado nal lo que M acepta por pila vac a. Demostraci on . Sea M = (Q, q0 , , , z0 , ) un AFPN que acepta por pila vac a. M se dise na a nadiendo un nuevo estado qf a M de tal manera que M ingrese a tal estado (ser a el u nico estado de aceptaci on) solamente cuando M haya vaciado su pila. Concretamente, se dene M como M = (Q {p0 , pf }, p0 , {pf }, , {r0 }, r0 , ) donde p0 (estado inicial) y pf ( unico estado de aceptaci on) son estados nuevos, y r0 es el nuevo s mbolo inicial de pila. La funci on de transici on se dene as :

156

CAP ITULO 5. AUTOMATAS CON PILA

1. (p0 , , r0 ) = {(q0 , z0 r0 )}. Transici on mediante la cual el nuevo s mbolo inicial de pila se coloca en el fondo. Cuando M encuentre el marcador de fondo r0 , sabr a que M ha vaciado su pila. 2. (q, a, s) (q, a, s) para todo q Q, a o a = y s . Esto quiere decir que M simula a M : todas las transiciones del aut omata original tambi en se pueden realizar en el nuevo aut omata. 3. (pf , s) (q, , r0 ) para todo q Q. Mediante esta transici on , M pasa al estado de aceptaci on pf cuando detecte el marcador de fondo r0 . O sea, M acepta cuando M vac e su pila. Si w es aceptada por M , o sea si w N (M ), M realiza un c omputo de la forma (q0 , w, z0 ) (q, , ) donde q Q. Entonces en M se puede efectuar el siguiente c omputo: (p0 , w, r0 ) (q0 , w, z0 r0 ) (q, , r0 ) (pf , , r0 ). Por lo tanto, w L(M ). Un razonamiento similar muestra que w L(M ) implica w N (M ) (ejercicio para el estudiante). En conclusi on, N (M ) = L(M ).

Ejercicios de la secci on 5.3

Modicar los aut omatas de los tres ejemplos de la secci on 5.2 para que acepten por pila vac a y no por estado nal. Dise nar AFPN que acepten por pila vac a los siguientes lenguajes: (i) L = {ai b2i : i 1}, sobre = {a, b}. (ii) L = {a2i bi : i 1}, sobre = {a, b}. (iii) L = {0i 1j : i, j 0, i = j }, sobre = {0, 1}. !(iv) L = {0i 1j : 0 i j 2i}, sobre = {0, 1}. ! Completar los detalles faltantes en las demostraciones de los Teoremas 5.3.2 y 5.3.3. Por qu e estas demostraciones no son v alidas para aut omatas deterministas?

5.4. AUTOMATAS CON PILA Y LIC. PARTE I.

157

5.4.

Aut omatas con pila y LIC. Parte I.

Los lenguajes aceptados por los AFPN son exactamente los lenguajes inde pendientes del contexto. Este es un resultado an alogo al Teorema de Kleene para lenguajes regulares, aunque en el caso de los aut omatas con pila, los modelos deterministas no son computacionalmente equivalentes a los nodeterministas. En la presente secci on consideraremos la primera parte de la correspondencia entre AFPN y LIC. 5.4.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) = L(M ). atica G = (, V, S, P ) dada, se Bosquejo de la demostraci on. Para una gram construye un AFPN que utiliza la pila para simular la derivaci on de cadenas realizada por G. M requiere solamente tres estados, independientemente del n umero de variables y producciones de G. Espec camente, el aut omata M se dene como M = (Q, q0 , F, , , z0 , ), donde Q = {q0 , q1 , q2 }, F = {q2 } y = V {z0 }. La funci on de transici on se dene de la siguiente manera: 1. (q0 , , z0 ) = {(q1 , Sz0 )}. Transici on mediante la cual M coloca el s mbolo inicial de la gram atica, S , en el tope de la pila al iniciar el procesamiento de una cadena de entrada. 2. Para cada variable A V , (q1 , , A) = {(q1 , u) : A u es una producci on de la gram atica G}. Mediante estas transiciones, M utiliza la pila para simular las derivaciones: si el tope de la pila es A y en la derivaci on se usa la producci on A u, el tope de la pila A es substituido por u. 3. Para cada s mbolo terminal a , (q1 , a, a) = {(q1 , )}. Mediante estas transiciones, M borra los terminales del tope de la pila al consumirlos sobre la cinta de entrada. 4. (q1 , , z0 ) = {(q2 , z0 )}. M ingresa al estado de aceptaci on q2 cuando detecta el marcador de fondo z0 . El aut omata M est a dise nado de tal forma que si S = w es una derivaci on a izquierda en la gram atica G, entonces existe un procesamiento (q0 , w, s0 ) (q0 , w, Ss0 ) (q2 , , z0 )

158

CAP ITULO 5. AUTOMATAS CON PILA

que simula la derivaci on. Rec procamente, puede demostrarse que si (q0 , w, z0 ) (q2 , , z0 ) enton ces S = w en la gram atica G.

Ejemplo

Sea G la gram atica: S aAbS | bBa | G : A aA | a B bB | b Q = {q0 , q1 , q2 }, F = {q2 }, = {a, b, S, A, B, z0 },

Seg un la construcci on del Teorema 5.4.1, el aut omata M est a dado por M = (Q, q0 , F, , , z0 , ) donde

y la funci on de transici on es: (q0 , , z0 ) = {(q1 , Sz0 )}, (q1 , , S ) = {(q1 , aAbS ), (q1 , bBa), (q1 , )}, (q1 , , A) = {(q1 , aA), (q1 , a)}, (q1 , , B ) = {(q1 , bB ), (q1 , b)}, (q1 , a, a) = {(q1 , )}, (q1 , b, b) = {(q1 , )}, (q1 , , z0 ) = {(q2 , z0 )}. Podemos ilustrar la correspondencia entre derivaciones en G y procesamientos en M con la cadena aabbba, la cual tiene la siguiente derivaci on a izquierda: S = aAbS = aabS = aabbBa = aabbba. El aut omata M simula esta derivaci on de la cadena aabbba as : (q0 , aabbba, z0 ) (q1 , aabbba, Sz0 ) (q1 , aabbba, aAbSz0 ) (q1 , abbba, AbSz0 ) (q1 , abbba, abSz0 ) (q1 , bbba, bSz0 ) (q1 , bba, Sz0 ) (q1 , bba, bBaz0 ) (q1 , ba, Baz0 ) (q1 , ba, baz0 ) (q1 , a, az0 ) (q1 , , z0 ) (q2 , , z0 ).

5.4. AUTOMATAS CON PILA Y LIC. PARTE I.

159

Ejemplo

La siguiente gram atica genera los pal ndromos de longitud par, S aSa | bSb | .

sobre = {a, b}, es decir, el lenguaje L = {ww R : w }:

Siguiendo el procedimiento del Teorema 5.4.1 podemos construir un AFPN que acepta a L. M = (Q, q0 , F, , , z0 , ) donde Q = {q0 , q1 , q2 }, F = {q2 }, = {a, b, S, z0 }. La funci on de transici on est a dada por: (q0 , , z0 ) = {(q1 , Sz0 )}, (q1 , , S ) = {(q1 , aSa), (q1 , bSb), (q1 , )}, (q1 , a, a) = {(q1 , )}, (q1 , b, b) = {(q1 , )}, (q1 , , z0 ) = {(q2 , z0 )}. Puede observarse que este aut omata es diferente del exhibido en el tercer ejemplo de la secci on 5.2.

Ejercicios de la secci on 5.4

Construir un AFPN M que acepte el lenguaje generado por la siguiente gram atica: S Aba | AB | A aAS | a B bBA | .

G:

Encontrar una derivaci on a izquierda en G de la cadena w = aaababa y procesar luego la cadena w con el aut omata M , simulando la derivaci on. Dise nar una gram atica, con una sola variable, que genere el lenguaje L = {a2i b3i : i 0} y utilizar luego el procedimiento del Teorema 5.4.1 para construir un AFPN que acepte a L. Comparar este aut omata con el construido en el ejercicio de la secci on 5.2.

160

CAP ITULO 5. AUTOMATAS CON PILA

5.5.

Aut omatas con pila y LIC. Parte II.

En la presente secci on consideraremos la segunda parte de la correspondencia entre AFPN y LIC. Demostraremos que para todo AFPN que acepta por pila vac a existe una GIC que genera el lenguaje aceptado por el aut omata. Las gram aticas obtenidas son, en general, bastante complejas, con un gran n umero de variables y de producciones. Hay que advertir tambi en que el procedimiento puede dar lugar a muchas variables in utiles (no-terminables o no alcanzables). 5.5.1 Teorema. Dado un AFPN M = (Q, q0 , , , z0 , ) que acepta por pila vac a, existe una GIC G = (, V, S, P ) tal que L(G) = N (M ). Demostraci on . En la gram atica G las variables (aparte de la variable inicial S ) ser an tripletas de la forma [qXp] donde q , p Q y X . Las producciones de G se denen de la siguiente manera: 1. Si (p, ) (q, a, X ), se a nade la producci on [qXp] a. 2. Si (p, ) (q, , X ), se a nade la producci on [qXp] . 3. Si (r, Y1 Y2 Yk ) (q, a, X ), donde a puede ser un s mbolo del alfabeto o a = y k 1, se a naden todas las producciones de la forma [qXrk ] a[rY1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] para todas las secuencias posibles r1 , r2 , . . . , rk1 de estados de Q. 4. Para todo p Q se a nade la producci on S [q0 z0 p]. La gram atica G as denida pretende simular con derivaciones a izquierda los c omputos de M ; el signicado intuitivo de la variable [qXp] es: al extraer X del tope de la pila, se pasa del estado q al estado p. La producci on [qXrk ] a[rY1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] del numeral 3 indica las posibles maneras en las que M puede extraer la cadena Y1 Y2 Yk de la pila, una vez se haya sustituido el tope de la pila X por dicha cadena, pasando del estado q al estado r y consumiendo el s mbolo a. Demostraremos primero la inclusi on N (M ) L(G). Para todo q , p Q, X y w , se demostrar a la implicaci on (5.1) si (q, w, X ) (p, , ) entonces [qXp] = w,
+ +

5.5. AUTOMATAS CON PILA Y LIC. PARTE II.

161
+

por inducci on sobre el n umero de pasos del c omputo (q, w, X ) (p, , ). Cuando hay un s olo paso, el c omputo es de la forma (q, a, X ) (p, , ) o de la forma (q, , X ) (p, , ). Si (q, a, X ) (p, , ), entonces (p, ) (q, a, X ); as que [qXp] a es una producci on de G, y se obtendr a la derivaci on [qXp] = a. Si (q, , X ) (p, , ), entonces (p, ) (q, , X ); as que [qXp] es una producci on de G y se obtendr a [qXp] = . Para el razonamiento inductivo, sup ongase que (q, w, X ) (p, , ) donde n > 1. Considerando el primer paso de este c omputo de n pasos, podemos escribir: (5.2) (q, ax, X ) (r0 , x, Y1 Y2 Yk ) (p, , ),
n

donde a o a = . Cuando a , w = ax para alguna cadena x ; cuando a = , x = w. En el primer paso de 5.2 se ha aplicado la transici on (r0 , Y1 Y2 Yk ) (q, a, X ) de M . Por la denici on de la gram atica G, [qXrk ] a[r0 Y1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] es una producci on, para todas las secuencias posibles r1 , r2 , . . . , rk1 de estados de Q. Seg un 5.2, desde la conguraci on instant anea (r0 , x, Y1 Y2 Yk ) el aut omata llega hasta la conguraci on (p, , ), consumiendo completamente la cadena x y vaciando la pila. La cadena x se puede escribir entonces como x = w1 w2 wk , siendo wi la cadena consumida por el aut omata para extraer el s mbolo Yi del tope de la pila. En consecuencia, existe una secuencia de estados r1 , r2 ,. . . , rk1 , rk = p tales que (r0 , x, Y1 Y2 Yk ) = (r0 , w1 w2 wk , Y1 Y2 Yk ) (r1 , w2 wk , Y2 Yk ) (r2 , w3 wk , Y3 Yk ) (rk1 , wk , Yk ) (rk , , ). Para i = 1, 2, . . . , k se tiene as una secuencia de c omputos parciales (ri1 , wi , Yi ) (ri , , ), donde rk = p. Por la hip otesis de inducci on, [ri1 Yi ri ] = wi para i = 1, 2, . . . , k . Por consiguiente, [qXp] = [qXrk ] = a[r0 Y1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] = aw1 w2 wk = w.
+ + + + + + +

162

CAP ITULO 5. AUTOMATAS CON PILA

Esto demuestra la implicaci on 5.1. Por lo tanto, si w es aceptada por M , siendo w = , se tendr a (q0 , w, z0 ) (p, , ), y usando 5.1 se con+ cluir a que S = [q0 z0 p] = w. Si w = es aceptada por M , necesariamente (q0 , , z0 ) (p, , ) para alg un estado p. Esto signica que (q0 , , z0 ) (p, , ), y se tendr a S = [q0 z0 p] = . Esto demuestra que N (M ) L(G). Para establecer L(G) N (M ) se demuestra la implicaci on (5.3) si [qXp] = w, entonces (q, w, X ) (p, , ),
+ + + +

por inducci on sobre el n umero de pasos en la derivaci on [qXp] = w. Este razonamiento inductivo es similar al usado para probar la implicaci on rec proca 5.1, y se deja como ejercicio para el estudiante interesado. Si en G se puede derivar la cadena w, es decir, si S = w, la primera producci on + aplicada ser a de la forma S [q0 z0 p]. De donde, S = [q0 z0 p] = w. Usando 5.3 se concluye (q0 , w, z0 ) (p, , ), o sea w N (M ).

+

Ejemplo

Vamos a aplicar la construcci on del Teorema 5.5.1 para encon-

trar una gram atica G que genere el lenguaje de las cadenas

sobre el alfabeto = {a, b} que tienen igual n umero de aes que de bes, a partir del AFPN M = (Q, q0 , F, , , z0 , ) con los siguientes componentes. = {a, b}, = {z0 , A, B }, Q = {q0 , q1 }, F = {q1 } y la funci on de transici on est a dada por: (q0 , a, z0 ) = {(q0 , Az0 )}, (q0 , b, z0 ) = {(q0 , Bz0 )}, (q0 , a, A) = {(q0 , AA)}, (q0 , b, B ) = {(q0 , BB )}, (q0 , a, B ) = {(q0 , )}, (q0 , b, A) = {(q0 , )}, (q0 , , z0 ) = {(q1 , )}. M es una modicaci on del aut omata presentado en el segundo ejemplo de la secci on 5.2 (en ese ejemplo M aceptaba por estado nal; aqu M acepta por pila vac a). Las variables de G son S y todas las tripletas de la forma [qXp] donde q , p Q y X . Hay, por lo tanto, 13 variables, a saber: S, [q0 z0 q0 ], [q0 Aq0 ], [q0 Bq0 ], [q0 z0 q1 ], [q0 Aq1 ], [q0 Bq1 ], [q1 z0 q0 ], [q1 Aq0 ], [q1 Bq0 ], [q1 z0 q1 ], [q1 Aq1 ], [q1 Bq1 ].

5.5. AUTOMATAS CON PILA Y LIC. PARTE II.

163

A continuaci on se presentan las producciones de G. Producci on obtenida de (q0 , , z0 ) = {(q1 , )}: [q0 z0 q1 ] . Producci on obtenida de (q0 , a, B ) = {(q0 , )}: [q0 Bq0 ] a. Producci on obtenida de (q0 , b, A) = {(q0 , )}: [q0 Aq0 ] b. Producciones obtenidas de (q0 , a, z0 ) = {(q0 , Az0 )}: [q0 z0 q0 ] a[q0 Aq0 ][q0 z0 q0 ] | a[q0 Aq1 ][q1 z0 q0 ] [q0 z0 q1 ] a[q0 Aq0 ][q0 z0 q1 ] | a[q0 Aq1 ][q1 z0 q1 ]. Producciones obtenidas de (q0 , b, z0 ) = {(q0 , Bz0 )}: [q0 z0 q0 ] b[q0 Bq0 ][q0 z0 q0 ] | b[q0 Bq1 ][q1 z0 q0 ] [q0 z0 q1 ] b[q0 Bq0 ][q0 z0 q1 ] | b[q0 Bq1 ][q1 z0 q1 ]. Producciones obtenidas de (q0 , a, A) = {(q0 , AA)}: [q0 Aq0 ] a[q0 Aq0 ][q0 Aq0 ] | a[q0 Aq1 ][q1 Aq0 ] [q0 Aq1 ] a[q0 Aq0 ][q0 Aq1 ] | a[q0 Aq1 ][q1 Aq1 ]. Producciones obtenidas de (q0 , b, B ) = {(q0 , BB )}: [q0 Bq0 ] b[q0 Bq0 ][q0 Bq0 ] | b[q0 Bq1 ][q1 Bq0 ] [q0 Bq1 ] b[q0 Bq0 ][q0 Bq1 ] | b[q0 Bq1 ][q1 Bq1 ]. Finalmente, las producciones de la variable inicial S son: S [ q0 z0 q0 ] | [ q0 z0 q1 ] . Al examinar las producciones se puede observar que todas las variables de la forma [q1 Xq ], con X y q Q, son in utiles ya que no tienen producciones. Con la terminolog a ya conocida, dichas variables son no-terminables y, por consiguiente, las producciones en las que aparecen se pueden eliminar. Otra variable no terminable es [q0 z0 q0 ]. Adem as, las variables [q0 Aq1 ] y [q0 Bq1 ] son inalcanzables, as que se pueden eliminar, junto con todas

164

CAP ITULO 5. AUTOMATAS CON PILA

sus producciones. Realizando estas simplicaciones se obtiene la siguiente gram atica: S [ q0 z0 q1 ] [q0 z0 q1 ] a[q0 Aq0 ][q0 z0 q1 ] | b[q0 Bq0 ][q0 z0 q1 ] | [q0 Aq0 ] a[q0 Aq0 ][q0 Aq0 ] | b [q0 Bq0 ] b[q0 Bq0 ][q0 Bq0 ] | a. Como se indic o en la demostraci on, en las gram aticas construidas seg un el m etodo del Teorema 5.5.1, las derivaciones a izquierda corresponden a los c omputos en el aut omata dado. Podemos ilustrar este punto, en el presente ejemplo, con la cadena de entrada w = bbabaa. El siguiente es un c omputo de aceptaci on de w en M : (q0 , bbabaa, z0 ) (q0 , babaa, Bz0 ) (q0 , abaa, BBz0 ) (q0 , baa, Bz0 ) (q0 , aa, BBz0 ) (q0 , a, Bz0 ) (q0 , , z0 ) (q1 , , ). La derivaci on a izquierda en G que corresponde a este c omputo es: S = [q0 z0 q1 ] = b[q0 Bq0 ][q0 z0 q1 ] = bb[q0 Bq0 ][q0 Bq0 ][q0 z0 q1 ] = bba[q0 Bq0 ][q0 z0 q1 ] = bbab[q0 Bq0 ][q0 Bq0 ][q0 z0 q1 ] = bbaba[q0 Bq0 ][q0 z0 q1 ] = bbabaa[q0 z0 q1 ] = bbabaa. Obs ervese que, en cada paso de la derivaci on, el contenido actual de la pila se puede leer examinando las segundas componentes de las tripletas. Para hacer m as legibles las producciones de la gram atica G obtenida en este ejemplo, cambiamos los nombres de las variables as : C = [q0 z0 q1 ], D = [q0 Aq0 ] y E = [q0 Bq0 ]. Con esta nomenclatura, la gram atica se puede escribir como: SC C aDC | bEC | G: D aDD | b E bEE | a

Puesto que la u nica producci on de S es S C , las variables S y C se pueden identicar, dando lugar a la siguiente gram atica simplicada equivalente: S aDS | bES | D aDD | b E bEE | a

5.5. AUTOMATAS CON PILA Y LIC. PARTE II.

165

Ejercicios de la secci on 5.5

Con respecto al ejemplo de esta secci on, procesar con M la cadena de entrada w = baabbbaa y luego derivar w en la gram atica G, simulando dicho procesamiento. ! Dise nar un AFPN que acepte el lenguaje L de las cadenas sobre el alfabeto = {a, b} que tienen el doble n umero de aes que de bes. Aplicar luego la construcci on del Teorema 5.5.1 para encontrar una gram atica que genere a L.

Cap tulo

M aquinas de Turing
En este cap tulo se presenta la M aquina de Turing (MT) que es el modelo de aut omata con m axima capacidad computacional: la unidad de control puede desplazarse a izquierda o a derecha y sobre-escribir s mbolos en la cinta de entrada. Argumentaremos que la m aquina de Turing tiene la misma potencia o capacidad de los computadores reales.

6.1.

M aquinas de Turing como aceptadoras de lenguajes

Una m aquina de Turing (MT), M = (Q, q0 , F, , , b, ), consta de siete componentes: 1. Q es el conjunto (nito) de estados internos de la unidad de control. 2. q0 Q es el estado inicial. 3. F es el conjunto de estados nales o de aceptaci on, = F Q. 4. es el alfabeto de entrada. 5. es el alfabeto de cinta, que incluye a , es decir, . 6. b es el s mbolo blanco (el s mbolo b no puede hacer parte del alfabeto de entrada ). 7. es la funci on de transici on de la m aquina: : Q Q {, } 167

168

CAP ITULO 6. MAQUINAS DE TURING

es una funci on parcial, es decir, puede no estar denida en algunos elementos del dominio. La echa denota desplazamiento a izquierda mientras que denota desplazamiento a la derecha. La transici on (q, a) = (p, b, D) signica: estando en el estado q , escaneando el s mbolo a, la unidad de control borra a, escribe b y se mueve en el estado p, ya sea a la izquierda (si el desplazamiento D es ) o a la derecha (si D es ). Una m aquina de Turing M procesa cadenas de entrada w colocadas sobre una cinta innita en ambas direcciones. Para procesar una cadena de entrada w, la unidad de control de M est a en el estado inicial q0 escaneando el primer s mbolo de w. Las dem as celdas o casillas de la cinta contienen el s mbolo blanco b. Descripci on o conguraci on instant anea. Es una expresi on de la forma a1 a2 ai1 qai an donde los s mbolos a1 , . . . , an pertenecen al alfabeto de cinta y q Q. Esta expresi on representa el estatus actual del c omputo:

a1

a2

ai 1

ai

an

Es decir, la descripci on instant anea a1 a2 ai1 qai an indica que la unidad de control de M est a en el estado q escaneando el s mbolo ai . Se supone que todas las casillas, a la izquierda a1 y a la derecha de an , contienen el s mbolo blanco, b. Ejemplos concretos de descripciones instant aneas son: aabq2 baaa q5 ababba ab b baabq0 bba

6.1. MAQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES

169

La conguraci on o descripci on instant anea inicial, o simplemente con guraci on inicial, es q0 w, donde w es la cadena de entrada. Esta se coloca en cualquier parte de la cinta de entrada. Paso computacional. El paso de una descripci on instant anea a otra, por medio de una transici on denida por , se denomina un paso computacional y se denota por u1 qu2 v1 pv2 . Aqu u1 , u2 , v1 , v2 y p, q Q. Un ejemplo concreto es abbaq2 ba abbq1 aca en la cual la m aquina utiliz o la transici on (q2 , b) = (q1 , c, ). La notaci on u1 qu2 v1 pv2 signica que M puede pasar de la descripci on instant anea u1 qu2 a la descripci on instant anea v1 pv2 en cero, uno o m as pasos computacionales. C omputos especiales. Durante el c omputo o procesamiento de una cadena de entrada hay dos situaciones especiales que se pueden presentar: 1. El c omputo termina porque en determinado momento no hay transici on denida. 2. El c omputo no termina; esto es lo que se denomina un bucle innito o un ciclo innito. Esta situaci on se representa con la notaci on u1 qu2 la cual indica que el c omputo que se inicia en la descripci on instant anea u1 qu2 no se detiene nunca. Un detalle para tener en cuenta es que las transiciones con s mbolo b, (q, b) = (p, s, D), no son las mismas transiciones usadas para aut omatas en cap tulos anteriores. Una transici on en un aut omata tiene lugar independientemente del s mbolo le do y la unidad de control permanece estacionaria, mientras que una transici on (q, b) = (p, s, D) en una MT requiere que el s mbolo blanco b est e escrito en la casilla escaneada; adem as, la unidad de control sobre-escribe el blanco y realiza un desplazamiento D. Lenguaje aceptado por una MT. Una cadena de entrada w es aceptada por una MT M si el c omputo que se inicia en la conguraci on inicial q0 w

170

CAP ITULO 6. MAQUINAS DE TURING

termina en una conguraci on instant anea w1 pw2 , p estado de aceptaci on, en la cual M se detiene completamente. El lenguaje L(M ) aceptado por una MT M se dene entonces como L(M ) := {w : q0 w w1 pw2 , p F, w1 , w2 , M se detiene en la congiguraci on w1 pw2 }. La noci on de aceptaci on para m aquinas de Turing es m as exible que para aut omatas: una cadena de entrada no tiene que ser le da en su totalidad para que sea aceptada; s olo se requiere que la m aquina se detenga completamente, en un momento determinado, en un estado de aceptaci on. Para simplicar los argumentos sobre m aquinas de Turing, en el modelo est andar se supone que la unidad de control siempre se detiene al ingresar a en un estado de aceptaci on. Es decir, no se permiten transiciones (q, a) cuando q F . Las m aquinas de Turing originan las siguientes clases de lenguajes: 1. L es un lenguaje recursivamente enumerable (RE) si existe una MT M tal que L(M ) = L. 2. L es un lenguaje recursivo si existe una MT M tal que L(M ) = L y M se detiene con todas las cadenas de entrada. Las denominaciones lenguaje recursivamente enumerable y lenguaje recursivo pueden parecer un tanto extra nas; esta terminolog a es anterior a la aparici on del modelo de m aquina de Turing y se ha mantenido vigente hasta el presente. En el Teorema 6.8.3 se justicar a la denominaci on recursivamente enumerable (RE) al establecerse que para todo lenguaje RE se puede construir una MT que enumere secuencialmente sus cadenas. Obviamente, todo lenguaje recursivo es recursivamente enumerable, pero la armaci on rec proca no es (en general) v alida, como se demostrar a en la secci on 7.5. Esto permitir a concluir que el fen omeno de m aquinas que nunca se detienen no se puede eliminar de la teor a de la computaci on. Diagrama de transiciones o diagrama de ujo de una MT. La funci on de transici on de una MT se puede presentar como un digrafo etiquetado. As , la transici on (q, a) = (p, b, ) se representa por

a| b q p

6.1. MAQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES

171

Unidad de control estacionaria. Para simplicar la descripci on del modelo est andar, se ha exigido que la unidad de control se desplace hacia la izquierda o hacia la derecha en cada transici on. No obstante, se puede permitir que la unidad de control no se mueva en un determinado paso computacional, es decir, que no realice ning un desplazamiento. Este tipo de transici on lo escribimos en la forma: (q, a) = (p, b, ) donde a, b ; p, q Q y signica que la unidad de control no se mueve. Tal transici on se puede simular por medio de un movimiento a la derecha seguido de un retorno a la izquierda. As , para simular la transici on (q, a) = (p, b, ) utilizamos un estado auxiliar nuevo q y las transiciones: (q, a) = (q , b, ), (q , s) = (p, s, ), para todo s mbolo s .

La directriz de no-desplazamiento tambi en se puede simular con un movimiento a la izquierda seguido de un retorno a la derecha. En cualquier caso, concluimos que las MT en las que hay transiciones estacionarias, (q, a) = (p, b, ), aparte de las transiciones normales, aceptan los mismos lenguajes que las MT est andares. N otese que las transiciones estacionarias se asemejan a las transiciones en aut omatas, excepto por el hecho de que las m aquinas de Turing tienen la capacidad de sobre-escribir los s mbolos escaneados.

Ejemplo

La siguiente MT acepta el lenguaje de las cadenas con un

n umero par de ceros, sobre el alfabeto {0, 1}.

1|1 > q0 b| b q2

0|0

1|1 q1

0|0

Ejemplo

En este ejemplo se construye una MT M que acepta el lenguaje

L = {ai bi ci : i 0} y que se detiene al procesar todas las

entradas. Por consiguiente, L es un lenguaje recursivo aunque no es LIC,

172

CAP ITULO 6. MAQUINAS DE TURING

como se demostr o en la secci on 4.13; es decir, L no puede ser aceptado por ning un aut omata con pila. Sea M la MT con par ametros = {a, b, c}, = {a, b, c, X, Y, Z, b}, Q = {q0 , q1 , q2 , q3 , q4 , q5 }, F = {q5 }, y cuya funci on de transici on est a representada por el siguiente diagrama:
Y |Y Z |Z

q4

b | b

q5
a|a b |b a|a Y |Y b |b Z |Z Y |Y Z |Z c |Z

Y |Y

b|

b| Y

> q0

a|X

q1

q2

q3

X |X

La idea utilizada para el dise no de esta MT se puede describir as : la unidad de control cambia la primera a por X y se mueve a la derecha hasta encontrar la primera b, la cual se sobre-escribe por una Y . Luego se mueve hacia la derecha hasta encontrar la primera c, la cual se cambia por Z . El control retrocede entonces hacia la izquierda en busca de la primera X que encuentre en su camino; este retorno se hace en el estado q3 . La m aquina avanza luego hacia la derecha, hasta la primera a que quede en la cinta, y todo el proceso anterior se repite. Si la cadena de entrada tiene la forma requerida, todas las aes ser an reemplazadas por X s, las bes por Y s y las ces por Z s. Una vez terminada la transformaci on, el control se mueve hacia la derecha, en el estado q4 , hasta encontrar la primera celda marcada con el s mbolo blanco b. La MT est a dise nada de tal forma que si la cadena

6.1. MAQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES

173

de entrada no tiene la forma requerida, el procesamiento terminar a en un estado diferente del estado de aceptaci on q5 . A continuaci on procesamos la cadena de entrada w = aabbcc L. q0 aabbcc Xq1 abbcc Xaq1 bbcc XaY q2 bcc XaY bq2 cc XaY bq3 bZc q3 XaY bZc Xq0 aY bZc XXq1 Y bZc XXY q1 bZc XXY Y q2 Zc XXY Zq2 c XXY q3 ZZ Xq3 XY ZZ XXq0 Y Y ZZ XXY q4 Y ZZ XXY Y ZZq4 b XXY Y ZZ b q5 b. La cadena de entrada w = aaabbcc, que no est a en L, se procesa as : q0 aaabbcc Xq1 aabbcc Xaaq1 bbcc XaaY q2 bcc XaaY bq2 cc XaaY bq3 bZc q3 XaaY bZc Xq0 aaY bZc XXaq1 Y bZc XXaY q1 bZc XXaY Y q2 Zc XXaY Zq2 c XXaY q3 ZZ Xq3 XaY ZZ XXq0 aY Y ZZ XXXq1 Y Y ZZ XXXY Y q1 ZZ (c omputo abortado). Por otro lado, la cadena abbbcc, que tampoco est a en L, se procesar a as : q0 abbcc Xq1 bbcc XY q2 bcc XY bq2 cc XY q3 bZc q3 XY bZc Xq0 Y bZc XY q4 bZc (c omputo abortado).

Ejercicios de la secci on 6.1

Seg un los ejercicios de la secci on 4.13, los siguientes lenguajes no son LIC. Dise nar MT que los acepten, escribiendo expl citamente la idea utilizada en el dise no. Presentar cada MT por medio de un diagrama de transiciones. L = {ai bi cj : j i}. L = {0i 12i 0i : i 0}. L = {ai bj ck : 1 i j k }. L = {ai bj ci dj : i, j 0}. L = {ai bi ci di : i 0}.

174

CAP ITULO 6. MAQUINAS DE TURING

6.2.

Subrutinas o macros

Hay procedimientos intermedios, como copiar o trasladar cadenas, que se repiten frecuentemente en el dise no de m aquinas de Turing. Es u til identicar algunos de estos procedimientos, similares a las subrutinas o macros de los programas computacionales, para simplicar el dise no de m aquinas m as complejas. Las subrutinas se pueden considerar como m aquinas de Turing con estado inicial pero sin estados de aceptaci on.

Ejemplo

Subrutina TI, traslaci on a la izquierda. Esta subrutina toma una

cadena de entrada y la traslada una casilla hacia la izquierda.

Si la entrada es la cadena a1 a2 ak , la acci on de TI se puede representar en la forma Entrada: Salida: b b a 1 a k 1 a k a1 a2 ak b b

La echa indica que las casillas se naladas sobre la cinta coinciden. Los s mbolos subrayados en las dos cintas representan los s mbolos le dos por la unidad de control al iniciar y al terminar la subrutina, respectivamente. La MT que aparece a continuaci on sirve para implementar la subrutina TI cuando el alfabeto de entrada es {a, b, c}:
b| b

a | b

qa

b|a

> q0

b| b

qb

b|b

q1

c | b

qc

b|c

A continuaci on denimos algunos otras subrutinas u tiles; se solicita al estudiante dise nar MT que los implementen.

6.2. SUBRUTINAS O MACROS

175

Subrutina TD, traslaci on a la derecha. Traslada la cadena de entrada una casilla a la derecha:
Entrada: Salida:

ba 1 a 2 a k b b b a 1 a k 1 a k

Subrutina BI, primer blanco a la izquierda. Busca el primer s mbolo b a la izquierda de una cadena w que no posee blancos:
Entrada: Salida:

bw b bw b

Subrutina BD, primer blanco a la derecha. Busca el primer s mbolo b a la derecha de una cadena w que no posee blancos:
Entrada: Salida:

bw b bw b

Subrutina NBI, primer s mbolo no-blanco a la izquierda. Busca el primer s mbolo diferente de b a la izquierda de una cadena de blancos:
Entrada: Salida:

a b b b b a b b b b

Subrutina NBD, primer s mbolo no-blanco a la derecha. Busca el primer s mbolo diferente de b a la derecha de una cadena de blancos:
Entrada: Salida:

b b ba b b b b ba

Subrutina COPD, copia a la derecha. Copia la cadena w a la derecha de si misma, separando las dos w por un blanco b. La cadena w no posee blancos:
Entrada: Salida:

bw b b bw bw b

Subrutina COPI, copia a la izquierda. Copia la cadena w a la izquierda de si misma, separando las dos w por un blanco b. La cadena w que no posee

176 blancos:

CAP ITULO 6. MAQUINAS DE TURING

Entrada: Salida:

b bw b bw bw b

Subrutina INT, intercambio. Intercambia las cadenas u y v (estas cadenas no poseen blancos y no necesariamente son de la misma longitud):
Entrada: Salida:

bu bv b bv bu b

Ejercicios de la secci on 6.2

Dise nar MT que implementen las subrutinas TD, BI, BD, NBI, NBD, COPD, COPI e INT cuando el alfabeto de entrada es {a, b}. Dise nar MT que implementen las subrutinas TD, BI, BD, NBI, NBD, COPD, COPI e INT cuando el alfabeto de entrada es {0, 1, 2}. Sea = {a, b}. Dise nar MT para las siguientes subrutinas: (i) TI2 . Traslada la cadena de entrada 2 casillas a la izquierda. (ii) TD2 . Traslada la cadena de entrada 2 casillas a la derecha. (iii) TIk . Traslada la cadena de entrada k casillas a la izquierda (k es un entero jo 1). (iv) TDk . Traslada la cadena de entrada k casillas a la derecha (k es un entero jo 1).

6.3.

M aquinas de Turing como calculadoras de funciones

Como las m aquinas de Turing tienen la capacidad de transformar las cadenas de entrada, borrando o sobre-escribiendo s mbolos, se pueden utilizar como mecanismos para calcular funciones. Formalmente, una MT M = (Q, q0 , qf , , , b, ) calcula o computa una funci on h : si para toda entrada w se tiene q0 w qf v,

siempre que v = h(w).

Si existe una MT que calcule la funci on h, se dice que h es Turingcalculable o Turing-computable. El modelo de MT aqu utilizado coincide con el est andar, pero no hay estados de aceptaci on. El estado qf , llamado

6.3. MAQUINAS DE TURING COMO CALCULADORAS DE FUNCIONES

177

estado nal, se usa para terminar el procesamiento de la entrada y producir la salida. No se permiten transiciones desde el estado nal qf . N otese que M debe terminar el procesamiento en la conguraci on qf v , o sea, la unidad de control debe estar escaneando el primer s mbolo de la salida v . Si M no se detiene con una entrada particular w, la funci on h no est a denida en w. Es decir, el dominio de h est a formado u nicamente por aquellas cadenas para las cuales M se detiene. Es corriente escribir h(w) para indicar que h est a denida en w (h converge en w) y h(w) para indicar que h no est a denida en w (h diverge en w). Si la funci on h est a denida para toda entrada w (es decir, si M se detiene para toda w) se dice que h es una funci on total. Una funci on indenida para algunas entradas se dice que es una funci on parcial.

Ejemplo

Dise nar una MT M que calcule el residuo de divisi on de n por

3, para cualquier n umero natural n 1 escrito en el sistema

de numeraci on unitario (n se escribe como una secuencia de n unos). on por 3 son 0, 1 y 2, por lo cual Soluci on. Los posibles residuos de divisi bastan 3 estados, aparte de qf , para calcular esta funci on. M recorre de izquierda a derecha la secuencia de entrada borrando los unos y pasando alternadamente por los estados q0 (que representa el residuo 0), q1 (residuo 1) y q2 (residuo 2). El siguiente es el diagrama de transiciones de M : 1| b

1| b > q0
q1

1| b
q2

b | 1 b | 0
qf

b | 2

La noci on de funci on Turing-computable se puede extender f acilmente a funciones de varios argumentos. Concretamente, una funci on h de k argumentos es Turing-computable si para toda k -upla (w1 , w2 , . . . , wk ) se tiene q0 w 1 bw 2 b bw k b qf v,

siempre que v = h(w1 , w2 , . . . , wk ).

178

CAP ITULO 6. MAQUINAS DE TURING

N otese que para escribir la entrada en la cinta, los k argumentos w1 , w2 ,. . . , wk se separan entre s con el s mbolo blanco b. Igual que antes, no se permiten transiciones desde el estado nal qf . Esta denici on abarca tanto los casos de las funciones totales (denidas para toda entrada) como los de las funciones parciales (indenidas para algunas entradas).

Ejemplo

de numeraci on unitario. Esta es una funci on de dos argumen-

Dise nar una MT M que calcule la funci on suma, en el sistema

tos, h(n, m) = n + m, donde n, m 1. Con entrada 1n b1m , M debe pron + m n ducir como salida 1 . Las secuencias de unos, 1 y 1m , representan los n umeros naturales n y m, respectivamente. Soluci on. M va a transformar 1n b1m en 1n+m trasladando la cadena 1m una casilla hacia la izquierda. El separador b se sobre-escribe por 1 y el u ltimo 1 de 1m se sobre-escribe por el s mbolo b. El diagrama de transiciones de la MT que implementa esta idea es:
b | 1 b| b 1| b b| b

> q0
1 | 1

q1
1 | 1

q2

q3
1 | 1

qf

Ejercicios de la secci on 6.3

Dise nar MT que calculen las siguientes funciones; hacer diagramas de transiciones para las m aquinas obtenidas. Las entradas num ericas se dan en el sistema de numeraci on unitario, como en los ejemplos de esta secci on. La funci on de paridad de los n umeros naturales (n 1): h(n) = 1, 0, si n es par, si n es impar.

h(n) = 2n, para todo n umero natural n 1. Para n, m 1, f (n, m) = 1, 0, si n m, si n < m.

Para n, m 1, h(n, m) = m ax(n, m). Para i, j, k 1, h(i, j, k ) = j . Esta funci on se llama segunda proyecci on. Observaci on: en general, la i- esima proyecci on sobre k variables, h(n1 , . . . , ni , . . . , nk ) = ni , es Turing-computable.

6.4. MAQUINAS DE TURING COMO GENERADORAS DE LENGUAJES

179

6.4.

M aquinas de Turing como generadoras de lenguajes

Otra faceta importante de las MT es su capacidad para generar lenguajes, tarea para la cual no son necesarios los estados de aceptaci on. Concretamente, una MT M = (Q, q0 , , , b, ) genera el lenguaje L si 1. M comienza a operar con la cinta en blanco en el estado inicial q0 . 2. Cada vez que M retorna al estado inicial q0 , hay una cadena u perteneciente al lenguaje L escrita sobre la cinta. 3. Todas las cadenas de L son, eventualmente, generadas por M .

Ejemplo

La siguiente MT genera cadenas con un n umero par de aes

sobre el alfabeto = {a}, o sea, el lenguaje L = {a2i : i 1}.

b| a > q0 b| a

q1

Ejemplo

La siguiente MT genera todas cadenas de ceros y unos en el

orden lexicogr aco (las cadenas se ordenan por longitud y las

cadenas de la misma longitud se ordenan ortogr acamente de izquierda a derecha, considerando 0 < 1): 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, . . . .
0|0

q3
b|0 0|0 0|1

b| b

> q0
1|1 b| b

q2

1|0

q1
0|0 1|1

b| b

180

CAP ITULO 6. MAQUINAS DE TURING

Ejercicios de la secci on 6.4

Dise nar MT que generen los siguientes lenguajes: (i) L = {ai bi : i 1}. (ii) L = {ai cbi : i 1}. (iii) L = {ai : i es divisible por 3, i 1}. Modicar la MT del u ltimo ejemplo de esta secci on para dise nar una MT que genere todas las cadenas de {a, b, c} en orden lexicogr aco. Ayuda: no se necesitan m as estados. Sea un alfabeto de n s mbolos, = {a1 , a2 , . . . , an }. Modicar la MT del u ltimo ejemplo de esta secci on para dise nar una MT que genere en orden lexicogr aco. Ayuda: no se necesitan m as estados.

6.5.

Variaciones del modelo est andar de MT

Hemos visto c omo las m aquinas de Turing se pueden utilizar para aceptar lenguajes (en lo cual se asemejan a los aut omatas de cap tulos anteriores), para generar lenguajes y para calcular funciones de uno o de varios argumentos. En esta secci on veremos que, a pesar de su simplicidad, el modelo est andar de m aquina de Turing es sucientemente exible como para simular acciones computacionales m as complejas, entre las que se encuentran el uso de m ultiples cintas y el no-determinismo.

6.5.1.

Estado de aceptaci on u nico

Las m aquinas de Turing dise nadas como aceptadoras de lenguajes se pueden convertir, sin alterar el lenguaje aceptado, en m aquinas con un u nico estado de aceptaci on. Esto se puede hacer porque en la denici on del modelo est andar se ha exigido que una MT siempre se detenga cuando la unidad de control ingresa en un estado de aceptaci on. Por consiguiente, al dise nar una MT s olo es necesario un estado de aceptaci on. De manera concreta, si una MT tiene varios estados de aceptaci on, podemos modicarla cambiando cada transici on de la forma (q, a) = (p, b, D), donde a, b y p es un estado de aceptaci on original, por la transici on (q, a) = (qf , b, D), en la que qf es el u nico estado de aceptaci on de la nueva m aquina. De esta manera, se puede considerar que toda MT tiene un u nico estado inicial y un u nico estado de aceptaci on. Este es un hecho importante para la codicaci on binaria de m aquinas de Turing (secci on 7.1).

6.5. VARIACIONES DEL MODELO ESTANDAR DE MT

181

6.5.2.

M aquina de Turing con cinta dividida en pistas

En el modelo multi-pista, la cinta est a dividida en un n umero nito k de pistas, como se muestra en la siguiente gura:

. . .

a1 a2 . . . ak

Pista 1 Pista 2

. . .

. . .
Pista k

q
La funci on de transici on adquiere la siguiente forma: (q, (a1 , a2 , a3 , . . . , ak )) = (p, (b1 , b2 , b3 , . . . , bk ), D) donde los ai y los bi son s mbolos del alfabeto de cinta y D es , o . En un paso computacional, la unidad de control cambia simult aneamente el contenido de las k pistas de la celda escaneada y realiza luego uno de los desplazamientos , o . Simulaci on. Las m aquinas de Turing que act uan sobre una cinta dividida en k pistas aceptan los mismos lenguajes que las MT est andares. Para concluir tal armaci on, basta considerar el modelo multi-pistas como una MT normal en la que el alfabeto de cinta est a formado por el conjunto de k -uplas (s1 , s2 , . . . , sk ), donde los si . Es decir, el nuevo alfabeto de cinta es el producto cartesiano k = (k veces).

Ejemplo

Las pistas se usan por lo general para se nalar con marcas o

marcadores ciertas posiciones en la cinta. La MT dise nada

en el ejemplo de la secci on 6.1 para aceptar el lenguaje L = {ai bi ci : i 1} utiliza impl citamente la idea de marcadores: reemplazar las as por X s, las bes por Y s y las ces por Z s no es otra cosa que colocar las marcas X , Y y Z en las posiciones deseadas. Estas marcas se pueden colocar en una pista diferente, sin necesidad de sobre-escribir los s mbolos de la cadena de entrada.

6.5.3.

M aquina de Turing con m ultiples cintas

En el modelo multi-cintas hay k cintas diferentes, cada una dividida en celdas o casillas, como se muestra en la gura que aparece en la parte superior de la p agina siguiente.

182

CAP ITULO 6. MAQUINAS DE TURING

a1

Cinta 1

a2

Cinta 2

. . .

. . .

ak

Cinta k

Inicialmente, la cadena de entrada se coloca en la primera cinta y las dem as cintas est an llenas de blancos. En un paso computacional, la unidad de control cambia el contenido de la casilla escaneada en cada cinta y realiza luego uno de los desplazamientos , o . Esto se hace de manera independiente en cada cinta; la unidad de control tiene entonces k visores que act uan independientemente en cada cinta. La funci on de transici on tiene la siguiente forma: (q, (a1 , a2 , a3 , . . . , ak )) = p, (b1 , D1 ), (b2 , D2 ), (b3 , D3 ), . . . , (bk , Dk ) , donde los ai y los bi son s mbolos del alfabeto de cinta , y cada Di es un desplazamiento , o . Simulaci on. A pesar de que el modelo multi-cinta parece, a primera vista, m as poderoso que el modelo est andar, resulta que una MT con m ultiples cintas se puede simular con una MT multi-pista. A continuaci on bosquejaremos el procedimiento de simulaci on. Una MT con k cintas se simula con una MT que act ua sobre una u nica cinta dividida en 2k + 1 pistas. Cada cinta de la m aquina multi-cinta da lugar a dos pistas en la m aquina simuladora: la primera simula la cinta propiamente dicha y la segunda tiene todas sus celdas en blanco, excepto una, marcada con un s mbolo especial X , que indica la posici on actual del visor de la m aquina original en dicha cinta. La pista adicional de la m aquina

6.5. VARIACIONES DEL MODELO ESTANDAR DE MT

183

simuladora se utiliza para marcar, con un s mbolo especial Y , las posiciones m as a la izquierda y m as a la derecha de la unidad de control en la m aquina original. Para simular un solo paso computacional, la nueva m aquina requiere hacer m ultiples recorridos a izquierda y a derecha, actualizando el contenido de las pistas y la posici on de los marcadores X y Y .

Ejemplo

Dise nar una MT con dos cintas que acepte el lenguaje L =

{ai bi ci : i 0}.

as f acil de dise nar que la MT est andar Soluci on. Una MT con dos cintas es m presentada en el segundo ejemplo de la secci on 6.1. La idea es copiar en la segunda cinta una X por cada a le da y, al aparecer las bes, avanzar hacia la derecha en la primera cinta y hacia la izquierda en la segunda. Al aparecer las ces se avanza hacia la derecha en ambas cintas. Si la cadena de entrada tiene la forma ai bi ci , se detectar a simult aneamente el s mbolo en blanco b en ambas cintas. La funci on de transici on requerida para implementar esta idea es: (q0 , (a, b)) = (q1 , (a, ), (X, )), (q1 , (a, b)) = (q1 , (a, ), (X, )), (q1 , (b, b)) = (q2 , (b, ), ( b, )), (q2 , (b, X )) = (q2 , (b, ), (X, )), (q2 , (c, b)) = (q3 , (c, ), ( b, )), (q3 , (c, X )) = (q3 , (c, ), (X, )), (q3 , ( b, b)) = (q4 , ( b, ), ( b, )), (q0 , ( b, b)) = (q4 , ( b, ), ( b, )). Se han utilizado cuatro estados; q4 es el u nico estado de aceptaci on.

6.5.4.

M aquinas de Turing no-deterministas (MTN)

En el modelo no-determinista se permite que, en un paso computacional, la unidad de control escoja aleatoriamente entre varias transiciones posibles. La funci on tiene la siguiente forma: (q, a) = {(p1 , b1 , D1 ), (p2 , b2 , D2 ), . . . , (pk , bk , Dk )} donde los ai y los bi son s mbolos del alfabeto de cinta , los pi son estados y cada Di es un desplazamiento , o . La noci on de aceptaci on en una MTN es similar a la de los modelos no-deterministas de aut omatas considerados antes: una cadena de entrada

184

CAP ITULO 6. MAQUINAS DE TURING

w es aceptada si existe por lo menos un c omputo, a partir de la conguraci on inicial q0 w, que termine en la conguraci on u1 pu2 , con p F . Como antes, los c omputos en los cuales la m aquina se detiene en un estado de no aceptaci on, o en los cuales no se detiene, son irrelevantes para la aceptaci on. Simulaci on. Una MTN no tiene mayor poder computacional que una MT est andar, es decir, una MTN se puede simular con una MT, como lo explicaremos a continuaci on. Sea M una MTN; se bosquejar a la construcci on de una MT M tal que L(M ) = L(M ). Sea n el n umero m aximo de transiciones en los conjuntos (q, a), considerando todo s mbolo a y todo estado q Q. Para cada a y q Q, las transiciones contenidas en (q, a) se pueden enumerar entre 1 y n. Si hay menos de n transiciones en un (q, a) particular, se repite arbitrariamente una de ellas hasta completar n. De esta manera, cada una de las transiciones (q, a) se puede considerar como un conjunto de n opciones indexadas:

(q, a) = (p1 , b1 , D1 ), (p2 , b2 , D2 ), . . . , (pk , bk , Dk )


1 2 n

ndice

En algunos (q, a) habr a opciones repetidas, pero esta repetici on no altera el lenguaje aceptado. La MT M que simular a a M tendr a tres cintas. La primera cinta almacena la entrada, la segunda genera de forma sistem atica todas las secuencias nitas de n umeros entre 1 y n: primero las secuencias de longitud 1, luego las secuencias de longitud 2, luego las de longitud 3 y as sucesivamente (para esto se puede usar una subrutina como la construida en el ejercicio de la secci on 6.4). Para cada secuencia i1 i2 ik generada en la cinta 2, M copia la cadena de entrada sobre la cinta 3 y simula la computaci on de k pasos que hace sobre ella la m aquina original M , utilizando en el paso j la opci on con ndice j en el (q, a) correspondiente. Si M se detiene en un estado de aceptaci on, entonces tanto M como M aceptan la entrada. Si el c omputo simulado no termina en la aceptaci on, M borra el contenido de las cintas 2 y 3, genera otra secuencia en la cinta 2, copia de nuevo la entrada en la cinta 3 e inicia una nueva simulaci on. Si la entrada es aceptada por la m aquina original M , existir a un c omputo que se detiene en un estado de aceptaci on y, eventualmente, M encontrar ay simular a tal c omputo.

6.5. VARIACIONES DEL MODELO ESTANDAR DE MT

185

binarias (cadenas de ceros y unos). M escoge primero una cadena binaria w por medio de las opciones no-deterministas b | 0 y b | 1 y retrocede hacia el primer s mbolo de w, retornando al estado

Ejemplo

La siguiente MT M no-determinista genera todas las cadenas

q0 . Luego borra todos los s mbolos de la cadena generada w y procede a generar una nueva.
b|0 b|1 0|0 1|1

b| b

> q0
0| b 1| b

q1 b| b

Siempre que M retorna al estado q0 hay una cadena binaria escrita en la cinta. Todas las cadenas binarias ser an eventualmente generadas, aleatoriamente. En contraste, la MT determinista del segundo ejemplo de la secci on 6.4 genera estas cadenas sistem aticamente (en orden lexicogr aco). Para generar de manera no-determinista todas las cadenas de , donde es un alfabeto cualquiera, bastan tambi en dos estados (ejercicio ).

Ejercicios de la secci on 6.5

Dise nar m aquinas de Turing multi-pistas que acepten los siguientes lenguajes. Escribir expl citamente la idea utilizada en el dise no. (i) L = {ai bi ci : i 0}. (ii) L = {ai b2i ai : i 0}. Dise nar m aquinas de Turing multi-cintas que acepten los siguientes lenguajes (que no son LIC, seg un los ejercicios y de la secci on 4.13). Escribir expl citamente la idea utilizada en el dise no. !(i) L = ww : w {0, 1} . !(ii) L = {ai : i es un cuadrado perfecto}. Sea = {s1 , . . . , sm } un alfabeto cualquiera. Dise nar una m aquina de Turing no-determinista que genere todas las cadenas de .

186

CAP ITULO 6. MAQUINAS DE TURING

6.6.

Simulaci on de aut omatas por medio de m aquinas de Turing

Intuitivamente, parece claro que un aut omata determinista AFD se puede simular con una MT est andar y una aut omata con pila se puede simular con una MT que act ua sobre dos cintas. En esta secci on presentaremos los detalles concretos de estas simulaciones. Concluiremos que tanto los lenguajes regulares como los independientes del contexto son recursivos.

6.6.1.

Simulaci on de aut omatas

Un aut omata (modelo AFD, AFN o AFN-) se puede simular con una m aquina de Turing: primero se convierte en un AFD M = (Q, q0 , F, , ) equivalente, usando las t ecnicas del Cap tulo 2. Luego se construye una MT M tal que L(M ) = L(M ) a nadiendo un nuevo estado qf , que ser a el u nico estado de aceptaci on de M , y transiciones desde los estados de F hasta qf , en presencia del s mbolo blanco b. Es decir, M = (Q , q0 , F , , , b, ) donde Q = Q {qf }, = { b}, F = {qf }, (q, s) = ( (q, s), s, ), (q, b ) = ( qf , b, ),

qf es un estado nuevo,

para q Q, s ,

para todo q F.

N otese que la MT M as construida se detiene con cualquier entrada w. Puesto que los lenguajes regulares son precisamente los aceptados por los AFD, hemos establecido el siguiente teorema. 6.6.1 Teorema. Todo lenguaje regular es recursivo.

6.6.2.

Simulaci on de aut omatas con pila

Sea M = (Q, q0 , F, , , z0 , ) un aut omata con pila (modelo AFPD o AFPN). Para simular a M se puede construir una MT M que act ue sobre dos cintas: la primera cinta simula la cinta de entrada y la segunda simula la pila del aut omata. M ser a una MT determinista o no-determinista dependiendo de si el aut omata dado es un AFPD o un AFPN. Se dene

DE AUTOMATAS 6.6. SIMULACION POR MEDIO DE MAQUINAS DE TURING

187

M = (Q , q0 , F , , , b, ) por medio de Q = Q {qf },

donde qf es un estado nuevo,

= { b}, F = {qf }. La MT M coloca inicialmente el s mbolo inicial de pila sobre la cinta 2: (q0 , (s, b)) = (q0 , (s, z0 ), (, )), para cualquier s .

Una transici on de la forma (q, a, s) = (p, ) se simula con varias transiciones: se trata de lograr que M sobre-escriba el s mbolo s en la cinta 2, que representa el tope de la pila, por la cadena . Por ejemplo, la transici on (q, a, s) = (p, a1 a2 a3 ) se simula a nadiendo un estado auxiliar qe junto con las transiciones (q, (a, s)) = (qe , (a, ), (a3 , )), (qe , (a, b)) = (qe , (a, ), (a2 , )), (qe , (a, b)) = (p, (a, ), (a1 , )). Para no alterar el lenguaje aceptado, cada transici on de este tipo requiere la adici on de un estado especial qe diferente. Una transici on del aut omata M , (q, , s) = (p, ), se simula de manera similar: la posici on de la unidad de control y el contenido de la primera cinta no cambian durante el procedimiento. Finalmente, se debe a nadir la transici on (q, ( b, s)) = (qf , ( b, s), (, )), para todo s y todo q F .

Lo anterior muestra que el comportamiento del aut omata M se simula completamente con la MT M y se tiene que L(M ) = L(M ). N otese que la MT as construida no necesariamente se detiene con todas las cadenas de entrada ya que el aut omata original M puede ingresar a un bucle innito con transiciones que inserten y extraigan indenidamente s mbolos en la pila. Por consiguiente, para concluir que todo LIC es recursivo es necesario restringir primero las transiciones del aut omata. En la demostraci on del siguiente teorema se indica c omo hacerlo. 6.6.2 Teorema. Todo LIC es un lenguaje recursivo.

188

CAP ITULO 6. MAQUINAS DE TURING

Demostraci on . Sabemos que un LIC L dado se puede generar con una GIC G en FNC en la que la variable inicial no sea recursiva. En G no hay transiciones , excepto posiblemente S . A partir de G podemos construir un AFPN M tal que L(G) = L(M ) = L usando el procedimiento del Teorema 5.4.1, y luego una MT M que simule a M , en la forma indicada en la presente secci on. Se puede observar que M y M siempre se detienen al procesar una cadena de entrada cualquiera: no ingresan nunca en bucles innitos debido al tipo restringido de las transiciones que surgen de la gram atica G.

Ejercicios de la secci on 6.6

Simular el siguiente AFD por medio de una MT M y hacer el diagrama de transiciones de la m aquina M . b > q0 a b q1 a b q2

Simular por medio de una MT M el aut omata con pila del primer ejemplo de la secci on 5.1, el cual acepta el lenguaje {ai bi : i 1} sobre el alfabeto = {a, b}, y cuya funci on de transici on es: (q0 , a, z0 ) = (q0 , Az0 ), (q0 , a, A) = (q0 , AA), (q0 , b, A) = (q1 , ), (q1 , b, A) = (q1 , ), (q1 , , z0 ) = (q2 , z0 ).

6.7.

Aut omatas con dos pilas (AF2P)

En esta secci on mostraremos que el modelo de aut omata con dos pilas (AF2P) es tambi en equivalente a la m aquina de Turing. Un aut omata con dos pilas es esencialmente un AFPD, tal como se deni o en el cap tulo 5, con la adici on de una pila m as. Las pilas tienen la misma restricci on que antes: el aut omata s olo tiene acceso al s mbolo que est a en el tope de cada pila. Un paso computacional depende del estado actual de la unidad de control, del s mbolo escaneado en la cinta y de los dos topes de pila, como se muestra en la siguiente gr aca:

6.7. AUTOMATAS CON DOS PILAS (AF2P)

189

. . . . . . s1 . . . . . . s2

a q

Podr amos tambi en denir aut omatas con k pilas, k 1, pero tal modelo no aumenta la capacidad computacional que se consigue con dos pilas. Para limitarnos al modelo determinista debemos dotar al aut omata de una faceta m as: un s mbolo auxiliar, $, llamado marcador nal de entrada, que se escribe al nal de cada entrada y le sirve al aut omata para saber cu ando ha consumido completamente la cadena de entrada. El s mbolo $ no forma parte del alfabeto de entrada . Una transici on en un AF2P tiene la forma (q, a, s1 , s2 ) = (q , 1 , 2 ), la cual tiene el siguiente signicado: en presencia del s mbolo a en la cinta de entrada, la unidad de control pasa del estado q al estado q y se mueve a la derecha. Adem as, borra el s mbolo s1 que est a en el tope de la primera pila y lo sobre-escribe por la cadena 1 , y borra el s mbolo s2 que est a en el tope de la segunda pila y lo sobre-escribe por 2 . La unidad de control pasa a escanear los nuevos topes de cada pila. Las cadenas 1 y 2 pertenecen a , siendo el alfabeto de pila. Tambi en se permiten transiciones o transiciones espont aneas, (q, , s1 , s2 ) = (q , 1 , 2 ).

190

CAP ITULO 6. MAQUINAS DE TURING

Con esta transici on, el s mbolo sobre la cinta de entrada no se procesa y la unidad de control no se mueve a la derecha, pero los topes de pila s1 y s2 son reemplazados por las cadenas 1 y 2 , respectivamente. Para garantizar el determinismo, (q, a, s1 , s2 ) y (q, , s1 , s2 ), con a , no pueden estar simult aneamente denidos. Las transiciones en un AF2P permiten que el aut omata cambie el contenido de las pilas sin procesar (o consumir) s mbolos sobre la cinta de entrada. Inicialmente cada pila contiene u nicamente el marcador z0 en el fondo, y la cadena de entrada se coloca en la cinta de entrada, en la forma usual. N otese que s olo es necesario exigir que la cinta de entrada sea innita en una direcci on ya que la unidad de control no puede nunca retornar a la izquierda.

Dise nar un AF2P que acepte el lenguaje L = {0i 12i 0i : i 0}. Seg un el ejercicio de la secci on 4.13, este lenguaje no es LIC y, por lo tanto, no puede ser aceptado por un aut omata con una sola pila. Ejemplo Soluci on. La idea es copiar los ceros iniciales de la cadena de entrada en la primera pila y el doble de ellos en la segunda. Al aparecer los unos en la cadena de entrada, se van borrando los ceros de la segunda pila, sin alterar el contenido de la primera pila. Al aparecer la u ltima cadena de ceros en la entrada, se borran los ceros acumulados en la primera pila. Si la entrada tiene la forma 0i 12i 0i , se detectar a el marcador inicial de entrada $ simult aneamente con los marcadores de fondo z0 en ambas pilas. Para implementar esta idea utilizamos cuatro estados; q0 es el estado inicial y q3 el u nico estado de aceptaci on. En detalle, si la entrada tiene i ceros iniciales, se acumulan i ceros en la primera pila y 2i ceros en la segunda, por medio de las dos instrucciones (q0 , 0, z0 , z0 ) = (q0 , 0z0 , 00z0 ), (q0 , 0, 0, 0) = (q0 , 00, 000). Se borra luego un 0 en la segunda pila por cada 1 le do en la cinta, por medio de las transiciones (q0 , 1, 0, 0) = (q1 , 0, ), (q1 , 1, 0, 0) = (q1 , 0, ). Al vaciar as la segunda pila, el contenido de la primera no se altera. Finalmente, se borra un 0 en la primera pila por cada 0 le do en la cinta, con

6.7. AUTOMATAS CON DOS PILAS (AF2P)

191

las transiciones (q1 , 0, 0, z0 ) = (q2 , , z0 ), (q2 , 0, 0, z0 ) = (q2 , , z0 ). Al encontrar $ en la cinta de entrada y z0 en el fondo de cada pila, se ingresa al estado de aceptaci on q3 : (q2 , $, z0 , z0 ) = (q3 , z0 , z0 ). Hay que a nadir tambi en la transici on (q0 , $, z0 , z0 ) = (q3 , z0 , z0 ) para aceptar la cadena vac a. El siguiente teorema establece que una MT est andar se puede simular con un AF2P. 6.7.1 Teorema. Dada una m aquina de Turing M , se puede construir un aut omata con dos pilas M que acepte el mismo lenguaje que M . andar dada, con funci on de transici on . Demostraci on . Sea M una MT est La idea b asica de la simulaci on es hacer que, en cada momento, la primera pila de M contenga la parte ubicada a la izquierda de la unidad de control de M , y la segunda pila contenga la parte ubicada encima y a la derecha. La siguiente gr aca muestra la cinta de M y las dos pilas de la simulaci on. En cada momento las pilas contienen solo un n umero nito de casillas no vac as.
tope tope 1ra. pila

2da. pila

Inicialmente, M copia la cadena de entrada w en la primera pila y luego la traslada de esta a la segunda pila (el marcador nal de entrada $ le permite al aut omata saber cu ando ha terminado de copiar toda la entrada en la primera pila). Al terminar esta operaci on, la primera pila queda vac a, excepto por el marcador de fondo z0 , y la segunda pila contiene toda la cadena de entrada. La unidad de control de M est a escaneando el tope

192

CAP ITULO 6. MAQUINAS DE TURING

de la segunda pila que es exactamente el primer s mbolo de w. N otese que para hacer este doble traslado se necesita solamente un n umero nito de estados, n umero que depende del alfabeto de entrada pero no de la longitud de w. El resto de la simulaci on lo realiza M por medio de transiciones mientras escanea el marcador nal de entrada $ sobre la cinta. A continuaci on indicamos c omo simula M las transiciones de M . Desplazamiento a la derecha: la transici on (q, a) = (p, b, ) de M es simulada por M con transiciones de la forma (q, , s, a) = (p, sb, ), por cada s mbolo s (s es el s mbolo ubicado a la izquierda de a). La siguiente gr aca ilustra la situaci on:

(q, a) = (p, b, )

a q

b p

Hay dos excepciones por considerar: 1. Si M realiza la transici on (q, a) = (p, b, ) y la primera pila s olo contiene el marcador de fondo z0 , M ejecuta la acci on (q, , z0 , a) = (p, z0 , ). 2. Si M est a escaneando el marcador de fondo z0 en la segunda pila, lo que signica que M est a leyendo una casilla en blanco y usando la transici on (q, b) = (p, b, ), M debe ejecutar la acci on (q, , s, z0 ) = (p, sb, z0 ). Desplazamiento a la izquierda: la transici on (q, a) = (p, b, ) de M es simulada por M con transiciones de la forma (q, , s, a) = (p, , sb), por cada s mbolo s (s es el s mbolo ubicado a la izquierda de a). La siguiente gr aca ilustra la situaci on:

6.8. PROPIEDADES DE CLAUSURA

193

(q, a) = (p, b, )

a q

s p

Aqu hay que tener en cuenta una excepci on: si s es el marcador de fondo z0 , M debe ejecutar la acci on (q, , z0 , a) = (p, z0 , bb). Esto signica que la primera pila sigue vac a y M queda escaneando el s mbolo blanco b en el tope de la segunda pila.

Ejercicios de la secci on 6.7

Mostrar c omo se puede simular un AF2P con una MT multi-cintas. Dise nar aut omatas con dos pilas que acepten los siguientes lenguajes: (i) L = {ai bj ci dj : i, j 1}. (ii) L = {a2i b3i : i 1}. (iii) El lenguaje de las cadenas sobre el alfabeto {0, 1} que tienen el doble n umero de ceros que de unos.

6.8.

Propiedades de clausura de los lenguajes RE y de los lenguaje recursivos

En esta secci on presentaremos algunas propiedades de clausura de los lenguajes recursivos y de los RE; en los ejercicios del nal de la secci on aparecen otras propiedades similares. 6.8.1 Teorema. es recursivo. 1. El complemento de un lenguaje recursivo tambi en

2. La uni on de dos lenguajes recursivos es recursivo. 3. La uni on de dos lenguajes RE es RE. Demostraci on .

194

CAP ITULO 6. MAQUINAS DE TURING

1. Sea L un lenguaje recursivo aceptado por la MT M . La m aquina M se detiene con cualquier entrada, ya sea en un estado de aceptaci on o en uno de rechazo. Se puede construir una MT M que acepte a L, haciendo que los estados de aceptaci on de M dejen de serlo en M . De esta forma, las cadenas aceptadas por M ser an rechazadas por M . Adicionalmente, desde los estados de no-aceptaci on en los cuales M se detiene, denimos transiciones a un estado (nuevo) de aceptaci on de M . De esta forma, las cadenas no aceptadas por M s ser an aceptadas por M . Por consiguiente, L(M ) = L. 2. Sean L1 y L2 dos lenguajes aceptados por las MT M1 y M2 , respectivamente. Para demostrar las partes 2 y 3 del presente teorema podr amos proceder como se hizo en el Teorema de Kleene al demostrar que la uni on de dos lenguajes regulares es regular; esto es, basta unir las m aquinas M1 y M2 en paralelo por medio de transiciones espont aneas (transiciones ) desde un nuevo estado inicial. Recu erdese que las transiciones espont aneas en una m aquina de Turing adquieren la forma (q, s) = (q , s, ). No obstante, las m aquinas as construidas son no-deterministas. Resulta m as conveniente, pensando en aplicaciones posteriores, dise nar MT multi-cintas deterministas para aceptar la uni on de dos lenguajes. Sup ongase entonces que L1 y L2 son recursivos, es decir, M1 y M2 se detienen con toda entrada. Construimos una MT M con dos cintas que simule a M1 en la primera cinta y a M2 en la segunda. M procesa inicialmente la entrada en la primera cinta; si M1 acepta, M tambi en aceptar a. Si M1 se detiene en un estado de no-aceptaci on, M proceder a a procesar la entrada en la segunda cinta, simulando a M2 . Si M2 acepta, M tambi en aceptar a pero si M2 se detiene en un estado de rechazo, M tambi en se detendr a y no aceptar a. Puesto que tanto M1 como M2 siempre se detienen, L(M ) = L1 L2 . 3. El procedimiento del numeral anterior ya no sirve en este caso porque es posible que M1 o M2 nunca se detengan al procesar una entrada particular. En lugar de una simulaci on consecutiva de las m aquinas dadas, se necesita que M simule simult aneamente a M1 y a M2 . Para lograrlo utilizamos tambi en dos cintas, la primera para simular a M1 y la segunda para simular a M2 . En cada paso computacional, M simula un paso de M1 y uno de M2 . Resulta muy instructivo presentar expl citamente una m aquina M que implemente la anterior idea intuitiva. Aparte de los estados especiales

6.8. PROPIEDADES DE CLAUSURA

195

qe y qf , denidos m as adelante, los estados de M son parejas de la forma (p, q ), donde p es un estado de M1 y q un estado de M2 . Cada par de transiciones 1 ( q1 , s 1 ) = ( p1 , r1 , D 1 ) 2 ( q2 , s 2 ) = ( p2 , r2 , D 2 ) (transici on de M1 ), (transici on de M2 ),

da lugar a la siguiente transici on en la m aquina M : ( q 1 , q 2 ) , ( s 1 , s 2 ) = ( p1 , p2 ) , ( r1 , D 1 ) , ( r2 , D 2 ) . Si alguno de los estados q1 o q2 es un estado de aceptaci on de M1 o M2 , respectivamente, hacemos que M ingrese y se detenga en un estado qf (estado nuevo), que ser a el u nico estado de aceptaci on de M . Esto se consigue con la transici on ( q1 , q2 ) , ( s 1 , s 2 ) = qf , ( s 1 , ) , ( s 2 , ) . Tambi en hay que permitir que M siga operando en una de las cintas incluso si se ha detenido en la otra en un estado de no aceptaci on. Por ejemplo, si 1 (q1 , s1 ) no est a denida en M1 , pero 2 (q2 , s2 ) = (p2 , r2 , D2 ) es una transici on de M2 , denimos ( q1 , q2 ) , ( s 1 , s 2 ) = ( q e , p2 ) , ( s 1 , ) , ( s 2 , D 2 ) , donde qe es un estado especial (nuevo). Por medio de esta transici on, cuando M ingrese en el estado qe en alguna de las cintas, se detendr a en dicha cinta pero contin ua la simulaci on en la otra. Si M ingresa al estado (qe , qe ), se detendr a sin aceptar. El siguiente teorema establece una importante conexi on entre las nociones de lenguaje recursivo y lenguaje RE, la cual se puede demostrar con la t ecnica de simulaci on simult anea de dos MT usada en el Teorema 6.8.1. Encontraremos aplicaciones u tiles de este resultado en el Cap tulo 7. 6.8.2 Teorema. Un lenguaje L es recursivo si y s olo si L y su complemento L son RE. on izquierda a derecha, la conclusi on es directa: Demostraci on . En la direcci si L es recursivo, obviamente es RE. L es tambi en recursivo (parte 1 del Teorema 6.8.1) y por lo tanto RE. La parte esencial de este teorema es la otra direcci on: si L y L son RE, entonces L debe ser recursivo. Para verlo, partimos de dos m aquinas M1 y

196

CAP ITULO 6. MAQUINAS DE TURING

M2 que acepten a L y L, respectivamente. Construimos luego una MT M que simule simult aneamente a M1 y M2 , tal como se hizo en la parte 3 del Teorema 6.8.1. Puesto que para una entrada w s olo hay dos posibilidades, aquina M eventualmente se detendr a en w L o w L, entonces la m la cinta 1 o en la cinta 2. En el primer caso, M acepta la entrada y en el segundo caso la rechaza. Como M se detiene con toda entrada, L es recursivo. El siguiente teorema justica la denominaci on recursivamente enumerable para los lenguajes aceptados por m aquinas de Turing. 6.8.3 Teorema. Para todo lenguaje L aceptado por una MT M , se puede construir una MT M que enumere secuencialmente las cadenas de L. a tres cintas. Las cadenas Bosquejo de la demostraci on. La MT M tendr de L ser an enumeradas secuencialmente en la cinta 1 usando el s mbolo & como separador: w1 &w2 &w3 & . La cinta 2 se usa para generar todas las cadenas de en el orden lexicogr aco, utilizando la subrutina construida en el ejercicio de la secci on 6.4, modicada de tal manera que las cadenas queden separadas entre s por el separador &. En la cinta 2 tambi en se escribe, a la izquierda de la lista de cadenas, un contador que registra el n umero de cadenas generadas. La cinta 3 se usa para simular el procesamiento de M sobre las cadenas que se generan en la cinta 2. Para precisar, M procede seg un las siguientes acciones: Acci on 1. M genera sobre la cinta 2 la primera cadena de (o sea, ) y simula en la cinta 3 un movimiento de la acci on de M sobre . Acci on 2. M genera sobre la cinta 2 la segunda cadena de y simula, en la cinta 3, dos movimientos de la acci on de M sobre dicha cadena, as como un movimiento m as del procesamiento de la cadena . Acci on i, (i 1). M genera sobre la cinta 2 la i- esima cadena de y simula, en la cinta 3, i movimientos de la acci on de M sobre dicha cadena, as como un movimiento m as del procesamiento de las i 1 cadenas previamente generadas en la cinta 2. Se incrementa luego, en la cinta 2, el contador i de cadenas generadas ( este es tambi en el contador del n umero de movimientos simulados para cada cadena generada). Al concluir la acci on i se han generado en la segunda cinta las i primeras cadenas de y se han simulado, en la cinta 3, los i primeros movimientos que M realiza sobre esas cadenas. Si durante la simulaci on, alguna cadena

6.8. PROPIEDADES DE CLAUSURA

197

es aceptada por M , M la copia en la cinta 1. Las casillas ocupadas en la cinta 3 por las simulaciones de cadenas ya aceptadas se tachan (es decir, se marcan con un s mbolo especial), de tal manera que M no tenga que procesarlas en los pasos subsiguientes. Para acomodar las simulaciones, cada vez m as extensas, puede ser necesario usar en la cinta 3 subrutinas de desplazamiento de cadenas, a izquierda o a derecha. En todo caso, al terminar la acci on i, M ha utilizado una porci o n nita en cada una de las tres cintas. Ejercicios de la secci on 6.8

Utilizando razonamientos similares a los del Teorema 6.8.1 demostrar lo siguiente: (i) Si L1 y L2 son recursivos, L1 L2 es recursivo. (ii) Si L1 y L2 son RE, L1 L2 es RE. (iii) Si L1 y L2 son recursivos, L1 L2 es recursivo. Sabiendo que existen lenguajes RE no recursivos (lo cual ser a demostrado en la secci on 7.5), demostrar que el complemento de un lenguaje RE no necesariamente es RE. ! Demostrar que tanto los lenguajes recursivos como los lenguajes RE son cerrados para la concatenaci on. Es decir, si L1 y L2 son recursivos, L1 L2 tambi en es recursivo, y si L1 y L2 son RE, L1 L2 es RE. Advertencia: no basta unir las m aquinas de Turing en serie por medio de transiciones espont aneas, como se hizo en la demostraci on del Teorema de Kleene; hay que tener en cuenta que una MT puede aceptar cadenas de entrada sin leerlas (consumirlas) completamente. ! Demostrar que tanto los lenguajes recursivos como los lenguajes RE son cerrados para la estrella de Kleene. Es decir, si L es recursivo, L tambi en es recursivo, y si L RE, L es RE. Ayuda: tener en cuenta la misma advertencia del ejercicio . ! Sea L un lenguaje recursivo pero no RE, demostrar que para toda MT M que acepte a L hay innitas cadenas de entrada con las cuales M no se detiene nunca. Ayuda: razonar por contradicci on.

198

CAP ITULO 6. MAQUINAS DE TURING

6.9.

M aquinas de Turing, computadores, algoritmos y la tesis de Church-Turing

Si bien la m aquina de Turing antecedi o en varias d ecadas a la implementaci on f sica de los computadores actuales, ha resultado ser un modelo muy conveniente para representar lo computable (lo que es capaz de hacer cualquier dispositivo f sico de computaci on secuencial).

6.9.1.

M aquinas de Turing y algoritmos

Seg un nuestra experiencia en las secciones anteriores, dise nar una MT es muy similar a escribir un programa computacional ya que la funci on de transici on de una MT no es otra cosa que un conjunto de instrucciones. Se establece as una conexi on intuitiva directa entre m aquinas de Turing y algoritmos. La declaraci on conocida como tesis de Church-Turing arma que dicha conexi on es en realidad una equivalencia. 6.9.1. Tesis de Church-Turing. Todo algoritmo puede ser descrito por medio de una m aquina de Turing. En su formulaci on m as amplia, la tesis de Church-Turing abarca tanto los algoritmos que producen una salida para cada entrada como aqu ellos que no terminan (ingresan en bucles innitos) para algunas entradas. Para apreciar su signicado y su alcance, hay que enfatizar que la Tesis de Church-Turing no es un enunciado matem atico susceptible de demostraci on, ya que involucra la noci on intuitiva de algoritmo. En otras palabras, la tesis no se puede demostrar. Se podr a refutar, no obstante, exhibiendo un procedimiento efectivo, que todo el mundo acepte que es un verdadero algoritmo y que no pueda ser descrito por una m aquina de Turing. Pero tal refutaci on no se ha producido hasta la fecha; de hecho, la experiencia acumulada durante d ecadas de investigaci on ha corroborado una y otra vez la tesis de Church-Turing. Hay dos hechos m as que contribuyen a apoyar la tesis: 1. La adici on de recursos computacionales a las m aquinas de Turing (m ultiples pistas o cintas, no determinismo, etc) no incrementa el poder computacional del modelo b asico. Esto es un indicativo de que la m aquina de Turing, no s olo es extremadamente exible, sino que representa el l mite de lo que un dispositivo de computaci on secuencial puede hacer.

6.9. MT, COMPUTADORES, ALGORITMOS Y LA TESIS DE CHURCH-TURING

199

2. Todos los modelos o mecanismos computacionales propuestos para describir formalmente la noci on de algoritmo han resultado ser equivalentes a la m aquina de Turing, en el sentido de que lo que se puede hacer con ellos tambi en se puede hacer con una MT adecuada, y viceversa. Entre los modelos de computaci on secuencial equivalentes a la m aquina de Turing podemos citar: Las funciones parciales recursivas (modelo de G odel y Kleene, 1936). El c alculo- (modelo de Church, 1936). Sistemas de deducci on can onica (modelo de Post, 1943). Algoritmos de Markov (modelo de Markov, 1951). Las gram aticas no-restringidas1 (modelo de Chomsky, 1956). Las m aquinas de registro (modelo de Shepherdson-Sturgis, 1963). En el pr oximo cap tulo tendremos la oportunidad de usar la tesis de ChurchTuring en situaciones concretas.

6.9.2.

M aquinas de Turing y computadores

Hagamos un bosquejo bastante supercial e incompleto de c omo los computadores comunes y las m aquinas de Turing se pueden simular entre s . En primer lugar, una MT est a determinada por un conjunto nito de instrucciones (su funci on de transici on) y est a denida con referencia a alfabetos nitos. Por lo tanto, se puede programar un computador para que simule una MT dada, siempre y cuando se disponga de una capacidad de almacenamiento (memoria, discos, etc) potencialmente innita, que corresponda a la cinta innita de una MT. Te oricamente, por lo menos, esta simulaci on es concebible y plausible. Rec procamente, el modelo multi-cintas de m aquina de Turing se puede usar para simular el funcionamiento de un computador t pico. Se utilizar a una cinta para simular la memoria principal del computador, otra para las direcciones de memoria y un n umero adicional (pero nito) de cintas para simular los discos de almacenamiento presentes en un computador real. La m aquina de Turing as construida es b asicamente la llamada M aquina de Turing universal que se presentar a detalladamente en la secci on 7.2.
1 Se puede demostrar que los lenguajes RE son exactamente los lenguajes generados por las gram aticas de tipo 0, o no-restringidas, mencionadas en la secci on 4.1.

Cap tulo

Problemas indecidibles
La importancia de un modelo simple pero capaz de emular cualquier dispositivo de computaci on como lo es la m aquina de Turing radica no s olo en que permite estudiar lo que puede hacer sino tambi en lo que no puede hacer una m aquina de c omputo, aun si dispone de recursos inagotables, como tiempo y espacio de almacenamiento ilimitados (es decir, cinta innita y tiempo de ejecuci on indenido). En este cap tulo estudiaremos problemas que ninguna m aquina de Turing puede resolver.

7.1.

Codicaci on y enumeraci on de m aquinas de Turing

Toda MT se puede codicar como una secuencia binaria nita, es decir una secuencia nita de ceros y unos. En esta secci on presentaremos una codicaci on v alida para todas las MT que act uen sobre un alfabeto de entrada pre-establecido. Para simplicar la codicaci on, suponemos que toda MT tiene un u nico estado inicial, denotado q1 , y un u nico estado nal, denotado q2 (en la secci on 6.5.1 se mostr o que esta modicaci on siempre se puede hacer, sin alterar los lenguajes aceptados). El alfabeto de cinta de una MT M es de la forma = {s1 , s2 , . . . , sm , . . . , sp } donde s1 representa el s mbolo blanco b, = {s2 , . . . , sm } es el alfabeto de entrada y sm+1 , . . . , sp son los s mbolos auxiliares utilizados por M (cada MT utiliza su propia colecci on nita de s mbolos auxiliares). Todos estos s mbolos se codican como secuencias de unos: 201

202

CAP ITULO 7. PROBLEMAS INDECIDIBLES

S mbolo s1 (s mbolo b) s2 s3 . . . sm . . . sp

Codicaci on 1 11 111 . . . 11 1 . . . 11 1
p veces m veces

Los estados de una MT, q1 , q2 , q3 , . . . , qn , se codican tambi en con secuencias de unos: Estado q1 (inicial) q2 (nal) . . . qn Codicaci on 1 11 . . . 11 1
n veces

Las directrices de desplazamiento , y se codican con 1, 11 y 111, respectivamente. Una transici on (q, a) = (p, b, D) se codica usando ceros como separadores entre los estados, los s mbolos del alfabeto de cinta y la directriz de desplazamiento D. As , la transici on (q3 , s2 ) = (q5 , s3 , ) se codica como 01110110111110111010 En general, la codicaci on de una transici on cualquiera (qi , sk ) = (qj , s , D) es 01i 01k 01j 01 01t 0 donde t = 1 o 2 o 3, seg un D sea , o . Obs ervese que aparecen exactamente seis ceros separados por secuencias de unos. Una MT se codica escribiendo consecutivamente las secuencias de las codicaciones de todas sus transiciones. M as precisamente, la codicaci on de una MT M es de la forma C1 C2 Cr donde las Ci son las codicaciones de las transiciones de M . Puesto que el orden en que se presentan las transiciones de una MT no es relevante,

Y ENUMERACION DE MAQUINAS 7.1. CODIFICACION DE TURING

203

una misma MT tiene varias codicaciones diferentes. Esto no representa ninguna desventaja pr actica o conceptual ya que no se pretende que las codicaciones sean u nicas.

Ejemplo

Consid erese la siguiente MT M que acepta el lenguaje a+ b: (q1 , a) = (q3 , a, ) (q3 , a) = (q3 , a, ) (q3 , b) = (q4 , b, ) ( q4 , b ) = ( q2 , b, )

Si los s mbolos del alfabeto de cinta b, a y b se codican con 1, 11 y 111, respectivamente, la MT M se puede codicar con la siguiente secuencia binaria:
010110111011010011101101110110100111011101111011101001111010110101110

la cual se puede escribir tambi en como 01012 013 012 010013 012 013 012 010013 013 014 013 010014 01012 01013 0. Cambiando el orden de las cuatro transiciones de M obtendr amos en total 4! = 24 codicaciones diferentes para M . Es claro que no todas las secuencias binarias representan una MT: la codicaci on de una MT no puede comenzar con 1 ni pueden aparecer tres ceros consecutivos. As , las secuencias 0101000110, 010001110 y 1011010110111010 no codican ninguna MT. No es dif cil concebir un algoritmo que determine si una secuencia binaria nita dada es o no una MT y que la decodique en caso armativo. Una cadena binaria que codique una MT se denomina un c odigo v alido de una MT. Si una cadena binaria no es un c odigo v alido de una MT, supondremos que codica la MT con un solo estado y sin transiciones; tal MT no acepta ninguna cadena, es decir, acepta el lenguaje . De esta forma, todas las cadenas binarias representan m aquinas de Turing. Por otro lado, las cadenas de ceros y unos se pueden ordenar lexicogr acamente; el orden se establece por longitud y las cadenas de la misma longitud se ordenan ortogr acamente de izquierda a derecha (considerando 0 < 1). Este orden comienza as : 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, 0010, . . .

204

CAP ITULO 7. PROBLEMAS INDECIDIBLES

Tenemos entonces una enumeraci on de todas las cadenas binarias. Dado un alfabeto , cada cadena binaria en la anterior lista representa, seg un la codicaci on denida arriba, una m aquina de Turing que act ua sobre . Podemos entonces hablar de la i- esima m aquina de Turing, la cual denotaremos por Mi . N otese que en la enumeraci on M1 , M2 , M3 , . . ., cada MT aparece varias veces (porque al cambiar el orden de las transiciones se obtiene una codicaci on diferente). Las MT que aceptan el lenguaje aparecen innitas veces en la enumeraci on. Tambi en ser a necesario codicar el conjunto de todas las cadenas sobre el alfabeto de entrada = {s2 , . . . , sm }, de tal manera que toda cadena tenga un c odigo binario y toda secuencia binaria represente una cadena de . Una vez codicados los s mbolos de , las cadenas de se pueden codicar usando 0 como separador. Por ejemplo, la cadena aab bab se codica como 01101101110101101110 si los s mbolos a y b hacen parte de y se han codicado como 11 y 111. N otese que en la codicaci on de una cadena w no aparecen nunca dos ceros consecutivos. En general, la codicaci on de una cadena si1 si2 sik es 01i1 01i2 0 01ik 0. Las cadenas de se pueden ordenar lexicogr acamente estableciendo primero un orden arbitrario (pero jo) para los s mbolos de , por ejemplo, s2 < s3 < < sm . El orden lexicogr aco de las cadenas de induce un orden en el conjunto de las codicaciones; obtenemos as una enumeraci on w1 , w2 , w3 , . . . de los c odigos de cadenas de . Esto nos permite hablar de la i- esima cadena de entrada, wi . Aunque tenemos dos enumeraciones diferentes, w1 , w2 , w3 , . . . (c odigos de cadenas sobre ), y M1 , M2 , M3 , . . . (c odigos de m aquinas de Turing sobre ), no habr a peligro de confusi on pues el contexto permitir a saber a cu al de las dos enumeraciones nos estamos reriendo.  Es corriente identicar las cadenas de entrada w y las MT M con sus respectivas codicaciones binarias, y haremos eso en lo sucesivo. El mecanismo de enumeraci on presentado en esta secci on permite tambi en concluir que el conjunto de todas las m aquinas de Turing (sobre un alfabeto dado ) es innito enumerable.

Y ENUMERACION DE MAQUINAS 7.1. CODIFICACION DE TURING

205

Ejercicios de la secci on 7.1

Sea M la MT denida por el siguiente diagrama de estados:


a |a b| b q3 b| b q2 a |a b| b q4

> q1

Determinar el lenguaje aceptado por M y codicar la m aquina M siguiendo el esquema presentado en esta secci on (codicar los s mbolos del alfabeto de cinta b, a y b con 1, 11 y 111, respectivamente). Las siguientes secuencias binarias codican MT que act uan sobre el alfabeto de entrada = {a, b}, siguiendo el esquema de codicaci on presentado en esta secci on. Decodicar las m aquinas y determinar en cada caso el lenguaje aceptado (los s mbolos b, a y b est an codicados como 1, 11 y 111, respectivamente). (i) (ii) 010110111011010011101110111101110100111101110 111101110100111101101111101101001111010110101110 01013 01013 01001012 013 012 01001012 015 012 0100 13 012 014 012 010014 013 01013 010015 013 01013 0100 15 01012 01013 00101012 01013 Sup ongase que el alfabeto de entrada es = {a, b, c, d} y que los s mbolos a, b, c y d se codican como 11, 111, 1111 y 11111, respectivamente. Sup ongase tambi en que se establece el orden a < b < c < d para los s mbolos de . (i) Codicar las cadenas dacb, cddab y badbcc. (ii) Escribir expl citamente las cadenas binarias w6 , w15 , w22 y w25 . (iii) Qu e puesto ocupa el c odigo de la cadena cbd en el orden w1 , w2 , w3 , . . .? En otros t erminos, encontrar el ndice i tal que wi es el c odigo de cbd. Escribir las codicaciones de las siguientes MT: M7 , M14 , M65 , M150 y M255 . Cu al es el lenguaje aceptado por tales m aquinas?
sigue sigue sigue

206

CAP ITULO 7. PROBLEMAS INDECIDIBLES

7.2.

M aquina de Turing universal

La m aquina de Turing universal Mu simula el comportamiento de todas las MT (sobre un alfabeto de entrada dado). Mu procesa pares (M, w), siendo M la codicaci on de una MT determinada y w la codicaci on de una cadena de entrada perteneciente a (estas codicaciones se hacen en la forma indicada en la secci on 7.1). La pareja (M, w) se puede presentar tambi en como una cadena binaria, en la forma M 0w. Es decir, los c odigos de M y w se separan con un cero. Puesto que el c odigo de M termina en 0 y el de w comienza con 0, en la cadena M 0w aparecen tres ceros consecutivos u nicamente en el sitio que separa los c odigos de M y w. Mu es una MT con tres cintas cuyo alfabeto de cinta es {0, 1, } (el s mbolo blanco de Mu diere del s mbolo blanco b utilizado por las dem as m aquinas de Turing). La primera cinta contiene el c odigo de una MT M determinada; la segunda cinta contiene inicialmente el c odigo de una entrada w y se usa para simular el procesamiento que hace M de w. La tercera cinta se usa para almacenar el estado actual de M , tambi en codicado: q1 se codica como 1, q2 se codica como 11, q3 como 111, etc. En la siguiente gr aca se muestran las tres cintas de Mu : Cinta 1 C odigo de una MT M

Cinta 2 C odigo de una entrada w

Cinta 3 C odigo del estado actual de M

La entrada M 0w, que representa el par (M, w), se escribe en la primera cinta; las otras dos cintas est an inicialmente marcadas con el s mbolo de Mu . La m aquina Mu procede de la siguiente manera: 1. Deja el c odigo de M en la primera cinta y pasa el c odigo de w a la segunda cinta. Como se indic o arriba, para separar los c odigos de M y w se busca el u nico sitio de la cadena que tiene tres ceros consecutivos.

7.2. MAQUINA DE TURING UNIVERSAL

207

2. La cadena 1, que representa el estado inicial q1 , se coloca en la tercera cinta. La unidad de control pasa a escanear el primer s mbolo de cada cadena binaria, en cada una de las tres cintas. 3. Examina el c odigo de M para determinar si representa una MT. En caso negativo, Mu se detiene sin aceptar (recu erdese que los c odigos no v alidos representan una MT que no acepta ninguna cadena). 4. Mu utiliza la informaci on de las cintas 2 y 3 para buscar en la cinta 1 la transici on que sea aplicable. Si encuentra una transici on aplicable, Mu simula en la cinta 2 lo que har a M y cambia el estado se nalado en la cinta 3. Esto requiere re-escribir la cadena de la cinta 2 desplazando adecuadamente los s mbolos a izquierda o a derecha; para lo cual se utilizan las subrutinas mencionadas en la secci on 6.2. La simulaci on contin ua de esta forma, si hay transiciones aplicables. Despu es de realizar una transici on, la unidad de control regresa, en la primera y tercera cintas, al primer s mbolo de la cadena. Si al procesar una entrada w, Mu se detiene en el u nico estado de aceptaci on de M (que es q1 y est a codicado como 1), entonces la cadena w ser a aceptada. Por consiguiente, Mu tiene tambi en un u nico estado de aceptaci on, q1 , que es el mismo estado de aceptaci on de cualquier otra MT. 5. Si Mu no encuentra una transici on aplicable o se detiene en un estado que no es de aceptaci on, Mu se detiene sin aceptar, como lo har a M . Se tiene entonces que Mu acepta la entrada M 0w si y solamente si M acepta a w. De modo que el lenguaje aceptado por la m aquina de Turing universal Mu se puede describir expl citamente; este lenguaje se denomina corrientemente el lenguaje universal y se denota con Lu : Lu = {M 0w : la MT M acepta la cadena w }. El lenguaje universal Lu es, por consiguiente, un lenguaje RE. Utilizando codicaciones binarias, en lugar de unitarias, es posible construir una m aquina de Turing universal m as eciente (v eanse los detalles en el recuadro gris al nal de esta secci on). Para comprender el signicado del concepto de m aquina de Turing universal podemos recurrir a una u til analog a, ilustrada en la siguiente gura:

208

CAP ITULO 7. PROBLEMAS INDECIDIBLES

Mu

prog ram a M

Como la funci on de transici on de una MT no es m as que una lista de instrucciones, podemos concebir una MT como un programa computacional y la m aquina de Turing universal resulta ser un mecanismo en el que podemos ejecutar todos los programas. En otros t erminos, la m aquina de Turing universal es una m aquina de Turing programable.  Como hemos utilizado una codicaci on unitaria (cadenas de unos) de longitud variable para los s mbolos del alfabeto de cinta y para los estados, el funcionamiento de la m aquina de Turing universal es muy ineciente: las acciones descritas en el numeral 4 exigen continuos desplazamientos de las cadenas previamente escritas en la cinta 2. Se podr a utilizar una codicaci on binaria para asegurar que cada s mbolo codicado ocupe el mismo n umero de casillas. Concretamente, si una MT M utiliza el lenguaje de cinta = {s1 , s2 , . . . , sm , . . . , sp }, donde s1 = b, un s mbolo de se puede codicar por medio de una codicaci on binaria de exactamente k bits (codicaci on de longitud k ), siendo k el menor entero tal que p 2k . Las cadenas de se pueden codicar luego usando un s mbolo adicional, por ejemplo #, como separador. La codicaci on binaria tambi en se puede utilizar para los estados y para las transiciones de una MT cualquiera. De esta forma, se puede construir una m aquina de Turing universal m as eciente, que funcione como se describi o en los numerales 1 a 5, pero que utilice codicaciones binarias de longitud ja para re-escribir las transiciones de cada MT M y para simularla.

PARA LENGUAJES RE 7.3. ALGORITMOS DE ACEPTACION

209

7.3.

Algoritmos de aceptaci on para lenguajes RE

Recurriendo a la tesis de Church-Turing, se puede concluir que un lenguaje L es RE si se exhibe un algoritmo de aceptaci on1 para L. Para una entrada u, el algoritmo debe nalizar con aceptaci on si y s olo si u L. Si u / L, el algoritmo puede detenerse, sin aceptar, o puede no detenerse nunca.

Ejemplo

El argumento que se us o en la secci on anterior para construir

la m aquina de Turing universal Mu y concluir que Lu es RE

se puede presentar como un algoritmo de aceptaci on: 1. Entrada: M 0w. 2. Ejecutar la MT M con la entrada w. 3. Aceptar si M se detiene en un estado de aceptaci on. Este algoritmo naliza con aceptaci on si M acepta a w. Si M no acepta a w, el algoritmo puede terminar cuando M se detenga en un estado de rechazo, o puede no terminar nunca. En conclusi on: el algoritmo naliza con aceptaci on de la entrada M 0w si y s olo si M acepta a w.

Ejemplo

Demostrar que el lenguaje

La = {M : L(M ) = } = {M : M acepta alguna cadena}. es RE. Soluci on. Usando el Teorema 6.8.3 se puede presentar el siguiente algoritmo para aceptar a La : 1. Entrada: una MT M arbitraria. 2. Construir la MT M del Teorema 6.8.3; M enumera secuencialmente las cadenas de L(M ). 3. Detenerse y aceptar cuando M genere la primera cadena.
Aqu estamos usando la noci on de algoritmo en una acepci on muy amplia. Por lo general, se exige que un algoritmo siempre debe nalizar con una salida, es decir, no debe tener bucles innitos.
1

210

CAP ITULO 7. PROBLEMAS INDECIDIBLES

Si M acepta alguna cadena, esta ser a generada eventualmente por M . Si M no acepta ninguna cadena, el anterior algoritmo nunca termina. En conclusi on: el algoritmo naliza con aceptaci on de la entrada M si y s olo si M acepta alguna cadena. Tambi en podemos presentar un algoritmo no-determinista para aceptar a La . En un algoritmo no-determinista hay una etapa de conjetura que corresponde a una b usqueda exhaustiva en un algoritmo determinista. He aqu un algoritmo no-determinista para aceptar a La : 1. Entrada: una MT M arbitraria. 2. Escoger de manera no-determinista una cadena w sobre el alfabeto de cinta. Esto se hace con una subrutina generadora como la del ejemplo de la secci on 6.5.4. Una escogencia no-determinista generalmente se llama una conjetura. 3. Ejecutar la MT M con la entrada w. 4. Aceptar si M se detiene en un estado de aceptaci on. N otese que si M acepta aunque sea una cadena, esta ser a encontrada, eventualmente, en el paso 2. Si M no acepta ninguna cadena, el anterior algoritmo nunca termina. En conclusi on: el algoritmo naliza con aceptaci on de la entrada M si y solo si M acepta alguna cadena. Los dos algoritmos de este ejemplo son esencialmente el mismo (lo cual corresponde al hecho de que las MT deterministas y las no-deterministas tienen el mismo poder computacional): en el primero se hace una b usqueda exhaustiva de una cadena aceptada por M ; en el segundo se hace una conjetura de una cadena aceptada. Ambos algoritmos nalizan u nicamente si la MT M acepta alguna cadena.

Ejercicios de la secci on 7.3

Presentar algoritmos de aceptaci on, similares a los de los ejemplos de esta secci on, para concluir que los siguientes lenguajes son RE: Lp = {M 0w : M se detiene con entrada w}. Lb = {M : M se detiene al operar con la cinta en blanco}. L = {M : M se detiene con al menos una entrada}. L = {M : M acepta por lo menos dos cadenas}. L = {(M1 , M2 ) : L(M1 ) L(M2 ) = }. Nota: Las parejas de MT (M1 , M2 ) se pueden codicar en la forma M1 0M2 .

7.4. LENGUAJES QUE NO SON RE

211

7.4.

Lenguajes que no son RE

En esta secci on exhibiremos un lenguaje que no es RE, o sea, un lenguaje que no puede ser reconocido por ninguna MT. Recordemos que para concluir que el lenguaje L = {ai bi : i 0} no es regular y que el lenguaje L = {ai bi ci : i 0} no es LIC utilizamos razonamientos por contradicci on (basados en lemas de bombeo). Aqu tambi en razonaremos por contradicci on, aunque el lenguaje denido es completamente articial y la contradicci on se obtiene por medio de un argumento diagonal de interacci on entre las enumeraciones w1 , w2 , w3 , . . . (entradas) y M1 , M2 , M3 , . . . (m aquinas de Turing). 7.4.1 Teorema. El lenguaje L = {wi : wi no es aceptada por Mi } no es RE, es decir, no es aceptado por ninguna MT. Demostraci on . Razonamos suponiendo que L s es RE para llegar a una contradicci on. Si L fuera RE ser a aceptado por una MT Mk , con respecto a la enumeraci on de m aquinas de Turing ya descrita. Es decir, L = L(Mk ) para alg un k . Se tendr a entonces wk L = wk no es aceptada por Mk = wk / L(Mk ) = L. wk / L = wk / L(Mk ) = wk es aceptada por Mk = wk L. Por lo tanto, wk L wk / L, lo cual es una contradicci on. El lenguaje L del Teorema 7.4.1 se denomina lenguaje de diagonalizaci on y se denota con Ld : Ld = {wi : wi no es aceptada por Mi }. A lo largo de este cap tulo encontraremos otros lenguajes que no son RE.  El argumento diagonal del Teorema 7.4.1 recuerda el argumento utilizado por Cantor para demostrar que el conjunto de los n umeros reales no es enumerable. Tal argumento consiste en suponer, razonando por contradicci on, que el conjunto de los n umeros reales entre 0 y 1 es enumerable: r1 , r2 , r3 , . . . . Si se escriben las expansiones decimales de los n umeros (evitando las secuencias de nueves nales, para eliminar representaciones m ultiples), se obtendr a una matriz innita de la forma:

212

CAP ITULO 7. PROBLEMAS INDECIDIBLES

r1 = 0.a11 a12 a13 r2 = 0.a21 a22 a23 r3 = 0.a31 a32 a33 . . . . . . Un n umero real r = 0.b1 b2 b3 bk , en el que bi = aii y bi = 9 para todo i, ser a diferente de todos y cada uno de los rk . Es decir, dada cualquier enumeraci on de los reales del intervalo [0, 1], se puede siempre construir un real que no est e en la lista, y esto se puede lograr modicando los d gitos de la diagonal principal. Este argumento es completamente similar al de la demostraci on del Teorema 7.4.1. En la siguiente matriz innita hay un 1 en la posici on (i, j ) si Mi acepta a wj , y un 0 si Mi no acepta a wj : M1 M2 M3 . . . w1 w2 w3 w4 0 0 1 0 1 0 0 0 0 1 1 0 . . .

Las las representan todos los lenguajes RE. Por diagonalizaci on construimos un lenguaje que no puede estar en esa lista y, por lo tanto, no puede ser RE. El lenguaje Ld se construye complementando la diagonal (cambiando ceros por unos y unos por ceros).

7.5.

Lenguajes RE no recursivos

A continuaci on mostraremos que existen lenguajes RE que no son recursivos, lo cual quiere decir que la contenencia Lenguajes recursivos Lenguajes RE

es estricta o propia (no hay igualdad). Esto implica que existen lenguajes que pueden ser aceptados por MT espec cas pero en cualquier MT que los acepte habr a c omputos que nunca terminan (obviamente, los c omputos de las cadenas aceptadas siempre terminan). De este hecho extraemos la siguiente importante conclusi on: los c omputos interminables, o bucles innitos, no se pueden eliminar de la teor a de la computaci on. El primer ejemplo de un lenguaje RE no-recursivo es el lenguaje universal Lu presentado en la secci on 7.2.

7.5. LENGUAJES RE NO RECURSIVOS

213

7.5.1 Teorema. El lenguaje universal, Lu = {M 0w : M acepta a w}, es RE pero no es recursivo. Demostraci on . En las secciones 7.2 y 7.3 se vi o que Lu es RE. Para mostrar que Lu no es recursivo razonamos por contradicci on: suponemos que existe una MT M que procesa todas las entradas M 0w y se detiene siempre en un estado de aceptaci on (si M acepta a w) o en uno de rechazo (si M acepta a w). Esta suposici on permitir a construir una MT M que acepte el lenguaje Ld del Teorema 7.4.1, de lo cual se deducir a que Ld es RE, contradiciendo as la conclusi on de dicho teorema. Con una entrada w , la m aquina M procede as : enumera sistem aticamente las cadenas w1 , w2 , w3 , . . . hasta que encuentra un k tal que w = wk . Luego simula (o invoca) a M con entrada Mk 0wk , decidiendo si Mk acepta o no a wk . Por lo tanto, M acepta el lenguaje Ld , o sea, L(M ) = Ld . Esto signica, en particular, que Ld es RE lo cual contradice el Teorema 7.4.1. El siguiente teorema sirve como fuente de ejemplos de lenguajes no RE. 7.5.2 Teorema. Si L es un lenguaje RE no recursivo, L no es RE. Demostraci on . Razonamiento por contradicci on: por el Teorema 6.8.2, si L fuera RE, L ser a recursivo. Como aplicaci on de este resultado podemos concluir que el complemento del lenguaje universal, Lu , no es RE. La siguiente gr aca muestra la relaci on entre los lenguajes recursivos, los lenguajes RE y los no RE:

RE no RE recursivos Lu Ld

Lu RE pero no recursivos

214

CAP ITULO 7. PROBLEMAS INDECIDIBLES

Los resultados de las dos u ltimas secciones permiten establecer las relaciones de contenencia entre las colecciones de lenguajes estudiadas en este curso (sobre un alfabeto dado): Regulares LIC Recursivos RE

( ).

Regulares LIC Recursivos Recursivamente Enumerables Todos los lenguajes

En cap tulos anteriores mostramos que hay lenguajes recursivos que no son LIC y lenguajes LIC que no son regulares. En el presente cap tulo hemos demostrado la existencia de lenguajes RE que no son recursivos y de lenguajes que no son RE. Por tal raz on, todas las contenencias anteriores son estrictas. En la siguiente tabla se muestra, a manera de resumen, la relaci on entre los lenguajes estudiados y las m aquinas que los aceptan. Lenguajes Regulares LIC RE Recursivos M aquinas aceptadoras Aut omatas nitos (AFD AFN AFN-) Aut omatas con pila no-deterministas (AFPN) M aquinas de Turing (MT) M aquinas de Turing que se detienen con toda entrada

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

215

7.6.

Problemas indecidibles o irresolubles

Dada una propiedad P referente a m aquinas de Turing, un problema de decisi on para P consiste en buscar un algoritmo A, aplicable a toda MT M (es decir, a toda codicaci on binaria), que responda SI o NO a la pregunta: satisface M la propiedad P? Si existe un algoritmo de decisi on, se dice que el problema P es decidible o resoluble; en caso contrario, el problema P es indecidible o irresoluble. Un algoritmo de decisi on debe ser aplicable uniformemente a todas las entradas (hay innitas entradas!) y terminar con una de las conclusiones SI o NO:

SI P se satisface

Entrada o Instancia

Algoritmo de decisi on A

NO

P no se satisface

Seg un la tesis de Church-Turing (secci on 6.9), identicamos algoritmos con m aquinas de Turing y, por lo tanto, decir que el problema P es indecidible equivale a armar que el lenguaje L = {M : M es el c odigo de una MT que satisface P} no es recursivo. Ejemplo El hecho de que el lenguaje universal Lu no es recursivo, esta blecido en el Teorema 7.5.1, equivale a armar que el siguiente problema de decisi on (el problema universal) es indecidible: Dada una MT M cualquiera, sobre un alfabeto de cinta predeterminado, y una cadena w , acepta M a w? N otese que las entradas o instancias para este problema son de la forma M 0w donde M es el c odigo de una MT y w es el c odigo de una entrada (sobre el alfabeto ).

216

CAP ITULO 7. PROBLEMAS INDECIDIBLES

T ecnica de reducci on de problemas


Conociendo que ciertos problemas son indecidibles, se puede concluir que otros problemas de decisi on tambi en lo son si se razona por contradicci on. Para ser m as precisos, sup ongase que ya se sabe que un cierto problema P1 es indecidible (como el problema universal, por ejemplo). Podr amos concluir que un problema dado P2 es indecidible razonando as : si P2 fuera decidible tambi en lo ser a P1 . Esta contradicci on mostrar a que el problema P2 no puede ser decidible. Cuando se emplea este razonamiento, se dice que el problema P1 se reduce al problema P2 . Para utilizar esta t ecnica de reducci on, es necesario dise nar un algoritmo A (o una m aquina de Turing) que sea capaz de convertir una entrada cualquiera u del problema P1 en entradas para el problema P2 de tal manera que, al aplicar la supuesta MT M que resuelve el problema P2 , se llegue a una decisi on, SI o NO, del problema P1 para la entrada u. La siguiente gr aca ilustra este procedimiento; el algoritmo A, que aparece representado por el rect angulo a trozos, es la parte esencial del procedimiento de reducci on. SI M
Decisi on para P2 Decisi on para P1 con entrada w

Entrada u de P1

Entrada de P2

NO

Ejemplo

Problema de la parada o problema de la detenci on. Este fa-

moso problema (halting problem, en ingl es), estudiado por el

propio Turing, consiste en preguntar si existe un algoritmo para el siguiente problema de decisi on: Dada una MT M cualquiera, sobre el alfabeto de cinta , y una cadena w , se detiene M al procesar la entrada w? El problema universal se puede reducir al problema de la parada. En otros t erminos, asumiendo la existencia de una MT M que resuelva el problema

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

217

de la parada se puede resolver el problema universal. La gr aca siguiente esboza el razonamiento. SI M


M 0w

M 0w

Decisi on del problema de la parada

Decisi on del problema universal

NO

Sea M 0w una entrada arbitraria (M y w codican MT y cadenas de , respectivamente). La m aquina M solamente devuelve la entrada M 0w, ya que las entradas para el problema universal y para el problema de la parada coinciden. Puesto que M es capaz de decidir si M se detiene o no con entrada w, tendr amos un algoritmo para resolver el problema universal: 1. Si M no se detiene con entrada w, entonces M no acepta a w. 2. Si M se detiene con entrada w, procesar w con M y determinar si es aceptada o no. Conclusi on: si el problema de la parada fuera decidible, tambi en lo ser a el problema universal. El anterior argumento tambi en permite concluir que el lenguaje Lp = {M 0w : M se detiene con entrada w} no es recursivo, aunque, seg un el ejercicio de la secci on 7.3, Lp es RE.

Ejemplo

Problema de la cinta en blanco.

Dada una MT M cualquiera, sobre el alfabeto de cinta , se detiene M al iniciar su funcionamiento con la cinta en blanco (todas las celdas marcadas con b)?

218

CAP ITULO 7. PROBLEMAS INDECIDIBLES

El problema de la parada se puede reducir al problema de la cinta en blanco, es decir, asumiendo la existencia de una MT M que resuelva el problema de la cinta en blanco se puede resolver el problema de la parada. La siguiente gr aca esboza el razonamiento: SI M
M 0w

Decisi on del problema de la cinta en blanco

Decisi on del problema de la parada

NO

Sea M 0w una entrada arbitraria. Construimos una MT M que empiece a operar con la cinta en blanco y, como primera instrucci on, escriba la cadena M 0w en una porci on reservada (nita) de la cinta. M simula luego el procesamiento que hace M con entrada w. Como M inicia su procesamiento con la cinta en blanco, podemos ejecutar la m aquina (algoritmo) M, con entrada M (codicada). M decide si M se detiene o no y, por lo tanto, se obtiene una decisi on sobre si M se detiene o no con entrada w. Conclusi on: si el problema de la cinta en blanco fuera decidible, tambi en lo ser a el problema de la parada. Lo anterior tambi en permite concluir que el lenguaje Lb = {M : M se detiene al operar con la cinta en blanco} no es recursivo.

Ejercicios de la secci on 7.6

Mediante la t ecnica de reducci on de problemas mostrar que los siguientes problemas de decisi on son indecidibles: (i) Problema de la impresi on: dada M = (Q, q0 , F, , , b, ) una MT cualquiera y un s mbolo s , imprimir a M alguna vez el s mbolo s sobre la cinta si M inicia su funcionamiento con

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

219

la cinta en blanco? Ayuda: reducir el problema de la cinta en blanco a este problema. (ii) Problema del ingreso a un estado: dada M = (Q, q0 , F, , , b, ) una MT cualquiera, una cadena de entrada w y estado q Q, ingresar a M al estado q al procesar la cadena w? Ayuda: reducir el problema universal a este problema. !(iii) Dada una MT M , L(M ) = ? Ayuda: el problema de la cinta en blanco se puede reducir a este problema. Para ello, dise nar un algoritmo que genere el c odigo de una MT M de tal manera que se cumpla: M acepta cualquier cadena si y s olo si M se detiene con la cinta en blanco. !(iv) Dada una MT M , L(M ) = ? Ayuda: utilizar una idea similar a la del problema (iii). (v) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) = L(M2 )? Ayuda: si este problema fuera decidible, tambi en lo ser a el problema (iii), tomando como M2 una MT adecuada. (vi) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) L(M2 )? Ayuda: si este problema fuera decidible, tambi en lo ser a el problema (iii), tomando como M1 una MT adecuada. (vii) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) L(M2 ) = ? Ayuda: si este problema fuera decidible, tambi en lo ser a el problema (iv), tomando como M2 una MT adecuada. Demostrar que si el problema de la parada fuera resoluble, todo lenguaje RE ser a recursivo. Demostrar que los lenguajes La , Lb y Lp no son RE. Expl citamente, estos lenguajes est an denidos como La = {M : L(M ) = } = {M : M no acepta ninguna cadena}, Lb = {M : M no se detiene al operar con la cinta en blanco}, Lp = {M 0w : M no se detiene con entrada w}. Ayuda: usar el Teorema 7.5.2. Demostrar que el lenguaje {(M1 , M2 ) : L(M1 ) L(M2 ) = } no es RE.

Bibliograf a

[ASU] A. Aho, R. Sethi & J. Ullman, Compilers: Principles, Techniques and Tools, Addison-Wesley, 1986. [B] F. Beckman, Mathematical Foundations of Programming, AddisonWesley, 1980. [C] N. Cutland, Computability, Cambridge University Press, 1980. rez, J. Ruiz, et al., Teor [GPR] P. Garc a, T. Pe a de Aut omatas y Lenguajes Formales, Alfaomega, 2001. [HU1] J. Hopcroft & J. Ullman, Formal Languages and their Relation to Automata, Addison-Wesley, 1969. [HU2] J. Hopcroft & J. Ullman, Introduction to Automata Theory, Language and Computation, Addison-Wesley, 1979. [HMU] J. Hopcroft , R. Motwani & J. Ullman, Introducci on a la Teor a de Aut omatas, Lenguajes y Computaci on, Segunda Edici on, PearsonEducaci on, 2002. [K] D. Kelley, Teor a de Aut omatas y Lenguajes Formales, Prentice Hall, 1995. [LP] H. Lewis & C. Papadimitriou, Elements of the Theory of Computation, Prentice Hall, 1981. ve sz, Introduction to Formal Language Theory, Dover Publi[R] G. Re cations, 1991. [Sa] J. Savage, Models of Computation, Addison-Wesley, 2000. 221

222

BIBLIOGRAF IA

[Su] T. Sudkamp, Languages and Machines, Addison-Wesley, 1988. [SW] R. Sommerhalder & S. van Westrhenen, The Theory of Computability, Addison-Wesley, 1988.

Das könnte Ihnen auch gefallen