t Comput Ac i on Rodrigo de Castro

July 20, 2017 | Author: Дпђяеш ЯiисФи | Category: Formalism (Deductive), Linguistics, Theoretical Computer Science, Physics & Mathematics, Mathematics
Share Embed Donate


Short Description

Descripción: teoria de la computacion...

Description

´ 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 Diagramaci´on en LATEX realizada por el autor Impresi´ on: UNIBIBLOS Universidad Nacional de Colombia Bogot´a D.C., 2004

´Indice general

Pr´ ologo

1

Introducci´ on. ¿Qu´ e es la Teor´ıa de la Computaci´ on?

3

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. Reflexi´on o inversa de una cadena . . . 1.6. Subcadenas, prefijos y sufijos . . . . . 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. Reflexi´on o inverso de un lenguaje . . 1.13. Lenguajes regulares . . . . . . . . . . . 1.14. Expresiones regulares . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

. . . . . .

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

. . . . . .

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

5 5 7 8 8 9 9 10 11 12 14 14 17 18 19

. . . . . .

25 25 28 29 33 38 43

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. Homomorfismos z . . . . . . . . . . . . . . . 3.5. Imagen inversa de un homomorfismo z . . . 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 z . . . 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) z . . . 4.13. Lema de bombeo para LIC . . . . . . . . . 4.14. Propiedades de clausura de los LIC . . . . . 4.15. Algoritmos de decisi´ on para GIC . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

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. z . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . .

. . . . . .

. . . . . .

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

v

´INDICE GENERAL

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) z . . . . . . . . . . . . . . 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 . . . . . . . . .

167 167 174 176 179 180 180 181 181 183 186 186 186 188 193 198 198 199

7. Problemas indecidibles 7.1. Codificaci´ 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 . . . . . . . .

201 201 206 209 211 212 215

Bibliograf´ıa

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

221

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 significado 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 flexibilidad en la selecci´ on de los t´opicos del curso. As´ı, si el tiempo 1

2

´ PROLOGO

disponible no es holgado, o no es posible avanzar con la velocidad suficiente, podr´ıan suprimirse las secciones demarcadas con el s´ımbolo z. Casi todas las secciones poseen ejercicios, de variada dificultad; 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: Cursos–Facultad de Ciencias–Matem´ aticas–Teor´ı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 oficina 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 sofisticaci´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 (1903–1995) y del matem´ atico brit´ anico Alan Turing (1912–1954). 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

4

´ 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 finito o aut´ omata finito (“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 clasific´ 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 significativos. Desde la aparici´on de los influyentes 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 reflejan 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

1

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 finito y todos los objetos usados como entradas o salidas (inputs/outputs) deben ser identificados en un tiempo finito. Desde el punto de vista te´ orico esto impone dos restricciones b´asicas: el conjunto de s´ımbolos (alfabeto) debe ser finito y se deben considerar u ´nicamente cadenas (secuencias de s´ımbolos) de longitud finita. Surgen as´ı los ingredientes esenciales de una teor´ıa abstracta de la computaci´ on: alfabetos y cadenas. Los conjuntos de cadenas (ya sean finitos o infinitos) se denominar´an lenguajes.

1.1.

Alfabetos y cadenas

Un alfabeto es un conjunto finito 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) finita 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. 





b. Las siguientes son cadenas sobre Σ:

Ejemplo

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

6

CAP´ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

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





cadenas sobre este alfabeto son secuencias finitas de ceros y

Ejemplo

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

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





idioma castellano. Las palabras oficiales del castellano (las que

Ejemplo

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

aparecen en el diccionario DRA) son cadenas sobre Σ. 





programaci´ on (como Pascal o C) es el conjunto de caracte-

Ejemplo

El alfabeto utilizado por muchos de los llamados lenguajes de

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 Σ.

a, b, c, d, e,. . .

denotan s´ımbolos de un alfabeto.

u, v, w, x, y, z, . . . α, β, γ, . . .

denotan cadenas, es decir, sucesiones finitas 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, . . . , L, M, N ,. . . denotan lenguajes (definidos 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 finito, Σ∗ es siempre un conjunto infinito (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 Σ fijo (pero arbitrario).

1.2.

7

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 define 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 definir 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 definici´on descriptiva de concatenaci´ on. Tambi´en se puede dar una demostraci´ on inductiva usando la definici´on recursiva de concatenaci´ on (ejercicio opcional).

8

CAP´ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.3.

Potencias de una cadena

Dada u ∈ Σ∗ y n ∈ N, se define (descriptivamente) un en la siguiente forma u0 = λ, un = uu · · · u} . | {z n veces

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

1.4.

Longitud de una cadena

La longitud de una cadena u ∈ Σ∗ se denota |u| y se define 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 .















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

Ejemplo Ejemplo

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

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

mos nunca en este libro!); la presentamos aqu´ı para enfatizar los conceptos involucrados e ilustrar los razonamientos estrictos. Soluci´on.

Caso n, m ≥ 1. |wn+m | = | ww · · · w} | = (n + m)|w|. Por otro | {z n+m veces

lado,

|wn | + |wm | = | ww · · · w} | + | ww · · · w} | = n|w| + m|w|. | {z | {z n veces

m veces

Caso n = 0, m ≥ 1. |wn+m | = |w0+m | = |wm |. Por otro lado,

|wn | + |wm | = |w0 | + |wm | = |λ| + |wm | = 0 + |wm | = |wm |. 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.

9

Reflexi´ on o inversa de una cadena

La reflexi´ on o inversa de una cadena u ∈ Σ∗ se denota uR y se define descriptivamente as´ı: R

u =



λ, si u = λ, an · · · a2 a1 , si u = a1 a2 · · · an .

De la definici´on se observa claramente que la reflexi´ on de la reflexi´ on de una cadena es la misma cadena, es decir, (uR )R = u, ✎

para u ∈ Σ∗ .

Algunos autores escriben u−1 en lugar de uR para denotar la reflexi´on de una cadena u.









Ejercicios de la secci´ on 1.5

➀ Dar una definici´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, prefijos y sufijos

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 prefijo de u es una cadena v tal que u = vw para alguna cadena w ∈ Σ∗ . Se dice que v es un prefijo propio si v 6= u. Similarmente, un sufijo de u es una cadena v tal que u = wv para alguna cadena w ∈ Σ∗ . Se dice que v es un sufijo propio si v 6= u. Obs´ervese que λ es un prefijo y un sufijo de toda cadena u ya que uλ = λu = u. Por la misma raz´on, toda cadena u es prefijo y sufijo de s´ı misma. 







Ejemplo

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

10

CAP´ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.7.

Prefijos de u :

Sufijos de u :

λ b bc bcb bcba bcbaa bcbaad bcbaadb

λ b db adb aadb baadb cbaadb bcbaadb

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 finito o infinito. Los lenguajes se denotan con letras may´ usculas A, B, C, . . . , L, M, N, . . .. En la siguiente gr´ afica se visualizan dos lenguajes A y B sobre Σ.

Σ∗ B A







especificados.

Ejemplos

Los siguientes son ejemplos de lenguajes sobre los alfabetos

Σ = {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 finito. Σ = {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 definir como un lenguaje sobre Σ, en la siguiente forma: N = {u ∈ Σ∗ : u = 0 ´o 0 no es un prefijo de u}. Como ejercicio, el estudiante puede definir el conjunto de los enteros Z = {. . . , −2, −1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado. ✎

1.8.

El concepto abstracto de “lenguaje”, tal como se ha definido, 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 definido en esta secci´ on).

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 Σ: A∪B A∩B A−B 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 define como AB = {uv : u ∈ A, v ∈ B}. En general, AB 6= 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 }i∈I es una familia cualquiera de lenguajes sobre Σ, entonces S S A· Bi = (A · Bi ), i∈I

S

i∈I



i∈I

Bi · A =

S

i∈I

(Bi · A).

´ 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. S S 5. Demostraci´ on de la igualdad A · Bi = (A · Bi ): i∈I

i∈I

S Bi ⇐⇒ x = u · v, con u ∈ A & v ∈ i∈I Bi ⇐⇒ x = u · v, con u ∈ A & v ∈ Bj , para alg´ un j ∈ I ⇐⇒ x ∈ A un j ∈ I S · Bj , para alg´ ⇐⇒ x ∈ i∈I (A · Bi ). S  S Bi · A = (Bi · A) se demuestra de forma similar. La igualdad x∈A·

S

i∈I

i∈I

i∈I



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 define A en la siguiente forma A0 = {λ}, An = AA · · · A} = {u1 · · · un : ui ∈ A, para todo i, 1 ≤ i ≥ n}. | {z 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 definici´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∗ =

[

Ai = A0 ∪ A1 ∪ A2 ∪ · · · ∪ An · · ·

i≥0

Seg´ un la definici´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∗ :

(Descripci´ on 2)

A∗ = conjunto de todas las concatenaciones de cadenas de A, incluyendo λ = {u1 · · · un : ui ∈ A, n ≥ 0}

De manera similar se define la clausura positiva de un lenguaje A, A ⊆ Σ∗ , denotada por A+ . A+ =

[

Ai = A1 ∪ A2 ∪ · · · ∪ An · · ·

i≥1

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∗ . n 3. A∗ = A∗ , para todo n ≥ 1. ∗ 4. A∗ = A∗ .

5. A+ · A+ ⊆ A+ . + 6. A∗ = A∗ . ∗ 7. A+ = A∗ . + 8. 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. ∗ 0 1 2 A∗ = A∗ ∪ A∗ ∪ 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. A∗

6.

A+

7.

∗

+

= A∗ ∗

1

∪ (A∗ ∗

2

∪ (A∗



= A ∪ A ∪ A ∪ ··· = A∗ .

= A+

0

∪ A+ +

1 +

∪ A+ +

2

3

∪ ···

∪ ···

= {λ} ∪ A ∪ A A ∪ · · ·

= A∗ ∪ (conjuntos contenidos en A+ ) = A∗ .

A+

8.

+

= A+ +

1

∪ A+

2

∪ A+

3

∪ ··· ,

= 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 definiciones dadas, Σ∗ tiene dos significados: Σ∗ = conjunto de las cadenas sobre el alfabeto Σ. Σ∗ = conjunto de todas las concatenaciones de cadenas de Σ. No hay conflicto de notaciones porque las dos definiciones anteriores de Σ∗ dan lugar al mismo conjunto.

´ O INVERSO DE UN LENGUAJE 1.12. REFLEXION

1.12.

17

Reflexi´ on o inverso de un lenguaje

Dado A un lenguaje sobre Σ, se define AR de la siguiente forma: AR = {uR : u ∈ A}. AR se denomina la reflexi´ 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 . R 4. AR = A. ∗ 5. (A∗ )R = AR . + R 6. (A+ ) = AR .

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 ,

donde u ∈ A · B

⇐⇒ x = uR ,

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

⇐⇒ x = (vw) ,

donde v ∈ A, w ∈ B

⇐⇒ x = wR v R ,

donde v ∈ A, w ∈ B

R

R

⇐⇒ x ∈ B · A .

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 reflexi´ 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 definici´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 A∪B A·B 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 finito 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 finito de s´ımbolos, wi = a1 a2 · · · ak ; por lo tanto, {wi } = {a1 } · {a2 } · · · {ak }.

1.14. EXPRESIONES REGULARES

1.14.

19

Expresiones regulares

Con el prop´ osito de simplificar la descripci´ on de los lenguajes regulares se definen las llamadas expresiones regulares. La siguiente es la definici´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 definici´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}∗ . 





ci´ on 1.13 con expresiones regulares:

Ejemplos

Podemos representar los tres primeros lenguajes de la sec-

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.







lenguajes, definidos sobre el alfabeto Σ = {a, b}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

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∗ . 





lenguajes, definidos sobre el alfabeto Σ = {0, 1}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

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. 





el lenguaje de todas las cadenas que no contienen dos ceros

Ejemplo

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

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 final 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). 





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

Ejemplo

dena bc.

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

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 significa 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 definidos 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

2

Aut´omatas finitos 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 finito.

2.1.

Aut´ omatas finitos deterministas (AFD)

Los aut´ omatas finitos son m´ aquinas abstractas que procesan cadenas de entrada, las cuales son aceptadas o rechazadas: Aut´ omata M

si

(u es aceptada)

Cadena de entrada u no

(u es rechazada)

El aut´omata act´ ua leyendo los s´ımbolos escritos sobre una infinita, 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 finito o 25

cinta semiuna cadena unidad de unidad de

26

´ CAP´ITULO 2. AUTOMATAS FINITOS

memoria) que tiene un n´ umero finito de configuraciones internas, llamadas estados del aut´ omata. Entre los estados de un aut´omata se destacan el estado inicial y los estados finales o estados de aceptaci´ on. Formalmente, un aut´ omata finito M est´a definido 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 finales o de aceptaci´ on. F 6= ∅. 5. La funci´on de transici´on del aut´omata δ : Q × Σ −→ Q (q, s) 7−→ δ(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:

z

Unidad de control

u

a

}|

···

a



b

{



···

q

La funci´on de transici´on δ indica el estado al cual pasa el control finito, dependiendo del s´ımbolo escaneado y de su estado actual. As´ı, δ(q, s) = q ′ significa 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 ′

···

s

···

···

···

s





q

q′

´ 2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD)

27

Puesto que la funci´on δ est´a definida 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. 





componentes:

Ejemplo

Consideremos el aut´ omata definido por los siguientes cinco

Σ = {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci´ on. Funci´on de transici´on δ: δ

a

b

q0 q0 q1 q1 q1 q2 q2 q1 q1

δ(q0 , a) = q0

δ(q0 , b) = q1

δ(q1 , a) = q1

δ(q1 , b) = q2

δ(q2 , a) = q1

δ(q2 , b) = q1 .

Vamos a ilustrar el procesamiento de dos cadenas de entrada. 1.

u = aabab. z

a

a

↑ q0

↑ q0

u }| b

a

b

↑ q0

↑ q1

↑ q1

{

···

≡ ↑ q2

Como q2 es un estado de aceptaci´ on, la cadena de entrada u es aceptada. 2.

v = aababa. z

a

a

b

↑ q0

↑ q0

↑ q0

v }|

a

b

a

↑ q1

↑ q1

↑ 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 finitos descritos anteriormente se denominan aut´ omatas finitos 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 definida. 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 define 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 finito 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 final q se representa por: q

29

˜ DE AUTOMATAS ´ 2.3. DISENO

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. 





ci´ on anterior.

Ejemplo

Diagrama de transiciones del aut´omata presentado en la sec-

Σ = {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci´ on. Funci´on de transici´on δ: δ

a

b

q0 q0 q1 q1 q1 q2 q2 q1 q1

δ(q0 , a) = q0

δ(q0 , b) = q1

δ(q1 , a) = q1

δ(q1 , b) = q2

δ(q2 , a) = q1

δ(q2 , b) = q1

a

b

> q0

a q1

a, b b q2

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 simplificar considerablemente los diagramas. En este cap´ıtulo abordaremos dos tipos de problemas: 1.

Dado un lenguaje regular L dise˜ nar un aut´omata finito M que acepte o reconozca a L, es decir, tal que L(M ) = L.

2.

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

a b

q1 b

a Versi´ on simplificada: 







Ejemplo

> q0

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

a q1

a

b

q2 b a Versi´ on simplificada:

> q0

a

q1







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

Ejemplo

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

˜ DE AUTOMATAS ´ 2.3. DISENO

b

a

> q0

b

31

b

a

q1

q2







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

Ejemplo

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

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

q1 0, 1







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

Ejemplo

Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que contienen 1

0

> q0

1 q1

0 





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

Ejemplo

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

b

> q0

b q1

a









Ejercicios de la secci´ on 2.3

➀ Dise˜ nar aut´ omatas finitos 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 definido 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, modificando adecuadamente el conjunto de estados finales. ➁ 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

0

> q0

q1

q2

1

0

0

1

0

q3

q4

1

1

1

(ii) 1 > q0

1

q1

0

q2

q3 0

´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

33

(iii) q1 0

1 0 > q0

1

q2

1

q3

1 (iv) b > q0

b

a

q1

a q2

b

2.4.

Aut´ omatas finitos no-deterministas (AFN)

Los aut´ omatas finitos 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 definida. Concretamente, un AFN est´a definido por M = (Σ, Q, q0 , F, ∆) donde: 1. Σ es el alfabeto de cinta. 2. Q es un conjunto (finito) de estados internos. 3. q0 ∈ Q es el estado inicial. 4. ∅ 6= F ⊆ Q es el conjunto de estados finales o estados de aceptaci´ on. 5.

∆ : Q × Σ −→ ℘(Q) (q, s) 7−→ ∆(q, s) = {qi1 , qi2 , . . . , qik } donde

℘(Q) es el conjunto de subconjunto de Q.

34

´ CAP´ITULO 2. AUTOMATAS FINITOS

El significado 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 significa 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: z

···

u }| s

{

···



···

↑ q La noci´ on de diagrama de transiciones para un AFN se define 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

q ′′

q s q′

Un AFN M puede procesar una cadena de entrada u ∈ Σ∗ de varias maneras. Sobre el diagrama de transiciones del aut´omata, esto significa 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 }

35

´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

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







Ejemplo a > q0

Sea M el siguiente AFN:

a

a

b

q1

b q2

b

a q3



a

b

q0

{q0 , q1 , q3 }



q1

{q1 }

{q2 }

q2



{q1 , q2 }

q3



{q3 }

b 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 definici´on de lenguaje aceptado, u ∈ L(M ).

C´omputo de rechazo:

z

a ↑ q0

C´omputo de aceptaci´ on:

z

a ↑ q0

Otro c´omputo de aceptaci´ on:

z

a ↑ q0

u }| b

b

↑ q1

↑ q2

u }| b

b

↑ q3

↑ q3

u }| b

b

↑ q1

↑ q2

{



···

↑ q2

{



···

↑ q3

{

≡ ↑ q1

···

36

´ CAP´ITULO 2. AUTOMATAS FINITOS

z

C´omputo abortado:

u }|

a

b

↑ q0

b

{



···

↑ q0







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

Ejemplo

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

que terminan en b: a

b

b

> q0

q1 a

Un AFN que acepta el mismo lenguaje y que es, tal vez, m´ as f´acil de concebir, es el siguiente: a b

> q0

q1

b Este aut´ omata se asemeja a la expresi´ on regular (a ∪ b)∗ b. 

Ejemplo





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

b q1

a q2









Ejemplo

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

´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

37

0 > q0 0

1

q1

0 q2

q3

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

Dise˜ nar aut´ omatas AFD o AFN que acepten los siguientes lenguajes: ➀ Σ = {a, b}. L = ab+ a∗ . ➁ Σ = {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

2.5.

´ CAP´ITULO 2. AUTOMATAS FINITOS

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, ∆) definiendo ∆(q, a) = {δ(q, a)} para cada q ∈ Q y cada a ∈ Σ. Para la afirmaci´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. 





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

Ejemplo

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

a > q0 a

b q1

a q2



a

b

q0

{q1 , q2 }



q1



{q1 }

q2

{q2 }



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

δ

a

b

q0

{q1 , q2 }



q1



{q1 }

q2

{q2 }



{q1 , q2 }

{q2 }

{q1 }

39

El diagrama de transiciones de este aut´omata es: a a

a > {q0 }

{q1 , q2 }

{q2 }

b

{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

a > p0

p1

a p2

b p3

b 





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

Ejemplo

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

40

´ CAP´ITULO 2. AUTOMATAS FINITOS

0

1

> q0

q1

q2

1 0

La tabla de la funci´on de transici´on de M se extiende para completar la funci´on δ del nuevo AFN: δ

0

1

q0

{q1 }



q1



{q0 , q2 }

q2

{q0 }



{q0 , q2 }

{q0 , q1 }



{q0 , q1 }

{q1 }

{q0 , q2 }

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

{q1 }

1

{q2 }

0 0

{q0 , q2 }

1

{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 simplificar en la siguiente forma:

2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

41

0 > p0

p1

1

0 0

p2

1

p3

Para la demostraci´ on del Teorema 2.5.1, conviene extender la definici´on de la funci´on de transici´on, tanto de los aut´omatas deterministas como de los no-deterministas. 2.5.2 Definici´ on. Sea M = (Σ, Q, q0 , F, δ) un AFD. La funci´on de transici´ on δ : Q × Σ −→ Q se extiende a una funci´on δb : Q × Σ∗ −→ Q por medio de la siguiente definici´on recursiva:  b  δ(q, λ) = q, q ∈ Q, b a) = δ(q, a), q ∈ Q, a ∈ Σ, δ(q,  b b w), a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ . δ(q, wa) = δ(δ(q,

b 0 , w) es el Seg´ un esta definici´on, para una cadena de entrada w ∈ Σ∗ , δ(q 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: b 0 , w) ∈ F }. L(M ) = {w ∈ Σ∗ : δ(q

b w) se noNotaci´ on. Sin peligro de ambig¨ uedad, la funci´on extendida δ(q, tar´ a simplemente δ(q, w). 2.5.3 Definici´ on. Sea M = (Σ, Q, q0 , F, ∆) un AFN. La funci´on de transici´on ∆ : Q × Σ −→ ℘(Q) se extiende inicialmente a conjuntos de estados. Para a ∈ Σ y S ⊆ F se define ∆(S, a) :=

[

q∈S

∆(q, a).

42

´ CAP´ITULO 2. AUTOMATAS FINITOS

b : Q × Σ∗ −→ ℘(Q), de manera Luego se extiende ∆ a una funci´on ∆ similar a como se hace para los AFD. Recursivamente,  b λ) = {q}, q ∈ Q, ∆(q,    b ∆(q, a) = ∆(q, a), q ∈ Q, a ∈ Σ, [ ∆(q, b wa) = ∆(∆(q, b w), a) = ∆(p, a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ .    b p∈∆(q,w)

b 0 , w) es el Seg´ un esta definici´on, para una cadena de entrada w ∈ Σ∗ , ∆(q 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 b 0 , w) = ∅. Usando la funci´on extendida ∆, b el lenguaje aceptado por M ∆(q se puede describir de la siguiente forma: b 0 , w) contiene un estado de aceptaci´ L(M ) = {w ∈ Σ∗ : ∆(q on}.

b w) se Notaci´ on. Sin peligro de ambig¨ uedad, la funci´on extendida ∆(q, 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) 7−→ δ(S, a) := ∆(S, a). F ′ = {S ⊆ ℘(Q) : S ∩ F 6= ∅}.

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)

(definici´on de la extensi´ on de δ) (hip´ otesis de inducci´on)

= ∆(∆({q0 }, w), a) (definici´on de δ) = ∆({q0 }, wa)

(definici´on de la extensi´ on de ∆)

= ∆(q0 , wa)

(definici´on de la extensi´ on de ∆).

´ 2.6. AUTOMATAS CON TRANSICIONES λ (AFN-λ)









Ejercicios de la secci´ on 2.5

43

Dise˜ nar AFD equivalentes a los siguientes AFN: ➀ b > q0

q1

a

b

b q2

q3 a

➁ 0 > q0

0

0

1

q1

1 q2

1

0 q3 1

2.6.

Aut´ omatas con transiciones λ (AFN-λ)

Un aut´ omata finito con transiciones λ (AFN-λ) es un aut´omata nodeterminista M = (Σ, Q, q0 , F, ∆) en el que la funci´on de transici´on est´a definida como: ∆ : Q × (Σ ∪ {λ}) → ℘(Q). on λ, transici´ on La transici´on ∆(q, λ) = {pi1 , . . . , pin }, llamada transici´ nula o transici´ on espont´ anea, tiene el siguiente significado computacional: estando en el estado q, el aut´ omata puede cambiar a uno cualquiera de los estados pi1 , . . . , pin , independientemente del s´ımbolo le´ıdo y sin mover 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

b

b

λ

q1

q2

a

q3

q4

> q0

λ

b

a

Ejemplos de cadenas aceptadas por M : u = aab v = abaa w = abbaa C´omputos de aceptaci´ on de u = aab y v = abaa: ···

a

a

b



↑ q0

↑ q1

↑ q1

↑ q2

a

b

a

a



↑ q0

↑ q3

↑ q3

↑ q4

↑ q4

l q1

l 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

b

b

> q0

c

q1

c q2

c AFN-λ que acepta a L: a

b

λ

> q0

λ

q1

c q2

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





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

Ejemplo

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

AFD que acepta el lenguaje de las cadenas con un n´ umero par de aes: b

a

> q0

b q1

a AFD que acepta el lenguaje de las cadenas con un n´ umero par de bes: a

b

> q0

a q1

b AFN-λ que acepta el lenguaje de las cadenas con un n´ umero par de aes o un n´ umero par de bes:

46

´ CAP´ITULO 2. AUTOMATAS FINITOS

b λ

a

q1

b q2

a > q0 b λ

q3 a

q4 b

a

A diferencia de los AFD y los AFN, en los AFN-λ pueden existir “c´omputos infinitos”, 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

2.7.

47

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´ aficamente, 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 afirmaci´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] 6= ∆(q, λ). Por definici´on, q ∈ λ[q]. La λ-clausura de un conjunto de estados {q1 , . . . , qk } se define por: λ[{q1 , . . . , qk }] := λ[q1 ] ∪ · · · ∪ λ[qk ]. Adem´ as, λ[∅] := ∅. Sea M ′ = (Σ, Q, q0 , F ′ , ∆′ ) donde ∆′ : Q × Σ (q, a)

−→ 7−→

℘(Q)

  ∆′ (q, a) := λ ∆(λ[q], a) .

M ′ simula as´ı las transiciones λ de M teniendo en cuenta todas las posibles trayectorias. F ′ se define 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. 





sentado en el segundo ejemplo de la secci´ on 2.6.

Ejemplo

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

48

´ CAP´ITULO 2. AUTOMATAS FINITOS

a

b

λ

> q0

c

λ

q1

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) ∆′ (q0 , b) ∆′ (q0 , c) ∆′ (q1 , a) ∆′ (q1 , b) ∆′ (q1 , c) ∆′ (q2 , a) ∆′ (q2 , b) ∆′ (q2 , 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









Ejercicios de la secci´ on 2.7

q2 b, c

b

Construir AFN equivalentes a los siguientes AFN-λ: ➀

λ > q0 a, λ

b

q1

b q2

q3 λ

c

49

2.8. TEOREMA DE KLEENE. PARTE I

➁ a

λ

> q0

a

λ

q1

b q2

b

λ q3 b

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 finito (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

AFN-λ Lenguajes regulares

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.

Expresi´on regular R

M

Procedimiento

−−−−−−−−−→

AFN-λ

algor´ıtmico

tal que L(M ) = R.

Demostraci´ on. Puesto que la definici´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 a

> q0

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 .. .

>

.. .

51

2.8. TEOREMA DE KLEENE. PARTE I

Los estados finales 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 finales del nuevo aut´omata son los estados finales 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 finales del nuevo aut´omata son u ´nicamente los estados finales de M2 : λ

M1 >

.. .

.. .

M2 .. .

λ Aut´ omata que acepta R∗ . Los estados finales del nuevo aut´omata son los estados finales de M1 junto con el estado inicial.

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 simplificar las pr´oximas construcciones utilizaremos, en su lugar, el bucle de un estado: a >







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

Ejemplo

Vamos a utilizar el procedimiento del teorema para construir

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

a >

λ

b

2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE

Aut´ omata que acepta ba:

a

λ

b >

Aut´ omata que acepta ab ∪ ba:

a

λ

b

b

λ

a

a

λ

b

b

λ

a

λ > λ

Aut´ omata que acepta (ab ∪ ba)∗ : λ

λ > λ

λ

53

54

´ CAP´ITULO 2. AUTOMATAS FINITOS

Aut´ omata que acepta a∗ (ab ∪ ba)∗ : λ

a

λ

a

λ

b

b

λ

a

λ

> λ

λ Aut´ omata que acepta b ∪ a∗ : b λ > λ a Aut´ omata que acepta a(b ∪ a∗ ): b λ a

λ

> λ a

55

2.10. LEMA DE ARDEN

Aut´ omata que acepta a∗ (ab ∪ ba)∗ ∪ a(b ∪ a∗ ): λ

a

λ

λ

a

λ

b

b

λ

a

λ λ

> λ

b

λ

λ a

λ λ 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 λ 6∈ 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 =

[

!

An B =

n≥0

[

An B ⊆ X.

n≥0

Esto muestra que toda soluci´on de X = AX ∪ B contiene a A∗ B y es f´acil verificar 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 6= ∅, existir´ıa una cadena u ∈ C de longitud m´ınima. Entonces u = vw, con v ∈ A, w ∈ C. Como λ 6∈ A, v 6= λ; por consiguiente |w| < |u|. Esta contradicci´ on muestra que necesariamente C = ∅, tal como se quer´ıa. 



 

 



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

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

soluci´on u ´nica X = (a2 ∪ b+ )∗ ab. 





X = (ab2 ∪ a)X ∪ (a∗ b ∪ b∗ a). Por lema de Arden la ecuaci´ on

Ejemplo

La ecuaci´ on X = ab2 X ∪ aX ∪ a∗ b ∪ b∗ a se puede escribir como

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

2.11. TEOREMA DE KLEENE. PARTE II









Ejercicios de la secci´ on 2.10

57

➀ 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 6= ∅}. Cada Ai se puede escribir como S   {aAj : qj ∈ ∆(qi , a)}, (2.1) Ai = a∈Σ S   {aAj : qj ∈ ∆(qi , a)} ∪ λ.

si qi 6∈ F, si qi ∈ F.

a∈Σ

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 (∪λ)

donde cada coeficiente 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.

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, An−1 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 coeficientes 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

a

a

> q0

q1

b

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)

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)

A2 = (a ∪ b)A2 ∪ λ.

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

A2 = (a ∪ b)∗ λ = (a ∪ b)∗ .

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

59

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

A1 = a(a ∪ b)∗ .

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

A0 = (a ∪ b)A0 ∪ a2 (a ∪ b)∗ .

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





el siguiente AFN M :

Ejemplo

Encontrar una expresi´ on regular para el lenguaje aceptado por

a

a > q0

q1

b q2

b

a

b

q3

q4 a

a 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 ∪ λ

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

A3 = aA3 ∪ baA2 ∪ baA3 ∪ b = (a ∪ ba)A3 ∪ baA2 ∪ b.

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

A3 = (a ∪ ba)∗ (baA2 ∪ b) = (a ∪ ba)∗ baA2 ∪ (a ∪ ba)∗ b.

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

A2 = bA2 ∪ b(a ∪ ba)∗ baA2 ∪ b(a ∪ ba)∗ b ∪ λ.

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)

´ CAP´ITULO 2. AUTOMATAS FINITOS

  A2 = b ∪ b(a ∪ ba)∗ ba A2 ∪ b(a ∪ ba)∗ ∪ λ.

Aplicando el lema de Arden en (9):  ∗   (10) A2 = b ∪ b(a ∪ ba)∗ ba b(a ∪ ba)∗ b ∪ λ .

Si se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en (1), se obtiene finalmente:  ∗   A0 = a2 b ∪ b(a ∪ ba)∗ ba b(a ∪ ba)∗ b ∪ λ 





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

Ejemplo

Encontrar una expresi´ on regular para el lenguaje L de todas

y un n´ umero par de bes. El siguiente aut´omata acepta el lenguaje L: a > q0

q1 a

b

b

b

b

a q2

q3 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

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

A2 = a2 A2 ∪ abA1 ∪ bA0 .

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

A1 = aA0 ∪ baA2 ∪ b2 A1 .

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 .

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

A1 = aA0 ∪ ba(a2 )∗ abA1 ∪ ba(a2 )∗ bA0 ∪ b2 A1 .

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

A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ.

El sistema se reduce ahora a dos ecuaciones:   (9) A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ 2 ∗ 2 (8) A1 = aA0 ∪ ba(a2 )∗ abA  1 ∪ ba(a ) bA0 2∪∗b A1  2 ∗ 2 = ba(a ) ab ∪ b A1 ∪ aA0 ∪ ba(a ) bA0 .

Aplicando el lema de Arden en (8):  ∗ A1 = ba(a2 )∗ ab ∪ b2 aA0 ∪ ba(a2 )∗ bA0 (10) ∗ ∗ = 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): ∗  A0 = b(a2 )∗ b aA1 ∪ b(a2 )∗ abA1 ∪ λ (12) ∗ ∗ ∗ = 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 b

a > q0

a

q1

a

q2

a

q3

b (ii) b > q0

b q1

b

a q2

a q3

q4 b

b

Cap´ıtulo

3

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 homomorfismos y por las im´agenes inversas de homomorfismos. 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:  w se puede descomponer como w = uvx, con |uv| ≤ n, v 6= λ, (B) 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

CAP´ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Sea 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´ afica, w se puede descomponer como w = uvx, donde |uv| ≤ n, v 6= λ. z |

w }|

··· ↑ q0

{z u

··· }|

{z v

↑ q

{

··· }|

↑ q

{z x

}

≡ ↑ p

N´ otese que tanto u como x pueden ser la cadena vac´ıa λ, pero v 6= λ. 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

q

> q0

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 6= λ,

|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. 





{ai bi : i ≥ 0} no es regular.

Ejemplo

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

Soluci´on. Si L fuera regular, existir´ıa una constante de bombeo n para L. 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 ,

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

Entonces, x = an−(r+s) bn = an−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 an−r−s bn = an−s bn . Como n − s 6= 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 an−r−s bn = ar+2s+n−r−s 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. 





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

Ejemplo

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

cadena w tal que w = wR . Soluci´on. Si L fuera regular, existir´ıa una constante de bombeo n para L. 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 ,

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

Entonces, x = an−(r+s) ban = an−r−s ban .

66

CAP´ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Tomando i = 0, se concluye que ux ∈ L, pero ux = ar an−r−s ban = an−s ban . Como s ≥ 1, an−s ban no es un pal´ındromo. Esta contradicci´ on muestra que L no puede ser regular.  i2   : i ≥ 0 no es regular. L Demostrar que el lenguaje L = a Ejemplo  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 6∈ 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 infinitas cadenas y, en conclusi´ on, todo lenguaje regular es infinito.”

3.2. PROPIEDADES DE CLAUSURA

3.2.

67

Propiedades de clausura

Las propiedades de clausura afirman 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 definici´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 finales con los no finales. 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

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

℘(X) cerrada bajo las operaciones de uni´on, intersecci´on y complemento, tal que ∅ ∈ A, X ∈ 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 finito es regular y que la uni´ on finita de lenguajes regulares es regular. Pero una uni´ on infinita 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. 





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







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

Ejemplo Ejemplo

El lenguaje L = {wbn : w ∈ Σ∗ , |w| = n, n ≥ 1} sobre

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 finito de L. Demostrar que L − N tampoco es regular. ➂ Demostrar o refutar las siguientes afirmaciones: (i) Un lenguaje no-regular debe ser infinito. (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 finito de L, entonces L − N es regular. (vi) Un lenguaje regular L es infinito 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 6= 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 finitos. 3.3.1 Teorema. Sean M , M1 y M2 aut´ omatas finitos (ya sean AFD o AFN o AFN-λ) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir aut´ omatas finitos 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 definici´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(M1 ) ∩ L(M2 ). 







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

Ejemplo

Utilizar el Teorema 3.3.2 para construir un AFD que acepte el

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

a

> q1

b q3

a

´ 3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

71

AFD M2 que acepta las cadenas con un n´ umero par de bes: a

a

b

> q2

q4 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 )

(q1 , q4 ) b

a

a

a

a

b (q3 , q2 )

(q3 , q4 ) b









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.

Homomorfismos z

Un homomorfismo 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 homomorfismo 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 homomorfismo h est´a completamente determinado por sus im´agenes en los s´ımbolos de Σ, es decir, por los valores h(a), con a ∈ Σ. 





definido por h(a) = 0, h(b) = 1 y h(c) = 010. El homomorfismo

Ejemplo

Sean Σ = {a, b, c}, Γ = {0, 1} y h : Σ∗ → Γ∗ el homomorfismo

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 afirma que los homomorfismos 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 homomorfismo.

3.4. HOMOMORFISMOS z

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 definici´on de homomorfismo; 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 afirma 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. 





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

Ejemplo

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

de la siguiente manera: si L fuera regular, lo ser´ıa tambi´en h(L) donde h es el homomorfismo 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. 





lo ser´ıa, donde h es el homomorfismo h(0) = 0, h(1) = 1,

Ejemplo

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

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 homomorfismos 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 6= 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 homomorfismo z

Dado un homomorfismo h : Σ∗ → Γ∗ y un lenguaje B ⊆ Γ∗ , la imagen inversa de A por h es h−1 (B) := {u ∈ Σ∗ : h(u) ∈ B}. La regularidad es tambi´en preservada por im´agenes inversas de homomorfismos, tal como lo afirma el siguiente teorema. 3.5.1 Teorema. Sea h : Σ∗ → Γ∗ un homomorfismo y B ⊆ Γ∗ un lenguaje regular sobre Γ. La imagen inversa h−1 (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 h−1 (B). La funci´on de transici´on δ ′ se define mediante δ ′ (q, a) = δ(q, h(a)) (aqu´ı se usa la funci´on extendida δ, seg´ un la definici´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 ∈ h−1 (B) Esto quiere decir que L(M ′ ) = h−1 (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 h−1 (L) donde h es el homomorfismo h(0) = h(1) = 0, h(2) = 1. Pero n o h−1 (L) = {0, 1}n 2{0, 1}n : n ≥ 1 . Ejemplo

75

´ 3.6. ALGORITMOS DE DECISION

Entonces h−1 (L) ∩ 0∗ 21∗ ser´ıa regular; este u ´ltimo lenguaje es igual a {0n 21n : n ≥ 1}. Finalmente, por medio del homomorfismo g(0) = 0,  n n n n g(1) = 1, g(2) = λ se concluir´ıa que g {0 21 : n ≥ 1} = {0 1 : 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

La noci´ on de algoritmo que consideraremos en esta secci´ on es la corriente: Un algoritmo es un procedimiento sistem´atico, claro y preciso, que termina en un n´ umero finito de pasos para cualquier entrada dada. 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 afirmativa 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 ) 6= ∅. Este problema, llamado problema de la vacuidad, difiere del siguiente problema ( Dado un aut´ omata (AFD o AFN o AFN-λ) M y P: 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 suficiente 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 infinitas 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 ) 6= ∅? (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 ) 6= ∅; 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 ) 6= ∅) 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 infinito. 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 infinito 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 6= λ. M acepta infinitas cadenas: uv i x para todo i ≥ 0.

78

CAP´ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Rec´ıprocamente, si L es infinito, existe w ∈ L con |w| ≥ n. Por la demostraci´ on del lema de bombeo, w = uvx donde |uv| ≤ n, v 6= λ. 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 ) infinito? 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) infinito?” 







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 ) cofinito? (Un conjunto es cofinito si su complemento es finito). (vi) Dado un aut´ omata M (AFD o AFN o AFN-λ), ¿acepta M alguna cadena de longitud 1250? Ayuda: hay un n´ umero finito 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 infinito 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) 6= ∅? Ayuda: puesto que las expresiones regulares se definen 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 eficiencia 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

4

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 clasific´ 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 finito 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 significado 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 clasifican 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 6= λ. 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 clasificaci´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 finito 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 significado 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 definiciones. 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 G

uAv =⇒ uwv

´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 , . . . , un−1 =⇒ 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 =⇒ · · · =⇒ un−1 =⇒ 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 significa que v se obtiene de u utilizando cero, una o m´ as producciones + de la gram´atica. An´ alogamente, u =⇒ v significa 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 define 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.

Soluci´on. S → aSb | λ. 





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

Ejemplo

Encontrar una GIC que genere el lenguaje de todos los

Soluci´on. S → aSa | bSb | a | b | λ. 





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

Ejemplo

Encontrar una GIC que genere el lenguaje de todas las cadenas

Soluci´on. S → aSa | bSb | aSb | bSa | λ Dos gram´aticas equivalentes son: n

(

S → aaS | bbS | abS | baS | λ







Σ = {a, b}.

Ejemplo

S → AAS | λ A→a|b

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

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 (()), ()()(), (())((())). Soluci´on. Es f´acil ver que G genera cadenas de par´entesis anidados y equilibrados 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 afirmaci´on: “Toda cadena con 2n par´entesis anidados y equilibrados se puede generar en G”. 2

n = 1:

() se genera con S =⇒ (S)S =⇒ ().

n = 2:

()() se genera con S =⇒ (S)S =⇒ (S)(S)S =⇒ ()().

3

3

(()) se genera con S =⇒ (S)S =⇒ ((S)S)S =⇒ (()).

´ 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

´ Arbol de una derivaci´ on

4.3.

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 ramifica 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 infinito. 







Ejemplo

Algunos ´ arboles con ra´ız: b b

b

b

b

b

b

b

b

b

b

b

b

b b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

89

´ ´ 4.3. ARBOL DE UNA DERIVACION



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.   Ejemplo Sea G la gram´atica: 



El ´arbol de la derivaci´ on

  S → AB | AaB A → aA | a   B → bBa | b

S =⇒ AB =⇒ AbBa =⇒ abBa =⇒ abba es S b

A a

b b

b

b

B b

b

b

B b

a

b

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

b

b

B b

b

A b

a b

b

b

a

C

λ 







Ejercicios de la secci´ on 4.3

B b

b

b

➀ Sea G siguiente gram´atica:

G:

  S −→ aS | AaB A −→ aA | a   B −→ bBbB | b

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 Definici´ 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 Definici´ 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.  Consid´ e rese el alfabeto Σ = 0, 1, +, ∗, (, ) . La siguiente Ejemplo  gram´ atica Gsp para generar n´ umeros naturales, sumas y productos, 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

b

S

S

b

b

S

S

b

b

b

S b

S

b

b



+ b

S

S

b

b

b



1

S

b

b

+

b

0

b

b

b

b

1

0

1

1

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 dificulta 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:

G:

(

S → aSA | λ A → bA | λ

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:

93

´ 4.4. GRAMATICAS AMBIGUAS

S

S

b

b

A a a b

S b

b

b

S

A b

b b

b

S

A

b

S

b

λ

b

b

λ

b b

λ

A

b

b

λ λ

b

A a

a

b

b

b b

A b

b

λ + ∗ El lenguaje generado por esta gram´atica es a b ∪ λ. Se puede construir una gram´atica no-ambigua que genere el mismo lenguaje:   S → AB | λ ′ G : A → aA | a   B → bB | λ b

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].

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 significativas para el dise˜ no de analizadores sint´acticos en compiladores. 





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

Ejemplo

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

de programaci´ on. Las variables aparecen encerradas entre par´entesis h i y hreali 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. hreali hd´ıgitosi hdecimali hexpi

→ → → →

hd´ıgitosihdecimalihexpi hd´ıgitosihd´ıgitosi | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 .hd´ıgitosi | λ Ehd´ıgitosi | E+hd´ıgitosi | E-hd´ıgitosi | λ

´ ´ 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 hdecimali → λ y hexpi → λ, pero no se generan expresiones como .325, E125, 42.5E ni 0.1E+. 





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

Ejemplo

Gram´atica para generar los identificadores en lenguajes de

tra que va seguida de letras y/o d´ıgitos. Las variables aparecen encerradas entre par´entesis h i e hidentificadori es la variable inicial de la gram´atica. La variable hlsdsi representa “letras o d´ıgitos”. Los terminales en esta gram´atica son las letras, min´ usculas o may´ usculas, y los d´ıgitos. hidentificadori hlsdsi hletrai hd´ıgitoi

→ → → →

hletraihlsdsi hletraihlsdsi | hd´ıgitoihlsdsi | λ 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 identificadores, 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: hexpresi´ oni ht´erminoi hfactori hn´ umeroi

→ → → →

ht´erminoi | hexpresi´ oni+ht´erminoi hfactori | ht´erminoi*hfactori hn´ umeroi | (hexpresi´ oni) 1hn´ umeroi | 0hn´ umeroi | 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

4.6.

´ LENGUAJES LIC Y GRAMATICAS GIC

Gram´ aticas para lenguajes naturales z

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 h i y hOraci´ oni es la variable inicial de la gram´atica. Los terminales son las palabras propias del idioma. hOraci´ oni

→ hSujetoihVerboihCompl. Directoi | hSujetoihVerboihCompl. DirectoihCompl. Circunst.i | hSujetoihVerboihCompl. IndirectoihCompl. Circunst.i

hSujetoi

→ hSustant.i | Juan | Pedro | Mar´ıa | · · ·

hCompl. Directoi

→ hPrepos.ihArt´ıculoihSustant.i | hPrepos.ihArt´ıculoihSustant.ihPrepos.ihArt´ıculoihSustant.i | hPrepos.ihArt´ıculoihSustant.ihPrepos.ihSustant.ihAdjetivoi

hCompl. Indirectoi → hPrepos.ihArt´ıculoihSustant.i | hPrepos.ihArt´ıculoihSustant.ihAdjetivoi | hPrepos.ihSustant.ihPrepos.ihSustant.i hCompl. Circunst.i → hPrepos.ihArt´ıculoihSustant.i | hPrepos.ihArt´ıculoihSustant.ihAdjetivoi | hAdverbioi | hPrepos.ihArt´ıculoihSustant.ihPrepos.ihArt´ıculoihSustant.i hSustant.i

→ casa | perro | libro | l´apiz | mesa | λ | · · ·

hAdjetivoi

→ rojo | azul | inteligente | malvado | u ´til | λ | · · ·

hPrepos.i

→ a | ante | bajo | con | contra | de | desde | en | entre | hacia | hasta | para | por | seg´ un | sin | so | sobre | tras | λ | · · ·

hArt´ıculoi

→ el | la | lo | las | los | un | uno | una | unas | unos | λ

hAdverbioi

→ muy | bastante | poco | demasiado | lento | lentamente | r´apido | r´apidamente | λ | · · ·

hVerboi

→ 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

97

´ 4.6. GRAMATICAS PARA LENGUAJES NATURALES z

es ambigua. La ambig¨ uedad surge porque las producciones permiten dos ´arboles de derivaci´ on: hOraci´ oni b

hSujetoi hVerboi

Juan

hCompl.Indirectoi

hCompl. Circunst.i

mira hPrepos.i hArt.i hSustant.i hPrepos.i hArt.i hSustant.i

a

una

persona

con

un telescopio

hOraci´ oni b

hSujetoi

hVerboi

hCompl. Directoi

Juan

mira

hPrepos.i hArt.i hSustant.i hPrepos.i hArt.i hSustant.i

a

una









Ejercicios de la secci´ on 4.6

persona

con

un

telescopio

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

4.7.

´ LENGUAJES LIC Y GRAMATICAS GIC

Gram´ aticas regulares

4.7.1 Definici´ 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). Demostraci´ on. Sea V = Q y S = q0 . Las producciones de G est´an dadas 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 6= λ 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= 6 λ 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 significa que δ(q, a) = p. Para el paso inductivo, sup´ongase

99

´ 4.7. GRAMATICAS REGULARES



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 afirma 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 6= λ. 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 . 





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

Ejemplo

El siguiente AFD M , presentado en el u ´ltimo ejemplo de la a

b

> q0

b q1

a 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

1

0 A

1

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 | λ

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).

Demostraci´ on. Se construye M = (Q, Σ, q0 , F, ∆) haciendo Q = V , q0 = S y ( B ∈ ∆(A, a) para cada producci´ on A → aB. A∈F si A → λ. Usando razonamientos similares a los del Teorema 4.7.2, se puede demostrar que ∗

A =⇒G wB

si y s´ olo si

B ∈ ∆(A, w), para todo w ∈ Σ∗ , w 6= λ,

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 Definici´ on. Una GIC se llama regular por la derecha si sus producciones son de la forma ( A → wB, w ∈ Σ∗ , B ∈ V, A→λ

´ 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 definici´ on de gram´ atica regular es equivalente a la definici´ 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 , . . . , An−1 cuyas u ´nicas producciones son: A A1

→ a1 A1 → a2 A2 .. .

An−1 → 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

4.8.

´ LENGUAJES LIC Y GRAMATICAS GIC

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. Definiciones. (i) Una variable A es alcanzable o accesible si existen u, v ∈ (V ∪ Σ)∗ ∗ tales que S =⇒ uAv. La variable inicial S es alcanzable por definici´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 finito, existe k tal que TERMk = TERMk+1 = TERMk+2 = · · · El conjunto TERM de variables terminables es entonces TERM :=

[

TERMi

i≥1

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 finito, existe k tal que ALCk = ALCk+1 = ALCk+2 = · · ·

104

´ LENGUAJES LIC Y GRAMATICAS GIC

El conjunto ALC de variables alcanzables es entonces [ ALC = ALCi i≥1

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.

G:

Soluci´on.

  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

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: Algoritmo

(I) G −−−−−−−−→

Eliminar variables no-terminables

Algoritmo

G1 −−−−−−−−→

Eliminar variables no-alcanzables

G2

´ DE LAS VARIABLES INUTILES ´ 4.8. ELIMINACION

Algoritmo

(II) G −−−−−−−−→

105

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}. ( S→a G1 : A → aA | λ Variables alcanzables de G1 : ALC= {S}.  G2 : S→a Se tiene que L(G2 ) = {a}.

Aplicaci´ on de los algoritmos en el orden (II): Variables alcanzables de G: ALC={S, A, B}. ( S → a | AB G3 : A → aA | λ Variables terminables de G3 : TERM={S, A}. ( S→a G4 : A → aA | λ Se observa que en G4 , A no es alcanzable. Adem´ as, G2 6= 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 finalizar el procedimiento siguen siendo terminables. M´ as precisamente, si una variable A permanece al finalizar 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 final 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.

G:

  S → SBS | BC | Bb      A → AA | aA      B → aBCa | b C → aC | ACC | abb    D → aAB | ab     E → aS | bAA     F → aDb | aF

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} ∪ { }.

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

Variables alcanzables de G1 :

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

➀ 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

➁ 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

4.9.

Eliminaci´ on de las producciones λ

4.9.1. Definiciones. (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 finito, existe k ∈ N tal que ANULk = ANULk+1 = ANULk+2 = · · · El conjunto ANUL de variables anulables es entonces [ ANULi ANUL := i≥1

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.

G:

  S → AB | ACA | ab      A → aAa | B | CD B → bB | bA   C → cC | λ     D → aDc | CC | ABb

´ 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:

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

Ejercicios de la secci´ on 4.9







➀ Eliminar las producciones λ de la siguiente gram´atica:

G:

  S −→ BCB      A −→ aA | ab B −→ bBa | A | DC    C −→ aCb | D | b     D −→ aB | λ

➁ Eliminar las producciones λ de la siguiente gram´atica:

G:

  S → EA | SaBb | aEb      A → DaD | bD | BEB B → bB | Ab | λ    D → aEb | ab     E → aA | bB | λ

110

´ LENGUAJES LIC Y GRAMATICAS GIC

4.10.

Eliminaci´ on de las producciones unitarias

4.10.1. Definiciones. (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 define de la siguiente manera: ∗

UNIT(A) := {X ∈ V : ∃ una derivaci´ on A =⇒ X que usa u ´nicamente producciones unitarias}. Por definici´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 finito, la anterior es una sucesi´on finita 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

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

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 







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 → Ba | A | λ G: A → Aa | a   B → bB | S

➁ 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 → 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)

4.11.

113

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. 





y binarias.

Ejemplo

Simular la producci´ on A → abBaC con producciones simples

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 





y binarias.

Ejemplo

Simular la producci´ on A → BAaCbb con producciones simples

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

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

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







gram´ atica:

Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la

G:

  S → AB | aBC | SBS    A → aA | C  B → bbB | b    C → cC | λ

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

A continuaci´ on encontramos los conjuntos unitarios de todas las variables: 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

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:

G4 :

  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







gram´ atica:

Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la

G:

  S → aS | aA | D      A → aAa | aAD | λ B → aB | BC    C → aBb | CC | λ     D → aB | 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

El conjunto de las variables alcanzables de G1 es ALC = {S, A, D}. Eliminando la variable no-alcanzable C obtenemos:

G2 :

  S → aS | aA | D A → aAa | aAD | λ   D → bA | aa | A

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.

G:

  S → ASB | BB A → aA | a   B → bBS | λ

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 anterior, de tal manera que su variable inicial no sea

Ejemplo

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

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

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

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 







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

➁ Encontrar una gram´atica en FNC equivalente a la siguiente GIC:   S → aASb | BAb    A → Aa | a | λ G:  B → BAB | bAb    C → cCS | λ

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

120

´ LENGUAJES LIC Y GRAMATICAS GIC

4.12.

Forma Normal de Greibach (FNG) z

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 Definici´ 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 → Aα1 | Aα2 | · · · | Aαn 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) z

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 simplifica el procedimiento, aunque ´este es v´alido (con modificaciones 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 fijo 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, modificar sus producciones de tal manera que el primer s´ımbolo del cuerpo de cada producci´ on (primer s´ımbolo a la derecha de la flecha) 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 modificar 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 modificar 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







gram´ atica (que est´a en FNC):

Ejemplo

Encontrar una gram´atica en FNG equivalente a la siguiente

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

Paso 3:

  S → bA | bZA | a A → b | bZ   Z → A | AZ

Paso 4:

  S → bA | bZA | a A → b | bZ   Z → b | bZ | BZZ







gram´ atica (que  est´a en FNC):

Ejemplo

Encontrar una gram´atica en FNG equivalente a la siguiente  S → AB | BC    A → AB | a

 B → AA | CB | a    C → a | b

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

4.12. FORMA NORMAL DE GREIBACH (FNG) z

Paso 2:

123

  S → AB | BC      B → AA | CB | a A → a | aZ    C→a|b     Z → B | BZ

Paso 3:

  S → aB | aZB | aAC | aZAC | aBC | bBC | aC      B → aA | aZA | aB | bB | a A → a | aZ    C→a|b     Z → B | BZ Paso 4:   S → aB | aZB | aAC | aZAC | aBC | bBC | aC      B → aA | aZA | aB | bB | a A → a | aZ    C→a|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. 





gram´ atica:

Ejemplo

Encontrar una gram´atica en FNG equivalente a la siguiente    S → AB  A → AB | CB | a  B → AB | b    C → AC | c

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

124

´ LENGUAJES LIC Y GRAMATICAS GIC

Paso 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

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

Paso 3:

  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

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









Ejercicios de la secci´ on 4.12

125

➀ 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 ramifica 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| ≤ 2k−2 . 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. ´ Arbol de derivaci´ on

k = n´ umero de nodos de

Longitud de w

la trayectoria m´as larga S b

|w| = 1 = 20 = 2k−2

k=2 b

S b

k=3

|w| ≤ 2 = 21 = 2k−2 b

b

b

b

S b

b b

k=4

|w| ≤ 4 = 22 = 2k−2

b

b

b

b

b

b

b

b

S b

b b

k=5 b

b

b

|w| ≤ 8 = 23 = 2k−2 b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

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 ´ arbol 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 afirmaci´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 6= λ ´ o x 6= λ. 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 6= S repetida en la trayectoria. Por lo tanto, existen cadenas u, v, w, x, y ∈ Σ∗ tales que ∗



S =⇒ uAy,

A =⇒ vAx,



A =⇒ w.

As´ı que ∗





S =⇒ uAy =⇒ uvAxy =⇒ uvwxy = z. La siguiente gr´ afica ilustra la situaci´on:

128

´ LENGUAJES LIC Y GRAMATICAS GIC

S

A

A

|

{z

} |

u

{z

} |

v

{z

} |

w

{z x

} |

{z y

}



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 6= λ ´ o x 6= λ. 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 6= λ ´o x 6= λ, 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 afirma que uv 2 wx2 y ∈ L. Esta contradicci´on muestra que L no es un LIC. 





no es un LIC.

Ejemplo

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

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 infinito). 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 define 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







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

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 | λ

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 | λ.

4.14.2 Teorema. La colecci´ on de los lenguajes independientes del contexto no es cerrada (en general) para las siguientes operaciones: (1) Intersecci´ on. (2) Complemento. (3) Diferencia. Demostraci´ on.

(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

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 | λ

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.

(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 on con tambi´en un LIC ya que L = Σ∗ − L. Esto estar´ıa en contradicci´ la parte (2) del presente teorema. El siguiente teorema afirma que los LIC tambi´en son cerrados bajo homomorfismos. 4.14.3 Teorema. Sea h : Σ∗ → Γ∗ un homomorfismo. 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 definir 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, modificando adecuadamente las hojas: las hojas del nuevo ´arbol forman una cadena w ∈ Σ∗ y las hojas del ´arbol inicial forman la cadena h(w). 





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

Ejemplo

Utilizar homomorfismos para concluir que el lenguaje L =

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 homomorfismo h : {0, 1, 2, 3}∗ → {a, b, c}∗ definido 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). (ii) (L1 ∪L2 )L∗3 , donde L1 = ab∗ a, L2 = a∪b+ y L3 = {ai bai : i ≥ 0}. (iii) L1 ∪ L∗2 L3 , donde L1 = ab∗ a, L2 = {ai bj cj di : i, j ≥ 1} y L 3 = b+ . ➁ Sea G = (V, Σ, S, P ) una gram´atica que genera L. ¿La  al lenguaje ∗ 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 homomorfismos 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 reflexi´ 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

4.15.

135

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) 6= ∅? Algoritmo de decisi´ on: ejecutar el algoritmo para determinar el conjunto TERM de variables terminables. L(G) 6= ∅ 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 ineficiente 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´ıficamente, 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 b

A1

A2

b b

b

b

a1

a2

en los que aparecen exactamente 3 variables. Para derivar cadenas de longitud 3 s´ olo se puede proceder de dos formas: 3

S =⇒ A1 A2 =⇒ B1 B1 A2 =⇒ a1 a2 a3 , ´o

2

S =⇒ A1 A2 =⇒ a1 A2 =⇒ a1 B1 B2 =⇒ a1 a2 a3 . Los ´arboles de estas derivaciones son:

136

´ LENGUAJES LIC Y GRAMATICAS GIC

S

S b

A1 B1

b

A2 b

b

B2

b b

A1

b b

b

b

a3

a1

B1

A2 b

B2

b

b

b

b

b

a1

a2

a2

a3

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 ineficiente porque si G tiene k variables, hay que chequear no menos de k 2n−2 ´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 eficiente (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 filas (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:

G:

  S → BA | AC    A → CC | b  B → AB | a    C → BA | a

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

j=2

j=3

j=4 {S, C}

b

i=1

{A}



{B}

b

i=2

{A}

{B, S}

{S, C}

a

i=3

{B, C}

{S, C}

b

i=1

{A}

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

j=2

j=3

j=4

j=5 {S, B, C}

b

i=1

{A}

{B, S}





a

i=2

{B, C}

{A}

{A}

{S, B, C}

a

i=3

{B, C}

{S, C}

{A}

b

i=4

{A}

{B, S}

a

i=5

{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.

139

´ PARA GIC 4.15. ALGORITMOS DE DECISION

j=1

j=2

j=3

j=4 —

a

i=1

{B, C}

{A}

{B}

a

i=2

{B, C}





b

i=3

{B}



a

i=4

{B, C}

Problema 3 (Problema de la infinitud). Dada una gram´ atica G = (V, Σ, S, P ), ¿es L(G) infinito? 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 infinito 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 6= λ. L posee infinitas cadenas: uv i wxi y para todo i ≥ 0. Rec´ıprocamente, si L es infinito, 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 6= λ ´ o x 6= λ. 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 infinitud: 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 infinito 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 finito de cadenas con longitud 1250. (iv) ¿Hay en L(G) alguna cadena de longitud mayor que 1250? Ayuda: habr´ıa un n´ umero infinito 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 finito L y una GIC G, ¿se tiene L ⊆ L(G)?

´ PARA GIC 4.15. ALGORITMOS DE DECISION

141

➃ Sea G la gram´atica

G:

   S → BA | AB  A → CA | a  B → BB | b    C → BA | c

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

5

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 (finito) de estados internos de la unidad de control. 2. q0 ∈ Q es el estado inicial. 3. F es el conjunto de estados finales o de aceptaci´ on, ∅ 6= 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-infinita, 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´ afica: .. . ≡ 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´ afica 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.

145

´ 5.1. AUTOMATAS CON PILA DETERMINISTAS (AFPD)

.. . Un paso computacional γ

···

a

z

u }| { ···

β

.. .

}|

}|

.. .

z

{

{z

s

z

.. .

}|



β

≡ {

.. .

···

q ∆(q, a, s) = (q ′ , γ)

a

u }| { ···

z 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 definidos (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. Configuraci´ 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 configuraciones instant´aneas es muy c´omoda: para representar el paso computacional de la figura 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

significa que el aut´ omata pasa de la configuraci´ on instant´ anea (q, u, β) a la configuraci´ on instant´anea (p, v, γ) en cero, uno o m´ as pasos computacionales. Configuraci´ on inicial. Para una cadena de entrada w ∈ Σ∗ , la configuraci´ 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. Configuraci´ on de aceptaci´ on. La configuraci´ on (p, λ, β), siendo p un estado final o de aceptaci´ on, se llama configuraci´ on de aceptaci´ on. Esto significa 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 define como ∗

L(M ) := {w ∈ Σ∗ : (q0 , w, z0 ) ⊢ (p, λ, β), p ∈ F }. O sea, una cadena es aceptada si se puede ir desde la configuraci´on inicial hasta una configuraci´ 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 definida, 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 configuraci´ on instant´anea.



La definici´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 , ∆) definido 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 configuraci´ 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 configuraci´ 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 configuraci´ 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 )

(para aceptar la cadena c),

∆(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 ). 







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 definida como: ∆ : Q × (Σ ∪ λ) × Γ → ℘f (Q × Γ∗ ), donde ℘f (Q × Γ∗ ) es el conjunto de subconjuntos finitos 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 significado 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 define 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 configuraci´ on inicial hasta una configuraci´ 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 )}

(para aceptar λ),

∆(q0 , a, z0 ) = {(q0 , Az0 )}, ∆(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 ).

´ 5.2. AUTOMATAS CON PILA NO-DETERMINISTAS (AFPN)







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

Ejemplo

151

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

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´a a 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. 





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

Ejemplo

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

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´a a 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 define 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 )}

(para aceptar λ),

∆(q0 , a, A) = {(q0 , AA), (q1 , λ)}, ∆(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

´ 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 6= 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, finalmente, 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 definido 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 finales o de aceptaci´ on. Para los aut´ omatas con pila existe otra noci´ on de aceptaci´ on: la aceptaci´ on por pila vac´ıa, definida a continuaci´ on. Cuando se usa esta noci´ on, los aut´ omatas no requieren un conjunto F de estados finales, solamente los seis restantes componentes: Q, q0 , Σ, Γ, z0 y ∆. 5.3.1 Definici´ 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 define 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 configuraci´ on inicial hasta una configuraci´ 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 finales 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 final. Demostraci´ on. Sea M = (Q, q0 , F, Σ, Γ, z0 , ∆). M ′ se dise˜ na modificando M de tal manera que vac´ıe su pila cuando M haya aceptado una cadena de entrada. Concretamente, se define 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 define 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’.

155

´ POR PILA VAC´IA 5.3. ACEPTACION

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 final 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 define 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 define 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

➀ Modificar los aut´ omatas de los tres ejemplos de la secci´ on 5.2 para que acepten por pila vac´ıa y no por estado final. ➁ 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 6= 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.

5.4.

157

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 ). Bosquejo de la demostraci´ on. Para una gram´atica G = (Σ, V, S, P ) dada, se 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´ıficamente, el aut´omata M se define como M = (Q, q0 , F, Σ, Γ, z0 , ∆), donde Q = {q0 , q1 , q2 }, F = {q2 } y Γ = Σ ∪ V ∪ {z0 }. La funci´on de transici´on ∆ se define 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

Seg´ un la construcci´ on del Teorema 5.4.1, el aut´omata M est´a dado por M = (Q, q0 , F, Σ, Γ, z0 , ∆) donde Q = {q0 , q1 , q2 }, F = {q2 }, Γ = {a, b, S, A, B, z0 }, 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







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

Ejemplo

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

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:

G:

  S → Aba | AB | λ A → aAS | a   B → bBA | λ.

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. z

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 definen 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 ] · · · [rk−1 Yk rk ] para todas las secuencias posibles r1 , r2 , . . . , rk−1 de estados de Q. 4. Para todo p ∈ Q se a˜ nade la producci´ on S → [q0 z0 p]. La gram´atica G as´ı definida pretende simular con derivaciones a izquierda los c´omputos de M ; el significado 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 ] · · · [rk−1 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,

161

´ 5.5. AUTOMATAS CON PILA Y LIC. PARTE II. z

+

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] =⇒ λ. n

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, λ, λ),

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 definici´on de la gram´atica G, [qXrk ] → a[r0 Y1 r1 ][r1 Y2 r2 ] · · · [rk−1 Yk rk ] es una producci´ on, para todas las secuencias posibles r1 , r2 , . . . , rk−1 de estados de Q. Seg´ un 5.2, desde la configuraci´ on instant´anea (r0 , x, Y1 Y2 · · · Yk ) el aut´omata llega hasta la configuraci´ 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 ,. . . , rk−1 , 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 ) ⊢ (rk−1 , wk , Yk ) ⊢ (rk , λ, λ). Para i = 1, 2, . . . , k se tiene as´ı una secuencia de c´omputos parciales +

(ri−1 , wi , Yi ) ⊢ (ri , λ, λ), +

donde rk = p. Por la hip´ otesis de inducci´on, [ri−1 Yi ri ] =⇒ wi para i = 1, 2, . . . , k. Por consiguiente, +

[qXp] = [qXrk ] =⇒ a[r0 Y1 r1 ][r1 Y2 r2 ] · · · [rk−1 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 6= λ, 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 significa 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 +

+

si [qXp] =⇒ w, entonces (q, w, X) ⊢ (p, λ, λ),

(5.3)

+

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 ). 





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

Ejemplo

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

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 modificaci´ on del aut´ omata presentado en el segundo ejemplo de la secci´ on 5.2 (en ese ejemplo M aceptaba por estado final; 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. z

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 simplificaciones 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:   S→C    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 identificar, dando lugar a la siguiente gram´atica simplificada equivalente:   S → aDS | bES | λ D → aDD | b   E → bEE | a

´ 5.5. AUTOMATAS CON PILA Y LIC. PARTE II. z









Ejercicios de la secci´ on 5.5

165

➀ 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

6

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 (finito) de estados internos de la unidad de control. 2. q0 ∈ Q es el estado inicial. 3. F es el conjunto de estados finales o de aceptaci´ on, ∅ 6= 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 definida en algunos elementos del dominio. La flecha ← denota desplazamiento a izquierda mientras que → denota desplazamiento a la derecha. La transici´on δ(q, a) = (p, b, D) significa: 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 infinita 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 configuraci´ on instant´ anea. Es una expresi´ on de la forma a1 a2 · · · ai−1 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

···

q

Es decir, la descripci´ on instant´anea a1 a2 · · · ai−1 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 configuraci´ on o descripci´ on instant´anea inicial, o simplemente confi´ 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 definida 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 significa 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 definida. 2. El c´omputo no termina; esto es lo que se denomina un “bucle infinito” o un “ciclo infinito”. 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 configuraci´ on inicial q0 w

170

´ CAP´ITULO 6. MAQUINAS DE TURING

termina en una configuraci´ 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 define entonces como ∗

L(M ) := {w ∈ Σ∗ : q0 w ⊢ w1 pw2 , p ∈ F, w1 , w2 ∈ Γ∗ , M se detiene en la configiguraci´on w1 pw2 }. La noci´ on de aceptaci´ on para m´ aquinas de Turing es m´ as flexible 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 simplificar 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 justificar´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 afirmaci´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 flujo 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 simplificar 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 − significa 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. 





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

Ejemplo

La siguiente MT acepta el lenguaje de las cadenas con un

1|1→

0|0 →

> q0

1|1→ q1

0|0 →

¯b|¯b − q2







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

Ejemplo

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

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

¯b|

Y |Y →

¯b →

a|a ← b|b ← a|a →

b|b →

Y |Y →

Z|Z →

b|Y →

> q0

a|X →

q1

Y |Y ← Z|Z ← c|Z ←

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 Xs, las bes por Y s y las ces por Zs. 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¯bq5 ¯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

6.2.

´ CAP´ITULO 6. MAQUINAS DE TURING

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 identificar algunos de estos procedimientos, similares a las subrutinas o macros de los programas computacionales, para simplificar 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. 





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

Ejemplo

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

Si la entrada es la cadena a1 a2 · · · ak , la acci´on de TI se puede representar en la forma Entrada: Salida:

¯b a1 · · ·ak−1 ak ¯b l l l ll a1 a2 · · · ak ¯b ¯b

La flecha l 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 ←

> q0

b|¯b ←

c|¯b ←

qa

qb

qc

¯b|a →

¯b|b →

q1

¯b|c →

A continuaci´ on definimos 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:

¯ba1 a2 · · · ak ¯b ll l l l ¯b ¯b a1 · · ·ak−1 ak

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 l l ¯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 l l ¯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 ll l l l 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· · ·¯b¯ba l l l ll ¯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 l l l ¯bw¯b w ¯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

´ CAP´ITULO 6. MAQUINAS DE TURING

blancos: Entrada: Salida:

¯b· · ·¯bw¯b l l l ¯b w ¯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: 





Ejercicios de la secci´ on 6.2

¯bu¯bv¯b l l ¯bv¯bu¯b

➀ 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 fijo ≥ 1). (iv) TDk . Traslada la cadena de entrada k casillas a la derecha (k es un entero fijo ≥ 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 final, se usa para terminar el procesamiento de la entrada y producir la salida. No se permiten transiciones desde el estado final qf . N´ otese que M debe terminar el procesamiento en la configuraci´ 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 definida 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 definida en w (h converge en w) y h(w) ↑ para indicar que h no est´a definida en w (h diverge en w). Si la funci´on h est´a definida 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 indefinida para algunas entradas se dice que es una funci´ on parcial. 





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

Ejemplo

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

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

1 | ¯b→ q1

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 w1 ¯bw2 ¯b · · · ¯bwk ¯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 final qf . Esta definici´on abarca tanto los casos de las funciones totales (definidas para toda entrada) como los de las funciones parciales (indefinidas para algunas entradas). 





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

Ejemplo

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 producir como salida 1n+m . Las secuencias de unos, 1n 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 →

> q0 1 | 1→

¯b | ¯b ←

q1

q2

q3

1 | 1→

qf

1 | 1←









Ejercicios de la secci´ on 6.3

¯b | ¯b →

1 | ¯b ←

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): ( 1, si n es par, h(n) = 0, 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

6.4.

179

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 . 





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

Ejemplo

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

¯b|a → > q0

q1 ¯b|a →







orden lexicogr´ afico (las cadenas se ordenan por longitud y las

Ejemplo

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

cadenas de la misma longitud se ordenan ortogr´aficamente 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|¯b →

¯b|0← 0|0← 0|1←

> q0

q2

1|1← ¯b|¯b →

q1 0|0→ 1|1→

¯b|¯b ←

1|0←

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}. ➁ Modificar 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´ afico. Ayuda: no se necesitan m´ as estados. ➂ Sea Σ un alfabeto de n s´ımbolos, Σ = {a1 , a2 , . . . , an }. Modificar la MT del u ´ltimo ejemplo de esta secci´ on para dise˜ nar una MT que ∗ genere Σ en orden lexicogr´ afico. 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 suficientemente flexible 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 definici´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 modificarla 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 codificaci´ on binaria de m´ aquinas de Turing (secci´ on 7.1).

181

´ 6.5. VARIACIONES DEL MODELO ESTANDAR DE MT

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 finito k de pistas, como se muestra en la siguiente figura:

.. .

···

a1 a2 .. .

← Pista 1 ← Pista 2

.. .

···

ak

.. . ← 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 afirmaci´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). 





“marcadores” ciertas posiciones en la cinta. La MT dise˜ nada

Ejemplo

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

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 Xs, las bes por Y s y las ces por Zs 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 figura que aparece en la parte superior de la p´agina siguiente.

182

´ CAP´ITULO 6. MAQUINAS DE TURING

···

···

a1

···

···

a2

···

← Cinta 1

···

← Cinta 2

.. .

.. .

···

···

ak

···

← Cinta k

q

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 . 





{ai bi ci : i ≥ 0}.

Ejemplo

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

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 configuraci´ on inicial q0 w, que termine en la configuraci´ 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 ) | {z } | {z } {z } | 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 finitas 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



Ejemplo

185



La siguiente MT M no-determinista genera todas las cadenas



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

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

¯b|¯b−

> q0

0|0← 1|1←

q1

0|¯b→ 1|¯b→

¯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´ afico). 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

6.6.

´ CAP´ITULO 6. MAQUINAS DE TURING

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 },

qf es un estado nuevo,

Γ = Σ ∪ {¯b}, F ′ = {qf }, δ ′ (q, s) = (δ(q, s), s, →), ′

δ (q, ¯b) = (qf , ¯b, −),

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 define

´ 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 infinito con transiciones λ que inserten y extraigan indefinidamente 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 infinitos 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

a

> q0

b

b

a

q1

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) z

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 defini´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´ afica:

189

´ 6.7. AUTOMATAS CON DOS PILAS (AF2P) z

.. . .. .

≡ s2

≡ s1

.. .

.. .

···

a

···

q Podr´ıamos tambi´en definir 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 final de entrada, que se escribe al final 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 significado: 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 definidos. 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 infinita 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

191

´ 6.7. AUTOMATAS CON DOS PILAS (AF2P) z

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 . Demostraci´ on. Sea M una MT est´andar dada, con funci´on de transici´on δ. 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´ afica muestra la cinta de M y las dos pilas de la simulaci´on. En cada momento las pilas contienen solo un n´ umero finito de casillas no vac´ıas. tope tope

z

1ra. pila

}|

···

{

↓ ↓z

2da. pila

}|

···

{

↑ q Inicialmente, M ′ copia la cadena de entrada w en la primera pila y luego la traslada de ´esta a la segunda pila (el marcador final 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 finito 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 final 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´ afica ilustra la situaci´on:

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

s

a ↑ q

s

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 significa 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´ afica ilustra la situaci´on:

193

6.8. PROPIEDADES DE CLAUSURA

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

s

a

s

↑ q

↑ p

b

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 significa 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 final 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, definimos 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 , definidos 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 , s1 ) = (p1 , r1 , D1 )

(transici´ on de M1 ),

δ2 (q2 , s2 ) = (p2 , r2 , D2 )

(transici´ on de M2 ),

da lugar a la siguiente transici´on en la m´ aquina M :   δ (q1 , q2 ), (s1 , s2 ) = (p1 , p2 ), (r1 , D1 ), (r2 , D2 ) .

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 ), (s1 , s2 ) = qf , (s1 , −), (s2 , −) . 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 definida en M1 , pero δ2 (q2 , s2 ) = (p2 , r2 , D2 ) es una transici´on de M2 , definimos   δ (q1 , q2 ), (s1 , s2 ) = (qe , p2 ), (s1 , −), (s2 , D2 ) ,

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 es directa: Demostraci´ on. En la direcci´on izquierda a derecha, la conclusi´ 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 justifica 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´ afico, utilizando la subrutina construida en el ejercicio ➂ de la secci´ on 6.4, modificada 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´ on finita 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 infinitas 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” afirma 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 infinitos) para algunas entradas. Para apreciar su significado 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 flexible, 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 superficial 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 finito de instrucciones (su funci´on de transici´on) y est´a definida con referencia a alfabetos finitos. 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 infinita, que corresponda a la cinta infinita 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 finito) 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

7

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 infinita y tiempo de ejecuci´ on indefinido). En este cap´ıtulo estudiaremos problemas que ninguna m´ aquina de Turing puede resolver.

7.1.

Codificaci´ on y enumeraci´ on de m´ aquinas de Turing

Toda MT se puede codificar como una secuencia binaria finita, es decir una secuencia finita de ceros y unos. En esta secci´ on presentaremos una codificaci´ on v´alida para todas las MT que act´ uen sobre un alfabeto de entrada Σ pre-establecido. Para simplificar la codificaci´ on, suponemos que toda MT tiene un u ´nico estado inicial, denotado q1 , y un u ´nico estado final, denotado q2 (en la secci´ on 6.5.1 se mostr´o que esta modificaci´ 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 finita de s´ımbolos auxiliares). Todos estos s´ımbolos se codifican como secuencias de unos: 201

202

CAP´ITULO 7. PROBLEMAS INDECIDIBLES

S´ımbolo s1 (s´ımbolo ¯b) s2 s3 .. .

Codificaci´ on 1 11 111 .. . 11 · · · 1} | {z

sm

m veces

.. . 11 · | {z· · 1}

.. . sp

p veces

Los estados de una MT, q1 , q2 , q3 , . . . , qn , se codifican tambi´en con secuencias de unos: Estado q1 (inicial) q2 (final) .. . qn

Codificaci´ on 1 11 .. . 11 · · · 1} | {z n veces

Las directrices de desplazamiento →, ← y − se codifican con 1, 11 y 111, respectivamente. Una transici´on δ(q, a) = (p, b, D) se codifica 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 codifica como 01110110111110111010 En general, la codificaci´ 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 codifica escribiendo consecutivamente las secuencias de las codificaciones de todas sus transiciones. M´ as precisamente, la codificaci´ on de una MT M es de la forma C1 C2 · · · Cr donde las Ci son las codificaciones 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 codificaciones diferentes. Esto no representa ninguna desventaja pr´actica o conceptual ya que no se pretende que las codificaciones 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 codifican con 1, 11 y 111, respectivamente, la MT M se puede codificar 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 codificaciones diferentes para M . Es claro que no todas las secuencias binarias representan una MT: la codificaci´ on de una MT no puede comenzar con 1 ni pueden aparecer tres ceros consecutivos. As´ı, las secuencias 0101000110, 010001110 y 1011010110111010 no codifican ninguna MT. No es dif´ıcil concebir un algoritmo que determine si una secuencia binaria finita dada es o no una MT y que la decodifique en caso afirmativo. Una cadena binaria que codifique 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 codifica 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´ aficamente; el orden se establece por longitud y las cadenas de la misma longitud se ordenan ortogr´aficamente 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 codificaci´ on definida 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 codificaci´ on diferente). Las MT que aceptan el lenguaje ∅ aparecen infinitas veces en la enumeraci´ on. Tambi´en ser´a necesario codificar 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 codificados los s´ımbolos de Σ, las cadenas de Σ∗ se pueden codificar usando 0 como separador. Por ejemplo, la cadena aab¯bab se codifica como 01101101110101101110 si los s´ımbolos a y b hacen parte de Σ y se han codificado como 11 y 111. N´ otese que en la codificaci´ on de una cadena w ∈ Σ∗ no aparecen nunca dos ceros consecutivos. En general, la codificaci´ on de una cadena si1 si2 · · · sik ∈ Σ∗ es 01i1 01i2 0 · · · 01ik 0. Las cadenas de Σ∗ se pueden ordenar lexicogr´ aficamente estableciendo primero un orden arbitrario (pero fijo) para los s´ımbolos de Σ, por ejemplo, s2 < s3 < · · · < sm . El orden lexicogr´ afico de las cadenas de Σ∗ induce un orden en el conjunto de las codificaciones; 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 refiriendo. ✎

Es corriente identificar las cadenas de entrada w y las MT M con sus respectivas codificaciones 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 infinito enumerable.

´ Y ENUMERACION ´ DE MAQUINAS ´ 7.1. CODIFICACION DE TURING









Ejercicios de la secci´ on 7.1

205

➀ Sea M la MT definida por el siguiente diagrama de estados: a|a →

b|b →

> q1

q3

b|b → q4

a|a →

¯b|¯b− q2

Determinar el lenguaje aceptado por M y codificar la m´ aquina M siguiendo el esquema presentado en esta secci´ on (codificar los s´ımbolos del alfabeto de cinta ¯b, a y b con 1, 11 y 111, respectivamente). ➁ Las siguientes secuencias binarias codifican MT que act´ uan sobre el alfabeto de entrada Σ = {a, b}, siguiendo el esquema de codificaci´ on presentado en esta secci´ on. Decodificar las m´ aquinas y determinar en cada caso el lenguaje aceptado (los s´ımbolos ¯b, a y b est´an codificados como 1, 11 y 111, respectivamente). sigue

(i)

010110111011010011101110111101110100111101110 −−−→ 111101110100111101101111101101001111010110101110

(ii)

01013 01013 01001012 013 012 01001012 015 012 0100 −−−→

sigue

sigue

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 codifican 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) Codificar 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 codificaciones de las siguientes MT: M7 , M14 , M65 , M150 y M255 . ¿Cu´al es el lenguaje aceptado por tales m´ aquinas?

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 codificaci´ on de una MT determinada y w la codificaci´ on de ∗ una cadena de entrada perteneciente a Σ (estas codificaciones 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 difiere 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 codificado: q1 se codifica como 1, q2 se codifica como 11, q3 como 111, etc. En la siguiente gr´ afica 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 codificado 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 codificaciones binarias, en lugar de unitarias, es posible construir una m´ aquina de Turing universal m´ as eficiente (v´eanse los detalles en el recuadro gris al final de esta secci´ on). Para comprender el significado del concepto de m´ aquina de Turing universal podemos recurrir a una u ´til analog´ıa, ilustrada en la siguiente figura:

208

CAP´ITULO 7. PROBLEMAS INDECIDIBLES

Mu

prog ram a M

w

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 codificaci´ 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 ineficiente: las acciones descritas en el numeral 4 exigen continuos desplazamientos de las cadenas previamente escritas en la cinta 2. Se podr´ıa utilizar una codificaci´ on binaria para asegurar que cada s´ımbolo codificado 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 codificar por medio de una codificaci´ on binaria de exactamente k bits (codificaci´ on de longitud k), siendo k el menor entero tal que p ≤ 2k . Las cadenas de Γ∗ se pueden codificar luego usando un s´ımbolo adicional, por ejemplo #, como separador. La codificaci´ 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 eficiente, que funcione como se describi´ o en los numerales 1 a 5, pero que utilice codificaciones binarias de longitud fija para re-escribir las transiciones de cada MT M y para simularla.

´ PARA LENGUAJES RE 7.3. ALGORITMOS DE ACEPTACION

7.3.

209

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 finalizar con aceptaci´ on si y s´ olo si u ∈ L. Si u ∈ / L, el algoritmo puede detenerse, sin aceptar, o puede no detenerse nunca. 





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

Ejemplo

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

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 finaliza 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 finaliza 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 ) 6= ∅} = {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. 1

Aqu´ı estamos usando la noci´ on de algoritmo en una acepci´ on muy amplia. Por lo general, se exige que un algoritmo siempre debe finalizar con una salida, es decir, no debe tener bucles infinitos.

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 finaliza 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 finaliza 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 finalizan 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 ) 6= ∅}. Nota: Las parejas de MT (M1 , M2 ) se pueden codificar en la forma M1 0M2 .

7.4. LENGUAJES QUE NO SON RE

7.4.

211

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 definido es completamente artificial 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 finales, para eliminar representaciones m´ ultiples), se obtendr´ıa una “matriz infinita” 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 6= aii y bi 6= 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 modificando 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 infinita 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 filas 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´ıficas 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 infinitos, 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 significa, 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´ afica muestra la relaci´ on entre los lenguajes recursivos, los lenguajes RE y los no RE: z

RE }|

{

no RE

recursivos Lu

Lu RE pero no recursivos

Ld

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

M´ aquinas aceptadoras

Regulares

Aut´ omatas finitos (AFD ≡ AFN ≡ AFN-λ)

LIC

Aut´ omatas con pila no-deterministas (AFPN)

RE

M´ aquinas de Turing (MT)

Recursivos

M´ aquinas de Turing que se detienen con toda entrada

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

7.6.

215

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 codificaci´ 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 infinitas 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), identificamos algoritmos con m´ aquinas de Turing y, por lo tanto, decir que el problema P es indecidible equivale a afirmar 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 afirmar 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´ afica 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

A

Entrada u de P1

Entrada de P2

M Decisi´ on para P2

Decisi´ on para P1 con entrada w

NO 





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

Ejemplo

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

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

217

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

de la parada se puede resolver el problema universal. La gr´ afica siguiente esboza el razonamiento. SI M 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 codifican 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´ afica esboza el razonamiento: SI M M 0w

M′

M′

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 (finita) 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 (codificada). 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 ) 6= ∅? 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 ) 6= ∅? 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 definidos 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´ıa de Aut´ [GPR] P. Garc´ıa, T. Pe 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.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF