Rossen - Gramática - Automatas

35
Modelos de cornputación S on muchas las tareas que puede realizar un ordenador. Dada una tarea, se pueden plantear dos preguntas. La primera es: ¿puede realizarse con un ordenador? Una vez que sabemos que la respuesta a la pregunta anterior es afirmativa, podemos planteamos la segunda pregunta. ¿Cómo puede realizarse esa tarea? Los modelos de computación se utilizan para responder a ambas cuestiones. Estudiaremos tres tipos de estructuras usadas en modelos de computación, a saber, gramáti- cas, máquinas de estado finito y máquinas de Turing. Las gramáticas se utilizan para generar las palabras de un lenguaje y decidir si una palabra cualquiera pertenece o no al lenguaje defmido. Los lenguajes formales definidos por gramáticas proporcionan modelos para lenguajes naturales, como el español, y para lenguajes de programación, como Pascal, Fortran, Prolog, C o Java. En particular, las gramáticas son de gran importancia en la teoría y construcción de compiladores. Las gramáticas que comentaremos en el presente capítulo fueron utilizadas por primera vez por ellin- güista estadounidense Noam Chomsky en la década de 1950. En los procesos de modelado se utilizan varias máquinas de estado fmito. Todas las máquinas de estado finito tienen un conjunto de estados, incluido el estado inicial, un alfabeto fuente, y una función de transición que a cada pareja de estado y dato de entrada le asigna el estado siguiente. Los estados de una máquina de estado finito le dan unas capacidades de memoria limitadas. Algunas máquinas de estado fmito producen un símbolo como dato de salida para cada transición; estas má- quinas pueden utilizarse para modelar gran variedad de máquinas, entre las que se incluyen las má- quinas expendedoras, los semáforos, los sumadores binarios y los reconocedores de lenguajes. Tam- bién estudiaremos máquinas de estado finito que no generan datos de salida, pero tienen estados fmales. Estas máquinas se utilizan con gran frecuencia en el reconocimiento de lenguajes. Las ca- denas que se reconocen son aquellas que transforman el estado inicial en un estado final. Los con- ceptos de gramática y máquina de estado finito pueden relacionarse entre sí. Caracterizaremos aque- llos conjuntos que son reconocidos por una máquina de estado finito y probaremos que son, precisamente, los conjuntos que están generados por un cierto tipo de gramática. Finalmente, introduciremos el concepto de máquina de Turing. Probaremos cómo se pueden usar las máquinas de Turing para reconocer conjuntos. También demostraremos cómo se pueden utilizar las máquinas de Turing para construir funciones aritméticas. Discutiremos la tesis de Church-Turing, que establece que toda computación efectiva se puede realizar utilizando una máquina de Turing. 11.1 Lenguajes y gramáticas INTRODUCCIÓN Las palabras del idioma español pueden combinarse de varias formas. La gramática española nos dice cuándo cierta combinación de palabras es una frase válida. Por ejemplo, el sapo escribe cla- ramente es una frase válida, puesto que está compuesta por un sujeto, el sapo, formado por el ar- tículo el seguido del nombre sapo, y por un predicado, escribe claramente, constituido por el ver- bo escribe y.el adverbio claramente. No nos preocupa que esta frase sea un contrasentido, porque lo que nos ocupa-es solamente la sintaxis, o forma, de la frase en lugar de la semántica, o signi- ficado. Tambiinq~eremos señalar que la combinación de palabras nada rápidamente matemáticas no es una fras~áÚda porque no sigue las reglas de la gramática española. 689

Transcript of Rossen - Gramática - Automatas

Modelosde cornputación

Son muchas las tareas que puede realizar un ordenador. Dada una tarea, se pueden planteardos preguntas. La primera es: ¿puede realizarse con un ordenador? Una vez que sabemos quela respuesta a la pregunta anterior es afirmativa, podemos planteamos la segunda pregunta.

¿Cómo puede realizarse esa tarea? Los modelos de computación se utilizan para responder a ambascuestiones.

Estudiaremos tres tipos de estructuras usadas en modelos de computación, a saber, gramáti-cas, máquinas de estado finito y máquinas de Turing. Las gramáticas se utilizan para generar laspalabras de un lenguaje y decidir si una palabra cualquiera pertenece o no al lenguaje defmido. Loslenguajes formales definidos por gramáticas proporcionan modelos para lenguajes naturales,como el español, y para lenguajes de programación, como Pascal, Fortran, Prolog, C o Java. Enparticular, las gramáticas son de gran importancia en la teoría y construcción de compiladores. Lasgramáticas que comentaremos en el presente capítulo fueron utilizadas por primera vez por ellin-güista estadounidense Noam Chomsky en la década de 1950.

En los procesos de modelado se utilizan varias máquinas de estado fmito. Todas las máquinasde estado finito tienen un conjunto de estados, incluido el estado inicial, un alfabeto fuente, y unafunción de transición que a cada pareja de estado y dato de entrada le asigna el estado siguiente. Losestados de una máquina de estado finito le dan unas capacidades de memoria limitadas. Algunasmáquinas de estado fmito producen un símbolo como dato de salida para cada transición; estas má-quinas pueden utilizarse para modelar gran variedad de máquinas, entre las que se incluyen las má-quinas expendedoras, los semáforos, los sumadores binarios y los reconocedores de lenguajes. Tam-bién estudiaremos máquinas de estado finito que no generan datos de salida, pero tienen estadosfmales. Estas máquinas se utilizan con gran frecuencia en el reconocimiento de lenguajes. Las ca-denas que se reconocen son aquellas que transforman el estado inicial en un estado final. Los con-ceptos de gramática y máquina de estado finito pueden relacionarse entre sí. Caracterizaremos aque-llos conjuntos que son reconocidos por una máquina de estado finito y probaremos que son,precisamente, los conjuntos que están generados por un cierto tipo de gramática.

Finalmente, introduciremos el concepto de máquina de Turing. Probaremos cómo se pueden usarlas máquinas de Turing para reconocer conjuntos. También demostraremos cómo se pueden utilizar lasmáquinas de Turing para construir funciones aritméticas. Discutiremos la tesis de Church-Turing, queestablece que toda computación efectiva se puede realizar utilizando una máquina de Turing.

11.1 Lenguajes y gramáticas

INTRODUCCIÓN

Las palabras del idioma español pueden combinarse de varias formas. La gramática española nosdice cuándo cierta combinación de palabras es una frase válida. Por ejemplo, el sapo escribe cla-ramente es una frase válida, puesto que está compuesta por un sujeto, el sapo, formado por el ar-tículo el seguido del nombre sapo, y por un predicado, escribe claramente, constituido por el ver-bo escribe y.el adverbio claramente. No nos preocupa que esta frase sea un contrasentido, porquelo que nos ocupa-es solamente la sintaxis, o forma, de la frase en lugar de la semántica, o signi-ficado. Tambiinq~eremos señalar que la combinación de palabras nada rápidamente matemáticasno es una fras~áÚda porque no sigue las reglas de la gramática española.

689

690 Matemática discreta y sus aplicaciones

La sintaxis de un lenguaje natural, esto es, la de los lenguajes hablados, como el inglés, elespañol, el alemán o el francés, es extremadamente complicada. De hecho, parece imposible es-pecificar todas las reglas de la sintaxis de un lenguaje natural. Las investigaciones en el área de latraducción automática de un lenguaje a otro ha dado lugar al concepto de lenguaje formal, que, adiferencia del lenguaje natural, está especificado por un conjunto de reglas bien definidas. Las re-glas sintácticas son importantes no sólo en la filología, que es el estudio del lenguaje natural, sinotambién en el estudio de los lenguajes de programación.

Describiremos las frases de un lenguaje formal utilizando una gramática. El uso de la gra-mática es de gran ayuda cuando se trata de resolver las dos clases de problemas que aparecen conmucha frecuencia en las aplicaciones a los lenguajes de programación: (1) ¿Cómo se puede de-terminar cuándo una combinación de palabras es una frase válida en un lenguaje formal?(2) ¿Cómo se pueden generar las frases válidas de un lenguaje formal?

Antes de dar una definición formal de qué es una gramática, describiremos un ejemplo degramática que genera un subconjunto del español. Definimos este subconjunto usando una lista dereglas que describe cómo construir una frase válida. Concretamente:

1. una frase se compone de un sujeto seguido de un predicado;2. un sujeto se compone de un artículo seguido de un nombre seguido de un adjetivo, o3. un sujeto se compone de un artículo seguido de un nombre;4. un predicado se compone de un verbo seguido de un adverbio, o5. un predicado se compone de un verbo;6. un artículo es un, o7. un artículo es el;8. un adjetivo es grande, o9. un adjetivo es hambriento;

10. un nombre es conejo, o11. un nombre es matemático;12. un verbo es come, o13. un verbo es salta;14. un adverbio es rápidamente, o15. un adverbio es salvajemente.

A partir de estas reglas, podemos formar frases realizando una serie de reemplazamientos hastaque no podamos aplicar ninguna regla más. Por ejemplo, para obtener una frase válida podemosrealizar la siguiente secuencia de sustituciones:

frasesujeto predicadoartículo nombre adjetivo predicadoartículo nombre adjetivo verbo adverbioel nombre adjetivo verbo adverbioel conejo adjetivo verbo adverbioel conejo grande verbo adverbioel conejo grande salta adverbioel conejo grande salta rápidamente <. /

También es sencillo comprobar que son e~os válidos un matemático hambriento come sal-vajemente, un enorme matemático salta, el conejo come rápidamente, etc. Asimismo, se puedecomprobar que no es válida la frase el rápidamente come matemático.

Modelos de computación 691

GRAMÁTICAS CON ESTRUCTURA DE FRASES

Antes de dar la definición formal de una gramática, introducimos algunos términos.

DEFINICIÓN 1 Un vocabulario (o alfabeto) Ves un conjunto finito y no vacío, cuyos elementos se llamansímbolos. Una palabra sobre Ves una cadena finita de elementos de V. La palabra vacía o ca-dena vacía, denotada por A, es la cadena sin símbolos. El conjunto de todas las palabras sobreV se denota por V·. Un lenguaje sobre Ves un subconjunto de V·.

Nótese que A, la palabra vacía, es la cadena que no contiene símbolos, y es diferente del conjuntovacío, 13.Por tanto, {A} es el conjunto que contiene exactamente una palabra, la palabra vacía.

Los lenguajes se pueden especificar de varias formas. Una de ellas consiste en enumerar todaslas palabras que conforman el lenguaje. Otra es dar algunos criterios que una palabra debe satisfa-cer para pertenecer al lenguaje. En esta sección se describe otro modo importante de especificar unlenguaje, a saber, utilizando una gramática, como, por ejemplo, el conjunto de reglas que se dio alinicio de la sección. Una gramática proporciona un conjunto de símbolos de varios tipos y un con-junto de reglas para construir palabras. Concretamente, una gramática consta de un vocabulario oalfabeto V, que es el conjunto de símbolos usados para obtener los elementos de un lenguaje. Al-gunos de los elementos del vocabulario no se pueden reemplazar por otros símbolos. Estos ele-mentos se llaman terminales, y los restantes elementos del vocabulario, aquellos que puedensustituirse por otros símbolos, se llaman no terminales. El conjunto de símbolos terminales y noterminales se denotan, usualmente, por T y N, respectivamente. En el ejemplo dado en la intro-ducción de la sección, el conjunto de terminales es T = {un, el, conejo, matemático, salta, come, rá-pidamente, salvajemente}, y el conjunto de no terminales es N = {frase, sujeto, predicado, adje-tivo, artículo, nombre, verbo, adverbio}. En el alfabeto hay un elemento especial llamadosímbolo inicial, denotado por S, que es un elemento del vocabulario por el que siempre comenza-mos. En el ejemplo de la introducción, el símbolo inicial es frase. Se llama producción de la gra-mática a toda regla que especifica cuándo se puede reemplazar una cadena de V, el conjunto de to-das las cadenas finitas de elementos del vocabulario, por otra cadena. Se denota por Zo ~ z, laproducción que establece que Zo puede reemplazarse por z, en una cadena. En el ejemplo de la in-troducción se listaron las producciones de la gramática. La primera producción, escrita utilizandoesta notación, es frase ~ sujeto predicado. Resumimos estas cuestiones en la siguiente definición.

DEFINICIÓN 2 Una gramática con estructura defrases G = (V, T, S, P) consiste en un vocabulario V, un sub-conjunto T de V formado por los elementos terminales, un símbolo inicial S de V - T Y unconjunto P de producciones. El conjunto V - T se denota por N. Los elementos de N se llamanelementos no terminales. Toda producción de P debe contener al menos un elemento no ter-minal en su lado izquierdo.

EJEMPLO 1 Sea G = (V, T, S, P), donde V = {a, b, A, B, S}, T = {a, b}, S es el símbolo inicial y P = {S~ ABa,A ~ BB, B ~ ab, AB ~ b}. G es un ejemplo de gramática con estructura de frases. .•••

Estamos interesados en las palabras que pueden generarse mediante las producciones de unagramática con estructura de frases.

DEFINICIÓN 3 Sea G = (V, T, S, P) una gramática con estructura de frases. ~ = Izo,. (esto es, la conca-tenación de 1,zoy r) y w, = lzr cadenas sobre V. Si Zo ~ z, es"uha-froducción de G, decimosque w, se deriva directamente de Wo (o que es directamente derivable), y escribimos Wo => w,.Si wo' wl' ... , wn son cadenas sobre V tales que Wo=> w" w, => w2' ••• , wn_, => wn' decimos quew

lIes derivable, o se deriva, de wo' y se denotará Wo ~ wn• La secuencia de pasos utilizada

para obtener W n a partir de Wo se llama derivación.

EJEMPLO 2 La cadena Aaba se deriva directamente de ABa en la gramática del Ejemplo 1, puesto que B ~ abes una producción de dicha gramática. La cadena abababa se deriva de ABa, puesto que ABa =>Aaba => BBaba => Bababa => abababa, donde se han utilizado las producciones B ~ ab, A ~BB, B ~ ab y B ~ ab sucesivamente. ..•••

692 Matemática discreta y sus aplicaciones

DEFI ICIÓN 4 Sea G = (V, T, S, P) una gramática con estructura de frases. El lenguaje generado por G (o ellenguaje de G), denotado por L(G), es el conjunto de todas las cadenas de terminales que sederivan del estado inicial S. En otras palabras,

L( G) = {W E T* Is ~ W}.

Los Ejemplos 3 y 4 describen lenguajes generados por gramáticas con estructura de frases.

EJEMPLO 3 Sea G la gramática con vocabulario V = {S, A, a, b}, conjunto de terminales T = {a, b}, símboloinicial S y producciones P = {S ~ aA, S ~ b, A ~ aa}. ¿Cuál es L(G), el lenguaje generado poresta gramática?

Solución: A partir del estado inicial S, se puede derivar aA utilizando la producción S ~ aA. Tam-bién se puede usar la producción S ~ b para derivar b. De aA mediante la producción A ~ aa sederiva aaa. Puesto que no puede derivarse ninguna otra palabra utilizando las producciones, se tie-ne que L(G) = lb, aaa}. ..•••

EJEMPLO 4 Sea G la gramática con vocabulario V = {S, 0, 1}, conjunto de terminales T = {O,1}, símbolo inicialS y producciones P = {S ~ lIS, S ~ O}. ¿Cuál es L(G), el lenguaje generado por esta gramática?

Solución: A partir de S, se puede derivar ° utilizando S ~ ° o bien lIS si empleamos S ~ lIS.A partir de l1S, se puede derivar bien 110 o bien 1111S. De 1111S se puede derivar 11110 y111111S. En cualquier paso de una derivación, se pueden añadir dos unos al final de la cadena oterminar la derivación añadiendo un ° al final de la cadena. Conjeturamos que L(G) = {O, 110,11110, 1111110, ... }, el conjunto de todas las cadenas que comienzan con un número par de unosy terminan con un O. Esto se puede demostrar por inducción, mostrando que después de n pro-ducciones las únicas cadenas de terminales generadas son aquellas que contienen n - 1 o menosconcatenaciones de 11 seguidas por un O. (Esto se deja como ejercicio para el lector). ..•••

Con frecuencia se plantea el problema de construir una gramática que genere un lenguajedado. Los Ejemplos 5, 6 Y7 describen problemas de este tipo.

EJEMPLO 5 Construye una gramática con estructura de frases que genere el conjunto {O"1" I n = 0, 1, 2, ... }.

Solución: Se pueden utilizar dos producciones para generar todas las cadenas que consisten en unacadena de ceros seguida de una cadena con el mismo número de unos, incluyendo la palabra vacía.La primera palabra crece formando cadenas cada vez más largas del lenguaje mediante la conca-tenación de un ° al principio de la cadena y un 1 al final. La segunda producción reemplaza S porla cadena vacía. La solución es la gramática G = (V, T, S, P), donde V f {O) 1, S}, T = {O, 1},S esel símbolo inicial y las producciones son

S~OSlS~A.

La verificación de que esta gramática genera el conjunto correcto se deja como ejercicio para ellector. ..•••

El Ejemplo 5 muestra cómo generar el conjunto de cadenas de ceros seguidas de cadenas conel mismo número de unos. El Ejemplo 6 considera el conjunto de cadenas de ceros seguidas deunos donde el número de ceros y unos puede diferir.

Modelos de computación 693

EJEMPLO 6 Obtén una gramática con estructura de frases que genere el conjunto 10m!" I m y n son enteros nonegativos} .

Solución: Daremos dos gramáticas G1 y G2 que generan este conjunto. Este ejemplo ilustracómo dos gramáticas distintas pueden generar el mismo lenguaje.

La gramática G I consta del alfabeto V = IS, 0, 1}, conjunto de terminales T = 10, 1} Ylasproducciones S ~ OS, S ~ SI YS ~ le. G1 genera el conjunto correcto, puesto que utilizando laprimera producción m veces, se colocan m ceros al inicio de la cadena, y usando la segunda pro-ducción n veces, tenemos n unos al final de la cadena. Los detalles de esta· verificación se dejan allector.

La gramática G2 consta del alfabeto V = IS, A, 0, 1}, conjunto de terminales T = 10, 1} Ylasproducciones S ~ OS, S ~ lA, S ~ 1, A ~ lA, A ~ 1 YS ~ le. Los detalles de que esta gramá-tica genera el conjunto correcto se dejan al lector. ~

En ocasiones, un conjunto de descripción sencilla sólo se puede generar mediante una gra-mática complicada. El Ejemplo 7 ilustra este hecho.

EJEMPLO 7 Una gramática que genera el conjunto 10"1"2" I n = 0, 1,2, ... } es G = (V, T, S, P) con V = 10, 1,2,S, A, B}, T= 10, 1, 2}, símbolo inicial S y las producciones S ~ OSAB, S ~ le, BA ~AB, OA ~01, lA ~ 11, lB ~ 12, 2B ~ 22. Dejamos como ejercicio para el lector demostrar que esta afir-mación es correcta. La gramática dada es la más sencilla de las que generan este conjunto, en unsentido que quedará claro posteriormente en esta sección. El lector se preguntará por el origen deesta gramática, puesto que parece difícil obtenerla partiendo de cero. Puede ser reconfortante sa-ber que esta gramática se puede construir de manera sistemática utilizando técnicas de teoría de lacomputación que exceden el nivel este libro. ~

TIPOS DE GRAMÁTICA CON ESTRUCTURA DE FRASES

Las gramáticas con estructura de frases se pueden clasificar de acuerdo con el tipo de produccio-Enlaces nes que utilicen. Describiremos el esquema de clasificación introducido por Noam Chomsky. En

la Sección 11.4 veremos que los diferentes tipos de lenguajes definidos con este esquema corres-ponden a las clases de lenguaje que pueden ser reconocidas utilizando diferentes modelos de má-quinas de computación.

Una gramática de tipo Ono impone ninguna restricción a sus producciones. Una gramática detipo 1 puede tener producciones de la forma w1 ~ w2' donde la longitud de w2 es mayor que la dew1' o de la forma w1 ~ le. Una gramática de tipo 2 sólo puede tener producciones de la forma w1 ~

W 2' donde W I es un único símbolo no terminal. Una gramática de tipo 3 sólo puede tener produc-ciones de la forma w1 ~ w2' con w1 = A, Ybien w2 = aB o bien w2 = a, siendo A y B símbolos noterminales ya un símbolo terminal, o con w1 = S Yw2 = le.

De estas definiciones se sigue que toda gramática de tipo 3 es de tipo 2, toda gramática detipo 2 es de tipo 1 y toda gramática de tipo 1 es de tipo O. Las gramáticas de tipo 2 también se lla-man gramáticas libres de contexto o independientes del contexto, puesto que un símbolo no ter-minal que esté en el lado iz~ de una producción puede ser reemplazado en una cadena siem-pre que aparezca independientemente de lo que figure en la cadena. Un lenguaje generado por unagramática de tipo 2 se llama lenguaje libre de contexto o independiente del contexto. Cuando setiene una producción de la forma lwr ~ Iw2r (pero no de la forma w1 ~ w2), la gramática se de-nomina de tipo 1, sensible al contexto o dependiente del contexto, puesto, que w1 puede ser re-emplazado por w2 sólo cuando está entre las cadenas I y r. Las gramáticas de tipo 3 se llamantambién regulares. Un lenguaje generado por una gramática regular se llama regular. LaSección 11.4 trata de la relación existente entre las gramáticas regulares y las máquinas de estadofinito. El diagrama de Venn de la Figura 1 muestra la relación que existe entre los diferentes tiposde gramáticas.

EJEMPLO 8 En el Ejemplo 6 vimos que 10"'1" I m, n = 0, 1,2, ... }es un lenguaje regular, puesto que puede ge-nerarse mediante una gramática regular, a saber, la gramática G2 del Ejemplo 6. ~

694 Matemática discreta y sus aplicaciones

Tipo Oo estructura de frase

Tipo 1 odependiente del contexto

Figura 1. Tipos de gramáticas.

Las gramáticas libres de contexto y las regulares desempeñan un papel muy importante en loslenguajes de programación. Las gramáticas libres de contexto se utilizan para definir la sintaxis decasi todos los lenguajes de programación. Estas gramáticas son lo bastante potentes como para de-finir una amplia variedad de lenguajes. Además, se pueden diseñar algoritmo s eficientes que de-terminen cuándo y cómo generar una cadena. Las gramáticas regulares se utilizan para buscar cier-tos patrones dentro de un texto y en el análisis léxico, que es el proceso en el que un analizadorsintáctico toma una secuencia de entrada y la transforma en componentes léxicos (en inglés,tokens).

EJEMPLO 9 Del Ejemplo 5 se sigue que {0"1" I n = 0, 1,2, ... }es un lenguaje libre de contexto, puesto que lasproducciones en esta gramática son S ~ OSl YS ~ 'A. Sin embargo, éste no es un lenguaje regu-lar. Esta afirmación se justificará en la Sección 11.4. .•••

EJEMPLO 10 El conjunto {O"1n2n I n = 0, 1, 2, ... }es un lenguaje dependiente del contexto, pues se puede generarmediante una gramática de tipo 1, como muestra el Ejemplo 7, pero no es un lenguaje de tipo 2.(Esto se muestra en el Problema 28 de los Problemas complementarios al final del capítulo). .•••

La Ta~esume la terminología utilizada para clasificar las gramáticas con estructura de frase.

Tabla 1. Tipos de gramáticas.

Tipo Restricciones en las producciones w) -7 w2

O Sin restricciones1 I (w))~ I (w2), o w2 = A2 w) = A, siendo A un símbolo no terminal3 w) = A Yw2 = aB o w2 = a, siendo A E N, B E N ya E T, o S -7 A

Enlaces

E IV 70peS ¿u 7í;'P~I!>", 1{'2" 3¡ WJ _

'}JEBé UN ri#,I/t:R.s¡"MOIPLO

IJ() reru""ltV,IIl.

AVRAM NOAM CHOMSKY (nacido en 1928) Noam Chomsky, nacido en Filadelfia, es hijo de un profesor de hebreo.Se licenció y doctoró en lingüística por la Universidad de Pennsylvania. Fue profesor de la Universidad de Pennsylvaniadesde 1950 hasta 1951. En 1955 se incorporó al MIT, donde comenzó su carrera enseñando francés y alemán a estudian-tes de ingeniería. Chomsky es actualmente el Ferrari P. Ward Professor de Lenguas Extranjeras y Lingüística en el MIT.Es conocido por sus muchas contribuciones fundamentales a la lingüística, incluido el estudio de las gramáticas. Chomskyes también muy conocido por su activismo político.

Modelos de computación 695

ÁRBOLES DE DERIVACIÓN

Una derivación en el lenguaje generado por una gramática libre de contexto se puede representargráficamente mediante un árbol con raíz ordenado, denominado árbol de derivación. La raíz deeste árbol representa al símbolo inicial. Los nodos internos del árbol representan los símbolos noterminales que aparecen en la derivación. Las hojas del árbol representan los símbolos terminales.Si la producción A ~ w se utiliza en la derivación, donde w es una palabra, el vértice que repre-senta a A tiene como hijos en el árbol a todos los vértices que representan los símbolos de w, or-denados de izquierda a derecha.

EJEMPLO 11 Construye un árbol de derivación para la derivación de el conejo hambriento come rápidamente,dada en la introducción de esta sección.

Solución: El árbol de derivación se muestra en la Figura 2.

El problema de determinar si una cadena pertenece o no al lenguaje generado por una gra-mática libre de contexto aparece en muchas aplicaciones, como la construcción de compiladores.En el siguiente ejemplo se muestran dos enfoques posibles de este problema.

EJEMPLO 12 Determina si la palabra cbab pertenece o no al lenguaje generado por la gramática G = (V, T, S, P),donde V = la, b, e, A, B, C, S}, T = la, b, c}, S es el símbolo inicial y las producciones son

S~ABA~CaB~BaB~CbB~bc-s csc-s s.

Solución: Una manera de aproximamos al problema es comenzar con S e intentar derivar cbabusando una serie de producciones. Puesto que sólo hay una producción con S en el lado izquierdo, de-bemos empezar con S~ AB. Seguidamente utilizamos la única producción que tiene a A en su lado iz-quierdo, a saber, A ~ Ca, para obtener S~ AB~ CaB. Puesto que cbab comienza con los símbolos cb,utilizamos la producción C ~ cb. Esto da lugar a S~ Ab~ CaB~ cbaB. Finalizamos utilizando la pro-ducción B ~ b para obtener S~ AB~ CaB~ cbaB~ cbab. El método utilizado se llama análisis des-cendente, puesto que parte del símbolo inicial y procede aplicando producciones sucesivamente.

Hay otra manera de resolver el problema, llamada análisis ascendente. En este caso, traba-jamos hacia atrás. Puesto que cbab es la palabra que hay que derivar, podemos utilizar la produc-ción C ~ cb, obteniendo Cabes cbab. Seguidamente, podemos usar la producción A ~ Ca paraobtener Ab~ Cab~ cbab. Utilizando la producción B ~ b, se obtiene AB~Ab~ Cab~ cbab.Finalmente, mediante la producción S ~ AB se completa la derivación para cbab, que esS~ AB~ Ab~ Cab~ cbab. .•••

frase

/~sujeto predicado

/I~ /\artículo nombre adjetivo verbo adverbio

I I I I Iel conejo hambriento come rápidamente

Figura 2. Un árbol de derivación.

696 Matemática discreta y sus aplicaciones

Enlaces

EJEMPLO 13

Ejemplosadicionales

Enlaces

LA FORMA DE BACKUS-NAUR

En ocasiones se utiliza otra notación para especificar una gramática de tipo 2 llamada forma deBackus-Naur (FBN), llamada así en honor a John Backus, que la inventó, y Peter Naur, quien lamodificó para utilizarla en las especificaciones del lenguaje de programación ALGOL. (Sor-prendentemente, hace aproximadamente dos mil quinientos años se utilizó una notación similar ala de Backus-Naur para describir la gramática del sánscrito). La forma de Backus-Naur se empleapara especificar las reglas sintácticas de muchos lenguajes de programación, incluido el lenguajelava. Las producciones en una gramática de tipo 2 tienen un solo símbolo no terminal en su ladoizquierdo. En lugar de enumerar las producciones separadamente, podemos combinar todas aque-llas que tienen el mismo símbolo no terminal en el lado izquierdo. En lugar de utilizar el símbolo~ en una producción, utilizaremos el símbolo: :=. Colocaremos los símbolos no terminales entrecorchetes, ( ), y listaremos todos los lados derechos de las producciones en una misma línea, se-parados por barras. Por ejemplo, las producciones A ~ Aa, A ~ a y A ~ AB se pueden agrupardando lugar a (A) ::= (A)a 1 a 1 (A)( B) .

El Ejemplo 13 ilustra cómo se utiliza la forma de Backus-Naur para describir la sintaxis delos lenguajes de programación. El ejemplo procede del modo original de utilizar dicha forma en ladescripción del lenguaje ALGOL 60.

En ALGOL 60, un identificador (que es el nombre de una entidad como, por ejemplo, una varia-ble) consiste en una cadena de caracteres alfanuméricos (esto es, letras y números) que deben co-menzar por una letra. Podemos utilizar estas reglas en la forma de Backus-Naur para describir unconjunto de identificadores válidos:

(identificador) ::= (letra) 1 tidenuficador) (letra) 1 (identificador) (dígito)(letra) ::= al b 1 e 1 ... 1x 1y 1 z (la elipsis indica que se incluyen todas las letras del alfabeto).(dígito) ::= 01 1 1 2 1 3 14 1 5 1617 1 8 1 9

Por ejemplo, podemos producir el identificador válido x99a utilizando la primera regla parareemplazar tidentificador) por (identificador) (letra), luego la segunda regla para obtenertidentificadorra, después la primera regla dos veces para obtener tidentificador) (dígito) (dígito)a,

JOHN BACKUS (nacido en 1924) John Backus nació en Filadelfia y creció en Wilmington, Delaware. Asistió al co-io Hill School en Pottstown, Pennsylvania. Tuvo que asistir todos los años a cursos de verano, puesto que no era un es-

tudi te serio ni tampoco un buen alumno. Pero disfrutaba pasando los veranos en ew Hampshire, donde asistía a la es-a de verano y se divertía con actividades estivales, como la navegación. Se matriculó en la Universidad de Virginia para

estudiar química a instancias de su padre. Pero rápidamente decidió que la química no era para él, y en 1943 se enroló enel ejército, donde recibió una formación médica y trabajó en el departamento de neurocirugía de un hospital militar. Iró-nicamente, se le diagnosticó pronto un tumor de huesos en el cráneo, y se le implantó una placa metálica. Su trabajo mé-dico en el ejército le animó a estudiar medicina, pero abandonó al cabo de nueve meses porque le disgustaba tener que me-morizar tanto. Después de abandonar la escuela de medicina, ingresó en una escuela de técnicos de radio porque queríaconstruir su propio equipo de alta fidelidad. Un profesor de esta escuela reconoció su potencial y le pidió que le ayudasecon ciertos cálculos matemáticos que necesitaba para publicar un artículo en una revista (no científica). Finalmente,Backus descubrió en qué estaba interesado: las matemáticas y sus aplicaciones. Se matriculó en la Universidad de Co-lumbia, donde obtuvo tanto su licenciatura como una tesis de grado en matemáticas. Backus se incorporó a IBM como pro-gramador en 1950. Participó en el diseño y desarrollo de dos de los primeros ordenadores de IBM. De 1954 a 1958 dirigióel grupo de IBM que desarrolló FORTRA . Backus pasó en 1958 a formar parte de la plantilla delIBM Watson ResearchCenter. Participó en los comités que diseñaron el lenguaje de programación ALGOL, usando lo que ahora se llama la for-ma de Backus-Naur para describir la sintaxis de este lenguaje. Más tarde, Backus trabajó en las matemáticas de familiasde conjuntos y en un estilo funcional de programación. Backus fue nombrado IBM Fellow en 1963 y recibió la NationalMedaJ of Science de Estados Unidos en 1974, así como el prestigioso Premio Turing de la Association of Computing Ma-chinery en 1977.

PETER NAUR (nacido en 1928) Peter Naur nació en Frederiksberg, cerca de Copenhague, De niño se interesó por laastronomía. o sólo observaba los cuerpos celestes, sino que calculaba también las órbitas de los cometas y los asteroides,

aur cursó estudios en la Universidad de Copenhague, graduándose en 1949. De 1950 a 1951 estuvo en Cambridge, don-de utilizó uno de los primeros ordenadores para calcular movimientos de cometas y planetas. Tras regresar a Dinamarca,siguió trabajando en astronomía, pero continuó vinculado a la computación. En 1955 fue asesor para la construcción del pri-mer ordenador danés. En 1959, Naur dio el saJto de la astronomía a la computación como actividad a tiempo completo. Suprimer trabajo como informático a tiempo completo fue participar en el desarrollo del lenguaje de programación ALGOLDe 1960 a 1967 trabajó en el desarrollo de compiladores para ALGOL y COBOL En 1969 se incorporó como profesor deinformática a la Universidad de Copenhague, donde ha trabajado en el área de metodología de la programación.

Modelos de computación 697

la tercera regla dos veces para obtener tideruificador) 99a, la primera regla para obtener (letra)99ay, finalmente, la segunda regla para obtener x99a. .•••

EJEMPLO 14 ¿Cuál es la forma de Backus- aur de la gramática para el subconjunto del español descrito en laintroducción de esta sección?

Solución: La forma de Backus-Naur de esta gramática es:

(frase) ::= (sujeto)(predicado)(sujeto) ::= (artículo) (nombre) (adjetivo) 1 (artículo)(nombre)(predicado) ::= (verbo)(adverbio) 1 (verbo)(artículo) ::= un 1 el(adjetivo) ::= grande 1 hambriento(nombre) ::= conejo 1 matemático(verbo) ::= come 1 salta(adverbio) ::= rápidamente 1 salvajemente

EJEMPLO 15 Halla la forma de Backus-Naur para la producción de los enteros con signo en notación decimal.(Un entero con signo es un natural precedido por un signo más o un signo menos).

Solución: La forma de Backus- aur para una gramática que produce enteros con igno es

(entero con signo) ::= (signo)(entero)(signo) ::= + 1-(entero) ::= (dígito) 1 (dígito)(entero)(dígito) ::= O 11 12 13 1415 16 17 18 19La forma de Backus- aur, con una gran variedad de extensiones, se usa frecuentemente para

especificar la sintaxis de lenguajes de programación, como lava y LISP; lenguajes de base de datos,como SQL, y lenguajes de marcas, o de marcado, como XML. En el preámbulo del Problema 28al final de esta sección se presenta algunas variaciones de la forma de Backus- aur que e utilizanhabitualmente en la descripción de los lenguajes de programación.

Pro~asLos problemas 1-3 se refieren a la gramática con el símboloinicial frase, el conjunto de terminales T = Ila, soñolienta,feliz, tortuga, liebre, rebasa a, corre, rápidamente, lentamen-te 1, el conjunto de no terminales N = I sujeto, predicado converbo transitivo, predicado con verbo intransitivo, artículo,adjetivo, nombre, verbo, adverbio 1 y las producciones:

frase ~ sujeto predicado con verbo transitivo sujetofrase ~ sujeto predicado con verbo intransitivosujeto ~ artículo nombre adjetivosujeto ~ artículo nombrepredicado con verbo transitivo ~ verbo transitivopredicado con verbo intransitivo ~ verbo intransitivo

adverbiopredicado con verbo intransitivo ~ verbo intransitivoartículo ~ laadjetivo ~ soñolientaadjetivo ~ feliznombre ~ tortuganombre ~ liebreverbo transitivo ~ rebasa a

verbo intransitivo ~ correadverbio ~ rápidamenteadverbio ~ lentamente

1. Utiliza el conjunto de producciones para justificar quecada una de estas frases es una frase válida.a) La liebre feliz corre.b) La tortuga soñolienta corre rápidamente.e) La tortuga rebasa a la liebre.d) La liebre soñolienta rebasa a la tortuga feliz.

2. Obtén otras cinco frases válidas además de las dadas enel Problema l.

3. Justifica que la liebre corre la tortuga soñolienta no esuna frase válida.

*4. Sean V = IS, A, B, a, b 1 y T = la, b l. Halla el lenguajegenerado por la gramática (V, T, S, P), siendo el conjun-to de producciones P

a) S ~ AB, A ~ ab, B ~ bb.b) S ~ AB, S ~ aA, A ~ a, B ~ bao

698 Matemática discreta y sus aplicaciones

e) S~AB,S~AA,A~aB,A~ab,B~b.d) S ~AA,S ~B,A ~aaA,A -e aa.B ~bB,B -s b.e) S ~ AB, A ~ aAb, B ~ bBa, A ~ 'A, B ~ 'A.

5. Construye una derivación para 0313 utilizando la gramá-tica dada en el Ejemplo 5.

6. Demuestra que la gramática dada en el Ejemplo 5 generael conjunto Ion!" I n = 0,1,2, ... }.

7. a) Construye una derivación de 0214 utilizando la gra-mática G¡ del Ejemplo 6.

b) Construye una derivación de 0214 utilizando la gra-mática G2 del Ejemplo 6.

8. a) Demuestra que la gramática G¡ del Ejemplo 6 generael conjunto {O"'ln I m, n = 0,1,2, ... }.

b) Demuestra que la gramática G2 del Ejemplo 6 generael mismo conjunto.

9. Construye una derivación de 021222 con la gramáticadada en el Ejemplo 7.

*10. Demuestra que la gramática dada en el Ejemplo 7 generael conjunto {0"'lm2m Im = 0,1,2, ... }.

*11. Obtén una gramática con estructura de frases para cadauno de los siguientes lenguajes:

a) el conjunto de todas las cadenas de bits sin unos yque tienen un número par de ceros

b) el conjunto de todas las cadenas de bits que tienen ununo seguido de un número impar de ceros

e) el conjunto de todas las cadenas de bits que tienen unnúmero par de ceros y un número par de unos

d) el conjunto de todas las cadenas de bits construidassin unos y con al menos diez ceros

e) el conjunto de todas las cadenas de bits que tienenmás ceros que unos

f) el conjunto de todas las cadenas de bits que tienen elmismo número de~o~ que de unos

g) el conjunto de to~ cadenas de bits que tienendistinto número de ceros y unos

12. Construye una gramática con estructura de frases quegenere cada uno de los siguientes conjuntos:

a) {012nln;;,0}b) {onpn In;;, O}e) {OnlmOnlm;;,O,n;;,O}

13. Sean V = {S, A, B, a, b} y T = {a, b }. Decide si G = (V, T,S, P) es una gramática de tipo O, pero no de tipo 1; unagramática de tipo 1, pero no de tipo 2, o una gramática detipo 2, pero no de tipo 3, si P, el conjunto de producciones, es

a) S~aAB,A~Bb,B~'A.b) S ~ aA, A ~ a, A ~ b.e) S ~ ABa, AB ~ a.d) S ~ ABA, A ~ aB, B ~ ab.e) S ~ bA, A ~ B, B ~ a.f) S ~ aA, aA ~ B, B ~ aA, A ~ b.g) S ~ bA, A ~ b, S ~ 'A.h) S ~AB, B ~ aAb, aAb ~ b.i) S ~ aA, A ~ bB, B~ b, B ~ 'A.j) S ~ A, A ~ B, B ~ 'A.

14. Un palíndromo es una cadena que se lee igual de dere-cha a izquierda que de izquierda a derecha, esto es, unacadena w donde w = 10, siendo 10 la cadena obtenida alinvertir el orden de los caracteres de w. Obtén una gra-mática libre de contexto que genere el conjunto de todoslos palíndromos sobre el alfabeto {O, 1}.

*15. Sean G¡ y G2 dos gramáticas libres de contexto que ge-neran los lenguajes L(G¡) y L(G2), respectivamente. De-muestra que hay una gramática libre de contexto que ge-nera cada uno de los siguientes conjuntos.

a) L(G¡) UL(G2)

b) L(G¡)L(G2)

e) L(G¡)'

16. Halla las cadenas construidas utilizando los siguientesárboles de derivación.

17. Construye los árboles de derivación para las frases delProblema l.

18. Sea G la gramática con V = {a, b, e, S}, T = {a, b, e}, sím-bolo inicial S y producciones S ~ abS, S ~ beS, S ~ bbS,S ~ a, S ~ eb. Construye los árboles de derivación de

a) bebba.b) bbbebba.e) bcabbbbbcb.

*19. Usa el análisis descendente para determinar cuáles delas siguientes cadenas pertenecen al lenguaje generadopor la gramática del Ejemplo 12.a) baba b) abab e) ebaba d) bbbeba

*20. Utiliza el análisis ascendente para determinar en qué ca-sos las cadenas del Problema 19 pertenecen al lenguajegenerado por la gramática del Ejemplo 12.

21. Construye un árbol de derivación para -109 utilizando lagramática dada en el Ejemplo 15.

22. a) Explica cuáles son las producciones de una gramáticasi la forma de Backus-Naur para las producciones es:(expresión) ::=

(expresión)) 1

(expresión> + (expresión) 1

(expresión> * (expresión) 1

(variable)(variable) ::= x 1 y

b) Obtén un árbol de derivación para (x * y) + x utili-zando esta gramática.

23. a) Construye una gramática con estructura de frases quegenere todos los números decimales con signo, queconsisten en un signo, bien + o bien -; un número na-tural, y una parte decimal, que es la cadena vacía ouna coma decimal seguida por un natural no nuloque puede tener ceros a la izquierda.

b) Determina la forma de Backus-Naur de esta gramá-tica.

e) Construye un árbol de derivación para -31,4 utili-zando esta gramática.

24. a) Construye una gramática con estructura de frases quegenere el conjunto de todas las fracciones de la formaa/b, donde a es un entero con signo en notación de-cimal y b un natural no nulo.

b) ¿Cuál es la forma de Backus-Naur de esta gramática?e) Construye un árbol de derivación para +311/17 utili-

zando esta gramática.

25. Obtén las reglas de producción en la forma de Backus-Nauran identificador si éste puede estar formadopora) u ás letras minúsculas.b) al menos tres, pero no más de seis, letras minúsculas.e) de una a seis letras, mayúsculas o minúsculas, co-

menzando por una mayúscula.d) una letra minúscula, seguida por un dígito o un guión

bajo e), seguido por tres o cuatro caracteres alfanu-méricos (letras mayúsculas o minúsculas o dígitos).

26. Obtén las reglas de producción en la forma de Backus-Naur para el nombre de una persona si dicho nombreconsiste en un nombre propio, que es una cadena de le-tras donde sólo la primera de ellas es mayúscula; unainicial en el medio, y un último nombre, que puede sercualquier cadena de letras.

27. Obtén las reglas de producción en la forma de Backus-Naur que generen todos los identificadores en el lengua-je de programación C. Los identificadores de este len-guaje comienzan por una letra o un guión bajo (_),seguido por una o más letras minúsculas, mayúsculas,guiones bajos y dígitos.

Modelos de computación 699

Para definir gramáticas con estructura de frase se utilizan confrecuencia extensiones de la forma de Backus-Naur. En una deesas extensiones, el símbolo de interrogación (?) indica que elsímbolo, o el grupo de símbolos encerrados entre paréntesis, asu izquierda pueden aparecer ninguna o una vez (esto es, demodo opcional), un asterisco (*) indica que el símbolo a su iz-quierda puede aparecer O o más veces y una suma (+) indicaque el símbolo a su izquierda puede aparecer una o más veces.Estas extensiones forman parte de la forma de Baekus-Naurextendida (FBNE), y los símbolos ?, * y + se llaman metaea-raeteres. En la FBNE se eliminan los corchetes utilizadospara denotar a los no terminales.

28. Describe el conjunto de cadenas definido por cada una deestas colecciones de producciones en FBNE:

a) cadena ::= L + D? L +L ::= al b 1eD ::=011

b) cadena ::= signo D + 1 D +signo ::= + I-D ::= 011 1213141516171819

e) cadena ::= L * (D+)? L *L ::=xlyD ::=011

29. Da las reglas de producción en la forma de Backus-Naurextendida que generan todos los números decimales queconstan de un signo opcional, un número natural y unaparte decimal que es bien la cadena vacía o bien unacoma decimal seguida por un entero positivo, opcional,que puede estar precedido por un número arbitrario deceros.

30. Da las reglas de producción en la forma de Backus-Naurextendida para generar un sandwich si un sandwich cons-ta de una rebanada inferior de pan; mostaza o mayonesa;una hoja de lechuga opcional; una rodaja de tomate op-cional; una o más rodajas de pavo, pollo o roast beef (encualquier combinación); opcionalmente, algunas roda-jas de queso, y una rebanada de pan colocada en la partesuperior.

31. Determina las reglas de producción en la forma deBackus-Naur extendida para los identificadores del len-guaje de programación C (véase el Problema 27).

32. Describe cómo se pueden transformar las produccionesde una gramática en la forma de Backus-Naur extendidaen un conjunto de producciones para la gramática en laforma de Backus-Naur.

Ésta es la forma de Backus-Naur que describe la sintaxis de lasexpresiones en notación postfija (o polaca inversa)

(expresión) ::= (término) 1 (término )(término)(OperadorSuma)(OperadorSuma) ::= + 1-

(término) ::= tfactor) 1 ifactor)ifactor)(OperadorMul)(OperadorMul) ::= * 1/tfactor) ::= (identificador) 1 (expresión)(identificador) ::= al b 1 ... 1z

700 Matemática discreta y sus aplicaciones

33. Para cada una de las cadenas siguientes, determina siestá o no generada por la gramática dada para la notaciónpostfija. En caso afirmativo, detalla los pasos realizadospara generar la cadena.a) abce+ b) xy++ e) xy-z*d) wxyz-«l e) ade-«

34. Utiliza la forma de Backus-Naur para describir la sintaxisde las expresiones en notación infija, donde el conjuntode operadores e identificadores es el mismo que en laFBN de las expresiones postfijas dadas en el preámbulodel Problema 33, pero los paréntesis deben encerrar lasexpresiones que se utilicen como factores.

35. Para cada una de las cadenas siguientes, determina siestá o no generada por la gramática dada para la notaciónirtfija del Problema 34. En caso afurnativo, detalla los pa-sos realizados para generar la cadena.a) x + y + z b) alb + c/de) m» (n+p) d) +m-n+p-qe) (m + n) * (p - q)

36. Sea G una gramática y R la relación que contiene al parordenado (wo' w.) si, y sólo si, w) se deriva directamentede Wo en G. ¿Cuál es el cierre reflexivo-transitivo de R?

11.2 Máquinas de estado finito con salida

Muchos tipos de máquinas, incluyendo algunos componentes de ordenadores, pueden sermodelados utilizando una estructura llamada máquina de estado finito. Varios tipos de má-quinas de estado finito se emplean frecuentemente como modelos. Todas estas versiones demáquinas de estado finito incluyen un conjunto finito de estados, uno de los cuales es el estadoinicial, un alfabeto de entrada y una función de transición que asigna a cada pareja de estadoy dato de entrada el siguiente estado. Las máquinas de estado finito se utilizan con mucha fre-cuencia en aplicaciones de ciencias de la computación y en redes de datos. Por ejemplo, lasmáquinas de estado finito son la base de los correctores ortográficos y gramaticales, de losprogramas de indexación o de búsqueda de largas secuencias de texto, de programas para elreconocimiento de voz, de los programas que transforman texto utilizando lenguajes de mar-cado como XML y HTML Yde los protocolos que especifican cómo se comunican entre sí losordenadores de una red.

En esta sección estudiaremos aquellas máquinas de estado finito que producen una salida.Mostraremos cómo se utiliza una máquina de estado finito para modelar una máquina expende-dora, una máquina que genera un desplazamiento o retardo, una máquina que suma enteros y unam~~ que determina si una cadena de bits contiene o no un patrón específico.

\.3fttes de pasar a la definición formal, mostraremos cómo se puede modelar una máquina ex-pendedora que acepta monedas de 5, 10 Y25 céntimos. Cuando un cliente ha depositado 30 cén-timos o más, la máquina devuelve inmediatamente todo lo que sobrepase de 30 céntimos.A continuación, el cliente puede apretar un botón naranja y obtener un zumo de naranja o apretarun botón rojo y obtener un zumo de manzana. Podemos describir cómo trabaja la máquina espe-cificando sus estados, cómo cambia de un estado a otro cuando recibe un dato de entrada y la sa-lida que produce para cada combinación de entrada y estado actual.

La máquina puede estar en uno de los siete estados diferentes Si' i = O, 1,2, oo., 6, donde Si esel estado en el que la máquina lleva recaudados 5i céntimos. La máquina comienza en el estado so'con Océntimos recaudados. Las posibles entradas son 5 céntimos, 10 céntimos, 25 céntimos, el bo-tón naranja (N) y el botón rojo (R). Las posibles salidas son nada (n), 5 céntimos, 10 céntimos, 15céntimos, 20 céntimos, 25 céntimos, un zumo de naranja y un zumo de manzana.

Con este ejemplo ilustramos cómo trabaja este modelo de máquina. Supongamos que unestudiante introduce 10 céntimos seguidos de 25 céntimos, la máquina le devuelve 5 cénti-mos, y él aprieta el botón naranja del zumo de naranja. La máquina comienza en el estado so'La primera entrada es 10 céntimos, que cambia el estado de la máquina a S2 y no devuelvenada. La segunda entrada es 25 céntimos. Esto cambia el estado de S2 a S6 y da una salida de5 céntimos. La siguiente entrada es el botón naranja, que cambia el estado de S6 a So nueva-mente (puesto que la máquina vuelve a su estado inicial) y produce una salida que es el zumode naranja.

INTRODUCCIÓN

Enlaces

Modelos de computación 701

Tabla l. Tabla de estados para una máquina expendedora.

Estado siguiente Salida

Entrada Entrada

Estado 5 10 25 N R 5 10 25 N R

So SI S2 Ss So So n n n n n

SI S2 S3 S6 SI SI n n n n n

S2 S3 S4 S6 S2 S2 n n 5 n n

S3 S4 Ss S6 S3 S3 n n 10 n n

S4 Ss S6 S6 S4 S4 n n 15 n n

Ss S6 S6 S6 Ss Ss n 5 20 n n

S6 S6 S6 S6 So So 5 10 25 ZN ZM

N, zumo de naranja l\3de tn3l\'L3

R, 'LutnO

Figura 1. Una máquina expendedora.

e Se pueden recoger en una tabla todos los cambios de estados y las salidas de esta máquina.Para ello tenemos que especificar para cada combinación de estado y entrada el siguiente estado yla salida obtenida. La Tabla 1 muestra las transiciones y las salidas para cada pareja de estado y en-trada.

Otro modo de mostrar las acciones de una máquina es mediante un grafo dirigido con aristasetiquetadas, donde cada estado se representa por un círculo, las aristas representan las transicionesy están etiquetadas con las entradas y las salidas de cada transición. La Figura 1 muestra dicho gra-fo para el ejemplo de la máquina expendedora. .

MÁQUINAS DE ESTADO FINITO CON SALIDA

Pasamos a dar la definición formal de una máquina de estado finito con salida.

DEFINICIÓN 1 Una máquina de estado finito M = (S, 1, O,/, g, so) consiste en un conjunto finito de estados S;un alfabeto de entradas finito 1; un alfabeto finito de salidas O; una función de transicián f,que asigna a cada par de estado y entrada un nuevo estado; una función de salida g, que asig-na a cada par de estado y entrada una salida, y un estado inicial so'

702 Matemática discreta y sus aplicaciones

Sea M = (S, /,0,/, g, so) una máquina de estado finito. Podemos utilizar una tabla de estados otabla de transición para representar los valores de la función de transiciónfy de la función de sa-lida g para todas las parejas de estado y entrada. Con anterioridad hemos construido una tabla deestados para la máquina expendedora de la introducción de esta sección.

EJEMPLO 1 La tabla de estados de la Tabla 2 describe una máquina de estado finito con S = {so' SI' S2' S3}, / ={O, 1} YO = {O, 1 }. Los valores de la función de transiciónf se muestran en las dos primeras co-lumnas y los valores de la función de salida g se muestran en las dos últimas columnas. ~

Otro modo de representar una máquina de estado finito es utilizar un diagrama de estados,que es un grafo dirigido con aristas etiquetadas. En este diagrama, cada estado se representa por uncírculo. Los arcos se etiquetan con el par formado por la entrada y la salida de cada transición.

EJEMPLO 2 Construye el diagrama de estados para la máquina de estado finito cuya tabla de estados semuestra en la Tabla 2.

Solución: El diagrama de estados para esta máquina es el grafo de la Figura 2.

EJEMPLO 3 Construye la tabla de estados para la máquina de estado finito cuyo diagrama de estado se mues-tra en la Figura 3.

Solución: La tabla de estados de dicha máquina se muestra en la Tabla 3.

Dada una cadena de entrada, la acción de la máquina consiste en llevar el estado inicial a tra-vés de una secuencia de estados según determine la función de transición. A medida que se lee lacadena de entrada símbolo a símbolo (de izquierda a derecha), cada símbolo de la entrada lleva lamáquina de un estado a otro. Como cada transición produce una salida, una cadena de entrada tam-bién genera una cadena de salida.

Supongamos que la cadena de entrada es x = XIX2 ... xk• Entonces, la lectura de la entrada lle-va la máquina del estado So al estado SI' donde SI =f(so, XI); luego al estado S2' donde S2=f(sl' x2),y así sucesivamente hasta llegar al estado fmal s, =f(sk.l' xk). Esta sucesión de transiciones produceuna cadena de salida YIY2 ... Yk' donde YI= g(so' XI) es la salida correspondiente a la transición de So

a SI; Y2 = g(s l' x2) es la salida correspondiente a la transición de SI a S2' y así sucesivamente. En ge-rnerfl, y.= g(s'_I' x) para} = 1,2, ..., k. Por tanto, podemos extender la defmición de función de sa-~ g i. cade~as d~ entrada de modo que g(x) = y, donde y es la salida correspondiente a la cadena

de entrada x. Esta notación es útil en muchas aplicaciones.

EJEMPLO 4 Halla la cadena de salida generada por la máquina de estado finito de la Figura 3 si la cadena deentrada es 10 10 11.

Solución: La salida obtenida es 001000. Los sucesivos estados junto con sus salidas se muestranen la Tabla 4. ~

Tabla 2

f g lnici

Entrada EntradaEstado O 1 O 1

So SI So 1 O

SI S3 So 1 11,1

S2 SI S2 O 1

S3 S2 SI O O Figura 2. El diagrama de estados para lamáquina de estado finito de la Tabla 2.

::,

EJEMPLOS

Figura 4. Máquinacon una unidad de

ret~

EJEMPLO 6

10, I 10,°Figura 5. Unamáquina para lasuma

Modelos de computación 703

0, I Tabla 3

f g

Entrada Entrada

Estado O 1 O 1

So SI S3 l O

SI SI S2 l J

S2 S3 S4 O O

S3 SI So O O

S4 S3 S4 O O

Inicio------+i

1, °Figura 3. Una máquina de estado finito.

A continuación presentamos algunos ejemplos útiles de máquinas de estado finito. LosEjemplos 5, 6 Y7 muestran que las máquinas de estado finito tienen capacidad de memoria limi-tada. Los estados se pueden utilizar para recordar las propiedades de los símbolos que ha leído lamáquina. Sin embargo, puesto que sólo hay un número finito de estados diferentes, las máquinasde estado finito no se pueden emplear para algunos propósitos importantes. Esto se mostrará en laSección 11.4.

Un elemento importante en muchos componentes electrónicos es la máquina eon una unidad dedesplazamiento (o retardo) que produce como salida la cadena de entrada retrasada una cantidadespecificada de tiempo. ¿Cómo puede construirse una máquina de estado [mito que retarde la emi-sión de una cadena de entrada en una unidad de tiempo, esto es, que produzca como salida la ca-dena de bits OXIX2 ... Xk.1 para la cadena de entrada XIX2 ..• xk?

Solución: La máquina se puede construir de modo que tenga dos entradas posibles, a saber, Oy l.Debe tener un estado inicial so' Puesto que la máquina tiene que recordar si la entrada previa hasido Oo 1, se necesitan otros dos estados SI y S2' tales que la máquina está en el estado SI si la en-trada anterior ha sido 1 y en el estado S2 en el otro caso. Se produce la salida Opara la transicióninicial desde so' Cada transición desde SI produce como salida 1 y cada transición desde S2 devuelveO.La salida correspondiente a la cadena de entrada XIX2 ... xk es la cadena que comienza con O,se-guida de xl' seguida de x2' .•. , y que finaliza con Xk.l• El diagrama de estados de esta máquina semuestra en la Figura 4. . .•••

Construye una máquina de estado [mito que sume dos enteros a partir de sus expresiones binarias.

Solución: Cuando se suman los enteros (xn ... XIXO)2 e (yn ... YIYO)2' se sigue el siguiente procedi-miento (descrito en la Sección 2.5). Primero, se suman los bits xoe Yo' dando lugar al bit suma Zo yal bit de arrastre eo' El arrastre puede ser Oo 1. Luego, se suman los bits XI e YIy también el bit dearrastre eo' dando lugar al bit suma Z I y al bit de arrastre e l' Este procedimiento continúa hasta el n-ésimo paso, cuando se suman los bits x" e Y"y también el bit de arrastre en_l, dando lugar al bitsuma zn y al bit de arrastre en' que es el bit suma zn+l' ~

Se puede llevar a cabo la suma anterior mediante una máquina de estado finito con sólo dosestados. Por simplicidad, suponemos que ambas cadenas tienen los bits xn e Y" iguales a O(en otro

Tabla 4

Entrada 1 O 1 O 1 J -

Estado So S3 SI S2 S3 So S3

Salida O O 1 O O O -

704 Matemática discreta y sus aplicaciones

caso, tendríamos que hacer consideraciones específicas relativas al bit suma 2n+I)' El estado inicial So

se utiliza para recordar que el arrastre previo es O (o para la suma de los términos situados más a laderecha). El otro estado, SI' se utiliza para recordar que el arrastre previo es l. Puesto que las en-tradas a la máquina son pares de bits, hay cuatro posibles entradas. Representamos estas cuatro po-sibilidades por 00 (cuando ambos bits son O), 01 (cuando el primer bit es Oy el segundo es 1), 10(cuando el primer bit es 1 y el segundo es O) y 11 (cuando ambos son 1). Las transiciones y las sa-lidas se construyen a partir de la suma de los dos bits representados por la entrada y el arrastre re-presentado por el estado. Por ejemplo, cuando la máquina está en el estado SI y recibe la entrada 01,el estado siguiente es SI y la salida es O, puesto que la suma que se lleva a cabo es O + 1 + 1 = (0)2'El diagrama de estado para esta máquina se muestra en la Figura 5. .•••

EJEMPLO 7 En cierto esquema de codificación, el receptor de un mensaje sabe que ha habido un error de trans-misión cuando aparecen tres unos consecutivos en un mensaje. Construye una máquina de estadofinito que devuelva un 1 como salida si, y sólo si, los últimos tres bits recibidos son todos 1.

Solución: En esta máquina se necesitan tres estados. El estado inicial So recuerda que la entrada an-terior, si existe, no era 1. El estado SI recuerda que la entrada anterior fue 1, pero que el valor pre-vio al anterior, si existe, no era 1. El estado S2 recuerda que las dos entradas previas han sido unos.Una entrada de 1 lleva So a SI' puesto que se ha leído un único 1 y no dos unos consecutivos. Si seleen dos unos consecutivos, se pasa del estado SI al S2' y lleva el estado S2 a sí mismo, puesto quese han leído al menos dos unos consecutivos. La entrada O lleva cualquier estado al estado so' pues-to que se interrumpe cualquier secuencia de unos. La salida de la transición de S2 a sí mismo cuan-do se lee un 1 es 1, puesto que esta combinación de entrada y estado muestra que han aparecidotres unos consecutivos. Las restantes salidas son O. El diagrama de estado para esta máquina semuestra en la Figura 6. •••

La máquina de la Figura 6 es un ejemplo de reconocedor de lenguajes, porque produce unasalida de 1 si, y sólo si, la cadena de entrada leída tiene una determinada propiedad. El reconoci-miento de lenguajes es una aplicación importante de las máquinas de estado finito.

TIPOS DE MÁQUINAS DE ESTADO FINITO Se han desarrollado muchos tipos de má-quinas de estado finito para modelar las calculadoras. En esta sección hemos dado una definiciónde un tipo de máquina de estado finito. En el tipo de máquina introducido en esta sección las sa-lidas corresponden a transiciones entre estados. Las máquinas de este tipo se llaman máquinasde Mealy porque fue G. H. Mealy, en 1955, el primero que las estudió. Hay otro tipo importantede máquina de estado finito con salida, donde la salida está determinada sólo por el estado. Estetipo de máquina se llama máquina de Moore en honor a E. F. Moore, quien la introdujo en1956. Las máquinas de Moore se consideran en una serie de problemas al final de la sección.

En el Ejemplo 7 mostramos cómo se puede utilizar una máquina de Mealy en el reconoci-miento de lenguajes. Sin embargo, hay otro tipo de máquinas de estado finito que no producen sa-lida y que se utilizan normalmente para este propósito. Las máquinas de estado finito sin salida,también llamadas autómatas de estado finito, tienen un conjunto final de estados y reconocen unacadena si, y sólo si, lleva el estado inicial a un estado final. Estudiaremos este tipo de máquinas deestado finito en la Sección 11.3.

1, 1

0,0

Figura 6. Una máquina de estado finito que devuelveun 1 si, y sólo si, la cadena de entrada leída contienetres unos consecutivos.

Modelosde computación 705

Problemas1. Dibujalos diagramas de estados para las máquinas de es-

tadofinito cuyas tablas de estados son las siguientes.

a)f g

Entrada EntradaEstado O 1 O 1

So SI So O l

SI So S2 O 1

S2 SI SI O O

b)f g

Entrada EntradaEstado O 1 O 1

So SI So O O

SI S2 So l 1

S2 So S3 O 1

S3 SI S2 1 O

e)f g

Entrada EntradaEstado O 1 O 1

So So S4 1 1

SI So S3 O 1

S2 So S2 O O

) S3 SI SI 1 1

S4 SI So 1 O

2. Halla las tablas de estados para las máquinas de estado fi-nito cuyos diagramas de estados son los siguientes.a)

Inicio

b) 1,0

Inicio

0,1

e)

1,0

Inicio l,1

3. Utilizando la máquina de estado finito del Ejemplo 2, de-termina la salida para cada una de estas cadenas de entrada.a) 0111 b) 11011011 e) 01010101010

4. Utilizando la máquina de estado finito del Ejemplo 3, de-termina la salida para cada una de estas cadenas de entrada.a) 0000 b) 101010 e) 11011100010

5. Construye una máquina de estado finito que modele unamáquina expendedora de bebidas que acepta monedas de5, 10 y 25 céntimos. La máquina acepta monedas hastaque se introducen 35 céntimos y devuelve cualquier can-tidad superior a 35 céntimos. Entonces, el cliente puedeapretar los botones y elegir una bebida de cola, una cer-veza o una tónica.

6. Construye una máquina de estado finito que modele unamáquina expendedora de periódicos que tiene una puertaque se abre después de que se haya introducido tres mo-nedas de 10 céntimos (y cualquier número de otras mone-das) o bien una moneda de 25 céntimos y una de 5 (ycualquier número de otras monedas). Una vez que la puer-ta se puede abrir, el cliente abre, toma el periódico y cierrala puerta. No se devuelve cambio en ningún caso, inde-pendientemente de la cantidad de dinero extra introducido.El siguiente cliente comienza sin crédito.

7. Construye una máquina de estado finito que retarde endos bits una cadena de entrada, dando 00 como los dosprimeros bits de la cadena de salida.

8. Construye una máquina de estado finito que cambie losbits altemadamente (un bit sí y uno no), comenzando porel segundo, de una cadena de entrada y deja los restantessin cambiar.

9. Construye una máquina de estado finito para el procedi-miento de acceder a un ordenador, en el que el usuariodebe introducir un número de identificación de usuario,que se considera una única entrada, y posteriormente, unaclave, que se considera una única entrada. Si la clave esincorrecta, el usuario debe introducir nuevamente su nú-mero de identificación.

10. Construye una máquina de estado finito para la combina-ción de una caja de seguridad que contiene números del Ial 40 y que abre sólo cuando se marca la combinacióncorrecta, 10 a la derecha, 8 dos veces a la izquierda y 37 ala derecha. Cada entrada es una tema que consta de unnúmero, la dirección del giro y el número de veces que \allave se gira en esa dirección.

706 Matemática discreta y sus aplicaciones

11. Construye una máquina de estado finito para una máquinacobradora de peajes que da paso después de que se hayanintroducido 25 céntimos en monedas de 5, 10 o 25 cénti-mos. No devuelve el dinero introducido de más y no haycrédito para el siguiente conductor aunque se hayan depo-sitado más de 25 céntimos.

12. Construye una máquina de estado finito que dé como sa-lida 1 si el número de símbolos de entrada hasta ese ins-tante es múltiplo de 3 y Oen otro caso.

13. Construye una máquina de estado finito que determine sila cadena de entrada leída hasta ese instante tiene un 1 enla última posición y un Oen la antepenúltima posición.

14. Construye una máquina de estado finito que determine sila cadena de entrada leída hasta ese instante contiene almenos cinco unos consecutivos.

15. Construye una máquina de estado finito que determine sise ha leído la palabra ordenador en los últimos 9 caracte-res de la entrada, siendo la entrada cualquier cadena de le-tras del alfabeto español.

Una máquina de Moore M = (S, l, OJ, g, so) consta de un con-junto finito de estados; un alfabeto de símbolos de entrada l unalfabeto de salida O; una función de transición/, que a cada parde estado y entrada le asigna el estado siguiente una función desalida g, que asigna una salida a cada estado, y un estado inicialso' Una máquina de Moore se puede representar bien por una ta-bla listando todas las transiciones para cada par de estado y en-trada y las salidas para cada estado o bien mediante un diagramade estados que muestra.losestados, las transiciones entre los es-tados y las salidas para~stado. En el diagrama, las transi-ciones se indican con flechas etiquetadas con la entrada corres-pondiente y las salidas se muestran a continuación de los estados.

16. Construye el diagrama de estados para la máquina de Moorecuya tabla de estados es

!Entrada

Estado O 1 g

So So S2 O

SI s) So 1

S2 S2 SI 1s) S2 So 1

17. Construye la tabla de estados para la máquina de Moorecuyo diagrama de estados se muestra a continuación. Cadacadena de entrada para una máquina de Moore produceuna cadena de salida. En particular, la salida correspon-diente a la entrada ala2 oo. ak es la cadena g(so)g(sl) oo.

g(Sk)' donde Si = !(Si_l' a) para i = 1,2, oo., k.

O

Inicio

18. Halla la cadena de salida generada por la máquina de Mooredel Problema 16 para cada una de las cadenas de entradasiguientes.a) 0101 b) 111111 e) 11101110111

19. Halla la cadena de salida generada por la máquina de Mooredel Problema 17 para cada una de las cadenas de entradadel Problema 18.

20. Construye una máquina de Moore que dé un 1 como sali-da cuando el número de símbolos leídos en la cadena deentrada hasta ese instante sea múltiplo de 4.

21. Construye una máquina de Moore que determine si unacadena de entrada contiene un número par o impar deunos. La máquina devolverá 1 cuando haya un número parde unos en la entrada y Oen caso contrario.

11.3 Máquinas de estado finito sin salida

INTRODUCCIÓN

Una de las aplicaciones más importantes de las máquinas de estado finito es el reconocimiento delenguajes. Esta aplicación desempeña un papel fundamental en el diseño y construcción de com-piladores para los lenguajes de programación. En la Sección 11.2 mostramos que se podía utilizaruna máquina de estado finito con salida para reconocer un lenguaje, produciendo la salida 1cuando leía una cadena del lenguaje y Oen caso contrario. Sin embargo, hay otros tipos de má-

Enlaces

Modelos de computación 707

quinas de estado finito que están especialmente diseñadas para el reconocimiento de lenguajes. Enlugar de producir una salida, estas máquinas tienen estados finales. Una cadena es reconocida porla máquina si, y sólo si, se produce una transición del estado inicial a uno de estos estados finales.

CONJUNTO DE CADENAS

Antes de centramos en las máquinas de estado finito sin salida, introduciremos algunos conceptosbásicos relativos a conjuntos de cadenas. Las operaciones que definiremos se usarán frecuente-mente en el reconocimiento de lenguajes mediante máquinas de estado finito.

DEFINICIÓN 1 Sean V un alfabeto y A YB subconjuntos de V'. La concatenación de A y B, que denotaremospor AB, es el conjunto de todas las cadenas de la forma xy, donde x es una cadena de A e y esuna cadena de B.

EJEMPLO 1 Sean A = {O,11} yB= {1, 10, 110}. HallalosconjuntosAB yBA.

')EJEMPL02

Solución: El conjunto AB contiene todas las cadenas obtenidas al concatenar una cadena de A conotra de B. De ahí queAB = {01, 010, 0110,111,1110, 1111O}. El conjuntoBA contiene todas lascadenas obtenidas al concatenar una cadena de B con otra de A. De ahí que BA = { 10, 111, 100,1011,1100,11011}. .•••

Observa que, como muestra el Ejemplo 1, no se tiene necesariamente queAB = BA para todoslos subconjuntos A y B de V*, donde Ves un alfabeto.

A la vista de la definición de concatenación de dos conjuntos de cadenas, tiene sentido defi-nir An , para n = 0, 1,2, .... Esto se puede hacer de modo recursivo, especificando que

Aü= {A},An+l = AnA para n = 0, 1,2, ...

Sea A = { 1, 00}. Halla los conjuntos A" para n = 0, 1, 2 Y3.

Solución: Tenemos que A o = {A} YAl = A o A = {A} A = {1, 00}. Para hallar A 2 concatenamos pa-rejas de elementos de A. Por tanto, A 2 = {11, 100, 001, OOOO}.Para obtener A 3 concatenamos lascadenas de A 2 con las cadenas de A. Por tanto, A 3 = {111, 1100, 1001, 10000, 0011, 00100,00001,000000}. .•••

DEFINICIÓN 2 Sea A un subconjunto de V'. Llamamos cierre o clausura de Kleene del conjunto A, y lo de-notamos por A", al conjunto que contiene cualquier concatenación de cadenas de A,.esto es,

A' = U;=oAk•

EJEMPLO 3 ¿Cuál es el cierre de Kleene de los conjuntos A = {O}, B = {0,1} YC = {11}?

Solución: Los elementos del cierre de A son la concatenación de la cadena °consigo misma un nú-mero finito, pero arbitrario, de veces. Por tanto, A" = [O" I n = 0, 1, 2, ... }. El cierre de Kleene de Bcontiene a todos los elementos que se forman concatenando un número arbitrario de veces las ca-denas °y 1. Éste es el conjunto de todas las cadenas sobre el alfabeto V = {O, 1}, esto es, B" = V".Por último, los elementos del cierre de Kleene de C se obtienen concatenando la cadena 11 consigomisma un número arbitrario de veces. Por tanto, C' es el conjunto de todas las cadenas constituidaspor un número par de unos. Esto es, C* = { 12n I n = 0, 1, 2, ... }. .•••

708 Matemática discreta y sus aplicaciones

AUTÓMAT AS FINITOS

A continuación damos una definición de máquina de estado finito sin salida. Estas máquinas tam-bién se llaman autómatas finitos, y ése es el término que utilizaremos de ahora en adelante parareferimos a ellas. Estas máquinas, a diferencia de las estudiadas en la Sección 11.2, no producensalida, pero tienen un conjunto de estados finales. Como veremos, estas máquinas reconocen ca-denas que transforman el estado inicial en un estado final.

DEFINICIÓN 3 Un autómata finito M = (S, l.], sO' F) consiste en un conjunto finito de estados S; un alfabe-to fuente 1, que contiene los símbolos de entrada; una función de transición j, que asigna acada par de estado y entrada el estado siguiente (esto es,f : S x 1 --7 S); un estado inicial so' yun subconjunto F de S de estados finales.

Podemos representar un autómata finito utilizando tanto los diagramas como las tablas de estados.En los diagramas de estados representaremos los estados finales rodeados por círculos dobles.

EJEMPLO 4 Construye el diagrama de estados del autómata finito M = (S, L], sO' F), donde S = {so' SI' S2' S3},1= {O, l}, F = {so' S3} y la función de transición f es la dada en la Tabla 1.

Solución: El diagrama de estados se muestra en la Figura 1. Observa que puesto que ambos datosde entrada, °y 1, transforman el estado S2 en so' escribimos una única arista dirigida de S2 a So conla etiqueta 0, 1. .•••

La función de transiciónf se puede extender de modo que esté definida para todos los paresde estado y cadena; esto es,f admite una extensión, que denotaremos igual,f: S x r --7 S. Sea x =XIX2 ••• xk una cadena de t.Entonces.j'(s., x) es el estado obtenido al tomar sucesivamente como

/\ entrada cada símbolo de la cadena x, de izquierda a derecha, comenzando por el estado SI· De SIU pasamos al estado S2 = f(sl' XI) y de ahí a S3 = f(S2' x2) y así sucesivamente, hasta que, fmalmente,

f(sl' x) =f(Sk' xk)·Se dice que una cadena x es aceptada o reconocida por el autómata M = (S, l.], sO' F) si

transforma el estado inicial So en algún estado final, esto es,f(so' x) es un estado de F. El lengua-je reconocido o aceptado por un autómata finito M, denotado por L(M), es el conjunto de todaslas cadenas reconocidas por M. Se dice que dos autómatas son equivalentes si ambos reconocenel mismo lenguaje.

EJEMPLO 5 Determina el lenguaje reconocido por los autómatas finitos MI' M2 YM3 de la Figura 2.

Solución: El único estado final de MI es so. Las cadenas que transforman el estado Soen sí mismoson la cadena vacía y cualquier cadena formada por unos. De aquí que L (MI) = {1"In = 0, 1, 2, ... }.

Enlaces

STEPHE COLE KLEE E (1909-1994) Stephen Kleene nació en Hartford, Connecticut. Su madre, Alice LenaCole, era poetisa, y su padre, Gustav Adolph Kleene, era profesor de economía. Kleene estudió en el Arnherst College y sedoctoró en Princeton en 1934, bajo la dirección del famoso Alonzo Church, especialista en lógica matemática. Kleene seincorporó como profesor a la Universidad de Wisconsin en 1935, donde permaneció salvo algunas estancias en otras ins-tituciones, entre ellas el Institute for Advanced Study en Princeton. Durante la Segunda Guerra Mundial fue instructor denavegación en la Escuela de Guardiamarinas de la Reserva Naval de Estados Unidos y posteriormente sirvió como direc-tor del Laboratorio de Investigación Naval. Kleene hizo contribuciones relevantes a la teoría de las funciones recursivas,investigando cuestiones relativas a la computabiLidad y la decidibilidad, y demostró uno de los resultados centrales de lateoría de autómatas. Fue director del Mathematics Research Center y decano del CoUege of Letters and Sciences, ambosde la Universidad de Wisconsin. Kleene se interesó toda su vida por las ciencias naturales. Descubrió una variedad no cla-sificada de mariposa a la que se le dio su nombre. Fue un montañero y escalador entusiasta. Kleene destacó también porsu talento a la hora de contar anécdotas, para lo que utilizaba su poderosa voz, que podía oírse a varios despachos de dis-tancia.

Modelos de computación 709

Tabla 1

fEntrada

Estado O 1

So So SI

SI So S2

S2 So So

S3 S2 SI

Inicio

I

Figura 1. El diagrama de estados para unautómata finito.

El único estado final de M2 es S2. Las únicas cadenas que transforman el estado So en S2 son 1y 01. Por tanto, L(M) = {1, 01}.

Los estados finales de M3 son So y S3. Las únicas cadenas que transforman el estado So en Soson A,0, 00, 000, ..., esto es, cualquier cadena con cero o más ceros consecutivos. Las únicas ca-denas que transforman el estado So en S3 son las cadenas que comienzan por cero o más ceros con-secutivos, seguidos de la cadena 10, seguidos de cualquier cadena. Por tanto, L(M3) = [O", onlOx In = 0, 1, 2, ... Yx es cualquier cadena}. .•••

Los autómatas finitos vistos hasta ahora son deterministas, puesto que la función de transi-ción asigna a cada par de estado y entrada un único estado siguiente. Hay otro tipo de autómata fi-nito que puede asignar varios posibles estados siguientes a cada pareja de entrada y estado. Talesmáquinas se llaman no deterministas. Los autómatas no deterministas son importantes para de-terminar qué lenguajes pueden ser reconocidos por un autómata.

o Inicio

MI

°0,1

Inicio

° °Inicio

0, l

Figura 2. Algunos autómatas finitos.

710 Matemática discreta y sus aplicaciones

DEFINICIÓN 4 Un autómata finito no determinista M = (S, L], so' F) consiste en un conjunto finito de esta-dos S, un alfabeto fuente 1que contiene los símbolos de entrada, una función de transición!que asigna un conjunto de estados a cada par de estado y entrada (esto es,f : S x 1 ~ P(S)),un estado inicial So y un subconjunto F de S formado por los estados finales.Enlaces

Podemos representar un autómata finito no determinista mediante tablas o diagramas de estados.Cuando utilizamos una tabla, para cada par de estado y entrada damos una lista con los estados si-guientes. En el diagrama de estados incluimos una arista orientada desde cada estado a todos losposibles estados siguientes, etiquetando las aristas con la entrada o entradas que definen esatransición.

EJEMPLO 6 Halla el diagrama de estados del autómata no determinista cuya tabla de estados se muestra en laTabla 2. Los estados finales son S2 y sr

Solución: El diagrama de estados para este autómata se muestra en la Figura 3.

EJEMPLO 7 Halla la tabla de estados del autómata no determinista cuyo diagrama de estados se muestra en laFigura 4.

Solución: La tabla de estados se da en la Tabla 3.

¿Qué significa que un autómata finito no determinista reconozca una cadena x = XIX2 ••• xk? Elprimer símbolo de entrada XI transforma el símbolo inicial So en un conjunto de estados SI' El si-guiente símbolo x2 transforma cada uno de los estados de SI en un conjunto de estados. Sea S2 launión de estos conjuntos. Continuamos el proceso incluyendo en cada paso todos los estados ob-tenidos al utilizar un estado obtenido en el paso previo y el símbolo de entrada en curso. Se diceque el autómata reconoce, o acepta, la cadena X si en el conjunto de todos los estados hay un es-tado final al que se llega desde So utilizando x. El lenguaje reconocido por un autómata no de-terminista es el conjunto de todas las cadenas reconocidas por este autómata.

EJEMPLO 8 Halla el lenguaje reconocido por el autómata no determinista de la Figura 4.

Solución: Puesto que So es un estado final, y hay una transición desde So a sí mismo cuando la en-trada es el símbolo O, la máquina reconoce todas las cadenas que constan de cero o más cerosconsecutivos. Además, puesto que S4 es un estado final, cualquier cadena de entrada tal que S4 estáen el conjunto de estados que pueden alcanzarse desde So con dicha cadena es una cadena reco-nocida por el lenguaje. Las únicas cadenas que verifican lo anterior constan de cero o más cerosconsecutivos seguidos por 01 o 11. Puesto que So y S4 son los únicos estados finales, el lenguaje re-conocido por la máquina es Ion, O'Ul , o-u I n ~ al. ...••

Tabla 2

fEntrada

Estado O 1

So so' SI S3

SI So SI' S3

S2 so' S2

S3 SO,SI,S2 SI Figura 3. El autómata finito no detenninistacuya tabla de estados se da en la Tabla 2.

o

TEOREMA 1

EJEMPLO 9

Modelos de computación 711

oTabla 3

fEntrada

Estado O 1

So so' S2 s,

s, S3 S4

S2 S4

S3 S3

S4 S3 S3

lnicio-----i

oo

Figura 4. Un autómata finito no determinista.

Un hecho importante es que el lenguaje reconocido por un autómata no determinista tambiénes reconocido por un autómata determinista. Usaremos este hecho en la siguiente sección cuandodeterminemos qué lenguajes son reconocidos por los autómatas finitos.

Si el lenguaje L es reconocido por un autómata flnito no determinista Mo' entonces L tambiénes reconocido por un autómata finito determinista M,.

Demostración: Describiremos cómo construir el autómata finito determinista MI que reconoce aLa partir de Mo' el autómata no determinista que reconoce a este lenguaje. Cada estado de MI estaráconstituido por un conjunto de estados de Mo' El símbolo inicial de MI es {so}, el conjunto que con-tiene al estado inicial de Mo' El alfabeto fuente de MI es el mismo que el de Mo' Dado un estado {SiSi' ... , Si } de MI' el símbolo de entrada x transforma este estado en el conjunto unión de los estadossiguient~s de los elementos de este conjunto, esto es, la unión de los conjuntosf(s. ),f(s.), ... ,f(s. ).

')'2 '~Los estados de MI son todos los subconjuntos del conjunto S de los estados de Mo que se obtienen oeesta manera partiendo de so' (En principio, la máquina determinista puede tener hasta 2n estados, sien-do n el número de estados de la máquina no determinista, puesto que todos los subconjuntos puedenser estados, incluyendo el conjunto vacío; sin embargo, usualmente aparecen muchos menos esta-dos). Los estados finales de MI son aquellos conjuntos que contienen un estado [mal de Mo'

Supongamos que una cadena de entrada es reconocida por Mo' Entonces uno de los estadosque se puede alcanzar desde Soutilizando esta cadena de entrada es un estado final (el lector pue-de demostrarlo por inducción). Esto significa que en MI esta cadena de entrada transforma {so}enun conjunto de estados de Mo que contiene un estado final. Este subconjunto es un estado final deMI' así que esta cadena también es aceptada por MI' Además, una cadena de entrada que no seaaceptada por Mo no lleva a ningún estado final de Mo' (El lector debería completar los detalles querestan para justificar esta afirmación). En consecuencia, esta cadena de entrada no transforma laconfiguraciónl s.} en un estado final de MI' <J

Halla un autómata determinista que reconozca el mismo lenguaje que el autómata no determinis-ta del Ejemplo 7.

Solución: El autómata determinista que se muestra en la Figura 5 se construye a partir del autó-mata no determinista del Ejemplo 7. Los estados del autómata determinista son subconjuntos delconjunto de todos los estados de la máquina no determinista. El siguiente estado de un subconjuntoy un símbolo de entrada es el subconjunto que contiene los estados siguientes en el autómata nodeterminista de todos los elementos de este subconjunto. Por ejemplo, para la entrada O, {so}setransforma en {so' S2}' puesto que Sotiene transiciones a sí mismo y a S2en la máquina no deter-mini sta; la entrada 1 transforma el conjunto {so' S2} en {SI' S4}, puesto que en la máquina no de-terminista Sose transforma en sI y S2se transforma en S4 cuando la entrada es 1, y el conjunto {sl' S4 }

va a {S3} cuando la entrada es O,puesto que SIYs4 ambos se transforma en S3cuando la entrada es Oen la máquina no determinista. Todos los subconjuntos obtenidos de este modo se incluyen entre

712 Matemática discreta y sus aplicaciones

~--------~~

O

Inici

1--------"------~8Figura S. Un autómata detenninista equivalente al autómata nodetenninista del Ejemplo 7.

los estados de la máquina determinista. Observa que el conjunto vacío es uno de los estados de estamáquina, puesto que es el subconjunto que contiene todos los estados siguientes a {S3 Icon entrada l.El estado inicial es {sol y el conjunto de todos los estados finales está formado por todos aquellosque incluyen a So o a S4. .•••

Problemas1. Sean A = {O, II} Y B = {OO,al}. Halla cada uno de es-

tos conjuntos.a) AE\b) BA e) N d)B3

2. Dem~esnJ que si A es un conjunto de cadenas, entoncesA0 = 0A = 0.

3. Halla todos los pares de conjuntos de cadenas A y Bpara los queAB = {la, 111,1010,1000,10111,IOIOOO}.

4. Demuestra que son ciertas las igualdades siguientes.a) {Al' = {A}b) (A")" = A' para todo conjunto de cadenas A.

5. Describe los elementos del conjunto A' para los valoresde A siguientes:a) {lO} b) {Ill} e) {0,01} d) {1,101}

6. Sea V un alfabeto y sean A y B subconjuntos de V'. De-muestra que IABI:s lA IIBI.

7. Sea V un alfabeto y sean A y B subconjuntos de V', conA sB. Demuestra que A' s B'.

8. Supongamos que A es un subconjunto de V*donde Vesun alfabeto. Justifica si son verdaderas o falsas las si-guientes afirmaciones.a) A sNb) Si A = N, entonces AE Ae) A{A} =Ad) (A'r = A'e)A'A=A't) IA"I= IAI"

9. Determina si la cadena 1110 I está o no en cada uno deestos conjuntos:a) {O, Ir b) {l}*10}*llr

e) {111I1}*IOI}e) {111 }*IOn I}

d) {II no I l't) {lll,OOOIlOO,OI}

10. Determina si cada una de las cadenas siguientes es reco-nocida o no por el autómata detenninista de la Figura l.a) Ola b) 1101 e) 1111110 d) 010101010

11. Determina si todas las cadenas de cada uno de los si-guientes conjuntos son reconocidas o no por el autóma-ta detenninista de la Figura l.a) {al' b) {aliar e) {lila}'d) roi r e) rorur t) {lila, Ir

En los Problemas 12-16, halla el lenguaje reconocido por el au-tómata detenninista dado.

12.

O

O. l

O

14.

O. l

Modelosde computación 713

15.

0,10,1

21. oo

16.oo

o

22. Halla un autómata determinista que reconozca el mismolenguaje que el autómata no determinista del Problema 17.

23. Halla un autómata determinista que reconozca el mismolenguaje que el autómata no determinista del Problema 18.

24. Halla un autómata determinista que reconozca el mismolenguaje que el autómata no determinista del Problema 19.

25. Halla un autómata determinista que reconozca el mismolenguaje que el autómata no determinista del Problema 20.

26. Halla un autómata determinista que reconozca el mismolenguaje que el autómata no determinista del Problema 21.

27. Halla un autómata determinista que reconozca cada unode los conjuntosa) {O} b) {1,OO} e) {ln¡n=2,3,4, ... }

En los Problemas 17-21, halla el lenguaje reconocido por el au-tómata no determinista dado.

17.

o

()19. o 28. Halla un autómata no determinista que reconozca cada

uno de los lenguajes del Problema 27 y tenga menosestados, si es posible, que el autómata determinista pro-puesto en ese problema.

*29. Demuestra que no hay ningún autómata finito que reco-nozca el conjunto de cadenas de bits que contienen igualnúmero de ceros que de unos.o

11.4 Reconocimiento de lenguajes

INTRODUCCIÓN

Hemos visto que los autómatas finitos se pueden utilizar para reconocer lenguajes. ¿Qué conjun-tos pueden reconocer estas máquinas? Aunque esto parece un problema muy difícil, hay una ca-racterización muy sencilla de los conjuntos aceptados por un autómata finito. Este problema lo re-solvió en 1956 el matemático estadounidense Stephen Kleene. Demostró que hay un autómatafinito que reconoce un conjunto si, y sólo si, este conjunto se puede construir a partir del conjun-to vacío, la cadena vacía y cadenas de un símbolo haciendo uso de los operadores de unión, con-catenación y cierre de Kleene, tomados en orden arbitrario. Los conjuntos que se pueden construirde este modo se llaman conjuntos regulares.

Las gramáticas regulares se definieron en la Sección 11.1. Considerando la terminología uti-lizada, no debe sorprender que exista una relación entre conjuntos regulares, que son los conjun-tos reconocidos por los autómatas finitos, y las gramáticas regulares. En particular, un conjunto esregular si, y sólo si, está generado por una gramática regular.

Finalmente, hay conjuntos que no pueden ser reconocidos por ningún autómata finito. Da-remos un ejemplo de este tipo de conjuntos. Al final de la sección estudiaremos brevementeotros modelos de computación más potentes, como los autómatas a pila y las máquinas de Turing.

714 Matemática discreta y sus aplicaciones

CONJUNTOS REGULARESLos conjuntos regulares son aquellos que se pueden construirutilizando las operacionesde concatenación,unión y cierre de Kleene, en un orden arbitrario, a partir del conjunto vacío, la cadena vacía y los con-juntos unitarios.Veremos que los conjuntos regulares son aquellos que se pueden reconocer utilizandoau-tómatas finitos. Para definir los conjuntos regulares necesitamos definir las expresiones regulares.

Las expresiones regulares sobre un conjunto 1 se definen recursivamente por:

el símbolo 0 es una expresión regular;el símbolo t.. es una expresión regular;el símbolo x es una expresión regular si x E 1;los símbolos (AB), (A U B) YA' son expresiones regulares si A y B son expresiones re-

gulares.

DEFINICIÓN 1

Cada expresión regular representa un conjunto determinado por estas reglas:

o representa al conjunto vacío, esto es, el conjunto sin cadenas;t.. representa al conjunto {t..}, que es el conjunto que contiene a la cadena vacía;x representa al conjunto {x}, que contiene la cadena formada únicamente por el símbolo x;(AB) representa a la concatenación de los conjuntos representados por A y B;(A U B) representa a la unión de los conjuntos representados por A y B;A' representa el cierre de Kleene del conjunto representado por A.

Oosconjuntos representados por expresiones regulares se llaman conjuntos regulares. De ahí queas expresiones regulares se utilicen para describir conjuntos regulares. Así, cuando hagamos re-

ferencia al conjunto regular A, estaremos refrriéndonos al conjunto de las expresiones regulares re-presentadas por la expresión regular A. El siguiente ejemplo muestra cómo se usan las expresionesregulares para especificar conjuntos regulares.

EJEMPLO 1 ¿Cuáles son las cadenas de los conjuntos regulares representados por las expresiones regulares lO',(10)*, O U 01,0(0 U 1)* Y (0'1)*7

Solución: Los conjuntos regulares representados por estas expresiones se muestran en la Tabla 1,como el lector podrá comprobar. .•••

TEOREMA DE KLEENEEn 1956, Kleene demostró que los conjuntos regulares son los conjuntos aceptados por un autó-mata finito. Por ello, este importante resultado se llama Teorema de Kleene.

TEOREMA 1 TEOREMA DE KLEENE Un conjunto es regular si, y sólo si, es reconocido por un au-tómata finito.

EnlacesEl teorema de Kleene es uno de los resultados centrales de la teoría de autómatas. Demostraremosla condición necesaria de este teorema, es decir, que todo conjunto regular es reconocido por unautómata finito. La condición suficiente, esto es, que un conjunto reconocido por un autómata esregular, se deja como ejercicio para el lector.

Demostración: Recordamos que un conjunto regular está definido en términos de expresiones re-gulares que se han definido recursivamente. Podemos demostrar que todo conjunto regular es re-conocido por un autómata mediante inducción estructural, esto es, realizando las siguientes de-mostraciones básicas.

Modelosdecomputación715

Tabla 1

Expresión Cadenas

10* un l seguido por cualquier número de ceros (incluyendo ningún O)(10)* cualquier número de copias de 10 (incluyendo la cadena nula)OUOl la cadena Oo la cadena 010(0 U 1)* cualquier cadena que comience por O(0*1)* cualquier cadena que no termine por O

l. Demostrar que 0 es reconocido por un autómata finito.2. Demostrar que {A} es reconocido por un autómata finito.3. Demostrar que {a} es reconocido por un autómata finito para todo símbolo a de l.4. Demostrar que AB es reconocido por un autómata finito si A y B lo son.5. Demostrar que A U B es reconocido por un autómata finito si A y B lo son.6. Demostrar que A' es reconocido por un autómata finito si A lo es.

Ahora consideramos cada una de las tareas anteriores. Primero, demostramos que 0 es reconocidopor un autómata no determinista. Para ello, necesitamos un autómata sin estados finales. Tal au-tómata se muestra en la Figura l(a).

En segundo lugar, demostramos que {A} es reconocido por un autómata finito. Para ello, todolo que necesitamos es un autómata que reconozca a A, la cadena vacía, y a ninguna otra cadena.Esto se puede hacer sin más que imponer que el estado inicial So sea un estado final y que el au-tómata no tenga transiciones, de manera que no haya ninguna otra cadena que transforme So en unestado final. El autómata finito no determinista de la Figura l(b) muestra esa máquina.

En tercer lugar, demostramos que {a} es reconocido por un autómata no determinista. Paraello, podemos usar una máquina con un estado inicial So y un estado [mal SI' Hay una transición delestado So al estado SI si la entrada es a y no hay otras transiciones. La única cadena reconocida poresta máquina es a. Esta máquina se muestra en la Figura l(c).

Seguidamente, demostramos que AB y A U B son conjuntos reconocidos por un autómatafinito si A y B son lenguajes reconocidos por el autómata. Supongamos que A es reconocido porMA = (SA' IJA, SA' FA) y B es reconocido por MB = (SB' IJR' SB' FB)·

Comenzamos construyendo una máquina de estado finito MAB= (SAB' IJAB, SAB' F AB) que re-conoce el lenguaje AB, la concatenación de A y B. Construimos esa máquina combinando en serielas máquinas para A y B, de modo que una cadena de A transforma, en la nueva máquina MAB' elestado inicial SA de MA en el estado inicial SB de MB• Una cadena de B transformaría, en la máqui-na MAB' el estado SB en un estado final de MAB• Por tanto, realizamos la siguiente construcción. SeaS AB = SA U Ss- El estado inicial sAB de MAB es SA' El conjunto de estados [males, F AB ,es el conjuntode estados [males de MB' incluyendo sAB si, y sólo si, A E A n B. Además, si A E B también son es-tados [males de F AB los estados [males de M A' Las transiciones de M AB son todas las transiciones deMA y de MB' así como otras transiciones de nueva creación. Para cada transición de MA que trans-forma un estado en un estado final, creamos una transición en MAB desde ese mismo estado hastaSB' con los mismos datos de entrada. Además, si A E A, entonces para cada transición que parta deSB construimos una transición en MAB desde SAB que llega al mismo estado. De este modo, una ca-dena de A transforma el estado SAB en SB en M AB y, posteriormente, una cadena de B transforma SB

en un estado final de MAB. La Figura 2(a) muestra un esquema de esta construcción.Construimos una máquina MAUB = (SAUB' IJAUB' SAUB,FAUB) que reconoce a A U B. Este au-

tómata se puede construir combinando MA y MB en paralelo, utilizando un nuevo estado inicial cu-yos estados siguientes son los estados siguientes a SA y SB' Sea SAUB = SA U SB U {SAUB}, donde

Inici0-8 lnicio-® Inicio~

Figura 1. Autómatas finitos no deterministas que reconocen algunos conjuntos básicos.

716 Matemática discreta y sus aplicaciones

SAUB es un nuevo estado, que es el estado inicial de MAUB' Definimos el conjunto de estados finales,como FAUB = FA U FB U {SAUB} si le E A U B YFA U FB en otro caso. El conjunto de las transicionesde MAUB contiene las transiciones de la máquina MA y las de MB. Además, por cada transición en MAdesde SA a un estado s para una entrada i, incluimos una transición en MAUB desde SAUB hasta s parael mismo dato de entrada i, y para cada transición en MB desde SB a un estado s para una entrada i, in-cluimos una transición en MAUB desde SAUB hasta s para el mismo dato de entrada i. De este modo,una cadena de A en MAUB transforma el estado SAUB en un estado final y una cadena de B transformael estado SAUB en un estado final. La Figura 2(b) ilustra la construcción de MAUB'

Finalmente, construimos MA• = (SA" ¡,fA*' SA' FA')' una máquina que reconoce a A', el cierrede Kleen de A. Sea SA' el conjunto que contiene a todos los estados de SA junto con un estado adi-cional SA" que es el estado inicial de la nueva máquina. El conjunto de estados finales FA' incluyelos estados finales de FA' así como el estado inicial SA*' ya que le debe ser reconocida. Para poderreconocer las concatenaciones de un número arbitrario de cadenas de A, incluimos todas lastransiciones de MA• Además, por cada transición en MA desde SA a un estado s para una entrada i,incluimos una transición en MA* desde SA* hasta s para el mismo dato de entrada i, y una transicióndesde cada estado final hasta s para el mismo dato de entrada i. Con este conjunto de transiciones,una cadena formada por concatenaciones de cadenas de A transformará el estado SA* en un estadofinal tras leer la primera cadena de A, volverá a un estado final tras leer la segunda cadena de A yasí sucesivamente. La Figura 2(c) ilustra la construcción realizada. <J

(a) La transición a un estado final de MA produce una transición a sB'

La transición desde sB en MB produce una transición desde SAB = sk

El estado inicial sAB = sA' que es final si sA Y sB son finales. Los estados finales incluyen todos los estados finales de M B'

(b)

Los estados finales incluyen todos los estados finales de MA y MB.

SAUB es el nuevo estado inicial, que es final si sA o sB son finales.

(e) Las transiciones desde SA producen transiciones desde sA' Y todos los estados finales de MA-

SA' es el nuevo estado inicial, que es un estado final. Los estados finales incluyen todos los estados finales de M A-

Figura 2. Construcción de un autómata que reconoce concatenaciones, uniones y cierres de Kleene.

Modelos de computación 717

Se puede construir un autómata no deterrninista para cualquier conjunto regular utilizando elprocedimiento descrito en esta demostración. Ilustramos cómo hacerlo en el Ejemplo 2.

EJEMPLO 2 Construye un autómata no deterrninista que reconozca al conjunto regular 1* U 01.

Solución: Comenzamos construyendo una máquina que reconozca a 1*. Esto se hace utilizando lamáquina que reconoce al conjunto 1 y la construcción de MA* descrita en la demostración. Seguida-mente, construimos una máquina que reconozca a 01, utilizando máquinas que reconozcan a Oy a I,junto con la construcción de M

ABdada en la demostración. Finalmente, utilizaremos la construcción

realizada para MAUB

en la construcción de la máquina para 1* U 01. El proceso de construcción semuestra en la Figura 3. Los estados en las sucesivas máquinas se han etiquetado utilizando distintos

Inicio ~---< ••..,U

Conjunto reconocido(a)

Inicio 1*

o

o

01Inicio

oo I*UOlInicio

o o

Inicio

I*UOl(b)

Figura 3. Autómata no determinista que reconoce al * U 01.

718 Matemática discreta y sus aplicaciones

subíndices, incluso cuando un estado se forma a partir de uno usado previamente en otra máquina.Obsérvese que la construcción dada no produce la máquina más simple que reconoce a 1* U 01. Enla Figura 3(b) se muestra una máquina más sencilla que reconoce a este conjunto. .•••

CONJUNTOS REGULARES Y GRAMÁTICAS REGULARES

En la Sección 11.1 introdujimos las gramáticas con estructura de frase y definimos distintos tiposde gramáticas. En particular, definimos las gramátioas regulares o de tipo 3, que son gramáticasG = (V, T, S, P), donde cada producción es de la forma S ~ A, A ~ a o A ~ aB, siendo a un sím-bolo terminal y A YB símbolos no terminales. Tal y como sugiere la terminología, hay una rela-ción muy estrecha entre gramáticas regulares y conjuntos regulares.

TEOREMA 2 Un conjunto está generado por una gramática regular si, y sólo si, es un conjunto regular.

Demostración: Primero demostramos que un conjunto generado por una gramática regular es unconjunto regular. Supongamos que G = (V, T, S, P) es una gramática regular que genera el con-junto L(G). Para demostrar que L(G) es regular, por el Teorema de Kleene, basta con construir unamáquina no determinista M = (S, I,f, so' F) que reconozca a L(G). Definimos S, el conjunto de es-tados, del siguiente modo: por cada símbolo no terminal A de G consideramos un estado sA y parael símbolo inicial S consideramos el estado inicial so. Además, añadimos un estado adicional sF'que es un estado final. El conjunto I del alfabeto fuente será el de los símbolos terminales de G,esto es, I = T. Las transiciones de M se forman a partir de las producciones de G del modo si-guiente. Hay una transición que transforma el estado SA en SF con la entrada a si A ~ a es unaproducción de G; hay una transición que transforma el estado SA en SB con la entrada a si A ~ aBes una producción de G. El conjunto de estados finales F, que incluye al estado sF' incluye a So

si S ~ A es una producción de G. No es difícil comprobar que el lenguaje reconocido por M es

O el lenguaje generado por la gramática G, esto es, L(M) = L(G). Esto se puede hacer determi-nando las palabras que transforman el estado inicial en un estado final. Los detalles se dejancomo ejercicio para el lector. <J

Antes de demostrar el recíproco, ilustramos cómo se construye una máquina no determinis-ta que reconoce al mismo conjunto que una gramática regular.

EJEMPLO 3 Construye un autómata no determinista que reconozca el lenguaje generado por la gramáticaregular G = (V, T, S, P), donde V = 10, 1, A, SJ, T = 10,1}, Ylas producciones de P son S ~ lA,S ~ 0, S ~ A, A ~ OA, A ~ lA YA ~ 1.

Solución: El diagrama de estados para el autómata no determinista que reconoce a L(G) semuestra en la Figura 4. Este autómata se construye siguiendo el procedimiento descrito en la de-mostración. En este autómata el estado asociado a S es so' SI es el estado asociado a A y S2 es el es-tado final. .•••

Pasamos a completar la demostración del Teorema 2.

Demostración: Vamos a demostrar que si un conjunto es regular, entonces hay una gramática re-gular que lo genera. Supongamos que M es una máquina de estado finito que reconoce al conjun-to con la propiedad de que so' el estado inicial de M, nunca es el estado siguiente de ninguna tran-sición. (Esto no supone ninguna restricción; en el Problema 14 se muestra cómo obtener esamáquina). La gramática G = (V, T, S, P) se define como sigue. El conjunto V de símbolos de G seconstruye asignando un símbolo a cada estado de S y cada símbolo de entrada de l. El conjunto Tde símbolos terminales de G es el de los símbolos formados a partir de los símbolos de entrada de 1.El símbolo inicial S es el símbolo formado a partir del estado inicial so. El conjunto P de produc-ciones de G está formado a partir de las transiciones de M. En particular, si el estado s se trans-forma en el estado final para la entrada a, entonces se incorpora a P la producción As ~ a, donde

Modelos de computación 719

0,1

°

Figura 4. Un autómata finito nodeterrninista que reconoce a L(G).

Figura S. Un autómata finito.

As es el símbolo no terminal formado a partir del estado s. Si el estado s va al estado t cuando re-cibe la entrada a, entonces se incluye en P la producción As ~aA¡" La producción S ~ A se añadea P si, y sólo si, A E L(M). Puesto que las producciones de G se corresponden con las transicionesde M y las producciones que llegan a elementos terminales son aquellas que están asociadas a lastransiciones que llegan a un estado final, no es difícil ver que L(G) = L(M). Dejamos los detallescomo ejercicio para el lector. <J

El Ejemplo 4 ilustra cómo construir una gramática que genere el lenguaje reconocido por unautómata.

EJEMPLO 4 Halla una gramática regular que genere el conjunto regular reconocido por el autómata de la Figura 5.

Solución: La gramática G = (V, T, S, P) genera el conjunto reconocido por este autómata, dondeV = {S, A, B, O, l}; los símbolos S, A Y B se corresponden con los estados so' s, y S2' respectiva-mente; S es el símbolo inicial; T = {O, l}, Y las producciones son S ~ OA, S ~ lB, S ~ 1, S ~ A,A ~ OA, A ~ lB, A ~ 1, B ~ OA, B ~ lB Y B ~ 1. .•••

UN CONJUNTO NO RECONOCIDO POR UN AUTÓMATA FINITO

Hemos visto que un conjunto es reconocido por un autómata finito si, y sólo si, es regular. De-mostraremos a continuación que hay conjuntos que no son regulares dando un ejemplo. La técni-ca utilizada para justificar que este conjunto no es regular ilustra un importante método para de-mostrar que ciertos conjuntos no son regulares.

EJEMPLO 5 Demuestra que el conjunto {onln 1 n = O, 1,2, ... } de todas las palabras formadas por cadenas deceros seguidas por cadenas de unos de igual longitud no es regular.

Solución: Supongamos que el conjunto es regular. Entonces habría un autómata finito deterrninistaM = (S, l,f, so' F) que lo reconoce. Sea N el número de estados de la máquina, esto es, N = ISI. Pues-to que M reconoce todas las cadenas construidas con un bloque de ceros seguido por un bloque conigual número de unos, M debe reconocer a QNlN. Sea so' s" S2' '00' S2Nla sucesión de estados que seobtienen comenzando en So y utilizando los símbolos de ONlN como entrada, esto es, s, =!(so' O), S2=!(s" O), oo., SN=!(SN_" O), SN+' =!(SN' 1), oo., S2N=!(S2N_" 1). Obsérvese que S2Nes un estado final.

Puesto que hay sólo N estados, según el principio del palomar, dos de los N + 1 primeros estados,que son so' sI' S2' oo., SN' deben ser iguales. Sean Si y s. esos dos estados idénticos, con O si <i s N.Esto significa que j(Si' (Y) = s; donde t = i - j. Entonces~ hay un bucle de Si en sí mismo obtenido al uti-lizar la entrada O un total d~ t veces, como se ilustra en el diagrama de estados de la Figura 6.

Ahora consideremos la cadena de entrada ONOtlN = ON+tl N. El número de ceros consecutivosque hayal inicio de este bloque excede en t al número de unos consecutivos que les siguen. Puestoque esta cadena no es de la forma O" l" (ya que hay más ceros que unos), M no la reconoce. Por

Modelos de computación 719

O, l

o

Figura 4. Un autómata finito nodeterminista que reconoce a L(C).

Figura 5. Un autómata finito.

As es el símbolo no terminal formado a partir del estado s. Si el estado s va al estado t cuando re-cibe la entrada a, entonces se incluye en P la producción As -7 aA( La producción S -7 A se añadea P si, y sólo si, A E L(M). Puesto que las producciones de G se corresponden con las transicionesde M y las producciones que llegan a elementos terminales son aquellas que están asociadas a lastransiciones que llegan a un estado final, no es difícil ver que L(G) = L(M). Dejamos los detallescomo ejercicio para el lector. <J

El Ejemplo 4 ilustra cómo construir una gramática que genere el lenguaje reconocido por unautómata.

EJEMPLO 4 Halla una gramática regular que genere el conjunto regular reconocido por el autómata de la Figura 5.

oSolución: La gramática G = (V, T, S, P) genera el conjunto reconocido por este autómata, dondeV = {S, A, B, O, 1}; los símbolos S, A YB se corresponden con los estados so' SI y S2' respectiva-mente; S es el símbolo inicial; T = {O, l}, Ylas producciones son S -7 OA, S -7 1B, S -7 1, S -7 A,A -7 OA, A -7 lB, A -7 1, B -7 OA, B -7 lB Y B -71. .•••

UN CONJUNTO NO RECONOCIDO POR UN AUTÓMATA FINITO

Hemos visto que un conjunto es reconocido por un autómata finito si, y sólo si, es regular. De-mostraremos a continuación que hay conjuntos que no son regulares dando un ejemplo. La técni-ca utilizada para justificar que este conjunto no es regular ilustra un importante método para de-mostrar que ciertos conjuntos no son regulares.

EJEMPLO S Demuestra que el conjunto {on1n 1 n = O, 1,2, ... }de todas las palabras formadas por cadenas deceros seguidas por cadenas de unos de igual longitud no es regular.

Solución: Supongamos que el conjunto es regular. Entonces habría un autómata fmito deterministaM = (S, 1,1, so' F) que lo reconoce. Sea N el número de estados de la máquina, esto es, N = ISI. Pues-to que M reconoce todas las cadenas construidas con un bloque de ceros seguido por un bloque conigual número de unos, M debe reconocer a OV1 N. Sea so' SI' S2' ... , S2N la sucesión de estados que seobtienen comenzando en So y utilizando los símbolos de ON1N como entrada, esto es, SI =f(so' O), S2

=f(sl' O), ... , sN=f(SN_I' O), SN+I =f(SN' 1), ..., s2N=f(S2N_I' 1). Obsérvese que S2N es un estado final.Puesto que hay sólo N estados, según el principio del palomar, dos de los N + 1 primeros estados,

que son so' sI' S2' ... , SN' deben ser iguales. Sean Si y s. esos dos estados idénticos, con O s i <i s N.Esto significa que f(si' CY)= s, donde t = i - j. Entonces~hay un bucle de Si en sí mismo obtenido al uti-lizar la entrada O un total d~ t veces, como se ilustra en el diagrama de estados de la Figura 6.

Ahora consideremos la cadena de entrada ONOt1N = ON+t1 N. El número de ceros consecutivosque hayal inicio de este bloque excede en t al número de unos consecutivos que les siguen. Puestoque esta cadena no es de la forma 0"1" (ya que hay más ceros que unos), M no la reconoce. Por

720 Matemática discreta y sus aplicaciones

Enlaces

D

Enlaces

o o

~~oInicio~~v-------v------- ••• ~..~ ...~

Figura 6. El camino producido por ()NIN•

tanto,f(so' ON+tl N) no puede ser un estado final. Sin embargo, cuando utilizamos como entrada lacadena ON + 11N, acabamos en el mismo estado que antes, a saber, S2N' Esto se debe a que los t cerosadicionales de esta cadena hacen que recorramos el bucle de Si en sí mismo una vez más, como seve en la Figura 6. Por tanto, el resto de la cadena nos lleva exactamente al mismo estado que antes.Esta contradicción demuestra que {O"l ni n = O, 1,2, ... } no es regular. .•••

TIPOS DE MÁQUINAS MÁS POTENTES

Los autómatas finitos no son capaces de realizar muchas operaciones. La principal limitación de es-tas máquinas radica en su capacidad de memoria finita. Esto impide que reconozcan lenguajesque no son regulares, como, por ejemplo, {0"1" I n = O, 1,2, ... }. Puesto que un conjunto es regularsi, y sólo si, es el lenguaje generado por una gramática regular, el Ejemplo 5 demuestra que no hayuna gramática regular que genere el conjunto {0"1ni n = O, 1,2, ... }. Sin embargo, hay una gramáticalibre de contexto que sí lo genera. Dicha gramática fue descrita en el Ejemplo 5 de la Sección 11.1.

Debido a las limitaciones de las máquinas de estado finito, es necesario emplear otros mo-delos de computación más potentes. Uno de tales modelos es el autómata a pila. Un autómata apila incluye todos los elementos de un autómata fmito, además de una pila que le proporciona una

ALAN MATHISON TURING (1912-1954) Alan Turing nació en Londres, aunque fue concebido en la India, donde supadre estaba empleado por el Indian Civil Service. Cuando era niño, fascinado por la química, llevó a cabo una gran va-riedad de experimentos. En aquella época también se interesaba por la maquinaria. Turing asistió a Sherborne, un internadoinglés. En 1931 consiguió una beca para estudiar en el King's College de Cambridge. Tras defender su tesis doctoral, queincluía un redescubrimiento del teorema central del límite, un famoso teorema de la estadística, fue elegido miembro per-manente del King's College. En 1935, Turing estaba fascinado por el problema de la decisión, un problema planteado porel gran matemático alemán Hilbert, y que pregunta por la existencia de un método general que se pueda aplicar a cualquierafirmación para determinar si la afirmación es o no verdadera. Turing disfrutaba corriendo (más adelante se dedicaría se-riamente a la competición como aficionado) y un día, mientras descansaba tras una carrera, descubrió las ideas crucialespara resolver el problema de la decisión. Como parte de su solución, inventó lo que hoy día llamamos máquinas de Tu-ring, como el modelo más general de una máquina de cálculo. Haciendo uso de estas máquinas, encontró un problema dedecisión relacionado con lo que él llamó números computables, que no podía resolverse por medio de ningún métodogeneral.

Turing visitó la Universidad de Princeton de 1936 a 1938 para trabajar con Alonzo Church, quien había resuelto tam-bién el problema de la decisión de Hilbert. En 1939, Turing regresó al King's College. Al comenzar la Segunda GuerraMundial, se incorporó al Foreign Office, donde realizaba el criptoanálisis de los códigos secretos alemanes. Su contribu-ción a la ruptura del código de la Enigma, un dispositivo mecánico de cifrado del ejército alemán, contribuyó en gran me-dida a ganar la guerra.

Después de la guerra, Turing trabajó en el desarrollo de los primeros ordenadores. Estaba interesado en la capacidadde pensar de las máquinas, proponiendo que si no se podía distinguir a un ordenador de una persona basándose en res-puestas por escrito a preguntas, debería considerarse que la máquina «pensaba». También estaba interesado en la biología,con trabajos sobre la morfogénesis, el desarrollo de la forma en los organismos. Turing se suicidó en 1954 por ingestión decianuro sin dejar ninguna explicación clara. Sus problemas legales debido a una relación homosexual y los tratamientoshormonales que le impusieron los tribunales de justicia a fin de corregir sus inclinaciones sexuales pudieron ser factores im-portantes en su decisión de acabar con su vida.

Modelos de computación 721

memoria ilimitada. Los símbolos se pueden colocar o eliminar de la cima de la pila. Un autómataa pila puede reconocer un conjunto de dos formas. En primer lugar, un conjunto es reconocido porel autómata si el conjunto consta de todas las cadenas que produce una pila vacía cuando ellas seusan como entradas. En segundo lugar, un conjunto es reconocido por un autómata a pila siconsta de todas las cadenas que conducen a un estado [mal cuando ellas se utilizan como entradas.Se puede demostrar que un conjunto es reconocido por un autómata a pila si, y sólo si, es un len-guaje generado por una gramática independiente del contexto.

Sin embargo, hay conjuntos que no se pueden expresar como el lenguaje generado por unagramática independiente del contexto. Un ejemplo de ello es el conjunto [O"! n2n I n = O, 1, 2, ... }.Indicaremos por qué este conjunto no puede ser reconocido por un autómata a pila, pero no daremosuna demostración, puesto que no hemos desarrollado los fundamentos necesarios. (Sin embargo, enel Problema 28 de los Problemas complementarios, al final de este capítulo, se presenta un métodode demostración). La pila puede utilizarse para mostrar que las cadenas comienzan por una sucesiónde ceros seguida por otra con igual número de unos colocando un símbolo en la pila por cada O(mientras se estén leyendo sólo ceros) y eliminando un símbolo de la pila por cada 1 (sólo mientrasse lean unos que siguen a los ceros). Pero una vez que se haya hecho esto, la pila está vacía y no hayun modo de determinar que en la cadena hay el mismo número de doses que de ceros.

Hay otro tipo de máquinas llamadas autómatas lineal mente acotados, más potentes que losautómatas a pila, que pueden reconocer conjuntos como {on1n2n In = O, 1,2, ... }. En particular, unautómata linealmente acotado puede reconocer lenguajes dependientes del contexto. Sin embargo,estas máquinas no pueden reconocer todos los lenguajes generados por gramáticas con estructurade frases. Para evitar las limitaciones de los tipos especiales de máquinas, se utiliza el modelo co-nocido como máquina de Turing, en honor al matemático británico Alan Turing. Una máquinade Turing se compone de todo lo que consta una máquina de estado [mito junto con una cinta, quees infinita en ambos sentidos. Una máquina de Turing tiene capacidad para leer y escribir en la cinta yse puede mover hacia la izquierda y hacia la derecha a lo largo de la cinta. Las máquinas de Turingpueden reconocer cualquier lenguaje generado por una gramática con estructura de frases. Además,las máquinas de Turing pueden modelar cualquier cálculo que pueda realizarse en una calculado-ra. Debido a esta potencia, las máquinas de Turing se estudian con detalle en Ciencias de la Com-putación. Presentamos una introducción a las máquinas de Turing en la Sección 11.5.

PJl~emas1. Describe con palabras las cadenas de cada uno de los

conjuntos regulares siguientes.a) 1*0 b) 1*00*e) 111UOOl d) (IUOO)*e) (00*1)* f) (OU 1)(0 U 1)*00

2. Determina si la cadena 10 11 pertenece o no a cada unode los siguientes conjuntos regulares:a) 10*1* b) 0*(10U 11)*e) 1(01)*1* d) 1*01(0 U 1)e) (10)*(11)* f) 1(00)*(11)*g) (10)*1011 h) (IUOO)(OIUO)I*

3. Expresa cada uno de los siguientes conjuntos medianteuna expresión regular:a) el conjunto de las cadenas de uno o más ceros se-

guidos por un 1b) el conjunto de las cadenas de dos o más símbolos

seguidos por tres o más cerose) el conjunto de las cadenas tales que bien no hay

ningún 1 por delante de un Oo bien no hay ningún Opor delante de un 1

d) el conjunto de las cadenas formadas por una cadenade unos seguida por un número par de ceros, demodo que el número de unos es congruente con 2módulo 3

4. Construye un autómata finito determinista que reco-nozca los siguientes conjuntos de I', donde 1es un alfa-betoa) 0 b) p...} e) {a}, donde a E 1

*5. Demuestra que si A es un conjunto regular, entonces AR,el conjunto de todas las inversas de las cadenas de A, estambién regular.

6. Construye un autómata finito que reconozcaa) p..., O} b) {O, 11} e) {O, 11, OOO}

7. Construye autómatas finitos no deterministas que re-conozcan cada uno de los siguientes conjuntos utili-zando las construcciones descritas en la demostracióndel Teorema de Kleenea) 0*1* b) (OU 11)* e) 01* U 00*1

722 Matemática discreta y sus aplicaciones

8. Construye un autómata finito no detenninista que reco-nozca el lenguaje generado por la gramática regular G =(V, T, S, P), donde V = {O, 1, S, A, B}, T = {O, 1}, S esel símbolo inicial y el conjunto de producciones es

a) S-70A,S-dB,A-70,B-70b) S -7 lA, S -7 0, S -7 A" A -7 OB,B -7 lBe) S -7 lB, S -7 0, A -7 lA, A -7 OB, A -7 1,

A -70, B -7 l

En los Problemas 9-11, construye una gramática regular G =(V, T, S, P) que genere el lenguaje reconocido por las siguien-tes máquinas de estado finito.

9. Inicio

10.

11. Inicio

11.5 Máquinas de Turing

INTRODUCCIÓN

12. Demuestra que el autómata finito construido en la de-mostración del Teorema 2 a partir de una gramática re-gular reconoce al conjunto generado por dicha gramática.

13. Demuestra que la gramática regular construida en la de-mostración del Teorema 2 a partir de un autómata finitogenera el conjunto reconocido por dicho autómata.

14. Demuestra que todo autómata finito no detenninista esequivalente a otro autómata que tiene la propiedad deno volver a pasar por su estado inicial:

*15. Sea M = (S, I,/, so' F) un autómata finito detenninista.Demuestra que el lenguaje reconocido por M, L(M) esinfinito si, y sólo si, hay una palabra x reconocida por Mcon l(x) ~ ISI.

*16. Una técnica importante a la hora de demostrar que cier-tos conjuntos no son regulares es el lema de bombeo olema de iteración. El lema de bombeo afirma que si M= (S,I,/, so' F) es un autómata finito detenninista y x esuna cadena de L(M), el lenguaje reconocido por M, conl(x) ~ ISI, entonces hay cadenas u, v y w de r tales quex = uvw, l(uv) s ISI, ley) ~ I Y uJw E L(M) para i = 0,1, 2, oo. Demuestra el lema de bombeo. (Indicación:Utiliza la misma idea empleada en el Ejemplo 5).

*17. Demuestra que el conjunto {02nln} no es regular. Pue-des utilizar el lema de bombeo enunciado en el Proble-ma 16.

*18. Demuestra que el conjunto {1'" 1 n = 0, 1,2, oo.} no esregular. Puedes utilizar el lema de bombeo enunciadoen el Problema 16.

*19. Demuestra que el conjunto de los palíndromos sobre{O, 1} no es regular. Puedes utilizar el lema de bombeoenunciado en el Problema 16. (Indicación: Consideracadenas de la forma 0"'10"').

**20. Demuestra que el conjunto reconocido por un autómatafinito es regular (es la implicación si del Teorema deKleene).

Las máquinas de estado finito estudiadas en secciones anteriores no se pueden usar como modelosgenerales de computación, pues tienen limitaciones en cuanto a lo que pueden hacer. Por ejemplo,los autómatas finitos son capaces de reconocer conjuntos regulares, pero no reconocen muchosconjuntos de fácil descripción, como [O"1n I n ~ 01, que los ordenadores sí reconocen empleandomemoria. Los autómatas fmitos se pueden utilizar para calcular funciones relativamente simples,como la suma de dos números, pero no podemos utilizarlos para calcular ciertas funciones que sípueden ser calculadas por los ordenadores, como el producto de dos números. Para superar estasdeficiencias, podemos utilizar un tipo de máquina más potente conocida como máquina de Turingen honor de Alan Turing, el famoso matemático e informático que la inventó en la década de 1930.

Básicamente, una máquina de Turing consta de una unidad de control, que en cada paso estáen un estado diferente de entre un conjunto finito de estados, y de una cinta dividida en celdas, que

Enlaces