Teoria de lenguajes gramaticas y automatas para informatico

146

description

 

Transcript of Teoria de lenguajes gramaticas y automatas para informatico

Page 1: Teoria de lenguajes gramaticas y automatas para informatico
Page 2: Teoria de lenguajes gramaticas y automatas para informatico

Teoría de lenguajes, gramáticas y autómatas

para informáticos

Page 3: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 4: Teoria de lenguajes gramaticas y automatas para informatico

Rafael C. Carrasco Jiménez

Jorge Calera Rubio

Mikel L. Porcada Zubizarreta

TEORÍA DE LENGUAJES,GRAMÁTICAS Y AUTÓMATAS

PARA INFORMÁTICOS

UNIVERSIDAD DE ALICANTE

Page 5: Teoria de lenguajes gramaticas y automatas para informatico

©Rafael C. Carrasco JiménezJorge Calera Rubio

Mikel L. Porcada ZubizarretaPublicaciones de la Universidad de Alicante, 2000.

Campus de San Vicente s/n03690 San Vicente del Raspeig

[email protected]://publicaciones.ua.es

Diseño de portada: Alfredo Candela

Impresión: Quinta Impresión, S.L.Hermanos Bernard, 10 - 03080 Alicante.

ISBN: 84-7908-574-6Depósito Legal: A-743-2000

Reservados todos los derechos. No se permite reproducir, almacenar en sistemas de recuperación de la informaciónni transmitir alguna parte de esta publicación, cualquiera que sea el medio empleado -electrónico, mecánico, foto-copia, grabación, etc.--, sin el permiso previo de los titulares de los derechos de la propiedad intelectual.

Page 6: Teoria de lenguajes gramaticas y automatas para informatico

r

índice General

Presentación 9Estructura del libro 10

1 Lenguajes y computadores 111.1 Distintos tipos de programas 131.2 Problemas y lenguajes 19

2 Autómatasfinitos 232.1 Alfabetos y lenguajes 232.2 Representaciones de un AFD 252.3 Autómata finito determinista como clasificador . . . . 272.4 El autómata finito determinista como traductor . . . . 322.5 Deterministas, indeterministas y estocásticos 35

2.5.1 Autómatas finitos indeterministas 352.5.2 Equivalencia AFI-AFD 372.5.3 Autómatas finitos estocásticos 41

3 Lenguajes regulares 453.1 Expresiones regulares 45

3.1.1 Algunas propiedades de las ER 493.2 Equivalencia ER-AF 503.3 Operaciones con conjuntos regulares 61

4 Construcción de autómatasfinitos 694.1 Lema de bombeo 694.2 Algoritmos y decidibilidad 734.3 Minimización de autómatasfinitos 75

4.3.1 Teorema de Myhill y Nerode 774.3.2 Algoritmos de minimización 79

7

Page 7: Teoria de lenguajes gramaticas y automatas para informatico

8 ÍNDICE GENERAL

5 Gramáticas 855.1 Introducción 855.2 Definición y clasificación de las gramáticas 875.3 Gramáticas regulares 89

5.3.1 Gramática regular asociada a un autómata . . 895.3.2 Autómata asociado a una gramática regular . . 90

5.4 Gramáticas independientes del contexto (GIC) . . . . 925.4.1 Derivación y árbol de derivación 935.4.2 Ambigüedad 945.4.3 Recursividad 975.4.4 El análisis sintáctico 1015.4.5 Simplificación de una GIC 1065.4.6 Formas normalizadas 112

6 Lenguajes independientes del contexto 1196.1 Operaciones con LIC 1196.2 Lema de bombeo para LIC 1216.3 Algoritmos 124

7 Autómatas con pila y analizadores sintácticos 1277.1 Definiciones 1277.2 Autómata de pila para una GIC 1307.3 Gramática correspondiente a un AP 1327.4 Analizadores sintácticos 133

A Nociones básicas de teoría de conjuntos 139A.l Correspondencias y relaciones 140A.2 Cardinal. Conjuntos infinitos 143

A.2.1 Demostración del teorema de Cantor 145A.2.2 Aplicación a la informática 145

Bibliografía 147

Page 8: Teoria de lenguajes gramaticas y automatas para informatico

Presentación

La mayoría de los textos dedicados a la teoría matemática delenguajes1 presentan los elementos básicos de dicha teoría desde unpunto de vista fundamentalmente matemático. Esto es, su estructuralógica se basa en una serie de definiciones y teoremas desarrolladoscon gran rigor y consistencia, dejando en un segundo plano la cone-xión de estos conceptos con los problemas prácticos y con su evoluciónhistórica. La opción de presentar una materia en la forma elaboradaa la que se ha llegado después de décadas de investigación, revisiónde los conceptos fundamentales y estructuración lógica de la teoríaresulta conveniente desde el punto de vista del rigor científico, perodificulta el acercamiento a la materia de las personas cuyo interés secentra en los aspectos prácticos de la ciencia. Este es, con frecuencia,el caso de los ingenieros, que perciben su estudio como un ejerciciomuy abstracto y de escasa relevancia para los problemas tecnológicos.

Por otra parte, la ingeniería informática es uno de los ámbitos enlos que mayor importancia y repercusión tiene la teoría matemáticade los lenguajes. Por un lado, gran parte de las tareas que se realizanen este campo, como la implementación de compiladores y analiza-dores sintácticos, el desarrollo de lenguajes de programación, etc.,requieren un conocimiento profundo de la teoría de lenguajes. Porotro, muchos de los problemas computacionales que concitan un ma-yor interés en la actualidad pueden plantearse también en términoslingüísticos. Algunos de forma inmediata, como la traducción entreidiomas. Otros, de forma indirecta: por ejemplo, el reconocimientode objetos mediante una cámara puede entenderse también como laclasificación de las cadenas de símbolos que codifican la imagen, un

1 Hemos optado por esta denominación frente a la más frecuente, pero tambiénalgo más oscura de teoría formal de lenguajes. La palabra formal sugiere untratamiento centrado en el aspecto y no en la esencia.

9

Page 9: Teoria de lenguajes gramaticas y automatas para informatico

10 PRESENTACIÓN

problema análogo al de identificar palabras de un lenguaje.Por todo ello, hemos considerado conveniente presentar los ele-

mentos básicos de la teoría de lenguajes de una forma en parte di-ferente a la tradicional: a partir de situaciones habituales para laspersonas que trabajan en el ámbito de la informática. Así, hemos in-tentado que situaciones que se presentan frecuentemente en las tareasde programación motiven la introducción de los conceptos y que laformalización de éstos se produzca sólo a posteriori. Este método re-quiere encontrar ejemplos adecuados que conduzcan con la suficienterapidez a los conceptos, lo que no siempre resulta sencillo. Por ello,consideramos esta obra como un trabajo de investigación abierto aaportaciones y mejoras en el futuro. Desde el punto de vista pe-dagógico, este método, que podríamos calificar como "más inductivoque deductivo", requiere generalmente una inversión de tiempo ma-yor en la presentación de los temas en el aula. No obstante, nuestraexperiencia docente nos ha demostrado que el esfuerzo se ve recom-pensado con una mayor persistencia del aprendizaje.

Estructura del libro

El esquema básico que hemos utilizado es el mostrado en la figura1. El objetivo que buscamos es introducir, en la medida de lo posi-ble, los conceptos de la teoría de lenguajes a medida que van siendonecesarios para resolver problemas cada vez más complicados.

Figura: Esque,a Basico del libro

Page 10: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 1

Lenguajes y computadores

Los programas de ordenador que estamos acostumbrados a utili-zar pueden describirse como secuencias de instrucciones (lo que técni-camente se denomina algoritmo] que operan sobre los datos de entra-da para producir la salida deseada. Durante su ejecución, el programautiliza normalmente distintos registros o unidades de memoria paraalmacenar resultados intermedios (véase la figura 1.1). De hecho,una de las características fundamentales de un programa es la can-tidad de memoria que requiere durante su ejecución. Dado que lacapacidad de almacenamiento de los ordenadores actuales, aunqueinmensa, es siempre limitada, un programa diseñado en cualquierlenguaje de programación puede siempre clasificarse en uno de losdos grupos siguientes:

1. algoritmos que durante su ejecución requieren una cantidad dememoria que puede ser establecida a priori, es decir, sin conocerla entrada del programa;

2. algoritmos para los que no es posible establecer un límite a lamemoria utilizada pues, sea cual sea la cantidad de registrosdisponible, existe alguna entrada para la que el funcionamientocorrecto del algoritmo requiere un número aún mayor de uni-dades de memoria.

Los programas del primer grupo nos servirán para ilustrar el con-cepto de autómata finito. De forma intuitiva, los autómatas finitospueden definirse como sistemas cuyo funcionamiento se puede des-cribir en términos de un número de estados finito. Por otra parte,

11

Page 11: Teoria de lenguajes gramaticas y automatas para informatico

12 1. LENGUAJES Y COMPUTADORES

Figura 1.1:Esquema del funcionamiento de un programa .

Page 12: Teoria de lenguajes gramaticas y automatas para informatico

1.1. DISTINTOS TIPOS DE PROGRAMAS 13

los algoritmos del segundo tipo aparecen con relativa frecuencia enprogramación. Entre los ejemplos típicos, se encuentran:

• programas que utilizan memoria dinámica, esto es, memoriaque se crea (o se define) según las necesidades del programa;

• programas que utilizan llamadas recursivas, lo que obliga a al-macenar en una pila las direcciones de retorno de las llamadas.

En muchos casos, los programas que utilizan memoria dinámica ollamadas recursivas no son autómatas finitos: no está garantizado sufuncionamiento correcto en todos los casos ya que pueden provocar,durante su ejecución, mensajes de error del tipo "memory exhausted","stack overflow", u otros más crípticos como "segmentation fault" queapuntan a un agotamiento de los recursos de la máquina.

Por contra, los programas que son un autómata finito puedenimplementarse utilizando memoria estática, esto es, memoria cuyacapacidad se determina en el momento de la compilación y por tan-to, no varía en las distintas ejecuciones del programa. El conceptode autómata finito es uno de los más importantes en teoría de lacomputación y de su estudio nos ocuparemos a lo largo del siguientecapítulo.

1.1 Distintos tipos de programas

Con el fin de ilustrar el concepto de autómata finito determinista,se pide al lector o lectora que resuelva los siguientes

Ejercicios

1.1 Construye un programa que calcula el cociente de una cadenanumérica binaria por un número natural dado n. Por ejemplo, sin — 3 y la entrada es 1101, la salida será 0100.

1.2 Elabora un programa que invierte el sentido de la cadena deentrada. Por ejemplo, si la entrada es LAMINA la salida es ANIMAL.

Una solución al primer ejercicio se presenta en forma de pseudo-código en la figura 1.2. Con el procedimiento allí descrito, el programapuede implementarse de forma sencilla sin que se necesite almacenar

Page 13: Teoria de lenguajes gramaticas y automatas para informatico

14 1. LENGUAJES Y COMPUTADORES

programa divide_ncomienza algoritmo

r = O (resto)haz

s — valor (siguiente^símbolo}escribe (2 * r 4- s)/n (cociente)r = (2 * r + s) mod n (nuevo resto)

repite haztermina algoritmo

Figura 1.2: Programa que escribe la cadena numérica de entrada divididapor n. Nótese que sólo utiliza un registro r que permite almacenar unnúmero entre O y n.

toda la cadena de entrada. Basta con ir procesando ésta símbolo asímbolo, calculando el cociente y guardando el resto para sumárselo(multiplicado por n) a la siguiente lectura. Por tanto, un programaque disponga de un sistema de almacenamiento para guardar al menosIog2(n) dígitos binarios1, que es el número mínimo necesario paraalmacenar una cifra entre O y n, es suficiente para realizar la tarea dedividir una cadena numérica por n. Por muy larga que sea la cadenade entrada, bastará con esperar el tiempo suficiente para obtenerla salida, pero jamás se producirá el desbordamiento del programa.Todas las posibilidades han sido implícitamente tenidas en cuenta yel programador no debe preocuparse de incluir un aviso o mensaje deadvertencia.

Resuelve ahora el siguiente

Ejercicio

1.3 Representa gráficamente los distintos estados de la memoria delprograma divide_3 para distintas entradas, así como los cambios quese producen entre ellos en función del símbolo que es procesado.

El resultado del ejercicio anterior puede representarse medianteun diagrama como el de la figura 1.3. En la próxima sección vere-mos que los estados de la memoria utilizada pueden entenderse como

En ingles, bits, denominación habitual de la unidad mínima de información.1

Page 14: Teoria de lenguajes gramaticas y automatas para informatico

1.1. DISTINTOS TIPOS DE PROGRAMAS 15

los estados de un autómata y los cambios que se producen con laentrada pueden interpretarse como la llamada función de transicióndel autómata. En particular, la representación mediante un grafoetiquetado es una de las más habituales para un autómata finito.

Retomamos ahora el ejercicio 1.2, cuya resolución permite optarentre:

1. leer la cadena completa y después escribir el resultado (la ca-dena invertida), con lo que es de esperar que para una cadenalo suficientemente larga se agoten las reserva de memoria, o

2. utilizar una función recursiva como en el código de la figura 1.4

programa función invierte_entradacomienza algoritmo

s — siguiente-símbolosi s 7^ cadena-vacía entonces

invierte_entradaescribe s

fin sitermina algoritmo

Figura 1.4: Programa que invierte la cadena de entrada utilizando unaformulación recursiva

En esta segunda opción, el desbordamiento se producirá cuando seagote la pila de almacenamiento de llamadas recursivas, lo cual esseguro que ocurrirá si la cadena es lo suficientemente larga. Por tanto,

Figura 1.3: Representacion grafica del programa divide 3. Los valores Sobre cada ar co representan La cifra laida escra El arco sin etiqueta dis Tingue el estado inicial

Page 15: Teoria de lenguajes gramaticas y automatas para informatico

16 1. LENGUAJES Y COMPUTADORES

un programa correctamente escrito debe advertir antes de la ejecuciónde que existe un tamaño máximo del problema que puede resolver.Sin embargo, dicho tamaño dependerá del ordenador en el que seestá ejecutando el programa. Por ello, si podemos suponer que no sepresentarán cadenas tan largas que provoquen el desbordamiento, laimagen de un autómata finito con una pila de almacenamiento será unbuen modelo para describir el comportamiento del ordenador.

En cualquier caso, podemos afirmar que la tarea del ejercicio 1.2pertenece a un grupo de problemas más difíciles de resolver que los deltipo del ejercicio 1.1. Mientras que los últimos pueden ser tratadosmediante una máquina de estados finitos (denominada autómata fini-to), los primeros requieren una pila de almacenamiento virtualmenteilimitada. Este segundo tipo de programa se denomina autómata conpila. Obviamente, toda tarea que puede realizar un autómata finitopuede ser realizada también por un autómata con pila sin utilizar supila de almacenamiento. Por ello, podemos establecer una relaciónde inclusión entre las tareas que resuelve cada tipo de autómata, taly como se refleja en la figura 1.5. Como ya se ha comentado, los

Figura 1.5:Rela cianes se inclusion entre los diverso tipos de programas.

Page 16: Teoria de lenguajes gramaticas y automatas para informatico

1.1. DISTINTOS TI POS DE PROGRAMAS 17

ordenadores actuales disponen de sistemas de almacenamiento muypotentes pero siempre limitados, por lo que su funcionamiento puededescribirse como el de un autómata finito muy complejo. Dado que lapotencia del ordenador estará relacionada con dicha capacidad, des-de el punto de vista teórico es conveniente utilizar un modelo que nodependa de esta característica. Por ello, se suele utilizar el modelopropuesto por Alan Turing en 1936, conocido desde entonces comomáquina de Turing.

Una máquina de Turing consiste esencialmente en un autómatafinito determinista al que se le ha incorporado una cinta como sistemade registro. Esta cinta está formada por un conjunto numerable2

(esto es, que se pueden numerar) de casillas que pueden utilizarsedurante la ejecución para escribir en ellas y para leer su contenido,de forma que los cambios de estado del autómata pueden depender delcontenido de la casilla consultada en ese instante. En la práctica, unamáquina de Turing es equivalente a un ordenador al que se le puedeincorporar tantas unidades de memoria como haga falta durante laejecución del programa. En efecto, aunque la mayoría de los sistemasde almacenamiento modernos son bidimensionales (en contraste conla cinta unidimensional), las posiciones de almacenamiento siguenestando numeradas, lo que hace que, en el fondo, su capacidad no seamayor que la de una cinta lo suficientemente larga.

Mientras que la cinta de una máquina de Turing puede ser con-sultada aleatoriamente (es decir, se puede consultar el contenido delas casillas desplazando la lectura en cualquier sentido), el acceso ala información contenida en una pila es mucho más restrictivo: úni-camente el contenido de la cima de la pila puede ser consultado omodificado en cada instante. Por ello, las máquinas de Turing sonmás potentes, esto es, pueden resolver más tareas, que los autómatasfinitos con pila. Esta característica aparece reflejada también en la fi-gura 1.5. Un ejemplo de tarea que no puede ser realizada únicamentecon el uso de una pila es la comprobación de tipos de los argumentosde una función. Dado que el programa se lee de izquierda derecha,los tipos definidos en la declaración de la función se almacenan enuna pila de forma que en la cima queda el último de ellos. En elmomento de la comparación, el primer argumento ha de compararsecon el fondo de la pila, que no está accesible. El problema puede

2Véase pág. 144 para una definición precisa de conjunto numerable.

Page 17: Teoria de lenguajes gramaticas y automatas para informatico

18 1. LENGUAJES Y COMPUTADORES

resolverse utilizando dos pilas, una para los tipos en la declaración yotra para la lista de argumentos en la llamada, pero es sencillo de-mostrar que este procedimiento es equivalente a tener una cinta dealmacenamiento ilimitada por los dos lados.

No es una mera pregunta retórica si existen tareas que no puederealizar un ordenador, es decir trabajos que caen fuera del bordeexterior en la figura 1.5 y a las que denominaremos no computables.Parte de las grandes inversiones de tiempo y dinero que se realizanen la actualidad en investigación y desarrollo informáticos resultaríanfútiles si el objetivo fuese inalcanzable. Esto podría ocurrir si laarquitectura de los ordenadores actuales (fuertemente determinista ybasada en la lógica binaria: una proposición es cierta o falsa, perono puede ser medio cierta) no es suficiente para abarcar todos losprocesos naturales.

Más controvertida aún es la posibilidad de que existan procesosno computables que sin embargo la mente humana sí sea capaz derealizar. Esta situación sería reconfortante paa todos aquellos queperciben a los ordenadores como una amenaza para la supremacíaintelectual del ser humano sobre la máquina. Sin embargo, aunquefuera cierto que los ordenadores actuales no pueden alcanzar el nivelde abstracción de una mente humana, no sería este un argumento de-finitivo, ya que dando cabida a otros procesos o diseños (por ejemplo,procesos cuánticos, lógica difusa) podría aumentar la capacidad delas máquinas. Este aspecto es, en la actualidad fuertemente contro-vertido, y recomendams al lector o lectora interesados que consultenel libro de Roger Penrose "The emperor's new mind".

Desde un punto de vista estrictamente teórico, se puede demostrarque no todos los problemas se pueden resolver usando una máquina deTuring. Para ello, es suficiente un argumento que consiste en "contar"el número de programas que se pueden implementar en una máquinade Turing y compararlo con el número de tareas que se pueden imagi-nar para su posible resolución. Este último resulta infinitamente másgrande3, por lo que no hay más remedio que aceptar que la mayoríade las tareas no tiene solución algorítmica (otra cuestión distinta essi estas tareas no son más que casos patológicos o problemas cuyointerés es sólo matemático).

Ver pág. 145 para una demostración de esta afirmación.

Page 18: Teoria de lenguajes gramaticas y automatas para informatico

1.2. PROBLEMAS Y LENGUAJES 19

1.2 Problemas y lenguajes

La clasificación de problemas en función de su complejidad (medi-da ésta en términos de qué mecanismos son necesarios para resolverlo)establecida en la sección anterior, tiene un análogo en la teoría ma-temática de lenguajes. Para ver esto es preciso introducir el conceptode problema de decisión.

Podemos definir informalmente el término problema como unadescripción general de una serie de parámetros (o datos de entrada)más un procedimiento (algoritmo) que indique cómo procesar la en-trada para obtener la salida deseada. Una instancia del problemaserá una especificación particular de todos los parámetros del proble-ma mediante un esquema de codificación razonable.

Ejemplo (problema del viajante): Dado un conjunto de ciuda-des y una distancia entre cada par de ellas, encontrar el camino delongitud mínima que recorre todas las ciudades.

En la figura 1.2 podemos ver una instancia del problema.Una posible codificación de esta instancia sería la cade-na u) — 4//10/3/9//6/9//5, en la que el primer númeroindica el número de ciudades y los siguientes dan las dis-tancias de cada ciudad a todas las que tienen índice mayorque ella; el símbolo / se utiliza como delimitador para eli-minar ambigüedades.

Cualquier problema se puede describir en términos de una pregun-ta con respuesta "sí" o "no", este tipo de problemas son llamadosproblemas de decisión. Por ejemplo, el problema anterior podríamosformularlo en los siguientes términos:

Dado un número positivo 5, ¿existe un ordenamiento de

Figura 1.6 : Una instancia del problema del viajante

Page 19: Teoria de lenguajes gramaticas y automatas para informatico

20 1. LENGUAJES Y COMPUTADORES

las ciudades tal que la distancia total recorrida sea menorque Bl

El conjunto de todas las cadenas que podemos formar con los símbolos{0,1, 2, 3,4, 5, 6, 7, 8, 9, /} queda así particionado en tres subconjun-tos:

• El formado por las cadenas que no son una instancia válida delproblema.

• El formado por las cadenas que corresponden a instancias cuyarespuesta es "no".

• El formado por las cadenas que corresponden a instancias cuyarespuesta es "sí".

Con lo que podemos describir el problema en términos del conjunto decadenas (lenguaje) cuya respuesta es "sí". Observemos que resolverel problema tiene una dificultad equivalente (de hecho idéntica) a lade determinar si una cadena pertenece o no a este lenguaje.

tipo de lenguaje3210

denominación habitualregularindependiente del contextodependiente del contextorecursivo

mecanismo de análisisautómata finitoautómata con pilasutómata lineal acotadomáquina de Turing

Figura 1.7: Jerarquía de Chomsky para los lenguajes.

Noam Chomsky estableció cuatro categorías diferentes de lengua-jes (véase la figura 1.7), basándose en la complejidad de las gramáticasque definían estos lenguajes. El significado del término "complejidadde una gramática" será tratado más adelante. Sin embargo, podemosadelantar que cada categoría requiere un tipo de programas distintopara realizar el análisis sintáctico del lenguaje. En efecto, el procesode análisis sintáctico, esto es, el procedimiento que permite estable-cer si una frase es correcta dada la definición gramatical del lenguaje,puede realizarse mecánicamente, por ejemplo, mediante un ordena-dor adecuadamente programado. El programa que es necesario paradicha tarea depende de la complejidad de la gramática, y a cada nivel

Page 20: Teoria de lenguajes gramaticas y automatas para informatico

1.2. PROBLEMAS Y LENGUAJES 21

de la jerarquía de Chomsky se le puede asociar un tipo de progra-ma distinto. En particular, los lenguajes que pueden ser analizadosmediante autómatas finitos forman la clase 3, mientras que los quepueden ser analizados mediante un autómata con pila constituyen laclase 2 y serán objeto de estudio en el capítulo 5. Los de tipo 1 noserán estudiados aquí con detalle. El análisis de los lenguajes de tipoO requiere el uso de una máquina de Turing.

Existe una relación de inclusión entre las clases definidas de estemodo, tal y como queda reflejado en la figura 1.8. La relación de

inclusión es además propia, es decir, cada clase es estrictamente máspequeña que la siguiente o, dicho de otra forma, existen lenguajes decada clase que no pertenecen a las clases más pequeñas. Por ejem-plo, no todos los lenguajes independientes del contexto son regulares.Observemos además la semejanza entre las figuras 1.5 y 1.8. En estelibro nos limitaremos al estudio de los lenguajes más sencillos (los detipo 3 y tipo 2) que son los que mayor aplicación práctica tienen enla informática. Veremos más adelante que un simple argumento deconteo demuestra que deben existir lenguajes no recursivos. Tampo-co estudiaremos la relevancia de este hecho. Los lectores interesadosen las repercusiones filosóficas y prácticas de ésto encontrarán inte-resante el libro de R. Penrose, "The new Emperor's mind".

Figura 1.8: Relaciones de inclusionnChomsky

Page 21: Teoria de lenguajes gramaticas y automatas para informatico

22 1. LENGUAJES Y COMPUTADORES

Los problemas que hemos considerado en los ejercicios de estasección pueden entenderse como tareas de traducción: una cadena desímbolos de entrada debe traducirse en otra cadena de salida. Másadelante plantearemos tareas más sencillas en las que la salida se re-duce a una respuesta binaria (cadena aceptada o rechazada) a las quellamaremos tareas de clasificación y tareas en las que no se propor-ciona ninguna entrada a las que llamaremos tareas de generación delenguajes (véase la figura 1.9).

Figura1.9: Distintos tipos de tarea Segun la relevancia de la entrada salidea

Page 22: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 2

Autómatas finitos

2.1 Alfabetos y lenguajes

Antes de proseguir, debemos definir formalmente algunos concep-tos que nos acompañarán a lo largo de todo el libro.

Un alfabeto S es un conjunto finito y ordenado de símbolos. Porejemplo: E = {a, 6, c, d, e} o el alfabeto binario £ = {0,1}. El ordende sus elementos se denomina ordenación alfabética. Una secuenciade un número arbitrario (finito) de símbolos del alfabeto forma unacadena, palabra o frase. Por ejemplo, w = acá significa que la cadenaw está formada por una secuencia de tres símbolos del alfabeto: a,c y a. Dos secuencias compuestas de los mismos símbolos pero endiferente orden son distintas: acá / caá. El número de símbolos quecomponen la cadena es su longitud, y se representa por \w .

Al conjunto de todas las cadenas generables a partir del alfabeto£ lo llamaremos lenguaje universal E* y a la operación por la que segenera una cadena a partir de los símbolos que la componen, concate-nación. La operación de concatenación se define como una operacióninterna y asociativa en E*, de forma que si #, y y z son cadenas deE*, entonces:

Es posible formar cadenas de longitud arbitraria, y en particular,cabe la posibilidad de que la cadena contenga O símbolos. En esecaso, se trata de una cadena vacía, que se representará de formaespecial mediante el símbolo e y que satisface

23

Page 23: Teoria de lenguajes gramaticas y automatas para informatico

24 2. AUTÓMATAS FINITOS

Con la incorporación de e, cuyas características son las de un elementoneutro, la concatenación dota de estructura de monoide1 a E*, puesse trata de una operación interna asociativa, con elemento neutropero no conmutativa. En algunos casos es conveniente considerar ecomo un símbolo especial del alfabeto (extendido) más que como unacadena. Al fin y al cabo se trata de un nuevo símbolo que representaalgo difícil de escribir: nada. Cuando los lenguajes de programaciónrepresentan cadenas de caracteres, utilizan comillas para marcar sucomienzo y su final. En esa notación, la cadena vacía sería "".

Por último, un lenguaje es un subconjunto cualquiera de cadenasde E*. Por ejemplo, las frases del castellano son un subconjunto detodas las cadenas que se pueden formar a partir del alfabeto habi-tual, las letras especiales (ñ, á, ...), y los signos de puntuación. Perotambién llamaremos, por analogía, lenguajes a conjuntos como porejemplo el de las cadenas binarias que expresan un número par.

Un posible lenguaje es aquél que no contiene ninguna cadena oconjunto vacío, que se representa por 0. Importa distinguir entre estey e que es una cadena y como tal puede estar en un conjunto. Porejemplo, {e} representa a un conjunto con un solo elemento (en estecaso e), y por tanto, distinto del conjunto vacío. Los lenguajes que sepueden generar a partir de alfabetos finitos sólo pueden ser finitos ode cardinal infinito numerable2 En efecto, si un lenguaje es infinito,siempre es posible establecer una ordenación efectiva en él, de formaque a cada cadena se le asigne un número de orden siguiendo la lla-mada ordenación lexicográfica o canónica. Ésta consiste en recorrerlas palabras del lenguaje de menor a mayor longitud de las cadenasy dentro de cada longitud por el orden alfabético definido para elalfabeto S. Por ejemplo, en el caso del alfabeto binario seguiría lasucesión S* = {e, 0,1,00,01,10,11, 000,001,...}.

Una característica muy importante de los lenguajes es que elnúmero de subconjuntos posibles de S* tiene la potencia3 de IR ~P(N) y por tanto, el número de lenguajes diferentes que existen es nonumerable. Como consecuencia de esto se deduce que a partir de sis-temas finitos (como lo son los autómatas y las gramáticas o cualquierotra notación matemática) que sólo pueden generar combinaciones

1 Véase su definición en 141.2 véase la definición 144.3 Véase 144.

Page 24: Teoria de lenguajes gramaticas y automatas para informatico

2.2. REPRESENTACIONES DE UN AFD 25

distintas de elementos en una cantidad numerable, no es posible re-presentar todos los lenguajes, y que existe un número infinito de ellosque no pueden ser expresados en la notación elegida. Se da, por tanto,la paradoja de que se sabe que existen dichos conjuntos, pero que nose puede hacer referencia explícita a cada uno de ellos por separado.Este tipo de cuestiones son objeto de estudio dentro de la teoría dela computabilidad[12]. Aquí sólo se pretende destacar el aspecto deque los lenguajes generados por autómatas (con esquemas de funcio-namiento descritos de manera finita) y gramáticas finitas (sistemascon un número finito de reglas) son sólo un pequeño subconjunto,aunque infinito, de todos los posibles.

Ejercicios

2.1 Justifiqúese que el elemento neutro e de £* es único.

2.2 Justifiqúese que el "orden alfabético", tal como se usa en losdiccionarios, es incapaz de establecer una numeración o un orden en

2.3 Encuéntrese una función que dé el orden lexicográfico (o canóni-co) de una palabra

2.2 Representaciones de un AFD

En esta sección estudiaremos las tres formas más habituales derepresentar un autómata finito:

1. gráficamente;

2. como una tabla de transiciones

3. mediante una función de transición.

El diagrama de la figura 1.3 es un grajo dirigido etiquetado. Un grafodirigido etiquetado consta de:

1. un conjunto de etiquetas o alfabeto S;

2. un conjunto Q de nodos;

Page 25: Teoria de lenguajes gramaticas y automatas para informatico

26 2. AUTÓMATAS FINITOS

3. para cada símbolo de trabajo a G S, un subconjunto £"a C Q x Qde pares de estados llamados arcos.

En el caso que nos ocupa, los nodos del grafo son los estados delautómata y los arcos son los cambios de estado. Por ejemplo, (q\, q^) £EI indica que existe un arco etiquetado con 1 que se dirige desde q\hasta (?2-

La información que contiene este diagrama puede darse tambiénde otra forma: a través de una tabla como la siguiente.

La presentación en forma de tabla es también una forma válida, yutilizada con frecuencia, de describir un autómata finito determinista.A este tipo de tablas se les denomina tabla de transiciones y contienenlos cambios de estado que se producen cuando se procesa un símbolode la cadena de entrada. Para un símbolo dado, cada estado departida está relacionado con un estado destino. Por ello, la tablaanterior puede entenderse también como un conjunto de funciones{#o, $1} (una por cada columna) que asocian a cada estado de partidaq del conjunto de estados posibles Q, otro de llegada q' también deQ. Matemáticamente, esto se escribe como 6^ : Q —>• Q y el resultadode aplicar la función ¿¿ al estado q se representa comoAún es posible utilizar una notación más compacta y definir unaúnica función 6 : Q x S —> Q que a cada estado q y a cada símbolode trabajo a £ E le asocia un estado de llegada q' £ Q, de formaque ó(q,a) = Sa(q). Esta función 6 es conocida habitualmente comofunción de transición.

La función de transición del ejemplo es

Page 26: Teoria de lenguajes gramaticas y automatas para informatico

2.3. AUTÓMATA FINITO DETERMINISTA COMO CLASIFICADOR 27

Un autómata finito determinista funciona efectuando transicionesentre sus estados de forma controlada por el símbolo que se está le-yendo en cada momento de la entrada, de forma que un estado dellegada es, a su vez, estado de partida para la siguiente transición.Para nuestro ejemplo, esto puede expresarse de forma matemáticacomo <5(</i,101) = £((/2,01) = (5(^3,1) = q%. Observemos que estapropiedad permite considerar la función de transición, que fue defi-nida para símbolos, como una función sobre cadenas de entrada. Enla sección 2.3 veremos ésto formalmente.

Una última consideración hace referencia al adjetivo determinis-ta que ha acompañado hasta este punto al nombre de los autómatasfinitos. Los autómatas que hemos considerado hasta aquí son deter-ministas en el sentido habitual de que sólo existe una opción en cadamomento: dada un cadena de entrada sólo existe un posible estadoen el que se puede encontrar el autómata tras la lectura, exactamen-te igual que un ordenador sólo puede encontrarse en una configura-ción después de ejecutar un programa (secuencia de instrucciones).Más adelante (sección 2.5.1) estudiaremos en qué sentido puede unautómata ser indeterminista (es decir, que éste no se encuentre en unestado definido), algo que, en principio, choca con la idea que tenemosde lo que debe ser un autómata o un programa de ordenador.

2.3 Autómata finito determinista como clasi-ficador

Un autómata finito puede servir para discriminar palabras, obser-vando el estado final en el cuál se encuentra. Por ejemplo, el autómatade la figura 2.1 permite distinguir las cadenas de S* = (0,1}* que em-piezan por O de aquellas que empiezan por 1. El estado inicial (aquelen el que se encuentra el autómata antes de analizar la cadena) hasido señalado con una flecha. De ese estado se pasa a otro —bien q^,o (?3— al recibir el primer símbolo y permanece en el mismo nodo in-dependientemente de los símbolos que sean leídos a continuación. Seha señalado el estado q% con doble círculo indicando que el autómataseleccionará como correctas (aceptadas) la cadenas que conduzcan adicho estado, que denominaremos estado de aceptación. Esta funcióncomo clasificadores de palabras permite que los autómatas finitos seanutilizados con frecuencia para el análisis léxico de programas o textos,

Page 27: Teoria de lenguajes gramaticas y automatas para informatico

28 2. AUTÓMATAS FINITOS

es decir, para determinar qué palabras están correctamente escritasy pertenecen al lenguaje en cuestión, o también para buscar determi-nados patrones en el texto. Por ejemplo, de entre las palabras que sepueden formar con £ = { 0 , 1 , . . . , 9 , E , + , — , . } sólo algunas son núme-ros reales válidos en C. De la misma manera, de entre las palabrasque se pueden formar con S = (0 ,1 , . . . , 9, a, b , . . . , y, z, _,} sólo unascuantas son identificadores válidos en C. Para esta tarea, es posibleutilizar autómatas finitos y de hecho así se hace en los analizadoresléxicos de intérpretes y compiladores.

Siguiendo este planteamiento, los elementos de un autómata finitodeterminista (AFD) son M = (Q, S, ó, q\,F], siendo:

• Q — {qi}-> el conjunto finito de estados posibles del autómata;

• E, su alfabeto finito de entrada;

• q\ G Q, su estado inicial;

• F C Q, el subconjunto de estados de aceptación;

• ó, una función de transición entre estados de la forma que dicta el comportamiento del autómata.

Un autómata finito opera ejecutando secuencias de movimientoso pasos según va leyendo los símbolos de la cadena de entrada. Cadapaso viene determinado por el estado actual del autómata y por elsímbolo que se lee de la entrada. El movimiento consiste en leer esesímbolo (de manera que el siguiente símbolo de la cadena será leídoen el siguiente movimiento) y cambiar al estado determinado por lafunción de transición 6 (que en algún caso puede ser el mismo estado).

Figu

Page 28: Teoria de lenguajes gramaticas y automatas para informatico

2.3. AUTÓMATA FINITO DETERMINISTA COMO CLASIFICADOR 29

Para describir formalmente el comportamiento del autómata so-bre una cadena, debemos extender la función de transiciónE —>• Q para que pueda actuar sobre un estado y una cadena y no sólosobre un estado y un símbolo. Así, la nueva función es de manera que ó(q, w) es el estado en el que se encontrará el autómatadespués de haber leído la cadena w empezando en el estado q.

La definición formal de la nueva función 6 (que incluye a la viejaen el caso de que la cadena leída sea un sólo símbolo) es:

• S(q^ e) = q (si no se lee ninguna cadena, es decir, se lee la cadenavacía, el autómata permanece en el mismo estado); y

• \/w e S*,Va E S se cumple 6(q,wa) — ó(S(q,w),a) (es decir,el estado al que llega el autómata al leer la cadena no vacíawa puede obtenerse por pasos: primero se calcula el estadop = ó(q, w) al que se llega con w desde q, y después se obtieneel estado al que se llega con el símbolo a desde p:

Conviene insistir en algunas de las propiedades de

1. El autómata es determinista, en el sentido de que siempre está unívo-camente definido cuál es el estado en que se encuentra el autóma-ta después de haber leído una parte de la cadena de entrada,pues 6 es una aplicación (véase la definición 141) y la imagende un estado qi y un símbolo a es un único estado de desti-no qj = ó(qi,a). En lo que sigue, se utilizará la notación máscompacta4

2. El autómata respeta la propiedad de concatenación, es decir, elefecto sobre M de dos cadenas consecutivas u y v es el mismoque el que se produce al leer una sola cadena uv formada por useguida de v. Matemáticamente, esto se expresa como:

La inversión de u y v en la fórmula se debe al diferente senti-do de lectura de la composición de funciones y de la escrituraoccidental: actúa primero la función escrita más a la derecha,mientras que en la escritura occidental una cadena empieza porel símbolo situado más a la izquierda.

'Aunque no estándar.

Page 29: Teoria de lenguajes gramaticas y automatas para informatico

30 2. AUTÓMATAS FINITOS

3. La función 6 está completamente definida si se da un grafo ouna tabla de transiciones : Q x E —> Q. Aunque en principio6 proporciona el nodo final para cualquier cadena de S* (ypor tanto, para un conjunto infinito de cadenas), es suficientecon describir el resultado de la función para el subconjuntofinito de cadenas de longitud 1 —los símbolos de E. Ésto eslo que se conoce como una tabla de transiciones, ya que suelerepresentarse en forma de tabla. Por ejemplo, el autómata dela figura 2.1 queda perfectamente definido por la tabla de lafigura 2.2.

Figura 2.2: Tabla de transiciones para el autómata de la figura 2.1.

Con estas propiedades, se establece un homomorfismo5 entre laconcatenación de cadenas del monoide S* y la composición de las fun-ciones Sw : Q —> Q que corresponden a cada cadena w. Puede com-probarse que con sólo haber exigido esta naturaleza de homomorfismose hubiesen cumplido todas las propiedades que se han indicado.

Como cabe esperar, se define el lenguaje aceptado por un AFDcomo:

La definición de lenguaje aceptado viene motivada por la utiliza-ción del AFD como reconocedor de lenguajes: el AFD nos permitedeterminar si una cierta cadena w pertenece o no a L(M] simple-mente observando si el estado final al que se llega mediante w es unode los estados del subconjunto F. Todos los lenguajes reconociblesmediante autómatas finitos deterministas reciben el nombre de len-guajes regulares. Por tanto, dado un lenguaje L, si existe un AFDtal que L = L(M), entonces L es un lenguaje regular. Como ya seargumentó, los lenguajes regulares son un pequeño subconjunto de

5véase 141.

Page 30: Teoria de lenguajes gramaticas y automatas para informatico

2.3. AUTÓMATA FINITO DETERMINISTA COMO CLASIFICADOR 31_

todos los lenguajes posibles, pero de gran importancia en informáticateórica y en teoría de la computación.

Para terminar esta sección, definiremos un concepto que aparecefrecuentemente, que es el de nodo útil en un AFD: un nodo q^ esútil si es utilizado en el proceso de reconocimiento de alguna cadena.Para ello, es necesario que el nodo sea accesible6 desde el estadoinicial q\ por alguna cadena u y además que algún estado de F seaaccesible desde q^ por alguna cadena v. Formalmente, q^ es útil

Un nodo inútil en un AFD puede ser eliminado sin que por elloL(M) cambie, pues no desempeña ningún papel en la tarea de re-conocimiento. Frecuentemente, los nodos inútiles no aparecen repre-sentados en los grafos o tablas con el fin de aligerar la notación y nosobrecargar los dibujos, pues esto haría más difícil su interpretación,sobre todo cuando se trata con autómatas cuyo número de nodos noes muy pequeño. Por contra, esta simplificación puede originar quedesde algunos nodos no salgan transiciones con alguno (o varios) delos símbolos del alfabeto ( card (6a) < 1 en lugar de card($a) = 1).Con ello parece perderse la característica del determinismo, que sig-nifica que tras cada paso está perfectamente definido el siguiente. Sinembargo, el autómata puede interpretarse aún como determinista, sise sobreentiende que las cadenas que intenten efectuar esa transiciónno pertenecen al lenguaje reconocido por el autómata. Ello equiva-le a decir que los arcos no dibujados se dirigen todos a un estadoíabs 0 F llamado estado de absorción. Dicho estado no pertenecea -F y además no es posible salir de él porque Sa((í&bs) — <?abs paracualquier símbolo a del alfabeto. Por tratarse de un caso de nodoinútil, con frecuencia (?abs no aparece representado, pero su existen-cia debe tenerse en cuenta, sobre todo cuando se apliquen algoritmoscuyo funcionamiento sólo está garantizado sobre autómatas estricta-mente deterministas (card(¿)x) = IVx e E). Un ejemplo de nodo deabsorción aparece en la figura 2.1.

Ejercicios

2.4 Prueba que, por consistencia, 6e ha de ser la aplicación identidaden un AFD (recuerda que 6 es un homomorfismo entre monoides).

'Es decir, que exista algún camino que lo conecte.

Page 31: Teoria de lenguajes gramaticas y automatas para informatico

32 2. AUTÓMATAS FINITOS

2.5 Dibuja autómatas finitos deterministas que reconozcan los si-guientes conjuntos de cadenas construidas sobre el alfabeto S ={0,1}:

• cadenas acabadas en 00;

• cadenas con dos unos consecutivos;

• cadenas que no contengan dos unos consecutivos;

• cadenas con dos ceros consecutivos o dos unos consecutivos;

• cadenas con dos ceros consecutivos y dos unos consecutivos;

• cadenas acabadas en 00 o 11;

• cadenas con un 1 en la antepenúltima posición;

• cadenas de longitud 4.

2.6 ¿Qué características debe tener el grafo de un AFD para que ellenguaje regular que reconoce sea infinito?

2.4 El autómata finito determinista como tra-ductor

Los AFD definidos hasta ahora permiten la clasificación de las ca-denas en dos clases (aceptadas y no aceptadas). En muchos casos, sinembargo, es necesario realizar una clasificación en multitud de gru-pos. Esto ocurre, por ejemplo, en los problemas de traducción entrelenguajes. Para este fin se introducen los traductores secuenciales.Un traductor secuencial es un AFD al que se le ha incorporado unalfabeto A y una función de salida A. Además, dado que no estamosinteresados en la función de aceptor, no es necesario hacer referen-cia al subconjunto de estados de aceptación. Por tanto, el traductorqueda definido por M = (Q, E, A, S, A, <?i). En lo que sigue supondre-mos que una cadena de entrada w¡n = aia^a^ ... produce en M unasecuencia de transiciones q\ —^ q% -^» q% • • . Dependiendo de cuálsea la forma de la función A, los traductores se clasifican en distintosgrupos, entre los cuales se encuentran:

Page 32: Teoria de lenguajes gramaticas y automatas para informatico

2.4. EL AUTÓMATA FINITO DETERMINISTA COMO TRADUCTOR 33

• Máquinas de Moore

En este caso, se genera una cadena pues el símbolo de salida es función únicamente del estado en elque se encuentra M. Inmediatamente después de que M cambiede estado, se detecta un nuevo símbolo como salida.

• Máquina de Mealy

El resultado es una cadena donde el símbolo de salida depende del estado y de la transi-ción que se efectúa y varía simultáneamente con M cuando estecambia de estado. Para que M funcione de una forma razona-ble, es necesario suponer que

Aunque aparentemente distintos, existe una equivalencia apro-ximada entre ambos tipos de autómatas: toda máquina de Moorepuede ser implementada como una máquina de Mealy equivalente yviceversa. Por equivalentes entendemos que generan la misma cade-na de salida wouí para cada W[n. Esta afirmación debe tomarse concierta cautela, pues existirá un desfase temporal entre el momentode aparición de u;0ut en cada máquina. Por este motivo, en algunoscasos conviene suponer que el final de la cadena W[n está marcado poralgún símbolo que no pertenece al alfabeto, por ejemplo

• Dada una máquina de Moore M, es sencillo transformarla enuna máquina M' de Mealy que simule M. Para ello basta conredefinir la función de salida de M para cada símbolo del alfa-beto a de la siguiente forma:

• En el caso inverso, dada M, una máquina de Mealy, entonces se

de la siguiente forma:

arbitrario

Con estas definiciones, M' y M son equivalentes.

puede construir una maquina de moo

Page 33: Teoria de lenguajes gramaticas y automatas para informatico

34 2. AUTÓMATAS FINITOS

Ejercicios

2.7 Construyase una máquina de Mealy con alfabeto de entrada{0,1} y alfabeto de salida {sí, no} que produzca como última salidasí si los dos últimos dígitos de la cadena binaria son iguales y no sison diferentes. Represéntese la máquina de Moore equivalente.

2.8 La salida w;out de una máquina de Mealy para W{n se utiliza comoentrada de un AFD. Demuestra que el conjunto de cadenas aceptadaspor el autómata compuesto es también un lenguaje regular (w[n esaceptada si el AFD se detiene sobre un estado de aceptación).

2.9 Construyase una máquina de Moore con alfabeto de entrada{0,1} y alfabeto de salida {a, b}, que genere una a cada vez que entrendos unos consecutivos y una b cada vez que entren dos ceros consecu-tivos. Por ejemplo, la traducción de la cadena "0010111" será "bao,".(Obsérvese que algunos estados del traductor finito pueden producirla cadena vacía e).

2.10 Construye una máquina de Mealy que proporcione el cocienteentre 3 para cada cadena binaria de entrada. Transforma ésta en unamáquina de Moore equivalente.

2.11 Escribe una máquina de Moore que traduzca cadenas de E* ={0,1}* a cadenas de A* = {0,1}* de manera que el símbolo que sesaque en cada paso sea 1 si el número de unos leído es impar, y cerosi es par. Por ejemplo, la traducción de 100101 sería 111001.

2.12 ¿Es equivalente una máquina de Mealy a un homomorfismo/ : S—> A? ¿Porqué?

2.13 Encuentra una máquina de Moore capaz de ir calculando lasuma parcial de los números {0,1, 2, 3} que va recibiendo y producircomo salida el módulo 5 de dicha suma parcial. Por ejemplo, si serecibe la cadena 32130, las sumas parciales serían 3,5,6,9 y 9; y lasalida que deberá producir la máquina será 30144.

2.14 Dibuja una máquina de Moore con seis estados que escribe asi la cadena binaria leída hasta el momento es múltiplo de seis, b sies múltiplo de 3 pero no de seis y c en cualquier otro caso.

Page 34: Teoria de lenguajes gramaticas y automatas para informatico

2.5. DETERMINISTAS, INDETERMINISTAS Y ESTOCÁSTICOS 35

2.15 Construye una máquina de Moore que, con alfabeto de entrada{1,2,3}, obtenga como salida el resto de la división por 4 del productoacumulado de la entrada hasta ese momento.

2.16 Construye una máquina de Mealy que encripta mensajes encódigo binario de la siguiente forma:

1. cada O que ocupa una posición par es reescrito como 1;2. cada 1 que ocupa una posición par es reescrito como 0;3. los dígitos en posición impar no cambian.

Por ejemplo, la entrada 100100 produce 110001 como salida. Trans-forma esta máquina en su equivalente máquina de Moore.

2.17 Dibuja una máquina de Mealy que escriba como salida la cade-na XOR de las dos cadenas producidas por los siguientes traductores:

2.5 Deterministas, indeterministas y estocásti-cos

Un criterio de clasificación alternativo para los autómatas finitoses su forma de funcionamiento. En un AFD todas las transiciones ylos estados que va ocupando el autómata están completamente deter-minados por la cadena de entrada. Sin embargo, es posible construirautómatas en los que existan varias transiciones posibles para un mis-mo símbolo, a los que se denomina autómatas finitos indeterministas(AFI). También se puede considerar la posibilidad de asignar proba-bilidades a las transiciones, lo cual conduce al concepto de autómatafinito estocástico(AFEi].

2.5.1 Autómatas finitos indeterministas

Un AF indeterminista (AFI) es una generalización de los AFDen la que se permite que de un nodo parta más de una transición

Page 35: Teoria de lenguajes gramaticas y automatas para informatico

36 2. AUTÓMATAS FINITOS

etiquetada con el mismo símbolo, o que exista más de un estado ini-cial. Esta flexibilidad podría aumentar, aparentemente, la potenciade los autómatas y permitir el reconocimiento de conjuntos que noson analizables mediante un AFD. Sin embargo, veremos inmediata-mente que esto no es así, y que la capacidad de análisis de los AFI esexactamente la misma que la de los AFD.

Dado que varios caminos en el AFI pueden corresponder a unaúnica cadena de entrada, serán varios, en general, los estados alcan-zables a través de dicha cadena. El criterio que se toma para decidirqué cadenas son aceptadas es el de tomar aquellas para las que existeal menos un camino que conduce a un estado de aceptación desdealguno de los estados iniciales. Esta definición presenta la ventajade que el AFD es un caso particular en el cuál sólo existe un caminoposible. Además, el conjunto de lenguajes generables por AFI resultaser precisamente el conjunto de lenguajes regulares. De hecho, dadoM/, un AFI, existe siempre un AFD equivalente MD que genera elmismo lenguaje:

La definición de un AFI es semejante a la de un AFD:

con la diferencia de que el estado inicial ha sido sustituido por unsubconjunto de posibles estados iniciales Q\ £ Q. Además, la funciónde transición ó ya no conduce de un estado a otro único estado. Lasconsecuencias del indeterminismo son:

• La imagen de un estado y un símbolo es, en general, un sub-conjunto de estados de

• La propiedad de concatenación se sigue satisfaciendo si defini-mos cómo actúa 6 sobre un conjunto de estados:

Esta definición se toma porque estamos interesados en ver siexiste algún camino que conduce desde el estado inicial a unestado de aceptación. Si un símbolo nos permite llegar a va-rios estados R, el siguiente símbolo nos permite llegar a todoslos alcanzables desde cualquiera de los estados anteriores de R.

Page 36: Teoria de lenguajes gramaticas y automatas para informatico

2.5. DETERMINISTAS, INDETERMINISTAS Y ESTOCÁSTICOS 37

De esta manera a cada paso se abre un abanico de caminos al-ternativos y el conjunto que se obtiene en cada momento es elsubconjunto de estados alcanzable mediante la cadena analiza-da.

• En un AFI, Se ya no es necesariamente la aplicación identidad,y se llama clausura nula o dausura-e (Ce) del estado q al con-junto de estados accesibles directamente mediante la cadena e,es decir, Ce(q) := 6€(q). Es necesario, además, imponer queq G Ce(q}J dada la posibilidad obvia de que el autómata nocambie de estado cuando no lee ningún símbolo. Si se dieseel caso de que Ce(q) ^ {q} para algún nodo g, se dice que elautómata M/ contiene transiciones nulas o de tipo e. El con-cepto de clausura nula puede extenderse para subconjuntos deestados: dado T C Q, su clausura nula CC(T] es la unión de lasclausuras nulas de todos los estados de T:

De acuerdo con todo lo anterior, el lenguaje aceptado por el AFIpuede definirse como el conjunto de cadenas w tales que existe algúncamino etiquetado con w que lleva hasta un nodo de F partiendodesde alguno de los nodos del subconjunto

Como veremos, para describir completamente un AFI basta conespecificar la tabla de una función más restringida,que relaciona estados y símbolos (o la cadena vacía e) con nuevosestados. Estas transiciones son las que habitualmente figuran en elgrafo dirigido que representa al autómata.

2.5.2 Equivalencia AFI-AFD

Vamos a demostrar que los AFI no aumentan la potencia de losAFD, ya que dado un AFI siempre es posible contruir un AFD capazde desempeñar el mismo papel. Para ello procederemos en dos pasos:primero estudiaremos cómo eliminar las transiciones nulas, para des-pués proceder a obtener el AFD equivalente a un AFI sin transicionesnulas.

Page 37: Teoria de lenguajes gramaticas y automatas para informatico

38 2. AUTÓMATAS FINITOS

Para ello, lo primero que hay que hacer es asegurarse de quela función de transición satisface 6UV = 6V6U- Aunque esto deberíacumplirse por definición, muchas veces se parte de un grafo o tabla detransiciones en el que faltan transiciones compuestas, y se da sólo unafunción de transición restringida S. Por ejemplo, la siguiente tablade transiciones:

corresponde al grafo de la figura 2.3. En él no aparece ninguna transi-

ción dirigida por a desde q\ hasta ¿72- Sin embargo, dado que dicha transición puede producirse: q\ -^ q\ —^-K Para completarsistemáticamente la tabla, basta con tomar Sa(q) = CcóaCe(q), queincorpora al conjunto imagen todos los nodos accesibles, aunque pa-ra ello se requieran una o varias transiciones vacías. En el ejemplo,CC(QI) — {41,42} y Ce(#2) = fe}, y la tabla de transiciones para lafunción 6 queda:

Una vez que la correspondencia entre la concatenación de cadenasw en S* y la composición de funciones de transición 6W tiene laspropiedades correctas de un homomorfismo, es posible eliminar todaslas transiciones vacías, a excepción de aquellas que vayan desde unestado inicial directamente a algún estado de aceptación. Ello esdebido a que para cualquier camino que incluya transiciones vacíasexiste otro camino alternativo que conduce al mismo estado con la

Figura 2.3" Ejemplo de automata Finito indeterminsta

Page 38: Teoria de lenguajes gramaticas y automatas para informatico

2.5. DETERMINISTAS, INDETERMINISTAS Y ESTOCÁSTICOS 39

misma cadena pero sin símbolos e. Dado que en un AFI basta conque exista un camino, esta redundancia puede ser eliminada. Porejemplo, si desde q\ existe un camino w hasta gy, uno de cuyos arcoses vacío y lo representamos explícitamente (w = uev], entonces sepuede reescribir el camino de la siguiente forma:es decir, el conjunto de nodos al que se puede acceder por medio deu seguido de e es exactamente el mismo que el conjunto accesible consólo i¿, y la transición vacía no desempeña ningún papel relevante ypuede ser suprimida. El único caso en que esto no puede hacerse,debido precisamente a la definición de ¿6, es cuando w = e. Parasolucionar esto, basta con modificar Qi, de forma que incluya a F si qf e C€(Qi). Todo lo anterior puede resumirse en que la nuevafunción de transición es:

y el nuevo subconjunto Qi está definido por:

Evidentemente, el autómata así modificado ya no contiene tran-siciones vacías y por tanto

Una vez que M no contiene transiciones vacías, queremos cons-truir otro autómata M' que desempeñe las mismas funciones que Mpero cuyo funcionamiento sea determinista. Para ello, conviene obser-var que en un AFI las transiciones informan sobre los nodos accesiblesa través de un símbolo particular, de forma que de un nodo puedensalir varias transiciones con la misma etiqueta. Si lo que pretendemoses concentrar toda esta información en un solo arco, necesariamentedicha información ha de estar contenida en el nodo de llegada. Portanto el nodo de llegada debe decirnos qué subconjunto de estadospodemos acceder con ese símbolo. Si el autómata original consta de nnodos, se pueden formar 2n subconjuntos distintos en Q. Este núme-ro, aunque grande, es finito y por tanto podemos construir un nuevoautómata M' en el que los estados representen a subconjuntos de no-dos de M y los arcos etiquetados con un símbolo a indiquen qué sub-conjunto de estados son accesibles mediante a desde el subconjuntode partida. De esta forma la misma información que está contenidaen M, aparece en M'. Formalmente, M' = (Q1, E,6',q(, F') está de-finido por:

Page 39: Teoria de lenguajes gramaticas y automatas para informatico

40 2. AUTÓMATAS FINITOS

Trivialmente, M' es un AFD pues 6' tiene las propiedades de unhomomorfismo:

C(R} = R (gracias a que M ya no incluye transiciones de tipo

Por otro lado, es necesario demostrar que L(M) — L(M'). Pa-ra ello recordamos las definiciones de lenguaje aceptado en el casoindeterminista y determinista respectivamente:

De forma que queda demostrada la equivalencia de M' y M. Hemosllegado pues a la conclusión de que los AFI no aumentan la capaci-dad de análisis de los AFD. Por un lado, esto es una buena noticia,ya que podemos evitar los problemas del tratamiento del indetermi-nismo. Por otro, nos obliga en algunos casos a buscar modelos másgenerales de análisis de lenguajes. Veremos por ejemplo, que un len-guaje matemático que incluya la posibilidad de anidar un númerofinito pero arbitrario de paréntesis no puede ser tratado mediante unAFD. Por tanto, un AFI tampoco nos solucionaría el problema, yserá necesario recurrir a las gramáticas independientes del contexto.

Adelantaremos aquí, que la construcción del AFD equivalente aun AFI dado tal como se acaba de describir será una operación ru-tinaria durante la traducción de expresiones regulares (una notacióncompacta para los lenguajes regulares) a AFD, dado que un pasointermedio en dicho proceso es la construcción de un AFI.

Page 40: Teoria de lenguajes gramaticas y automatas para informatico

2.5. DETERMINISTAS, INDETERMINISTAS Y ESTOCÁSTICOS 41

Ejercicios

2.18 Construyanse autómatas finitos indeterministas para los si-guientes lenguajes sobre (0,1}:

• Cadenas con dos ceros consecutivos o dos unos consecutivos.

• Cadenas con un 1 en la antepenúltima posición.

Desarróllense sus equivalentes deterministas.

2.19 Transfórmese en un AFD el autómata dado poF = {94,97} y la siguiente tabla de transiciones. ¿Qué conjunto decadenas son aceptadas?

2.20 Determina cuál es el conjunto de cadenas aceptadas por elautómata M dado por la siguiente función de transición: Sa(qi) ={91,92}, Sb(qi) = {q?}, ¿afe) = 0, ¿fcfe) = {91,92}, donde Qi = F =

2.5.3 Autómatas finitos estocásticos

Un autómata finito estocástico asocia a cada cadena de S* unacierta probabilidad de aparición, con lo que el lenguaje es generadoen un orden aleatorio, pudiendo aparecer las cadenas repetidas veces.Este tipo de comportamiento es importante si se quiere reproduciralgún proceso real. Con frecuencia las cadenas con las que se traba-ja son generadas por fuentes con comportamiento aleatorio, o sufrenefectos de ruido, etc. Si no se da un tratamiento estadístico a estoslenguajes, su reconocimiento y análisis se vuelve muy difícil. Por elloconviene introducir en el modelo la probabilidad de que aparezca ca-da una de las cadenas. En el caso de los AFE7, la probabilidad se

7Aquí nos limitaremos a autómatas deterministas.

[qi]

Page 41: Teoria de lenguajes gramaticas y automatas para informatico

42 2. AUTÓMATAS FINITOS

asigna a cada una de las transiciones y a los estados de aceptación.Formalmente M — (Q, S, P, <?i,P/-), donde en vez de una función 6aparece P, una tabla de probabilidades de transición PÍJ(CL) desde elnodo qi hasta el nodo q¿ mediante el símbolo a. Además, el conjuntode estados de aceptación ha sido reemplazado por una lista Pf de lasprobabilidades pif de terminación en cada nodo <?¿. Si el autómatase encuentra en un estado g¿, el siguiente paso se determina aleato-riamente según las probabilidades Pij(a) y p^f. Evidentemente, lasprobabilidades de los sucesos que pueden ocurrir a continuación hande sumar uno:

Por tanto, no es necesario conocer los valores de p^f, y basta conpresentar la tabla P.

La probabilidad p(w) de generar una cadena w £ £*, vendrá dadapor el producto de las probabilidades de las transiciones que ejerceel camino, incluida la probabilidad de terminación en el último nodo.Esto puede hacerse de forma recursiva. Si definimos PÍJ(W] como laprobabilidad de que se vaya del nodo qi al qj al leer la cadena w,podemos escribir:

La probabilidad de que una palabra w sea generada depende de lasprobabilidades de aceptación p^f.

Es posible demostrar que si el AFE no contiene nodos inútiles,entonces la suma de las probabilidades de todas las cadenas de S* esla unidad:

Page 42: Teoria de lenguajes gramaticas y automatas para informatico

2.5. DETERMINISTAS, INDETERMINISTAS Y ESTOCASTICOS 43

El lenguaje generado por el AFE consta de todas aquellas cadenascuya probabilidad de aparición es no nula:

Es posible introducir autómatas finitos estocásticos indeterminis-tas (AFEI), en los que puede haber más de un camino asociado a unaúnica cadena y la probabilidad global será la suma de las probabili-dades de cada camino. Sin embargo, éstos no son equivalentes a losdeterministas, pues pueden generar más distribuciones de probabili-dad que los AFE deterministas.

Ejercicios

2.21 Demuestra que la suma de las probabilidades de todas las ca-denas de S* proporcionadas por un AFE sin nodos inútiles es launidad.

2.22 Busca un ejemplo para el que no exista un AFE deterministaque reproduzca las probabilidades generadas por un AFE indetermi-nista.

Page 43: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 44: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 3

Lenguajes regulares

3.1 Expresiones regulares

Como se comentó anteriormente, dado un alfabeto S existe unnúmero infinito de lenguajes (subconjuntos) posibles en E*, siendoademás este infinito de tipo no numerable. Por otro lado, la cantidadde frases de longitud finita que se pueden formar en cualquier lenguaje(incluidos los lenguajes naturales) es infinito pero numerable. Comoconsecuencia, sólo podemos describir con frases finitas un númeroinfinito pero numerable de entidades matemáticas. La consecuenciainmediata es que cualquier intento de definir una representación paratodos los subconjuntos de S* está condenado al fracaso, entendiendopor representación cualquier método para asignar a cada lenguajeuna expresión distinta que lo identifique unívocamente.

Una forma de representar algunos subconjuntos de S* de formaprecisa consiste en el uso de expresiones regulares. Una expresiónregular no es más que un tipo de notación matemática para represen-tar lenguajes. Los conjuntos representables mediante una expresiónregular reciben el nombre de conjuntos regulares. Aunque la defini-ción de estos conjuntos no parece guardar ninguna relación con laforma en que se introdujeron los lenguajes regulares, llegaremos a lainteresante conclusión de que estamos hablando exactamente de losmismos objetos1.

Antes de introducir las expresiones regulares, vamos a definir al-

^or una vez, un nombre semejante no se ha elegido sólo para confundir allector desorientado.

45

Page 45: Teoria de lenguajes gramaticas y automatas para informatico

46 3. LENGUAJES REGULARES

gimas operaciones con lenguajes:

• La unión de dos lenguajes L\ y L^ es:

• La concatenación de dos lenguajes LI y LI es:

La concatenación de un lenguaje consigo mismo un número ide veces se abrevia Lz, de forma que

• La clausura de Kleene de un lenguaje L se escribe L*, y sedefine como:

y significa cero o más concatenaciones de L.

• La clausura positiva de L se escribe L+ y se define:

es decir, L+ = L(L*}. Nótese que L+ coincide con L* si y sólosi e e L.

Las expresiones regulares, que utilizaremos para caracterizar losconjuntos regulares, pueden ser definidas recursivamente. Si escribi-mos L(r) para el conjunto denotado por una expresión r, entonces:

• 0 es una expresión regular que denota el lenguaje vacío

• e es una expresión regular que denota el lenguaje que sólo con-tiene la cadena vacía

• Si a es un símbolo de S, entonces a es una expresión regularque denota el lenguaje que contiene la cadena a

Page 46: Teoria de lenguajes gramaticas y automatas para informatico

3.1. EXPRESIONES REGULARES 47

Estas tres primeras reglas (cláusulas iniciales de la definición recur-siva) definen las expresiones regulares básicas.

• Dadas r y s, dos expresiones regulares entonces:

- (r) + (s) es una expresión regular2 que denota la unión deL(r) y L(s], es decir, L(r] U L(s).

— (r) (s) es una expresión regular que denota al conjunto con-catenación de L(r) y L(s), es decir, L(r)L(s).

- (r}* es una expresión regular que denota (L(r))*, la clau-sura de Kleene de L ( r ) .

Con esta última serie de reglas (cláusulas inductivas de la definiciónrecursiva), podemos definir cualquier expresión regular basándonosen las expresiones básicas.

• Ningún otro objeto es una expresión regular (cláusula maximalde la definición recursiva).

Las expresiones obtenidas por los mecanismos anteriores puedenser simplificadas mediante la eliminación de paréntesis innecesariossi se dota de una regla de precedencia a las operaciones de unión,concatenación y clausura. El criterio que se toma es el mismo queel de las operaciones aritméticas de suma, producto y potencia denúmeros respectivamente.

Podemos decir que los conjuntos regulares son los subconjuntosde S* que pueden ser definidos con expresiones regulares. Es decir,un subconjunto de S* es regular si y sólo si es 0, {e}, {a} para algúnsímbolo a 6 S, o puede ser obtenido a partir de estos conjuntos me-diante un número finito de aplicaciones de las operaciones de unión,concatenación o clausura de Kleene.

Algunos ejemplos de expresiones regulares sobre S = {0,1} son:

• O* (conjunto de todas las cadenas de ceros)

• (O + 1)* (conjunto de cadenas formadas por ceros y unos, esdecir, E*)

• (10)* (cadenas formadas por secuencias de 10, incluyendo e)

2En otra notación (r)|(s).

Page 47: Teoria de lenguajes gramaticas y automatas para informatico

48 3. LENGUAJES REGULARES

• (1 + 0)*10* (cadenas que contienen al menos un 1)

• (O + 1)*00(0 + 1)* (cadenas con dos ceros consecutivos)

• (1 + 10)* (cadenas que no tienen dos ceros consecutivos y em-piezan por uno)

Ejercicios

3.1 Descríbanse los conjuntos que denotan las siguientes expresionesregulares:

3.2 Escríbanse expresiones regulares que denoten los siguientes con-juntos sobre

• El conjunto de las cadenas que acaban en 0.

• El conjunto de las cadenas que tienen un sólo O

• El conjunto de las cadenas que no contienen la secuencia 000.

• Las cadenas que si contienen un 1, éste va precedido y seguidode 0.

3.3 Analizador léxico. Construye un programa que localice la posi-ción (fila y columna del primer símbolo de la cadena) en un ficheroque contiene código fuente en C, en la que aparezca alguno de lossiguientes elementos del lenguaje:

• Palabras reservadas while, for, do o case.

• IIdentificadores.

• Constantes numéricas enteras.

• Constantes numéricas en coma notante.

Page 48: Teoria de lenguajes gramaticas y automatas para informatico

3.1. EXPRESIONES REGULARES 49

• Comentarios en C++. (En C++, además de los de C, se consideracomentario todo lo que comienza con II y acaba en un cambiode línea).

3.4 Las expresiones regulares en Unix: estudia la ayuda que el sis-tema operativo Unix proporciona para el comando grep. A la vistade esta ayuda escribe los comandos necesarios para realizar la mismabúsqueda que se pide en el ejercicio anterior:

3.5 El lenguaje para procesar texto E^T^Kpermite escribir ecuacio-nes, entre otras opciones, encerrando éstas entre los símbolos $$ y$$. Escribe una expresión regular en notación Unix que permita re-conocer este tipo de ecuaciones en un fichero en látex. Nota: Elcódigo para la ecuación puede formarse con cualquier carácter asciiimprimible.

3.6 Las páginas diseñadas con HTML para la World Wide Web inclu-yen, además de texto, una serie de etiquetas ftagsj encerradas entrelos símbolos < y >. Escribe una expresión regular en notación Unixque permita detectar estas etiquetas.

Conviene destacar que una expresión regular denota con precisiónun único subconjunto de £*, mientras que el inverso no es cierto: unmismo conjunto admite representaciones diferentes, pudiendo inclusoser difícil a simple vista determinar si dos expresiones regulares iden-tifican al mismo conjunto. No obstante, como veremos en la sección4.2, disponemos de algoritmos para determinar si dos expresiones re-gulares son equivalentes.

3.1.1 Algunas propiedades de las ER

Se deja como ejercicio la justificación de las propiedades siguientesque lo requieran:

— el operador + es asociativo y conmutativo

— el operador concatenación es asociativo

— r(s + t) — rs + rt (distributividad por la izquierda de la conca-tenación sobre la unión)

Page 49: Teoria de lenguajes gramaticas y automatas para informatico

50 3. LENGUAJES REGULARES

— (r + s)t = rt + st (distributividad por la derecha de la concate-nación sobre la unión)

(idempotencia)

3.2 Equivalencia ER-AF

Dada una expresión regular r que denota un cierto conjunto re-gular £(r), siempre es posible construir un autómata finito M queacepte L(M] = L(r}. Igualmente, dado un autómata M, siempre esposible describir el conjunto L(M] mediante una3 expresión regular.

5En realidad, por muchas.

Page 50: Teoria de lenguajes gramaticas y automatas para informatico

3.2. EQUIVALENCIA ER-AF

Por ello, el conjunto de lenguajes regulares es idéntico al conjunto deconjuntos regulares. Los dos sentidos de la equivalencia anterior sepueden demostrar dando procedimientos constructivos, que procedende forma recursiva.

Comenzaremos construyendo un autómata finito para cualquierexpresión regular dada. Si hemos sido estudiantes aplicados y hemosrealizado el ejercicio 3.3, nos habremos dado cuenta de que necesita-mos implementar 4 funciones básicas para construir un programa quebusque cadenas que casan con la expresión regular. Intuitivamente,podemos obtener el algoritmo básico, que es:

• Por cada símbolo de la cadena que no es un metacaracter (parénte-sis, barra o estrella) añade dos estados conectados por ese símbo-lo.

• Por cada concatenación de expresiones añade una transiciónvacía entre el último estado de la primera y el primero de lasegunda, de forma análoga a como se realiza la conexión enserie de dos circuitos eléctricos.

• Por cada unión de expresiones añade un nuevo estado de en-trada y otro de salida. Conecta el primero con dos transicionesvacías a los primeros de cada expresión. A su vez, los dos últi-mos de cada expresión deben conectarse mediante transicionesvacías con el nuevo estado de salida, en analogía con una cone-xión en paralelo de dos circuitos.

• Por cada clausura de Kleene añade un nuevo estado de entradaque también será el de salida. Conecta este estado con el inicialdel autómata correspondiente a la expresión y el de salida deéste con el nuevo estado mediante transiciones vacías.

Importa distinguir entre el algoritmo y el meta-algoritmo (pro-grama) que para una expresión regular (cadena) construye un AFD(programa). El AFD a su vez procesa cadenas de entrada, pero susalida es 0/1 (sí/no).

Las transiciones vacías se han introducido para representar lasfrases sin contenido. Por ejemplo, en el lenguaje C una sentencia po-sible es if (x==l) {;} que indica que tras el condicional se ejecuta unasentencia sin ningún contenido. Esto conduce a una reflexión sobre

Page 51: Teoria de lenguajes gramaticas y automatas para informatico

52 3. LENGUAJES REGULARES

el significado del indeterminismo: ¿puede un ordenador ser indeter-minista? Muchas veces se confunde el concepto de indeterminismocon el de (pseudo)aleatoriedad: si el pasado determina completamen-te el futuro, aunque sea aleatoriamente, el sistema es determinista.En un proceso indeterminista, varios futuros coexisten para el mismopasado. Como los ordenadores actuales no admiten indeterminismo(y de momento sólo pseudo-aleatoriedad, es decir, quien conozca elfuncionamiento del programa puede ganar al ordenador), éste se de-be simular: el programa guardará una lista de los estados que estánsiendo visitados en ese momento.

Formalicemos estas ideas intuitivas recordando la definición quedimos de las expresiones regulares en la página 46, comenzamos di-señando autómatas que aceptan 0 , {e} y {a} (a £ £), tal y comoaparecen representados en la fig.[3.1].

De acuerdo con su definición, también son expresiones regularesaquellas que denotan los conjuntos obtenidos por unión, concatena-ción o clausura de conjuntos denotados por expresiones regulares. Sir y s son las expresiones regulares que representan los conjuntos acep-tados por los autómatas M^ y M\-s* respectivamente, entonces es po-sible construir nuevos autómatas para aceptar los conjuntos L(r + 5), L(rs) y ¿(r*), tal y como aparece representado simbólicamente enlas figuras 3.2-3.4.

Es claro, que los autómatas allí dibujados aceptan las cadenas deL(r + s) = L(r) \JL(s) (y sólo esas) mediante su colocación "en para-lelo", las de L(rs) = L(r)L(s} cuando se colocan "en serie" y las deL(r*} = (L(r)}* cuando se permiten iteraciones a través de un bucleque requiere una subcadena perteneciente a L(r) para ser atravesado.El uso de transiciones vacías garantiza que no se producen interfe-rencias entre los autómatas. Por ejemplo, el diagrama de la figura3.5 es incorrecto, pues puede ocurrir en algún caso que se acepte unacadena w = xy donde x es una cadena tal que 5x(q

rl) = q\ mientras

que y 6 s, sin que la concatenación w = xy pertenezca a ninguno de

Figura 3.1: Auomatas Fini tos

Page 52: Teoria de lenguajes gramaticas y automatas para informatico

3.2. EQUIVALENCIA ER-AF 53

Figura 3.2; Representacion simbolica del proces para obtener el automata

Figura 3.2; Representacion simbolica del proces para obtener el automata

MK[r=s] apartir delos automatas

MK[r=s] apartir delos automatas

Figura 3.2; Representacion simbolica del proces para obtener el automataMK[r=s] apartir delos automatas M[r]y M[s].

Page 53: Teoria de lenguajes gramaticas y automatas para informatico

54 3. LENGUAJES REGULARES

los dos conjuntos de aceptación.Con este método constructivo, queda justificado que siempre es

posible construir un AFI tal que L(M] sea el dado por una expre-sión regular. Para el proceso inverso —dado un autómata finito M,obtener una expresión regular para L(M]— también es posible darun método constructivo. Para ello, basta con observar que los sub-conjuntos iniciales y de aceptación, Q\ y F, son arbitarios, por loque es posible definir una matriz de lenguajes regulares L(TÍJ] en elautómata M:

Cada cadena incluida en el conjunto anterior permite llegar desdedesde el nodo qi hasta el ^-, de forma que:

Además, también denota un lenguaje regular la expresión r\ • , defini-do como el conjunto de cadenas que llevan desde qi hasta qj sin pasar

por nodos4 con subíndice superior a k. Efectivamente, r\- denota elconjunto Z/(r¿j) generado por un autómata M' construido a partir deM, pero donde se han suprimido algunos arcos. Con esta definición:

4Cuando se dice que el camino pasa por qm, se entiende que es un nodo interioral camino, es decir, un camino no pasa por sus nodos primero o último.

Figura 3.5 ' Conexion incorrecta de dos automatas en paralelo

Page 54: Teoria de lenguajes gramaticas y automatas para informatico

3.2. EQUIVALENCIA ER-AF 55

La ecuación (1) se deduce del hecho de que no hay nodos con índicesuperior a n, y por tanto r\j no excluye ningún arco y coincide con

TÍJ. El segundo punto (2) afirma que r¿ - corresponde a los arcosde transición, pues sólo estos no requieren ejercer otras transicionesque no sean las que salen de g¿. Es importante no olvidar que en elcaso i = j debe incluirse al menos e en rción (3) es la que nos indica cómo construir una expresión regularpara I/(M), ya que permite expresar recursivamente L(M] en fun-ción de expresiones con índice k cada vez menor hasta llegar a losarcos de transición. Como los arcos se pueden describir trivialmentemediante expresiones regulares y el proceso sólo involucra operadoresde unión, concatenación y clausura —como queda explícito en (3)—,se concluye que L(M] es una expresión regular.

El significado de de la ecuación (3) es que para ir desde g¿ hasta<7j, o bien el camino no pasa por q^ (y pertenece a r- ), o bien pasapor qjy. En este último caso, el camino puede descomponerse en unasubcadena que lleva hasta q^ por primera vez (y qu está contenida enrik )' seguida de cero o más subcadenas que llevan de q^ hasta q^pero sin pasar a través de q^ (contenidas en (rj^ ')*) terminada poruna subcadena que lleva desde q^ hasta qj (y que pertenece a rL ).

El algoritmo anterior puede ser programado con relativa facilidad.En casos sencillos, y sobre todo cuando card (Qi) = card (F] — 1, elprocedimiento puede aplicarse de forma intuitiva.

Ejemplo: Sea el autómata M = ({gi,<?2?#3}? {O, !},£, #1, {<?i}), conó definido por la tabla

(3)La expresión regular buscada es r^ , que se ha de calcular recursiva-mente:

Page 55: Teoria de lenguajes gramaticas y automatas para informatico

56 3. LENGUAJES REGULARES

cada componente se calcula usando de nuevo la ecuación (3):

que de la misma manera se ha de poner en termino de r¿ ', calculadosde acuerdo con la ecuación (2), y simplificadas convenientemente:

T3)Reuniendo todos los términos, la expresión r^ resulta ser bastantecompleja:

Page 56: Teoria de lenguajes gramaticas y automatas para informatico

3.2. EQUIVALENCIA ER-AF 57

El lector puede comprobar que si en este método se renumeran losestados de manera que el estado inicial y los de aceptación tenganlos números más altos la expresión regular resultante es bastante mássencilla.

Hay otra manera de construir la expresión regular correspondientea un autómata finito (determinista o indeterminista) dado M [13, 14];esta construcción se puede hacer de manera que las expresiones regu-lares obtenidas sean muy sencillas. Para cada nodo g¿ del autómata,definimos r(qi) como la expresión regular que representa el lenguaje

es decir, el lenguaje de las cadenas que, partiendo de % determinan almenos un camino que llega a alguno de los estados de aceptación. Ellenguaje aceptado por el autómata L(M), es la unión de los lenguajescorrespondientes a los nodos del conjunto inicial Q\\

es posible poner el lenguaje L(qi) para cualquier nodo qi en funciónde los lenguajes L(qj) correspondientes a los nodos qj hacia ningunode los cuales hay transiciones directas (es decir, definidas en la tablade transiciones 6} desde % En términos de expresiones regulares:

si qi 6 F. El significado de estas ecuaciones es que cada transiciónque parte de g¿ contribuye al lenguage !/(<&) de la manera siguiente:si con el símbolo a se puede pasar de qi a qj (es decir,las cadenas que son concatenación de a con las cadenas de L(qj] per-tenecen al lenguaje L(qi). Además, si qi es un estado de aceptación,la cadena vacía e también pertenece al lenguaje I>(<?¿).

Si se escribe una ecuación como las anteriores para cada nodo, seobtiene un sistema de ecuaciones regulares (en total, card(Q) ecua-ciones) que se pueden resolver para obtener las expresiones regulares

Page 57: Teoria de lenguajes gramaticas y automatas para informatico

58 3. LENGUAJES REGULARES

r(qi) correspondientes a los nodos de Q\: la unión de estos represen-ta al lenguaje aceptado por el autómata. El sistema de ecuacionesresultante sólo se puede resolver por substitución^, intentando hallarlos términos r(qi). Durante este proceso aparecen ecuaciones de laforma

donde s y i son dos expresiones regulares cualesquiera. Es posiblehallar r(qj) de estas ecuaciones si tenemos en cuenta que la ecuaciónanterior es equivalente a

donde la expresión regular r(qj) ya está despejada. La equivalenciade (3.3) y (3.4) se puede demostrar rigurosamente por inducción.Intuitivamente, resulta claro que todas las cadenas representadas pors están también en el lenguaje representado por r ( q j ) . Por tanto,si sustituimos s en la parte derecha de la ecuación (3.3), se ve quetambién las cadenas de s + ts pertenecen al lenguaje representado porr((/j). Sucesivamente, se ve que las cadenas de s + íns, para cualquiern, también pertenecen al lenguaje r ( q j ) .

El método puede quedar más claro con un ejemplo. Consideremosel autómata finito

con la tabla de transiciones:

Las ecuaciones correspondientes, obtenidas según las reglas (3.1)y (3.2) son:

5Hay que notar, que, a pesar de que las ecuaciones tienen la apariencia desumas y productos, representan uniones y concatenaciones y, por tanto, no se laspueden aplicar los mismos métodos que a las ecuaciones lineales.

Page 58: Teoria de lenguajes gramaticas y automatas para informatico

3.2. EQUIVALENCIA ER-AF 59

y nos interesa el valor de r(qi). El valor de r(q±) se puede sustituirtrivialmente en las ecuaciones para r(q<¿) y r(q$)\ después, se les aplicala regla de equivalencia de las ecuaciones (3.3) y (3.4) para hallar r(q<¿)y r(qs). Las nuevas ecuaciones son:

donde se ve que

Ejercicios

3.7 Encuentra una expresión regular para el conjunto de cadenasbinarias cuyo valor es múltiplo de tres a partir del AFD que aceptadichas cadenas.

3.8 Expliqúese el significado de las siguientes expresiones regularesy construyanse autómatas finitos deterministas para cada uno de loslenguajes denotados:

Page 59: Teoria de lenguajes gramaticas y automatas para informatico

60 3. LENGUAJES REGULARES

3.9 A partir del autómata finito que los acepta, calcúlense las expre-siones regulares para cada uno de los siguientes lenguajes regularescíe

• cadenas con un número impar de unos;

• cadenas que no contienen la subcadena 101;

• cadenas que contienen dos dígitos consecutivos iguales;

• cadenas que no contienen más de dos ceros consecutivos.

3.10 Representa gráficamente y como expresión regular el autómatafinito definido por Qi = {qi},F = {#2,93} 7 1& siguiente tabla detransiciones:

3.11 En el autmata de la figura, cada expresin regular sobre unarco significa que se puede llegar de un estado al otro con cualquiercadena vlida segn dicha expresin. Transforma el autmata en un AFIque reconozca exactamente el mismo lenguaje.

3.12 Construye un autómata finito determinista para las cadenasbinarias tales que la diferencia (absoluta) entre el número de ceros yde unos no es múltiplo de 3. Obten una expresión regular a partir dedicho autómata.

3.13 Encuentra una expresión regular que represente al lenguajereconocido por el autómata

Page 60: Teoria de lenguajes gramaticas y automatas para informatico

3.3. OPERACIONES CON CONJUNTOS REGULARES 61

3.3 Operaciones con conjuntos regulares

Existen operaciones bajo cuya aplicación los conjuntos regularesson estables, es decir, el conjunto que se obtiene como resultado estambién regular. Ejemplo de ellas son las siguientes:

• unión, concatenación y clausura

• complementación

• intersección

• sustitución

• cociente

• inversión

La unión, concatenación y clausura de conjuntos regulares es re-gular por la misma definición de conjunto regular. Que el comple-mentario (L = S* — L) de un conjunto regular L es regular, se puededemostrar construyendo a partir de M —el AFD que acepta L—, unautómata M' que reconoce L. Para ello, basta con tomar M' idénticoa M, con la salvedad de que el nuevo subconjunto de estados acep-tables es F' = Q - F. Es evidente que

Como consecuencia inmediata de lo anterior, la intersección dedos conjuntos regulares también es regular, pues puede expresarseeri términos de unión y complementación: L\ fl 1/2 = L\ U L<¿. Unaforma, en general más sencilla, de construir el autómata que acep-ta LI n Z/2 a partir de M\ y M<¿ los AFD que reconocen respectivamente, es tomar

donde

Page 61: Teoria de lenguajes gramaticas y automatas para informatico

62 3. LENGUAJES REGULARES

Una sustitución es un homomorfismo / : S* —> P(A*), tal quela imagen f(a] de cualquier elemento a £ £ es un conjunto regularsobre otro alfabeto A. En el monoide final la operación definida esla concatenación de lenguajes, y en el inicial la concatenación decadenas. Sabemos que:

• f ( x y ) — f ( x ) f ( y ) (por definición de homomorfismo);

• f ( e ) = {e} (la imagen del elemento neutro a través de un ho-momorfismo es el elemento neutro del monoide de llegada).

Dadas estas propiedades, se concluye trivialmente que la imagenf ( w ) de una cadena w 6 £* es un conjunto regular. En particular,f ( w ) es concatenación de los conjuntos regulares que se obtienen alaplicar / a cada uno de los símbolos que componen la cadena. Siw = 0,10,20,3 . . . entonces f(w] = f (0,1) f (a<¿) f ( 0 , 3 ) . . . No sóloes regular, también la imagen de un conjunto R de cadenas lo es,siempre que R sea regular, dado que:

y por tanto, los conjuntos regulares son estables bajo sustituciones.Un caso particularmente interesante de sustitución se da cuando / esde la forma: / : E* —)• A* y cada cadena es sustituida por otra.

El cociente de dos cadenas se define como la operación inversade la concatenación. Dado que la concatenación no es conmutativa,debe distinguirse entre el cociente por la derecha y el cociente por laizquierda:

El cociente entre conjuntos se define entonces:

Page 62: Teoria de lenguajes gramaticas y automatas para informatico

3.3. OPERACIONES CON CONJUNTOS REGULARES 63

Otro concepto utilizado con frecuencia es el de conjunto de colasde la cadena w £ £* en el lenguaje L, definido como w~lL. Si elconjunto de colas de w es no vacío (w~lL ^ 0), entonces diremosque w es un prefijo de L. A su vez, diremos que w es un sufijo dellenguaje L si

En general, el cociente de un lenguaje regular R con un lenguajecualquiera (no necesariamente regular)!/ es regular. En efecto, dadoR existe un AFD que reconoce a í?, por ejemplo El AFD que reconoce a C = RL~l es M' = (Q, S, ¿, </1? F'), con

Trivialmente:

Luego C = L(M'), lo que demuestra que .RL"1 es regular. Si elcociente se realizase por la izquierda, el proceso sería semejante, peroredefiniendo el estado inicial q\. Este pasaría en general a ser unsubconjunto de estados iniciales Qi, que pueden reducirse a uno únicomediante las técnicas de conversión a AFD explicadas en la sección2.5.1.

Conviene destacar que el procedimiento anterior, no constituyepor sí solo un procedimiento efectivo para encontrar el autómata M',puesto que la cadena y debe buscarse entre un conjunto eventual-mente infinito de cadenas L, y el tiempo requerido para ello puede noestar acotado. Esto no ocurre si L está caracterizado como lenguajeregular o por una gramática independiente del contexto. Volveremossobre esta cuestión de la resolución algorítmica de problemas másadelante en la sección 4.2.

Por último, se define WR, la cadena inversa de la cadena u>, deforma recursiva:

También se define lenguaje inverso de un lenguaje L a

Page 63: Teoria de lenguajes gramaticas y automatas para informatico

64 3. LENGUAJES REGULARES

Obviamente, 0^ = 0. Con estas definiciones, el conjunto LR es re-gular si y sólo si L es regular. Para probarlo, basta con observarque:

Esto permite obtener una expresión regular para LR conocida unaexpresión para L, y viceversa, con el convenio de que rR representaa la expresión regular que denota

Ejercicios

3.14 ¿Es la unión de infinitos conjuntos regulares también regular?¿Y cualquier subconjunto de un conjunto regular? Justifica la res-puesta.

3.15 Demuestra que si A © B (la diferencia simétrica de A y B) yA son regulares entonces B es regular.

3.16 Demuestra que si M^ es el AFD que acepta cadenas binariascuyo valor es múltiplo de k, entonces

3.17 Razona la validez de las siguientes identidades:

3.18 Demuestra que el conjunto de prefijos Pr(L) de un lenguajeregular L es regular: Pr(L) = [x E S* : xw E L para alguna Haz lo mismo con el conjunto C(L] = {y e S* : xyz G L para algunas

Page 64: Teoria de lenguajes gramaticas y automatas para informatico

3.3. OPERACIONES CON CONJUNTOS REGULARES 65

3.19 ¿Cómo se construiría a partir de M el AFD que aceptasiendo f una sustitución? Aplica el razonamiento para demostrar que

es regular.

3.20 Justifica que, para cualquier lenguaje L, (L*)R — (LR)*.

3.21 Demuestra que si f : £* —>• A* es un homomorfismo y R CA* es regular entonces f~l(R] — {x E S* : f(x) E R} es regular(estabilidad para la inversa del homomorfismo).

3.22 Demuestra que

3.23 Dado un autómata, A definimos el lenguaje L formado portodas las cadenas w = aiü2...a\w\ tales que su longitud w es par yademás 0,20,4....a\w es aceptado por A. Describe cmo puede construir-se un AFD B que reconozca L. Explica el procedimiento aplicndoloal autmata A que reconoce

3.24 Sea la operación P definida sobre una cadena w como sigue:si w contiene dos a consecutivas, cada b se convierte en una c; si wcontiene dos b consecutivas cada a se convierte en una c. ¿Es la clasede los lenguajes regulares sobre {a, 6} cerrada bajo P?

3.25 Obtener un AFD para el lenguaje L(M) — a(ba)*, siendo M elautómata de la figura.

3.26 Construye un AFD que reconozca las cadenas binarias que,empezando y acabando por el mismo dígito, tienen un valor numéricomúltiplo de tres.

3.27 Sea la transformación h : {0,1}* —)• {a, b}* tal que /¿(O) = aay h(l) = aba, con la propiedad de conservación de la concatenación(se tendrá, por ejemplo, que /i(010) = aaabaaa); y sea el lenguajeL = (ab + ba}*a. Encontrar el autómata determinista mínimo quereconozca el lenguaje

es decir, L' está formado por las cadenas sobre el alfabeto (0,1} cujaimagen pertenece a L.

Page 65: Teoria de lenguajes gramaticas y automatas para informatico

66 3. LENGUAJES REGULARES

3.28 Dado el lenguaje L = (1(10)*, escribe una expresión regular(usando sólo operadores de unión, concatenación y clausura) para ellenguaje

3.29 Calcula el cociente entre el lenguaje reconocido por el autóma-ta de la figura y:

1. la cadena a;

2. la expresión regular a + ab

3.30 Dado un lenguaje regular L, definimos el lenguaje:MAX(L) = {x 6 L para ninguna y diferente de e se tiene xy E

L}.Construye un autómata finito para MAX(L) si L es el lenguaje

representado por la expresión regular

3.31 Explica un método general para encontrar el autómata quereconoce cualquier cadena binaria que contiene una subcadena dellenguaje definido por otro autómata dado M. Aplícalo como ejemploal autómata

3.32 Describe un algoritmo que, dadas dos expresiones regulares ry s permita saber si r C s.

3.33 El contorno de una figura plana puede representarse medianteuna cadena que indica direcciones (TV, £", 5, W) de los movimientos

Page 66: Teoria de lenguajes gramaticas y automatas para informatico

3.3. OPERACIONES CON CONJUNTOS REGULARES 67

del lápiz cuando recorre (en sentido horario) el borde la figura, em-pezando por un punto del borde y retornando al mismo punto. Paraevitar que el resultado dependa del punto del contorno elegido comoinicial se define el conjunto de cadenas giradas respecto al conjuntode partida:

Describe algún método para transformar el autómata finito determi-nista que reconoce L en uno (indeterminista) que reconoce todas lascadenas en cycle(L). Toma, por ejemplo, el caso del lenguaje

3.34 Sea el lenguaje regular .ñ = (0| l)*ll(0| l)*yel lenguaje inde-pendiente del contexto L = {cadenas binarias con igual númerode ceros que de unos}. Dibuja un autómata para el cociente

Page 67: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 68: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 4

Construcción de

autómatas finitos

4.1 Lema de bombeo

Un problema que se plantea con frecuencia es el de diseñar unautómata finito (o alternativamente encontrar una expresión regu-lar) para el reconocimiento de un lenguaje dado. Para ello, convienepreguntarse previamente si el conjunto en el que estamos interesadoses efectivamente regular. Aunque no disponemos de un método gene-ral que responda a esta pregunta en todos los casos, existen al menosalgunas propiedades que debe cumplir cualquier lenguaje regular yque, en caso de no ser satisfechas, permiten descartar la posibilidadde que el conjunto dado sea regular. Una de ellas es el lema de bom-beo. Esencialmente, lo que recoge su enunciado es que los lenguajesregulares son reconocibles mediante autómatas con un número fini-to de estados, y por tanto, la cantidad de información que en ellosse puede almacenar es finita. En particular, al proceder al recono-cimiento de una cadena lo suficientemente larga, el autómata debepasar más de una vez por alguno de los estados. En ese caso, el ca-mino recorrido presenta un bucle, y el fragmento de cadena que loorigina podría repetirse ("bombearse") tantas veces como se quiera.Veamos el enunciado del lema de bombeo:

Lema 4.1 Para todo conjunto regular L existe un número n E N tal

69

Page 69: Teoria de lenguajes gramaticas y automatas para informatico

70 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

que

Demostración. Si L es regular, existe M, un AFD que acepta L.Sea n = \M\ el número de nodos de M y u? = d\ai • . . am una cadenade E* con m > n. Cada símbolo de w induce una transición a otroestado en M, por lo que al cabo de m transiciones al menos algúnnodo QÍ ha sido visitado dos veces1. Supongamos que la sucesiónde estados inducida por w en M es q\q<¿... g¿ . . . q}... qm+i y queqj = qi es el primer nodo que se repite en la sucesión. Si llamamosx — a\a^ ... Oj_i, y = ¿^£¿¿+1... flj-i, z = djdj+i...ai, resulta queSy(qi) — QÍ y por tanto qm+i = fiz($y}k$x(qi) para cualquier A; e N.Se concluye pues, que xykz G L para todos los valores de A:. Además,y T¿ e por ser el autómata determinista, y xy\ < n, pues el primernodo repetido puede aparecer como muy tarde en la posición n + 1del camino.

Es importante notar que en ningún caso el lema de bombeo de-muestra que un conjunto C dado sea regular. Se trata simplementede un filtro que permite rechazar algunos conjuntos como candidatosa conjuntos regulares. Esto ocurre cuando, dado el conjunto C, noexiste el número n al que se refiere el lema, lo cual se demuestra ge-neralmente por reducción al absurdo: independientemente del valorde n, no hay forma de satisfacer las condiciones del lema. Ello re-quiere justificar que existe alguna cadena de longitud superior o iguala n que no puede ser descompuesta en tres fragmentos que satisfagantodas las condiciones del lema. La dificultad, pues, estriba en encon-trar dicha cadena (en realidad, conjunto de cadenas, ya que al ser ndesconocido la cadena elegida dependerá del valor de n).

Veamos un ejemplo de aplicación del lema. Dado el conjuntoC = {w £ (0 + 1)* : w contiene igual número de ceros que de unos},supongamos que existe n. Entonces podemos tomar, por ejemplo, lacadena w = Q2nl2n. Es evidente que no existe una fragmentación w =xyz que satisfaga a un tiempo que

1 Basta con que m = n ya que una cadena de m símbolos recorre m + I nodos,incluidos los extremos.

Page 70: Teoria de lenguajes gramaticas y automatas para informatico

4.1. LEMA DE BOMBEO T\_

ya que la subcadena y debe estar compuesta de uno o más ceros,y al variar k se varía el contenido de ceros de la cadena sin variarsimultáneamente el de unos. Por tanto, si k / 1 entonces y el conjunto C no es regular.

Ejercicios

4.1 Demuestra que D — {w E £* : w = On } no es regular.

4.2 Razónese qué subconjuntos de (0,1}* de entre los siguientes sonregulares:

• {02n : n 6 N};

• el conjunto de las cadenas que representan un número primo;

• el conjunto de las cadenas que representan múltiplos de 3;

• el conjunto de las cadenas cuya longitud es un cuadrado per-fecto;

• el conjunto de las cadenas que tienen el mismo número de cerosque de unos;

• el conjunto de las cadenas palíndromas (capicúa);

• el conjunto de los prefijos de 1/3;

• el conjunto de los prefijos de \/2;

• el conjunto de las cadenas cuyo contenido en ceros y unos difiereen un número par

4.3 Dado un lenguaje regular L, ¿son regulares los siguientes con-juntos?

mitad(L) = {x : 3y : x — \y\,xy E L}, donde x es la longitudde la cadena x.

Page 71: Teoria de lenguajes gramaticas y automatas para informatico

72 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

4.4 Dada la cadena s = abaababaababaab..., ¿es Pr(s} = {x :x es un prefijo de s} regular?

4.5 Dado un lenguaje de cadenas binarias L C {0,1}*, construimosel lenguaje formado por las cadenas de L cambiadas de la siguienteforma:

todos los dígitos en posición par se cambian, los que ocupan po-sición impar se mantienen.

Por ejemplo, si 01001 E L, entonces se obtiene 00011.Justifica que si L es regular, entonces también lo es L'. Encuentra

un AFD para L' si L es el lenguaje definido por la expresión regular

4.6 Dado un lenguaje L C {0,1}*, sea

Esto es, L' contiene todas las cadenas obtenidas borrando exacta-mente un 1 a las cadenas de L. Justifica que si L es regular, entoncestambién lo es L'. Encuentra un AFD para L' si L es el lenguajedefinido por la expresión regular

4.7 Dado un lenguaje regular L, llamamos err(L) a todas las cade-nas que pueden obtenerse por error en un símbolo (si el alfabeto es{0,1}, Un cero ha sido cambiado por un uno o al revés) de las cadenasde L. Justifica que err(L) es regular. Encuentra el autómata paraerr(L) si L es el lenguaje formado por todas las cadenas binarias talesque la diferencia (absoluta) entre el número de ceros y de unos no esmúltiplo de 3.

4.8 Sea L un conjunto regular. Justificar que entonces también esregular el conjunto

(X/2 está formado por la primera mitad de las cadenas de L).

4.9 Dado un lenguaje L sobre S, definimos el conjunto MT(L) como

Por ejemplo, si L = {e, a, a&, bab, bbab, aabbab} entonces MT(L] —{e, a, bb}. Demostrar que si L es regular, entonces MT(L] tambiénes regular.

Page 72: Teoria de lenguajes gramaticas y automatas para informatico

4.2. ALGORITMOS Y DECIDIBILIDAD 73

4.10 Sea una sucesión infinita de palabras x\, #2, £3, • • • , xn,... so-bre un alfabeto E. Definimos el lenguaje L de la siguiente forma:XiXj e L si y sólo si i < j. ¿Es L regular? Justifiqúese la respuesta.

Una consecuencia relacionada con el lema de bombeo es que noexisten autómatas finitos que reconozcan cadenas prefijo de un núme-ro irracional, por ejemplo \/2- Esto equivale a afirmar que \/2 no escomputable: cualquier ordenador tiene un número finito de estados(y la memoria accesible en la práctica está acotada) y por tanto elresultado obtenido sería periódico a partir de cierta cifra, y por tantoincorrecto.

4.2 Algoritmos y decidibilidad

Un algoritmo es una secuencia finita de instrucciones inambiguasy efectivas que constituyen un método general para obtener la res-puesta a una pregunta determinada. Por efectivo debemos entenderque éste proporciona la respuesta siempre en un tiempo finito. A laspreguntas para las que existe dicho método se las denomina decidi-bles. No todas las cuestiones admiten una solución algorítmica2. Eneste apartado estudiaremos la decidibilidad de preguntas como: ¿sonequivalentes dos autómatas?; ¿genera un autómata dado M un con-junto vacío, finito o infinito de cadenas? Veremos que estas preguntasson decidibles, en el sentido de que disponemos de un método generalque proporciona una respuesta en un tiempo finito en cualquier casoque se presente. Para ello enunciaremos los siguientes teoremas:

Teorema 4.1 El lenguaje aceptado por un AFD es distinto del vacíosi y sólo si existe una palabra w en este lenguaje cuya longitud es máspequeña que el número de estados del autómata:

Demostración. La implicación hacia la izquierda es trivial, así quedemostraremos la implicación hacia la derecha. Sea n = \M\. SiL(M) 7^ 0 entonces L(M) contiene al menos una cadena w. Siw < n ya está demostrado. Si w > n entonces por el lema de

2Por ejemplo, la existencia o no de un cardinal intermedio entre el de losnúmeros naturales y el de los reales (ver página 144)

Page 73: Teoria de lenguajes gramaticas y automatas para informatico

74 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

bombeo w = xyz con \y\ > 1 y además xz G L(M] , cuya longitud esestrictamente menor que la de w. Si xz < n ya hemos terminado.Si no, se procede sucesivamente, aplicando el lema de bombeo a lanueva cadena obtenida. En cada paso la longitud de la cadena seacorta al menos en un símbolo, por lo que en algún momento debeobtenerse una subcadena cuya longitud es menor que n.

Teorema 4.2 El lenguaje aceptado por un autómata es infinito si ysólo si existe alguna palabra en este lenguaje cuya longitud se encuen-tra entre dos cotas: el número de estados del autómata y dos veces elnúmero de estados del autómata:

Demostración.

(-4=) Es consecuencia del lema de bombeo y de que \w\ > |M|. Enefecto, si w = xyz es la partición de la cadena que satisface ellema de bombeo, entonces xykz genera un conjunto infinito decadenas al variar fc, todas ellas de L(M).

(=¿>) Si L(M] es infinito, entonces existen en él cadenas de longitudsuperior a cualquiera dada, puesto que en caso contrario el con-junto sería finito. Tomemos w; : w > n = \M\. Si w está com-prendida entre n y 2n ya está demostrado. Si w; > 2n entoncesse puede aplicar el lema de bombeo con k = O, obteniendo unacadena más corta. Como w = xyz : \y\ > 1, xy\ < n, necesaria-mente 1 < \y\ < n, y la cadena se va acortando en fragmentosde longitud menor o igual que n. Es necesario, por tanto, queen algún momento la cadena que obtenemos tenga una longitud/ comprendida entre n y 2n (n < / < 2n).

Cuestión: Si L(M] es finito y n — |M|, ¿cuál es como máximo lalongitud de las cadenas aceptadas por M?

Teorema 4.3 Existe un algoritmo que determina si dos autómatasson equivalentes (por tanto, también si dos expresiones regulares re-presentan al mismo conjunto).

Page 74: Teoria de lenguajes gramaticas y automatas para informatico

4.3. MINIMIZACIQN DE AUTÓMATAS FINITOS 75

Demostración. Para determinar si L(M\) — L(M<2) basta conconstruir —utilizando las técnicas de la sección 3.3— un autóma-ta Ma que acepte I/(Ms) = L(M\) © L(M^) y aplicar el algorit-mo del teorema 4.1 para determinar si L(M^) = 0. Trivialmente

Los teoremas anteriores proporcionan procedimientos cuya con-clusión está garantizada. Por ejemplo, para determinar si el conjuntode cadenas que acepta M es vacío, finito o infinito basta con buscarentre las cadenas de longitud comprendida entre O y 2|M| — 1. Dadoque para un alfabeto finito S, el número de cadenas con longitud me-nor que 2|M| es finito y está perfectamente determinado, es seguroque obtendremos una respuesta.

Ejercicios

4.11 Descríbase un algoritmo para obtener el cociente LiL^1 dedos lenguajes regulares

4.12 Dése una cota para el número de cadenas de £* con longitudmenor que una dada I, si S contiene p símbolos.

4.3 Minimización de autómatas finitos

Una propiedad muy interesante de los autómatas finitos determi-nistas es que si se establece un relación de orden de acuerdo con sutamaño —según el número de nodos que contiene—, el subconjuntode los autómatas finitos que generan un lenguaje dado L tiene unmínimo, es decir, existe un único autómata que es menor (estricta-mente) que todos los demás. Esto no ocurre, por ejemplo, en el casode los autómatas finitos indeterministas, donde podemos encontrarvarios autómatas equivalentes tales que no existe otro equivalente detamaño menor. Tampoco es posible si trabajamos con expresionesregulares o gramáticas. En cambio, si caracterizamos cada conjuntoregular por el mínimo AFD que lo genera, esta correspondencia esbiunívoca. Las consecuencias prácticas de esta propiedad son enor-mes. Por ejemplo, el disponer de una representación inambigua pro-porciona una gran potencia a los métodos de aprendizaje o inferenciade lenguajes regulares[11], característica que está lejos de ser conse-guida en otros tipos de lenguajes.

Page 75: Teoria de lenguajes gramaticas y automatas para informatico

76 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

La existencia de un mínimo hace que el problema de encontrar elAFD más pequeño que genera un lenguaje regular L dado esté biendefinido. Es posible demostrar que cualquier otro AFD que acepteL es en realidad una copia del mínimo, en la que algunos nodos sehan multiplicado de forma innecesaria en forma de nodos equivalen-tes. Las transiciones que se originan en estos nodos equivalentes sonlas mismas que las del nodo original en el AFD mínimo, es decir,conducen al mismo estado o a estados equivalentes entre sí.

Existen diversos algoritmos para encontrar el autómata mínimoM que acepta L cuya justificación es posible a partir del teoremade Myhill y Nerode. Sin embargo, en muchos casos se conoce yaun autómata determinista A tal que L = L(A) y lo que se deseaes obtener la partición de los estados de A en las clases de nodosequivalentes (que son copia del nodo original del autómata mínimoM). Ambas cuestiones serán tratadas a continuación, pero antesintroduciremos algunas definiciones3.

Definiciones:

• Se llama orden de una relación de equivalencia al número desus clases. Si este es finito se dice que la relación es de ordenfinito.

• Dadas P\ y P<2, dos particiones del mismo conjunto, P\ es unrefinamiento de P<2 si cada clase de P\ está totalmente incluidaen alguna de P<¿.

• Sea R una relación en E*. Se dice que R es invariante por laderecha si

• Dado un lenguaje L C E*, se define RL como la relación deequivalencia entre cadenas: x RL y <=> x~lL = y~lL. Es decir,x RL y si los conjuntos de las colas de x y de y en L coinciden.

• Dado un autómata finito determinista M, se define la relaciónde equivalencia RM entre cadenas de E* mediante:

3Véanse también los conceptos de partición y relación de equivalencia en lapágina 142.

Page 76: Teoria de lenguajes gramaticas y automatas para informatico

4.3. MINIMIZACIÓN DE AUTÓMATAS FINITOS 77

Ejercicios

4.13 Comprueba que RM es una relación de equivalencia invariantepor la derecha y de orden finito, cuyo orden es menor o igual que eltamaño \M\ del autómata.

4.14 Comprueba que RL es una relación de equivalencia invariantepor la derecha.

4.15 Justifica que la relación RL definida anteriormente se puedeexpresar también de la siguiente manera:

4.3.1 Teorema de Myhill y Nerode

Teorema 4.4 (de Myhill y Nerode) Dado M, un autómata finitodeterminista:

(a) La partición de S* inducida por RM es un refinamiento de lapartición inducida por RL(M)

(b) L C S* es regular <í=> RL es de orden finito.

Demostración.

(a) Esta proposición es equivalente a la implicación:

Dada una cadena iu, vamos a denotar como qw el nodo tal queqw = 6w(qi] y por L(qw) el lenguaje generado por M cuando setoma qw como estado inicial. Por la definición de cociente:

Esto expresa que las colas en lenguaje definido por el autómatade una cadena w dada son las cadenas que conducen a estadosde aceptación partiendo del nodo qw al que se llega desde q\ me-diante w. Como consecuencia de lo anterior, si x e y conducenal mismo estado, sus conjuntos respectivos de colas coinciden:

Page 77: Teoria de lenguajes gramaticas y automatas para informatico

78 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

es decir, x RM y => % RLÍM) V (aunque no necesariamente alrevés), lo que implica que la partición establecida por RM esun refinamiento de la establecida por RL(M}-

(b) (=>) Si L es regular, existe un autómata finito M de tamañon tal que L = L(M}. Como RM es un refinamiento de RL, yademás es de orden finito menor que n se satisface:

n > orden de RM > orden de RL

En otras palabras, como mucho existen n conjuntos de colasdistintos en E* (uno por cada nodo del AFD, pudiendo ademásalgunos de ellos coincidir).

(b) (<£=) Para probar que L es regular basta con encontrar M, unAFD tal que L = L(M}. Para ello aprovechamos el hecho deque RL establece una partición de E* en un número finito declases. Interpretaremos que cada uno de dichos subconjuntoses un estado, y que se pueden efectuar transiciones entre ellosde la siguiente forma: si la cadena w pertenece a un subcon-junto, el símbolo a produce una transición al estado en el quese encuentra wa. Rigurosamente, se definen:

— Q = {£[x}: clases de equivalencia de RL}-, el conjunto(finito) de las clases de equivalencia de la partición definidaen E* por la relación RL]

— q\ = £[e], la clase de equivalencia a la que pertenece e;

— F = {C[x] : x E £}, el conjunto de las clases de equivalen-cia a las que pertenecen las palabras del lenguaje;

- ¿a(CIXI) — ^[xa]i es decir, si el autómata está en el estadoasociado a la clase de equivalencia a la que pertence x,el símbolo a £ E produce una transición al estado querepresenta a la clase de equivalencia donde se encuentraxa.

Con estas definiciones 8x(<li) — ̂ x(C[e]) = CN? y como hemosdefinido (^[x] E F -4=¿- x E L, el autómata sólo acepta cadenaspertenecientes a L. La demostración se completa probando quetanto la definición de la función ó como la del subconjunto Fson consistentes, es decir, que no dependen del elemento x quese elija como representante de la clase £[x].

Page 78: Teoria de lenguajes gramaticas y automatas para informatico

4.3. MINIMIZACION DE AUTÓMATAS FINITOS 79

Ejercicios

4.16 Demuestra, a partir de que RL es invariante por la derecha,que la definición de la función 6 es consistente:<5a(CM)- Demuestra también la consistencia de la definición de F.

4.17 Dado S = {a, 6}, se define el conjunto de lenguajes finitos:Ln = {wcw1 : w, w' (E Sn A w ^ w'}. Demuestra que L = Un>0 Ln noes regular.

Corolario 4.1 Dado L regular existe un único (salvo reordenaciónde las etiquetas de los nodos) autómata finito determinista M tal queL = L(M) y cuyo número de nodos sea mínimo.

Demostración. El autómata M es el que se ha definido en el teo-rema anterior a partir de RL, que tiene tantos estados como clasespresenta RL. En efecto, cualquier autómata M' equivalente a M ge-nera también el lenguaje L y define una relación RM> —cuyo índicees como mucho \M' — que origina un refinamiento de la particióninducida por RL- Por tanto:

\M'\ > índice de RM> > índice de RL(M] — \M\

Luego cualquier otro autómata determinista equivalente contiene unnúmero mayor o igual de estados. Además, en el caso particular deque |M| = \M' , entonces M y M1 son idénticos, salvo reordenacionestriviales de los nodos, pues el refinamiento tiene el mismo númerode clases que la partición más gruesa y, por tanto, sólo pueden seriguales.

4.3.2 Algoritmos de minimización

En el apartado anterior hemos visto cómo es posible construir elAFD mínimo que acepta un cierto lenguaje regular L a partir de lasclases de equivalencia de RL- Sin embargo, no se proporcionaba unmétodo efectivo para obtener dichas clases. El procedimiento habi-tual es partir de A, un AFD ya conocido4 que acepta L = L(A), y sebusca el mínimo autómata equivalente a A. Para ello demostraremos

4 Muchas veces A ha sido construido a partir de una expresión regular siguiendolas técnicas del apartado 3.2.

Page 79: Teoria de lenguajes gramaticas y automatas para informatico

80 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

que es equivalente hablar de partición en L y de partición en los es-tados de A. Si los nodos del autómata inducen una partición en definida por RA, la partición RL de S* induce una partición de losestados de A que conduce al autómata minimizado. Esta particiónviene dada por los nodos que son accesibles mediante cadenas de unamisma clase de RL.

Dado A = (Q, E, <5, gi, F), llamaremos L(qk) al lenguaje regulargenerado cuando se toma q^ como nodo inicial en A, de forma queL(qk) = {w £ S* : 6nos permite definir la siguiente relación de equivalencia entre nodos:

El autómata minimizado se construye como con

• Q' = {[o\i clases de equivalencia con q accesible desde qi}

Trivialmente L(M) = L(A], ya que:

Por tanto M es un autómata equivalente a A cuyo tamaño es igualo menor que el de A. Además RM = RL(A}I 1° cual sólo ocurre parael AFD mínimo (siempre y cuando no haya nodos inútiles), tal ycomo vimos en el apartado [4.1]. En efecto, si definimos qx y qy comoq

Y por tanto, RL — RM- La ecuación anterior muestra además quela partición de estados inducida por = es la misma que la inducidapor RL al agrupar los nodos accesibles por cadenas de una mismaclase, si se excluyen los nodos inútiles.

Page 80: Teoria de lenguajes gramaticas y automatas para informatico

4.3. MINIMIZACIÓN DE AUTÓMATAS FINITOS £n

Ejercicios

4.18 Demuestra que la definición de 6' es consistente, es decir queno depende del elemento representante de la clase elegido:

4.19 Demuestra que si M es mínimo, entonces contiene como máxi-mo un nodo inútil.

En la práctica, para determinar la partición en los nodos de Ase puede proceder de forma recursiva empezando desde de la parti-ción trivial (todos los nodos son equivalentes). Sabemos que L(qi) ^I/te) •<=> qi ^ qj. La condición L(qi) ^ L(qj) significa que existealguna cadena w que pertenece a I/ta) pero no a L(QJ) o viceversa.Para w — €. esto significa que:

Lo cual nos permite establecer una partición más fina que la trivial:las dos clases de equivalencia son F y Q — F.

Para cadenas w de longitud 1 se obtiene:

Y para cadenas w de longitud arbitraria:

Por tanto, un posible algoritmo para obtener la partición P sería elsiguiente:

Algoritmo 4.1 (Minimización del número de estados de un AFD)

Entrada: Un AFD A= (Q, E, <5, q\, F) con transiciones definidas paratodos los estados y símbolos de entrada.

Salida: Un AFD M = (Q', E, ó',q{, F') que acepta el mismo len-guaje y que tiene el mínimo número de estados posible.

Método: 1. Establézcase una partición inicial P de Q que contienedos clases de equivalencia: los estados de aceptación, F, ylos estados de no aceptación Q — F.

Page 81: Teoria de lenguajes gramaticas y automatas para informatico

82 4. CONSTRUCCIÓN DE AUTÓMATAS FINITOS

2. Para, cada clase G de P:

- Divídase G en subclases tales que dos estados qi yQJ están en la mismo subclase si y sólo si para todoslos símbolos a E S, ó(qi,a) y 6(qj,a] pertenecen a lamisma clase de P.

- Substituyase G en la nueva partición P' por el con-junto de todas las subclases creadas dentro de él.

3. Si P ~ P', tómese Pfinai = P; si no, tómese P = P' yejecútese el paso 2.

4. Elíjase uno de los estados en cada clase de la partición -Pfinaicomo estado representativo de la clase. Las transicionesque existan entre los estados representativos de cada claseserán las transiciones del nuevo autómata M. El estadoinicial de M, q[, será el estado representativo de la claseque contenía a q\ en A. El conjunto F' de estados deaceptación de M' será el de los estados representativosque estuviesen originalmente en F.

5. (opcional) si M tiene un estado de absorción, es decir, unestado gabs que no es de aceptación y tiene transicioneshacia sí mismo con todos los símbolos de S, elimínese esteestado.

6. Elimínense todos los estados que no son accesibles desdeel estado inicial.

Ejercicios

4.20 Minimiza el autómata M$ obtenido en el ejercicio 3.16.

4.21 Minimícese el autómata M definido por F = {qi, #3} y la tablade transición

Page 82: Teoria de lenguajes gramaticas y automatas para informatico

4.3. MINIMIZACIÓN DE AUTÓMATAS FINITOS 83

y calcula la expresión regular para el lenguaje aceptado.

4.22 Construyase un AFI que acepte cadenas que contengan la sub-cadena 111 7 desarróllese el AFD equivalente. Minimícese el AFDobtenido.

4.23 Construye el AFD mínimo que reconoce la expresión regular(a + ab}*a. Haz lo mismo para la expresión a(a + 6a)* y comprue-ba que se llega al mismo resultado. Como consecuencia, describeun algoritmo que permita decidir la equivalencia de dos expresionesregulares.

4.24 Describe un algoritmo que permita minimizar máquinas deMoore.

4.25 Encuentra el AFD mínimo que reconozca el lenguaje represen-tado por las siguientes expresiones regulares:

1. ((00)*(01+ 1)1 + 1)*

2. (a*6* + £)*(a6 + &6)* + 0*

3. ((00 + 11)*0)*((00 + l)* + l ) + e

4. ((6 + c)*a)*((6 + c)*c + 6)

5. (0 + 1)*(10 + 01)1 + (11 + 00)

6. ((a + 6)*(a& + &)*a)*(aa + 6& + e)

4.26 Construye el AFD mínimo que reconoce las cadenas binariasque contienen un número múltiplo de 3 de unos y que empiezan yacaban por el mismo dígito.

4.27 Dadas las expresiones regulares r = (10 + 01)* y s = (00 +11)*.Dibuja el autómata determinista mínimo que reconozca los lenguajes

1 . L ( r ) \ J L ( s )

2 . L ( r ) C \ L ( s )

4.28 Dibuja el AFD mínimo para el lenguaje Ax~l — {y G S* :yx e A}, siendo A = (1 + 101)* y x = 1.

Page 83: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 84: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 5

Gramáticas

5.1 Introducción

En la segunda mitad de la década de los 50, Noam Chomsky ideauna teoría matemática para especificar lenguajes basada en el con-cepto de gramática generativa. El modelo que propone introduce losconceptos de gramaticalidad y creatividad: "todo hablante nativo po-see una cierta intuición de la estructura de su lengua que le permite,por una parte, distinguir las frases gramaticales de las frases agrama-ticales y, por otra, comprender y emitir infinidad de frases inéditas.Del mismo modo, una gramática deberá rendir cuenta explícitamentede todas las frases gramaticales de la lengua considerada" (Chomsky,1957).

La definición de gramática debe dar reglas con las que generarcadenas o frases pertenecientes al lenguaje que caracteriza, permi-tiendo, asimismo, el reconocimiento de una cadena arbitrariamentedada como perteneciente o no a éste1.

Es útil, para comprender el concepto de gramática, volver por unmomento a la clase de Lengua en la escuela secundaria, en la que elprofesor nos pide que analicemos sintácticamente la frase Juan estudiainformática en la Universidad. Como estudiantes aventajados, notenemos ningún problema en realizar este ejercicio (cuyo resultadose muestra en la figura 5.1). Observamos que el árbol del análisis

1En materia de lenguajes de programación, este segundo aspecto es el más im-portante, un programa no es más que una cadena de caracteres que el compiladordebe analizar y traducir a la luz de las reglas enunciadas en la gramática, detec-tando las incorrecciones sintácticas que encuentre y que le impidan compilarlo.

85

Page 85: Teoria de lenguajes gramaticas y automatas para informatico

86 5. GRAMÁTICAS

parte de la unidad de información oración, que en el siguiente pasoes reescrita como un par de sintagmas (nominal y verbal). Cadauno de estos sintagmas vuelve a ser reescrito como otra cadena deelementos, y así sucesivamente hasta llegar a los constituyentes dela frase. Las diferentes reescrituras pueden ser descritas mediante laaplicación sucesiva de las siguientes reglas:

• <oración> —> < sintagma nominal> < sintagma verbal>• <sintagma nominal> —> <determinante> <núcleo>• <sintagma verbal> —>• <verbo> <sintagma nominal> <sintagma

preposicional• < sintagma preposicional —> <preposición> < sintagma nominal>• <determinante> —> e \ la• <núcleo> —>• Juan informática | universidad• <verbo> —> estudia• <preposición> —> en

El símbolo | debe leerse "o". Observemos en la anterior lista de reglasque existen dos tipos de elementos; por un lado, aparecen las categoríassintácticas y que en nuestro contexto denominaremos como variables o noterminales (encerradas entre los símbolos < y >); y por otro, los llamadossímbolos terminales (en negrita). Aunque la frase está compuesta sólo porterminales, la corrección sintáctica de la misma está dada por las reglas dereescritura de las variables.

Figura5.1: Arobol de ana

Page 86: Teoria de lenguajes gramaticas y automatas para informatico

5.2. DEFINICIÓN Y CLASIFICACIÓN DE LAS GRAMÁTICAS 87

Ejercicio

5.1 Repetir el análisis anterior para la cadena u) = a * (a + a) cuando lalista de reglas de reescritura es la siguiente:

1. E-^>E + E2. E —> E * E3. E —)• (E]4. E —>a

Aquí, E es una variable y {+,*,(,),a} es el conjunto de símbolos termi-nales. Señalemos, por otra parte, que con esta gramática podemos generarcadenas de longitud arbitrariamente grande, esto es, el conjunto de cadenasgenerables es infinito (¿numerable o no numerable?).

Ahora estamos en condiciones de dar una definición formal de gramática.

5.2 Definición y clasificación de las gramáti-cas

Definición: Una gramática es una cuadrupla

G = (VAr,VT,S,P),

donde VN es un conjunto finito de símbolos variables (no terminales); VT —E, un conjunto finito de símbolos terminales; S 6 VN, el símbolo o variableinicial; y P, un conjunto finito de reglas de derivación.

Lógicamente se debe verificar que VN y VT sean disjuntos: VN H VT = 0.Usaremos V para denotar al conjunto de todos los símbolos, tanto variablescomo terminales: V = VN U VT- Las reglas de derivación r 6 P indicancomo sustituir variables y pueden expresarse como aplicaciones

r :V*VNV* —> V,

donde V* denota al conjunto de todas las cadenas que se pueden formarcon los símbolos de V. Es decir, las reglas transforman cadenas de V*que contienen al menos una variable en cadenas de V*. A lo largo deeste libro representaremos las variables por letras latinas mayúsculas, VN ={A, B, C,...}, los terminales por letras latinas minúsculas, VT = {a, 6, c,...}y las cadenas de V* por letras griegas minúsculas (a, /3,7,...).

Las cadenas generadas por la gramática son aquellas que se puedenobtener partiendo del símbolo inicial S mediante la aplicación sucesiva dereglas de P. Este conjunto de cadenas derivables desde S se denominalenguaje generado por la gramática G. Simbólicamente,

L(G) = {u£VT:S -^u},

Page 87: Teoria de lenguajes gramaticas y automatas para informatico

88 5. GRAMÁTICAS

donde el asterisco indica que la derivación se puede realizar en un númeroarbitrario de pasos, y se podría leer como produce en cero o más pasos. Másconcretamente, el símbolo —> representa a la relación reflexiva y transitivamás pequeña que contiene a —)•, esto es, —)• satisface, para cualesquieracadenas a,(3,j E V*:

Diremos que dos gramáticas son equivalentes si generan el mismo lenguaje,es decir,

Según la complejidad de las reglas que definen una gramática, ésta puedeser de uno de los cuatro tipos (^0,^1,^2,^3) que constituyen la llamadajerarquía de Chomsky2:

Gramáticas estructuradas por frases o de tipo 0: son las más generales. Susreglas no tienen ninguna restricción. Generan los llamados lenguajesrecursivamenté numerables o lenguajes sin restricciones, aunque apesar de este nombre no son capaces de representar a los lenguajesnaturales.

Gramáticas sensibles al contexto o de tipo 1: sus reglas son de la formaa —> f3 (a,/3 6 V*, |a| < |/3|, a contiene al menos una variable), esdecir, los pasos sucesivos de una derivación no pueden disminuir delongitud. Se puede demostrar que este tipo de reglas son equivalentesa las de la forma aA(3 —>• aj0, (7 e V+), de ahí el nombre de estetipo de gramática (la sustitución de A por 7 depende del contexto enel que aparece A).

Gramáticas independientes del contexto o de tipo 2: sus reglas tienen laforma A —>• a, (A E VN, a £ V*). A diferencia del tipo anterior,la sustitución de A por a se realiza independientemente del lugar enel que aparezca A. La mayor parte de los lenguajes de programaciónestán generados por gramáticas de este tipo (aumentadas con algunoselementos contextúales necesarios para la semántica del lenguaje); deahí la importancia de su estudio.

Gramáticas regulares o de tipo 3: son las más simples, sus reglas son deuno de los siguientes tipos: A —> aB, A —> a, A —>• e, (A, B eVJv, a e VT), y, como veremos a continuación, generan los mismoslenguajes que son reconocidos por un autómata finito.

2El estudio detallado de los tipos O y 1 se sale del marco de este libro y noserán tratados.

Page 88: Teoria de lenguajes gramaticas y automatas para informatico

5.3. GRAMÁTICAS REGULARES 89

Los lenguajes generados por los últimos tres tipos son llamados por elmismo nombre que la gramática respectiva.

Obsérvese que cada tipo de gramática está incluido en el tipo anterior,esto es:

5.3 Gramáticas regulares

Las gramáticas regulares, o de tipo 3, tienen una relación muy estrechatanto con los lenguajes del mismo nombre, como con los autómatas finitosque los reconocen; de hecho, según veremos en esta sección, los lenguajesgenerados por las gramáticas regulares son precisamente los regulares, loque explica, por otra parte, el abuso del calificativo regular. Recordemosque una gramática G = (Vjv, VT,P, S) es regular si todas las reglas r G Pson de uno de los tipos siguientes:

5.3.1 Gramática regular asociada a un autómata

Comencemos observando el autómata finito de la figura 5.2. El lectorpuede comprobar que el lenguaje reconocido por este autómata es (O +1)*10, es decir, el conjunto de cadenas sobre el alfabeto (0,1} que acaban

Figura 5.2: Autómata que reconoce el lenguaje (O + 1)*10.

en 10. Supongamos que tomamos una cadena u = 1001110 de este lenguaje.Veremos su recorrido a través del autómata escribiendo en cada instante,a continuación de la subcadena leída, el estado en el que se encuentra elautómata. Obtenemos la secuencia

p —>lq —> lOr —> lOOp —>• 1001? —> 10011? —> 100111? —> 1001110

Page 89: Teoria de lenguajes gramaticas y automatas para informatico

90 5. GRAMÁTICAS

que se puede interpretar como la generación de la cadena por una gramática.Para obtener la gramática especificamos las variables como los estados delAFD, y a partir de los arcos obtenemos las reglas de reescritura:

El símbolo inicial de la gramática representa al estado inicial del autómata.Para completar el proceso hay que conseguir que la derivación acabe cuandoen el autómata se alcanza un estado de aceptación; esto se logra en nuestroejemplo añadiendo la producción

o, alternativamente,

Observemos que todas las producciones que hemos necesitado son de unade las formas que corresponden a una gramática regular.

Resumiendo, dado un autómata M — (Q, £,0, <?i, P), obtenemos unagramática G = (VN, Vr,P, S} tal que L(M) — L(G), tomando

• VN = Q;

• VT = S;

• S = Qí-

• para cada transición del autómata Sa(p) — (l^ añadimos a P la reglap—>aq;

• para cada estado q E F añadimos a P la regla q —> e, o, alternativa-mente, tantas reglas de la forma p —> a como transiciones del tipo6a(p) = q con q e F tenga el AFD.

5.3.2 Autómata asociado a una gramática regular

El proceso inverso también es muy sencillo de realizar, si bien, en el casomás general, el autómata que se obtiene es indeterminista. Consideremosla gramática regular G = (VN, VT, P, S); el autómata M = (Q, E, ó, </i, P),tal que L(M) = L(G), se puede encontrar mediante:

• Q = VN U {Z} con Z un símbolo nuevo;

• £ - VT;

• 91 = 5;• F = {Z}

Page 90: Teoria de lenguajes gramaticas y automatas para informatico

5.3. GRAMÁTICAS REGULARES 91^

• por cada regla r 6 P de la forma A —> aB definimos la transición6a(A) = B-

• por cada regla r E P de la forma A —> a definimos la transición¿a (A) = Z;

• por cada regla r G P de la forma A —> e definimos la transiciónS£(A) = Z

Ejemplo: Para la gramática siguiente encontramos el autómata de lafigura 5.3.

A —)> (L4 05 | eB —> IC \ OD OC —> OC | ID | eD ^OD

Ejercicios

5.2 Construyase una gramática regular para los lenguajes siguientes:

• cadenas acabadas en 00;

• cadenas con dos unos consecutivos;

• cadenas con un 1 en la antepenúltima posición;

• cadenas de longitud 4.

Dibuja en algún caso el árbol de derivación de alguna cadena particular dellenguaje.

5.3 Demuéstrese que el conjunto de lenguajes regulares es idéntico al con-junto de lenguajes generables por gramáticas regulares.

Figura

Page 91: Teoria de lenguajes gramaticas y automatas para informatico

92 5. GRAMÁTICAS

5.4 Encuentra el autómata mínimo que acepta el mismo lenguaje que ge-nera la gramática regular

S —> aS | aA eA—*bA\bB —> a bA cB \ eC —+c cB

5.5 Encuentra una gramática que genere el mismo lenguaje al que repre-sentan las expresiones regulares siguientes:

1. ((a|6)*(o6|6)*a)*(oa|66|e).

2. ((00|10*l|e)(01)T(l|10).

3. (00|10*l + e)*(l|00).

5.4 Gramáticas independientes del contexto

(GIC)La gran importancia de las gramáticas independientes del contexto o

gramáticas incontextuales reside en el hecho de que la mayor parte de loslenguajes de programación se representan mediante una gramática de estetipo. Estas gramáticas suponen una ampliación sobre las gramáticas regu-lares. Se caracterizan porque sus reglas son de la forma

r : VN —> V*,

es decir, la parte derecha de la regla puede ser cualquier cadena de símbolosterminales y no terminales, si bien la parte izquierda está restringida a unasola variable. Un ejemplo de GIC estaría dado por

S —> OB | IAA —> O | OS IAAB —>> 1 | 15 | QBB

que, como el lector puede intentar probar, representa al lenguaje formadopor las cadenas que contienen igual número de ceros que de unos. Recor-demos que en la sección 4.1 demostramos que este lenguaje no era regular,con lo que por fin hemos aumentado el número de lenguajes que podemosestudiar. A los lenguajes generados por GIC les llamaremos lenguajes in-dependientes del contexto o, abreviadamente, LIC.

Page 92: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 93

Ejercicios

5.6 Escribe gramáticas independientes del contexto para los conjuntos:

• cadenas capicúa;

• expresiones regulares sobre el alfabeto {O,1};

• cadenas que no son capicúa;

• cadenas del tipo an~lbn, con n > 0;

• cadenas del tipo On102n, con n > 0;

• cadenas del tipo Omln con n par y m impar o viceversa;

• cadenas del tipo abnabn+1, con n > 0;

• cadenas del tipo anbm con m , n > 0 j m = n o m = 2n;

• cadenas del tipo anbm con ra,n>0yn>ra.

5.7 Encuentra una gramática que genere todas las cadenas que contienenel doble número de ceros que de unos.

5.4.1 Derivación y árbol de derivación

A la secuencia de reglas que nos permite obtener una cadena del lenguajegenerado por la gramática a partir de su símbolo inicial, se la conoce conel nombre de derivación de la cadena. Por ejemplo, para la gramática delejercicio 5.1:

E —> E + E E * E \ (E) a,

la secuencia

E —> E* E —> E * E + E —> E *E + a —>• E * a + a —^ a*a + a

constituye una derivación de la cadena a*a + a. La cadena de V* obtenidaen cada paso de la derivación recibe el nombre de forma sentencial.

Un árbol de derivación es una representación gráfica de la secuencia dereglas aplicada (es fácil comprobar que las gramáticas tipo O no admiten estarepresentación). Por ejemplo, la derivación anterior se podría representarmediante el árbol de la fig. 5.4. Más formalmente, un árbol de derivaciónse define como un árbol ordenado3 que cumple lo siguiente:

3Se dice que una árbol está ordenado si se ha definido una relación de ordenentre los hijos de cada nodo. Se suele entonces tomar como criterio de represen-tación que los nodos dibujados a la izquierda preceden a los que están más a laderecha.

Page 93: Teoria de lenguajes gramaticas y automatas para informatico

94 5. GRAMÁTICAS

• cada nodo interior (con descendencia) está etiquetado con un símbolode VN\

• el símbolo inicial S de la gramática ocupa el nodo raíz;

• los nodos terminales (sin descendencia) u hojas sólo contienen símbo-los de VT o, tal vez, la cadena vacía e;

• si un nodo contiene el símbolo A 6 VN y presenta como descendientes,en este orden, a los nodos X\, X% . • • Xn, entonces existe una regla enla gramática G en la que la variable A es sustituida por X\, X<¿ ... Xn.

A la hora de reconstruir la derivación a partir del árbol, se nos presentanvarias alternativas según el orden en el que efectuemos las sustituciones delas diversas variables; al objeto de eliminar esta ambigüedad es habitualutilizar dos de ellas, llamadas derivación por la izquierda y derivación porla derecha. La diferencia entre ambas reside en decidir qué variable essustituida en cada paso de la derivación, la que está más a la izquierda ola que está más a la derecha en la forma sentencial. Para el árbol anteriorestas derivaciones serían:

1. Por la izquierda: E —> E*E —> a*E —> a*E+E —> a*a+E —>•a * a + a

2. Por la derecha: E —> E* E —> E * E + E —>• E *E + a —>E * a -f a —> a * a + a.

Tomando uno de estos criterios como fijo, la correspondencia entre los árbo-les de derivación y las derivaciones es biunívoca.

5.4.2 Ambigüedad

Siguiendo con el ejemplo de esta sección, observemos que la cadenaa * a + a puede ser generada por dos árboles de derivación (ver fig. 5.5).

Figu

Page 94: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 95

Diremos que una gramática G es ambigua si hay al menos una cadenaen L(G) que tenga dos o más árboles de derivación distintos (o, equivalen-temente, dos o más derivaciones por la izquierda distintas).

Se podría pensar que esta ambigüedad es consecuencia de cómo se haelegido la gramática, y que siempre es posible encontrar una gramática equi-valente a la dada que no sea ambigua (y en el caso anterior eso es sencillode conseguir); pero esta idea es incorrecta, ya que hay lenguajes intrínseca-mente ambiguos, para los cuales se ha demostrado que todas las gramáticasque los generan son ambiguas. La propiedad de ambigüedad es indecidible:no hay ningún algoritmo que nos dé la respuesta para cualquier gramáti-ca en un tiempo finito. Aunque existen algoritmos que para determinar siuna cierta cadena u £ L(G) admite dos o más árboles de derivación dife-rentes, para demostrar que G no es ambigua por este método, tendríamosque probar todas las cadenas de V^. Como este conjunto es infinito, elprocedimiento requeriría un tiempo potencialmente infinito.

Ejemplo : Un ejemplo estándar de este problema en los lenguajes deprogramación es el fenómeno del "else ambiguo". Consideremos las produc-ciones

< instr > —> if ( < expr > ) < instr >\ if ( < expr > ) < instr > else < instr >| < otrainstr >

que describen la sentencia if-else del lenguaje C. Y consideremos ahora lacadena

if (exprl) if (expr2) instrl else instr2

Esta cadena puede ser derivada por los dos caminos que se muestran en lafigura 5.6; en (a) el else va emparejado con el primer if; en (b), va con el

figu

Page 95: Teoria de lenguajes gramaticas y automatas para informatico

96 5. GRAMÁTICAS

segundo. El compilador de C debe interpretar la sentencia por el segundocamino, pero la regla sintáctica no es suficiente para indicarlo y, por tanto,es necesaria información adicional.

Generalmente, en las gramáticas de los lenguajes de programación seelimina la ambigüedad atendiendo a la precedencia deseada para los opera-dores. Una gramática equivalente a la del ejercicio 5.1 que no es ambiguay conserva la mayor precedencia esperada de la multiplicación respecto a lasuma, es:

E —> E + T TT —*T*F FF -> a | (E)

Fig

Page 96: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 97

Ejercicio

5.8 Las gramáticas regulares son un subconjunto de las gramáticas inde-pendientes del contexto. ¿Puede ser intrínsecamente ambiguo un lenguajeregular? Justifiqúese la respuesta.

5.4.3 Recursividad

Si nos fijamos detenidamente en la gramática anterior, observaremosque podemos tener derivaciones de la forma E —> aE¡3 (con |a|, /3\ > 0),donde el símbolo —> debe leerse "produce en uno o más pasos", con lo quese pueden generar cadenas pertenecientes al lenguaje de longitud arbitrariay, por tanto, podemos afirmar que el lenguaje generado por la gramática esinfinito. A las gramáticas que poseen esta propiedad se las llama recursivas.Si a = e, se dice que la gramática es recursiva por la izquierda; mientrasque si /3 = e se dice que la gramática es recursiva por la derecha.

La recursividad de las gramáticas de los lenguajes de programaciónestá estrechamente ligada a la asociatividad de los operadores. Para en-tender esto, consideremos la cadena a * a * a. Notemos que existen dosposibles modos de evaluar esta expresión: (a * a) * a y a * (a * a); en elprimer caso, decimos que * asocia a la izquierda; y en el segundo, que ase-do a la derecha. Veamos los árboles de derivación de esta cadena para dosgramáticas, una recursiva por la izquierda y la otra por la derecha (fig. 5.7):

FigurVaales. En (a), el operador *asocia a la izquierda en (b)Lo hace a LaDere

Page 97: Teoria de lenguajes gramaticas y automatas para informatico

98 5. GRAMÁTICAS

Si deseamos que un operador asocie a la izquierda, deberemos escribir unagramática recursiva por la izquierda. Si deseamos que asocie a la derecha,deberemos escribirla recursiva por la derecha. Observemos que el árbol (a):

correspondiente a la gramática recursiva por la izquierda, desciende haciala izquierda; mientras que el (b), lo hace hacia la derecha.

Por otra parte, la recursividad por la izquierda impide utilizar algunosalgoritmos de análisis sintáctico (los llamados descendentes). Se planteaentonces el problema de encontrar una gramática equivalente a la dadaque no presente este tipo de recursión. La eliminación de la recursión porla izquierda es también necesaria para transformar una gramática en otraequivalente que tenga la llamada forma normalizada de Greibach (ver másabajo).

Eliminación de la recursión por la izquierda

Si tenemos una gramática con reglas del tipo

que presenta recursión por la izquierda inmediata, las producciones quepuede generar son del tipo

Observemos que estas producciones también pueden ser generadas mediantelas reglas

que presentan recursión por la derecha.Este esquema se puede generalizar fácilmente en el caso de tener reglas

de la forma

sustituyéndolas por las reglas

Ejemplo: Volvamos a considerar la gramática de expresiones aritméticas

Page 98: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 99

Una gramática equivalente que no presenta recursión por la izquierda es

Un problema añadido lo presentan las gramáticas que contienen recur-sión por la izquierda no inmediata. Una gramática de este tipo es

que presenta recursión por la izquierda porque son posibles derivaciones deltipo

Para eliminar sistemáticamente la posibilidad de tales derivaciones po-demos utilizar el algoritmo siguiente, que siempre funciona si la gramáticano tiene ciclos (producciones de la forma A —> A) o producciones vacías (dela forma A —> e). Este tipo de producciones se pueden eliminar fácilmente(ver más abajo).

Algoritmo 5.1 Eliminación de la recursión por la izquierda

Entrada: Una gramática G = (Vyv, VT-, -P, S] sin ciclos ni produccionesvacías.

Salida: Una gramática equivalente sin recursión por la izquierda.

Método:

1. Numérense las variables de la gramática arbitrariamente VN —{Ai, A-2 ... Ar}. (El algoritmo conseguirá que todas las produc-ciones de la nueva gramática comiencen por terminal o por unavariable con subíndice superior al de la variable de la parte iz-quierda).

2. Tomar i — 1.

3. Considerar todas las producciones que comienzan por AI:

(dada la forma en que procede este algoritmo, siempre se cumpleque ningún (3j comienza por Aj- si k < i). Sustituir todas estasproducciones por

Page 99: Teoria de lenguajes gramaticas y automatas para informatico

100 5. GRAMÁTICAS

donde BÍ es una nueva variable. Eso asegura que todas lasproducciones cuya parte izquierda es AI empiezan por terminalo por una variable A^ tal que k > i.

4. Si i = n, devolver la gramática resultante y parar el algoritmo.

5. Tomar i = i + l y j = 1.

6. Sustituir todas las reglas de la forma AI —> Aja por las reglasAÍ —> Pía . . . | fima donde Aj —> [3i \ ... \ flm son todas lasreglas de derivación que tienen como parte izquierda Aj. Comoya se habrá conseguido que las partes derechas de las reglas quetienen Aj como parte izquierda comiencen por un terminal ocon Ak con k > j, este paso garantiza que todas las reglas conparte izquierda AÍ también cumplen la propiedad.

7. Si j = i — 1, saltar al paso 3. Si no, tomar j = j + ]_ y saltar alpaso 6.

El algoritmo anterior, además de eliminar la recursión por la izquierda,conduce a una gramática donde todas las reglas satisfacen que si AI —>•Aja E -P, entonces i < j.

Ejercicios

5.9 Elimina la recursión por la izquierda en las gramáticas:

5.10 Explica cómo modificarías el algoritmo que elimina la recursión porla izquierda para que sirviese para eliminar la recursión por la derecha.Explícalo usando para ello la última gramática del ejercicio anterior.

5.11 Elimina la recursión por la izquierda en la gramática

T = {p, q, ( ,) , a, =, n, f, +, *,>,<, ==}.en la que VT

Page 100: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 101

5.4.4 El análisis sintáctico

Como ya hemos mencionado varias veces, la mayor parte de los lenguajesde programación están basados en GIC. Un compilador debe reconocer si undeterminado programa (cadena de caracteres en definitiva) se adapta a lasespecificaciones del lenguaje. Para ello, resulta imprescindible que dispon-gamos de algoritmos que nos permitan decidir la corrección o incorreccióndel programa antes de traducirlo a instrucciones de máquina. Para decidirsi una cadena dada pertenece al lenguaje generado por una GIC particular,debemos ser capaces de reconstruir el árbol de derivación de la cadena. Aeste proceso se le llama análisis sintáctico, y su dominio es, por otra parte,el principal objetivo que debemos plantearnos en el estudio de las GIC. Losmétodos de análisis sintáctico son múltiples, y su estudio en profundidadse realiza en la asignatura de Diseño de compiladores. En este curso noscentraremos en un algoritmo de uso general, válido tanto para gramáticasambiguas como no ambiguas, llamado Algoritmo de Cocke, Younger y Ka-sami (CYK). Introduciremos este método de análisis sintáctico de maneraconstructiva; para ello vamos a partir de un ejemplo en el que todas lasreglas de la gramática tienen una forma especial (veremos más adelante queesta gramática está en forma normalizada de Chomsky).

Ejemplo: Consideremos la gramática G siguiente,

y tratemos de reconstruir el árbol o árboles de derivación de la cadenau = 001101.

La gramática del ejemplo tiene dos tipos de reglas; uno produce sóloun terminal, el otro produce cadenas de dos variables. Las cadenas determinales de longitud mayor que 1 se generan duplicando las variables hastaalcanzar la longitud deseada. Para reconstruir, si es posible, la derivación deu, deberemos partirla en dos trozos, cada uno derivado desde una variable.Las posible formas de trocear uj son

Page 101: Teoria de lenguajes gramaticas y automatas para informatico

102 5. GRAMÁTICAS

Con esto conseguimos descomponer el problema de analizar una cadena delongitud 6 en 5 problemas de longitud menor que 6. Siguiendo con esteproceso, podemos descomponer las subcadenas de longitud 5 en subcadenasde longitud menor que 5, y así sucesivamente, hasta conseguir que todas lassubcadenas obtenidas tengan longitud 1.

Construyamos una función

que, para cada subcadena de u;, devuelva el conjunto de reglas que le permi-tan derivarla desde cualquier variable. Observando la gramática, obtenemospara las subcadenas de longitud 1

La subcadena 00 sólo puede ser generada partiendo de una regla que pro-duzca alguna de las cadenas contenidas en el conjunto {AA, AE, E A, E E}.La primera variable de estas cadenas se obtiene de la parte izquierda delas reglas que producen el primer símbolo; el segundo, de las reglas queproducen el segundo (en este caso particular ambos símbolos coinciden).Observando las reglas de la gramática, la única variable que produce algunade las anteriores cadenas es (7, es decir, /(OO) = {C —> AA}. Procediendoanálogamente con la subcadena 01, se obtiene /(Oí) = {S —> EB}. Pues-to que este conjunto contiene una regla cuya parte izquierda es el símboloinicial de la gramática, podemos afirmar que la subcadena 01 pertenece allenguaje generado por G.

La subcadena 001 puede ser troceada de dos formas: 0-01 y 00-1. Estasubcadena podrá ser generada sólo mediante la regla A —> ES, puesto quees la única regla de G cuya parte derecha está formada por la concatenaciónde las variables que están en la parte izquierda de las reglas que producenO con las variables de la parte izquierda de las reglas que producen 01; obien, de las que producen 00 con las que producen 1. Con ello,

Análogamente, la subcadena 101 se puede descomponer en 1-01 o en 10-1.En ambos casos nos aparece una subcadena de longitud 2 que no habíamosanalizado previamente, por lo que es necesario calcular /(10) y /(Oí). Dehecho, necesitamos encontrar el valor de la función / para todas las subca-denas de longitud menor o igual que 5 contenidas en LJ.

Para evitar llamadas recursivas a la función /, conviene almacenar losresultados previos. Organizaremos esta información en una tabla como la dela figura 5.8, en la que cada celda contendrá la regla o reglas de la gramáticaque se ha de aplicar en primer lugar para generar la subcadena que comienzaen su número de columna y tiene una longitud igual a su número de fila. Por

Page 102: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 103

ejemplo, la celda (1,1) debe contener las reglas A —> O y E —>• 0; y la celda(1,3), la regla A —> ES. Esta tabla puede irse rellenando por filas, ya queel valor de la función / para una subcadena de longitud n sólo depende decómo se han generado las subcadenas de longitud n—l. La celda situada enla última fila representará a toda la cadena o;, por lo que si contiene una reglacuya parte izquierda es el símbolo inicial S de la gramática —como es el casoen nuestro ejemplo—, podemos afirmar que u> E L(G); si no es así, entoncesuj $ L(G}. En la figura 5.9 se observa el esquema de dependencias de lacelda (4,2); para rellenar una celda debemos tener en cuenta las reglas cuya

parte derecha esté formada por las partes izquierdas de las celdas unidas poruna flecha. Por ejemplo, dicha celda, que corresponde a la subcadena 0110,

figura.

Ficog analisism sintactico

Mediante

Page 103: Teoria de lenguajes gramaticas y automatas para informatico

104 5. GRAMÁTICAS

debe obtenerse mirando las partes izquierdas de las reglas contenidas en lospares de celdas [(1, 2), (3,3)], [(2, 2), (2,4)] y [(3, 2), (1,5)]. Para construir elárbol o árboles de derivación de la cadena analizada, leeremos la tabla deabajo hacia arriba. El (2) que aparece en la celda (4,3) indica que la reglaD —> BB se puede obtener de dos maneras: [(1,3), (3,4)] y [(3,3), (1,6)](ver figura 5.10), lo que permite estudiar la ambigüedad de la gramática, yaque podemos obtener todos los árboles de derivación de la cadena analizada.Pasemos ahora a enunciar formalmente el algoritmo de Cocke, Younger yKasami.

Sea la cadena u — a\a^ . . . a/. Podemos extraer /(/ + l)/2 subcadenas(I de longitud 1, / — 1 de longitud 2, etc.), que denotaremos x¿, dondeel subíndice indica la posición del primer símbolo de la subcadena; y elsuperíndice, su longitud. Por tanto, x¿| = j ' y x® = e. Además x —x{ = x\x\...x\. Llamaremos P¡ al subconjunto de reglas de P, tales

que r = A —> a E Pj si r es la primera regla en una derivación A —> x\.Obviamente, si i+j > 1 + 1, se tendrá P\ — 0. Estos conjuntos se construyenrecursivamente, y el problema se reduce a comprobar si alguna regla de laforma 5 —> a E P[. El algoritmo es:

Algoritmo 5.2 Algoritmo de Cocke, Younger y Kasami

Entrada: Una gramática G = (V/v, FT,-P, 5) en forma de Chomsky, sinproducciones vacías, y una cadena de entrada x — a\ a-¿ . . . a/ de V^ .

Salida: La tabla de análisis sintáctico V(G, x) tal que cada elemento P¡contiene la regla r = A —> a si y sólo si r es la primera regla en unaderivación A —)• x\, donde x\ — a¿a«+i . . . a¿+j-i.

figuraion5.10

Page 104: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 105

Método:

1. (j = 1) Construir los conjuntos P¿ para i = 1, 2 . . . /. Si después

de este paso r = A —> a e P/, entonces

2. (j > 1) Si se conocen Pf, para todos los construir

donde k y j — k son ambos menores que j, y por tanto, P/ yP¡^k han sido calculados previamente. Este paso asegura que

si A —>• BC E P/, entonces

A —> BC —> üi... üi+k-iC —> di.. . a¿+j_i.

3. El paso anterior se repite para obtener todos los conjuntos Pj(variando j desde 1 hasta I — j + 1).

Ejercicio

5.12 Por medio del algoritomo de Codee, Younger y Kasami, determina sila cadena uo = abaa pertenece al lenguaje generado por la gramática

5.13 Dada la gramática

1. Encuentra todos los rboles de derivación de la cadena w = obaob.

2. Encuentra todas las subcadenas de w que también pertenecen a dicholenguaje.

3. ¿Se puede concluir que la gramática es ambigua? ¿Y que el lenguajees intrínsecamente ambiguo?

5.14 Por medio del algoritmo de Coche, Younger y Kasami, determina sila cadena uo — abaa pertenece al lenguaje generado por la gramática

Construye, en su caso, todos los árboles de derivación posibles para u.

para algun K],

Page 105: Teoria de lenguajes gramaticas y automatas para informatico

106 5. GRAMÁTICAS

5.4.5 Simplificación de una GIC

A diferencia del caso de los AFD y los lenguajes regulares, no dispo-nemos de un método para construir la gramática equivalente más sencillaque genere un lenguaje independiente del contexto dado. A pesar de eso,sí podemos encontrar gramáticas equivalentes a una dada que no conten-gan ciertos tipos de producciones que dificulten el trabajo con ella y quenos permitan estandarizar las producciones de la gramática de modo quetodas tengan una cierta "forma normalizada". Hay tres tipos de reglas nodeseadas:

1. Derivaciones vacías (de la forma A —>• e).2. Derivaciones unitarias (de la forma A —>• B}.3. Símbolos inútiles (símbolos no utilizados en la derivación de ninguna

cadena de L(G)).

La gramática que resulta de estas operaciones de eliminación la denomina-remos gramática simplificada. Este nombre puede ser equívoco, ya que enalgunos casos la versión no simplificada puede resultar más fácil de entenderpara el lector.

Eliminación de las producciones vacías

Diremos que una regla de derivación es vacía si es del tipo A —> e.En general, si A produce e en un número arbitrario de pasos (A —^> e), sedice que la variable A es anulable. Si e e L(G) no es posible eliminar todaslas reglas de derivación vacías, ya que es preciso conservar la posibilidadde generar e. Salvo por esta excepción, es posible encontrar una gramáticaequivalente a la dada que no contenga ninguna producción vacía. El objetivoes que en la derivación de cualquier cadena x ^ e no se aplique ninguna reglade producción vacía.

Comencemos con un ejemplo. Consideremos la gramática G

en la que tenemos dos reglas de derivación vacías. Observemos que desdela variable A y B podemos generar cadenas de a* y b* respectivamente. Elobjetivo es encontrar una gramática equivalente a G que no contenga lasreglas A —>• e y B —> e. Para ello comenzamos buscando el conjuntode variables anulables. Evidentemente A y B pertenecen a este conjunto.Además, ya que la regla S —> ABA produce una cadena formada sólopor variables anulables, también se tiene S —^ e, con lo que S también esanulable (obviamente e € L(g}}. Podemos construir las nuevas producciones

Page 106: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 107

haciendo explícita la posibilidad de que estas variables produzcan e, es decir,sustituiremos las reglas A —> aA \ e por las reglas

y las reglas B —>• bB \ t por las reglas

En la regla S —>• ABA las variables de la parte derecha se pueden anularconjuntamente o por separado, de modo que las posibilidades son

Puesto que 5 es anulable, es necesario mantener esta última regla, aunqueno sería válido en el caso de que 5 apareciera en alguna parte derecha.Por ello, si e e L(G], resulta más general sustituir las reglas para S por elconjunto de reglas siguiente

tomando S' como nuevo símbolo inicial de la gramática.Ahora estamos en condiciones de dar un algoritmo formal que elimina

sistemáticamente las producciones vacías. Previamente enunciaremos unalgoritmo que nos permite encontrar las variables anulables de la gramática.

Algoritmo 5.3 Búsqueda de variables anulables

Entrada: Una gramática G = (V)v, VT, P, S).

Salida: El conjunto V€ de variables anulables de G.

Método:

1. Tomar

2. Hacer

Vi — Vi-i U {A : A —> a G P para algún

mientras

3. Tomar

Algoritmo 5.4 Eliminación de las derivaciones vacías

Entrada: Una gramática G

Page 107: Teoria de lenguajes gramaticas y automatas para informatico

108 5. GRAMÁTICAS

Salida: Una gramática equivalente G' = (V^, VT, -P', 5') sin produccionesvacías.

Método:

1. Tomar P' = P.

2. Encontrar V£ aplicando el algoritmo anterior.

3. Para cada producción A —>• a G P, añadir a P' todas lasproducciones que puedan ser obtenidas de ella borrando de auna o más de las variables anulables que contenga.

4. Eliminar de P' todas las producciones vacías, duplicadas y dela forma A —> A que contenga.

5. Si S E Vf, tomar V^ = VN U {S1} y añadir las reglasa P'; en otro caso, tomar

Ejercicio

5.15 Elimínense las producciones vacías de la gramática:

Eliminación de las producciones unitarias

Una producción es unitaria si su estructura es del tipo A —> B. Essiempre posible encontrar una gramática equivalente a una dada que nocontenga derivaciones de este tipo. Ilustraremos el método que hay queseguir en el proceso de eliminación de esta clase de reglas con la siguientegramática de expresiones aritméticas:

en la que aparecen las reglas de derivación unitarias

Page 108: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 109

Comencemos con la variable E. Un primer paso para eliminar la pro-ducción unitaria de esta variable puede consistir en sustituirla por todas lasproducciones que se pueden obtener a partir de las reglas de T, con lo quelas reglas para E quedarían,

Observamos que no hemos conseguido eliminar totalmente las produccionesunitarias de E, por lo que repetimos el proceso con F

Realizando el proceso análogo con la variable T obtenemos, finalmente, unagramática equivalente que no presenta derivaciones unitarias

Este proceso se puede realizar sistemáticamente utilizando el siguientealgoritmo.

Algoritmo 5.5 Eliminación de las derivaciones unitarias

Entrada: Una gramática G = (VW, VT, -P, 5) sin derivaciones vacías.

Salida: Una gramática equivalente G1 — (V/v, Vr,P', S) sin produccionesunitarias ni vacías.

Método:

1. Construir, para cada variable A E VN, el conjunto VA — {B :A -^ B} de las variables accesibles desde A por derivacionesunitarias como sigue:

(a) Tomar Vi = {A}, i = 1.(b) Hacer

mientras

(c) Tomar

2. Construir el conjunto de producciones P': si B —> a G P y noes una producción unitaria, añadir la regla A —Y a a P' paratoda A que tal que B^VA-

Page 109: Teoria de lenguajes gramaticas y automatas para informatico

110 5. GRAMÁTICAS

Eliminación de los símbolos inútiles

Dada una GIC G = (V/v, Vr,P, S), diremos que un símbolo X e V esútil si se utiliza en el proceso de generación de alguna cadena de L(G], estoes, si existe alguna derivación S —>• aX(3 —> LO con a,/3 G V* y LO £ Vf-En otro caso diremos que X es inútil. Observemos que para que un símbolosea útil deben ocurrir dos cosas: debe ser accesible desde el símbolo inicialy desde él se debe poder generar alguna cadena de terminales. Veamos conun ejemplo cómo se pueden eliminar los símbolos que no cumplen estas doscondiciones. Consideremos la gramática

y busquemos en primer lugar los símbolos que no son capaces de generarcadenas de terminales. Para ello construiremos el conjunto VNE de símbo-los que sí lo hacen de manera recursiva. Sea V¿ el conjunto de símbolosque son capaces de generar cadenas de sólo terminales en i o menos pa-sos. En cero pasos los símbolos que pueden generar cadenas de sólo ter-minales son los propios terminales, es decir, VQ = VT = {a,b,c}. Paraconstruir Vi observemos que las únicas variables que generan en un pasocadenas de sólo terminales, o, lo que es lo mismo, que son parte izquier-da de alguna regla cuya parte derecha es una cadena de VQ , son A y 5,con lo que Vi = {a,b,c,A,B}. Los símbolos en V<¿ serán aquellos que sonparte izquierda de alguna regla cuya parte derecha es una cadena de V*,T/2 = {a, 6, c,A,B,S, E}. Y continuando con este proceso obtenemos final-mente que VNE = Va = {a,b, c, A,B,S, E, D}. El resto de símbolos de lagramática, V — VNE-, no son capaces de producir cadenas de sólo terminalesy, por tanto, pueden ser eliminados sin que perdamos ninguna cadena deL(G). La gramática quedará como

Ahora construiremos el conjunto VA de símbolos accesibles desde el símbo-lo inicial. De nuevo procederemos recursivamente. Sea V¿ el conjunto desímbolos accesibles desde S en i o menos pasos. Evidentemente, VQ = {S} yVi = {5, o, A, B}. Para construir V2 tendremos que añadir a Vi los símbolos

Page 110: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 111

accesibles desde A y desde B, con lo que V2 = {S, a, A,B, b}. Puesto queya no hay nuevos símbolos accesibles podemos concluir que VA — V<¿. Lasvariables D, E y c (de hecho este símbolo ya no aparecía en ninguna regla)no son accesibles desde S y pueden ser eliminadas. La gramática resultantequeda finalmente

El siguiente algoritmo permite realizar este proceso sistemáticamentepara una gramática arbitraria.

Algoritmo 5.6 Eliminación de símbolos inútiles

Entrada: Una gramática G — (VN, VT, P, S}.

Salida: Una gramática G' = (V^,V^,P',S) equivalente a G sin símbolosinútiles.

Método:

1. Construir el conjunto VjyE de símbolos de V que generan cade-nas de V£:

(a) Tomar (b) Hacer

mientras (c) Tomar

2. Construir la gramática G" eliminando de G todos los símbolos,junto con sus reglas, que no aparezcan en VNE-

3. Construir el conjunto VA de símbolos de G" accesibles desde S:

(a) Tomar i = O y VQ — {S}.(b) Hacer

mientras (c) Tomar

4. Construir la gramática final G' sin símbolos inútiles eliminandode G" todos los símbolos, junto con sus reglas, que no estén enVA.

Page 111: Teoria de lenguajes gramaticas y automatas para informatico

112 5. GRAMÁTICAS

Conviene recordar que el algoritmo de eliminación de producciones uni-tarias puede generar, en algunos casos, símbolos inútiles. Por tanto, paragarantizar que la gramática queda simplificada al final del proceso, el ordende aplicaciones de las transformaciones debería de ser el seguido en estasección:

1. Eliminar las derivaciones vacías.

2. Eliminar las producciones unitarias.

3. Eliminar los símbolos inútiles.

No obstante, una aplicación preliminar del último algoritmo puede mejorarla eficiencia del proceso.

Ejercicio

5.16 Simplifíquese la gramática:

5.4.6 Formas normalizadas

Una vez que hemos simplificado la gramática de acuerdo con los cri-terios mencionados, las GIC pueden adoptar dos formas, llamadas formasnormalizadas, que resultan útiles en aplicaciones específicas. La primerade ellas es la forma normalizada de Chomsky, que nos va a permitir apli-car el algoritmo de análisis sintáctico de Cocke, Younger y Kasami vistoanteriormente, la otra es la llamada forma normalizada de Greibach, útilprincipalmente para obtener un autómata con pila asociado a la gramáticamenos indeterminista que en el caso general. En ambos casos, proporciona-remos argumentos de tipo constructivo para justificar que cualquier GIC sepuede escribir en forma normalizada. Es importante destacar que, inclusocon estas restricciones, no queda unívocamente determinada la forma deuna gramática que genera un lenguaje dado. En otras palabras: es posiblela existencia de diferentes GIC simplificadas y normalizadas equivalentes.

Page 112: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 113

Forma normalizada de Chomsky

Se dice que una gramática G = (Vyv, VT, -P, 5) está en forma normalizadade Chomsky cuando todas las reglas de derivación de P tienen alguna de lasformas siguientes:

1. A —> BC (con A,B,C e VN}.

2. A —>• a (con a € VT)-

3. 5 —>• e. En este caso, en el cual e E L(G), S no puede aparecer enla parte derecha de ninguna regla de P.

Es sencillo transformar cualquier GIC dada en una equivalente en formade Chomsky, siempre que se haya simplificado previamente. La idea consisteen que las producciones que tengan longitud mayor que 2 se descomponganen una secuencia de reglas de longitud 2. Veamos como se ha obtenido lagramática en forma de Chomsky de la página 101 a partir de la gramática

Para ello, observamos que las reglas A —> O y -B —>• 1 ya tienen una delas formas admitidas. Las reglas S —> QB 1A, A —> OS y B —> IStienen longitud 2 pero aparecen terminales en el lado derecho, por lo quesustituimos estos terminales por nuevas variables que sólo producen dichoterminal, ZQ —> O y Z\ —> 1. Con estos cambios la gramática queda

cuyas reglas de longitud 1 y 2 ya tienen la forma deseada. La regla A —>•ZiAA la descomponemos como el par de reglas A —> Z\YAA, YAA —> AAy procediendo análogamente con la regla que falta obtenemos finalmente lagramática en forma normalizada de Chomsky

El algoritmo siguiente permite realizar este proceso con cualquier gramáti-ca simplificada.

Page 113: Teoria de lenguajes gramaticas y automatas para informatico

114 5. GRAMÁTICAS

Algoritmo 5.7 Conversión de una gramática a la forma normalizada deChomsky

Entrada: Una gramática G = (V/v, VT, P, S] simplificada.

Salida: Una gramática G' = (V^, VT, P1, S) en forma normal de Chomsky.

Método:

1. Incluir en P' todas las reglas de P que ya tengan una de lasformas permitidas.

2. Por cada regla de producción de la forma A —> X\X<2, dondeal menos uno de los dos símbolos de la parte derecha es unterminal, añadir la regla A —>• ZiZ%, donde Z¿ representa Xisi Xi G VN, o es una nueva variable Zi — Za si Xi — a G VT-

3. Para cada regla de la forma A —> X\ ... Xn G P con n > 2,añadir a P' el conjunto de reglas siguiente:

donde Zk es Xk si Xk G VN, o una nueva variable Za si X^ =a E VT, e YÍ, . . . , Yn-i son nuevas variables.

4. Para cada nueva variable Za introducida en los dos pasos an-teriores en sustitución de un terminal, añadir a P' la reglaZa —> a.

5. Formar V^ añadiendo todas las nuevas variables creadas en lospasos anteriores.

Ejercicios

5.17 Dada la gramática G

encuentra una gramática en forma normal de Chomsky para el lenguajeL(G] - {e}

Page 114: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) TI5

5.18 Escríbanse en forma de Chomsky las siguiente gramáticas:

1.

Descríbase L(G).

2.

3.

5.19 Encuentra una gramática en forma de Chomsky que genere el con-junto de cadenas capicúa sobre el alfabeto {a, b}.

5.20 Proporciona cotas superior e inferior para la longitud de una cadenaw G L(G) en función del número de pasos de la derivación si G está enforma de Chomsky.

5.21 Escribe una gramática en la forma normalizada de Chomsky equiva-lente a la expresión regular (a + b)*b(a + b)*a.

5.22 A la vista del ejercicio anterior, ¿es eficiente el algoritmo CYK paradeterminar si x € L(G) para el caso en que G sea regular? Razona larespuesta.

5.23 Dada la gramática de la sección 5.4, comprueba si la cadena w —001011 pertenece a L(G}. Dibuja todos los árboles de derivación de w.¿Qué se puede concluir sobre la ambigüedad de la gramática?

Page 115: Teoria de lenguajes gramaticas y automatas para informatico

116 5. GRAMÁTICAS

Forma normalizada de Greibach

Ahora mostraremos que, para toda GIC, existe una forma equivalenteen la cual la parte derecha de cada regla de derivación comienza siemprepor un terminal. Las nociones de recursión por la izquierda y su eliminaciónson muy importantes en la construcción de esta forma normalizada, llamadade Greibach. La forma normalizada de Greibach puede ser especialmenteútil para diseñar autómatas de pila capaces de reconocer una cadena dela gramática. En este caso, las derivaciones de P son de forma tal que lacadena de terminales se va construyendo de izquierda a derecha a lo largode la derivación.

Se dice que una gramática está en forma normalizada de Greibach cuan-do todas sus producciones son de la forma A —> aa, con a £ VT y a e V^(a excepción, si existe, de la regla S —> e).

El algoritmo que permite construir la forma normalizada de Greibach deuna gramática dada requiere que en ésta se haya eliminado previamente larecursión por la izquierda, tal y como se vio en el algoritmo de la página 98.Dicho algoritmo, además de eliminar la recursión por la izquierda, conducea una gramática en la que todas las reglas satisfacen que si AÍ —> Aja e P,entonces i < j. Esta propiedad puede ser utilizada para escribir la gramáticaen la forma normalizada de Greibach. Veámoslo primero con un ejemplo.Consideremos la gramática recursiva por la izquierda

Para eliminar la recursión por la izquierda renombramos las variables,AI = A, A2 = B, y aplicamos el algoritmo 5.4.3. El resultado es

Observemos que las reglas de A2 ya tienen la forma de Greibach (aunqueno se puede garantizar que esto ocurra siempre con la variable que tienemayor subíndice, sí podemos garantizar que cuando se aplica el algoritmo5.4.3 todas las producciones de dicha variable comenzarán por terminal).

El siguiente paso consistirá en conseguir que todas las producciones delas restantes variables, AI y A2, también comiencen por terminal. Para ello,puesto que tenemos garantizado que todas las producciones de una variablecomienzan por terminal o por una variable con subíndice mayor, podemossustituir estas últimas por todas sus producciones, es decir, sustituiremoslas reglas

Page 116: Teoria de lenguajes gramaticas y automatas para informatico

5.4. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO (GIC) 1T7

por las reglas

y las reglas

por las reglas

Con lo que observamos que todas las reglas de producción de la gramáticaestán en forma de Greibach. Si en este paso ocurriera que alguna reglatuviera la forma A —> aabfi, con a, b E VT y &:(3 6 V^-, simplementetendríamos que sustituir dicha regla por las reglas, A —>• aaB/3 y B —> 6,con B una nueva variable.

Este proceso queda recogido en el siguiente

Algoritmo 5.8 Conversión a la forma normalizada de Greibach

Entrada: Una gramática simplificada G = (V/v, VT, P, S) sin recursión porla izquierda.

Salida: Una gramática G = (V^, VT, -P', S) en forma normalizada de Grei-bach.

Método:

1. Ordenar V/v — {Ai, A-¿,..., Ar} de manera que toda producciónAÍ —>• a G P satisfaga que el primer símbolo de a sea unterminal o una variable Aj tal que i < j (este orden se consiguenaturalmente en el algoritmo de la página 98 de eliminación dela recursión por la izquierda).

2. Tomar i = r — 1.

3. Mientras i ^ O,

(a) Sustituir todas las reglas de la forma AÍ —> Aja, dondei < j, por AÍ —>• 0ia | . . . | /3ma donde Aj —>• fií \... (3m

son todas las reglas que tienen como parte izquierda a Aj.Las cadenas ft\,..., (3m comienzan todas por terminal.

(b) i = i-\.

4. En este punto, todas las reglas (excepto, si existe, S —> e)tienen partes derechas que comienzan por un terminal. Porcada regla A —>• aX\ X<¿ ... X^, sustituir todos los Xj que seanterminales por nuevos no terminales Zj y añadir la producción

Page 117: Teoria de lenguajes gramaticas y automatas para informatico

118 5. GRAMÁTICAS

Ejercicios

5.24 Escribe en forma de Greibach la gramática definida por las siguientesreglas de derivación:

5.25 Sea la gramática G:

Escríbase una gramática G' en forma normalizada de Greibach para L(G] —(e).

Page 118: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 6

Lenguajes independientesdel contexto

6.1 Operaciones con LIC

Algunas operaciones con lenguajes independientes del contexto produ-cen siempre como resultado lenguajes que son también independientes delcontexto. Decimos entonces que los LIC son estables bajo dicha operación.Ejemplos de operaciones bajo las cuales los LIC son estables son:

• unión, concatenación y clausura;

• sustitución;

• inversión.

Vamos a justificar estas propiedades, mostrando que se puede escribir unaGIC para los lenguajes resultantes de la operación. En cambio, los LIC noson estables bajo:

• intersección;

• complementación;

Unión: Supongamos que tenemos dos gramáticas no contextúales G\ —(Vjvi,Vri,Pi,.Si) y G2 - (V)v2,V rT2,-P2,5 í2). Es sencillo contruir G =(VNjVT,P,S) tal que L(G) = L(Gi) U L(G2) tomando:

119

Page 119: Teoria de lenguajes gramaticas y automatas para informatico

120 6. LENGUAJES INDEPENDIENTES DEL CONTEXTO

Evidentemente, una cadena de terminales es generada por G si y sólo si esgenerada por G\ o por O?.

Concatenación: La gramática G para el lenguaje resultante de la con-catenación de L(G\) y £(£2), L(Gi)L(G<2), se puede obtener de formasimilar con

La nueva regla S —> SiS? es la que concatena las cadenas de los doslenguajes.

Clausura: En este caso, para que G sea tal que L(G] = L(G\}* podemosdefinir:

donde la última regla (una recursión por la izquierda) es la responsable degenerar cero o más concatenaciones.

Sustitución: El concepto de sustitución / de terminales por lenguajesindependientes del contexto es análogo al que se introdujo de sustituciónpor conjuntos regulares: / es un homomorfismo tal que la imagen /(a) decualquier terminal a 6 VT es un cierto LIC, supongamos /(a) = La, y laimagen de una cadena de terminales es la concatenación de los conjuntosimagen de cada símbolo de la cadena: (VNa,VTa,Pa,Sa) es la gramática que genera la que genera Lbj etc., el lenguaje f(L(G}} puede generarse mediante unanueva gramática G" tal que L(G') — f(L(G)), construida a partir de G =(V,T,P,S): P' se obtiene sustituyendo en P cada aparición de un símboloterminal a por Sa e incorporando las reglas de derivación de P'. Además

Inversión: La gramática G" que genera el lenguaje inverso {x G S* : XR e L(G}} puede construirse simplemente invirtiendo el ordende escritura de los símbolos de la parte derecha de cada regla de derivaciónde

Page 120: Teoria de lenguajes gramaticas y automatas para informatico

6.2. LEMA DE BOMBEO PARA LIC 121

Ejercicios

6.1 Busca contrae'jemplos para justificar que los LIC no son estables bajointersección^ y/o complementación).

6.2 Demuestra que si f : £* —>• A* es un homomorfismo y L G A* es unLIC entonces f ~ l ( L ] es un LIC (estabilidad para la función inversa de unh om om orfism o).

6.3 Considérese la gramática de expresiones aritméticas infijas:

Demuéstrese, modificando la gramática convenientemente, que el lenguajede las expresiones aritméticas postfijas (donde la traducción de (a+a)*(a+a)es aa + aa + *) es también un LIC.

6.2 Lema de bombeo para LIC

De forma análoga a como se hizo para los conjuntos regulares, es tambiénposible enunciar un lema de bombeo para LIC. Como cabe esperar, el lemadel apartado 4.1 es más restrictivo, de forma que cualquier conjunto quesatisfaga la versión para conjuntos regulares satisface automáticamente elnuevo enunciado, pero no a la inversa. En este caso, el hecho de que lagramática sólo pueda usar un número finito de variables permite afirmarque si una derivación es lo suficientement larga, entonces alguna de lasvariables ha de utilizarse más de una vez. En ese caso, la gramática ha deser recursiva, y permite generar un conjunto infinito de cadenas.

Lema 6.1 (de bombeo) Para cada gramática independiente del contextoG — (VA/-, VT,P, S), existe un número n(G) E N tal que

Demostración. Supondremos que G ha sido simplificada y reescrita en for-ma normalizada de Chomsky. Es sencillo comprobar —utilizando el métodode inducción— que entonces:

Page 121: Teoria de lenguajes gramaticas y automatas para informatico

122 6. LENGUAJES INDEPENDIENTES DEL CONTEXTO

ya que el número de símbolos de la cadena generada no puede más queduplicarse en cada paso y algunos pasos más son necesarios para que lasvariables sean sustituidas por terminales. Como consecuencia, una elecciónadecuada para n es n = 2^1, siendo \VN el número de variables en VN-Dada una cadena w de longitud \w\ > n, cualquier derivación de w debecontener más de |V/v| pasos, por lo que alguna de las variables X 6 VN debeaparecer en más de un paso de la derivación, o lo que es lo mismo, en másde un nodo del árbol de derivación.

Es posible concretar aún más pues en realidad, alguna repetición devariable debe darse en el camino desde el nodo raíz hasta alguno de losterminales (basta con elegir un camino con longitud mayor que |V/v|). Portanto, si nos fijamos en la variable X que primero se repite en el camino(comenzando desde el nodo terminal), ésta aparece en dos nodos del camino,que llamaremos superior e inferior respectivamente. El subárbol inferior,con raíz en X^l\ genera una cadena de terminales x1 que aparecen en losnodos terminales del subárbol:

Por otro lado, el subárbol superior, con raíz en X^s\ contiene en su interioral inferior y por tanto, genera una cadena i¡> que contiene a x: i¡) = vxy, esdecir:

donde

Estas subcadenas v, x, y son precisamente las que satisfacen las condi-ciones del lema:

• \vxy\ < n ya que hemos tomado la variable X que primero se repi-te en el camino (comenzando desde el nodo terminal). Disponemosentonces, como máximo, de \V\ + 1 variables (la X se utiliza dos ve-ces), y es sencillo probar que 2^1 = n es la longitud máxima de lasubcadena generada a partir de X.

• \vy\ > 1, ya que el vértice superior, por estar G en forma de Chomskysimplificada, sólo puede ser del tipo X —> AB y ni A ni B sonanulables.

• uvkxykz E L(G] ya que

luego 5 —> uXz —> uvkxykz para cualquier & G N.

Page 122: Teoria de lenguajes gramaticas y automatas para informatico

6.2. LEMA DE BOMBEO PARA LIC 123

Como en el caso de los LR el lema de bombeo permite únicamentedescartar algunos conjuntos como LIC, pero no demuestra que un conjuntodado lo sea. Por ejemplo, sabemos que {albl : i € N} es un LIC, perono por el hecho de que no sepamos hallar el n que figura en el lema. Encambio, {a*blcl : i E N} no lo es. De nuevo, la demostración procede porreducción al absurdo. Supongamos que existe ese n y tomemos, por ejemplo,la cadena w = anbncn. No es difícil comprobar que ninguna partición dew es compatible con el lema de bombeo, ya que vxy puede contener comomucho dos tipos de letra diferentes, y al bombear la subcadena, se deshaceel empate entre los tres tipos de letra.

Ejercicios

6.4 Comprueba que si un lenguaje satisface el lema de bombeo para con-juntos regulares, también satisface el de LIC.

6.5 Comprueba si los siguientes lenguajes son LIC:

• cadenas con igual número de apariciones de a, de b y de c

Una vez más nos encontramos ante la cuestión de las limitaciones delos lenguajes teóricos. Si vimos que los lenguajes regulares no eran capacesde describir adecuadamente situaciones de aparición frecuente en el cam-po de la computación (por ejemplo, al determinar si los paréntesis de unaexpresión algebraica están correctamente anidados), observamos ahora quetampoco los lenguajes independientes del contexto van a resolver todos losproblemas. Por ejemplo, el ejercicio 6.5 está relacionado con el problema decomprobar si el número y tipo de argumentos en una llamada a una funciónconcuerda con los que aparecen en la declaración de la función. Aunqueexisten lenguajes de rango superior a los aquí estudiados, la complejidadde su tratamiento constituye un obstáculo importante para su utilización.Veremos en breve, que incluso el paso desde los lenguajes regulares a losLIC supone un significativo aumento en el coste de los algoritmos que seaplican (en algunos casos, la misma cuestión se transforma en indecidibleo su complejidad puede resultar intratable comparada con el caso de losLR). Como siempre, es necesario buscar un compromiso entre exactitud ycomplejidad. En otros campos de trabajo, como la inferencia gramatical o

Page 123: Teoria de lenguajes gramaticas y automatas para informatico

124 6. LENGUAJES INDEPENDIENTES DEL CONTEXTO

aprendizaje, suele recurrirse a los modelos más sencillos de lenguaje, aunqueestos sean sólo aproximaciones a los correctos1, si esto permite una mejorcomprensión y mayor rapidez de las predicciones del modelo. También esposible la situación opuesta, en la que un lenguaje presumiblemente finitoresulta descrito de forma mucho más compacta por su aproximación regularo como LIC.

6.3 Algoritmos

En esta sección vamos a considerar la cuestión de determinar si da-da una gramática G entonces es L(G) vacío, finito o infinito, así como ladeterminación de si x £ £* pertenece o no al lenguaje.

¿Es L(G) = 0? Para determinar si L(G) es vacío basta con simplificarG. Trivialmente: L(G) = 0 <==> S es inútil. Para determinar si S es útil,basta con usar la primera parte del algoritmo de la página 111, donde sedetermina el conjunto Ne de los no terminales capaces de generar cadenasde terminales. Si S 6 Ne, entonces S no es inútil, y por tanto L(G] no esvacío.

¿Es L(G) infinito? Para determinar si L(G] es finito o infinito bas-ta con comprobar si G, en su versión simplificada, es o no recursiva. Lasimplificación es necesaria para que no aparezcan símbolos inútiles. Porotro lado, el carácter recursivo de G se puede comprobar de forma sencillasi se dibuja un grafo en el que cada nodo está etiquetado con una de lasvariables y se conecta a su vez mediante arcos dirigidos a todas aquellasvariables que aparecen a la derecha de alguna de sus derivaciones. Es decir,A ̂ B si existe alguna derivación en R tal que A —>• aBfl. EntoncesL(G) es finito si y sólo si el grafo dibujado es acíclico, es decir, no contienebucles o ciclos (caminos que partiendo de alguna de las variables conduzcade nuevo hasta la misma variable: A0 ^ AI ^ ... ̂ An ~» A0). Esto esequivalente a afirmar que no existe una secuencia de derivaciones del tipo:

Demostración. Para simplificar, supongamos que G está en forma deChomsky y por tanto |o:¿/?¿ = i. Como además G no contiene símbolosinútiles, existen y,x,v : an+í —*-> v,/3n+í —-> y,A0 —^» x. Por tanto:

luego existen cadenas de longitud superior a cualquiera dada y el conjuntono puede ser finito.

*En algunos casos, ni siquiera sabemos con certeza cuál es el modelo correcto.

Page 124: Teoria de lenguajes gramaticas y automatas para informatico

6.3. ALGORITMOS 125

6.6 Determínese si L(G) es vacío, finito, o infinito para la gramática Gdefinida por las siguientes reglas

¿Genera G la cadena xl Pasamos ahora a considerar la cuestión desi una cadena dada x E X* es generada o no por la gramática G. Estacuestión constituye el problema central de la tarea denominada análisiso reconocimiento sintáctico. Si la longitud de x es / = \x y G está enforma de Chomsky, cualquier derivación de x no puede contener más de kpasos, siendo k tal que I < 2k. Por tanto, siempre es posible comprobar enun tiempo finito —pues el número de derivaciones con menos de k pasosestá acotado— si se da el caso de que x E L(G). Sin embargo, el tiempoque requiere esta comprobación crece exponencialmente con x (el númerode cadenas de longitud I crece exponencialmente con 1). El algoritmo 5.2descubierto independientemente por Cocke, Younger y Kasami[8]) es unpoco más elaborado, y permite que el tiempo de ejecución crezca menos quex 3 . Recordemos que este algoritmo, además de permitirnos determinar

si x £ L(G], proporciona la tabla de análisis sintáctico que contiene lainformación suficiente para construir todos los árboles de derivación de x.

El método de Cocke-Younger-Kasami no es el mejor algoritmo gene-ral para determinar si una cadena pertenece al lenguaje generado por unagramática. Existen algoritmos generales como el de Earley[8], cuya comple-jidad temporal es con frecuencia menor (por ejemplo si la gramática es noambigua), pero cuya descripción escapa al alcance temático de este libro.

Page 125: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 126: Teoria de lenguajes gramaticas y automatas para informatico

Capítulo 7

Autómatas con pila yanalizadores sintácticos

Ya ha sido mencionado (pgs. 20 y 88) que los autómatas con pila (AP)ocupan una posición intermedia entre los autómatas finitos y las máquinasde Turing, pues la estructuración de los datos en forma de pila supone unagran rigidez a la hora de almacenar y acceder a la información allí deposita-da. Este acceso se realiza de forma muy restrictiva, porque en cada instantesólo el elemento superior de la pila es accesible1 (aquel que fue introducidoen último lugar). Es posible demostrar que una máquina de Turing es equi-valente a un autómata con dos pilas de almacenamiento, y también que unAP con una pila cuya profundidad está limitada no es más que un AFD.

La equivalencia entre los lenguajes independientes del contexto y losautómatas de pila es menos satisfactoria que la existente entre los lengua-jes regulares y los autómatas finitos deterministas, ya que en este caso noexiste necesariamente un autómata de pila determinista equivalente a unAP indeterminista dado, y algunos LIC sólo pueden ser reconocidos por APindeterministas. Afortunadamente, los AP deterministas pueden describirla sintaxis de la mayoría de los lenguajes de programación. Para reconocerlas estructuras válidas de los lenguajes de programación se utilizan habi-tualmente analizadores sintácticos LL y LR, que son subclases (propias) delos autómatas con pila deterministas.

7.1 Definiciones

Un autómata con pila es una séptupla M = (Q, S, F, Ó, Qi, Zi,F) donde:

1 Siguiendo el procedimiento LIFO, siglas inglesas de last-in first-out, "el últimoque entró es el primero que sale".

127

Page 127: Teoria de lenguajes gramaticas y automatas para informatico

128 7. AUTÓMATAS CON PILA Y ANALIZADORES SINTÁCTICOS

• Q es el conjunto finito de estados del autómata y q\ E Q el estadoinicial.

• E es el alfabeto finito para el lenguaje.

• F es un alfabeto finito o conjunto de símbolos que pueden ser almace-nados en la pila, la cual no se encuentra vacía inicialmente2 sino quecontiene Z\ £ F.

• -F es el subconjunto de los estados de aceptación.

• 6 es una función de transición de Q x E* x F en subconjuntos finitosdeQxT*.

Las transiciones del AP vienen determinadas por la función ó, que eneste caso depende de tres argumentos: el estado previo q del AP, el símbolode entrada a y el símbolo superior de la pila Z. El resultado (o resultadosen el caso indeterminista) es un nuevo estado del autómata (p) y un nuevoestado de la pila que resulta de sustituir el símbolo superior Z por unacadena finita de símbolos de F (7 £ F*).

Adoptaremos el convenio de que los símbolos de 7 se apilan de derechaa izquierda, es decir si 7 = XYZ entonces X es el nuevo símbolo superiorde la pila3. En general, el AP será indeterminista y varias transiciones sonposibles:

A la terna formada por un estado q del AP, una cierta subcadena w 6 X*de entrada (el sufijo que resta por leer) y la cadena que describe el contenidode la pila (7 G F*) se le conoce con el nombre de descripción instantáneadel AP, pues nos proporciona toda la información que necesitamos paradescribir el estado del AP y su evolución posterior. Definiremos una relaciónde derivación entre descripciones instantáneas cuando estas corresponden ados posibles estados consecutivos del autómata4:

El lenguaje aceptado por un AP se define entonces como

2La inclusión de un símbolo inicial en la pila no es esencial en la definición,pero resulta conveniente para la analogía con las GIC, al desempeñar Z\ el papeldel símbolo inicial S de las gramáticas.

3E1 hecho de que la función de transición pueda sustituir un símbolo Z poruna cadena 7 tampoco es esencial a la definición. De hecho, podría definirse elAP de forma que no pudiese eliminar o añadir más de un símbolo de la pila encada paso sin variar la potencia de los AP, pero la definición adoptada resultamás cómoda. Tampoco es esencial que en la definición la función 5 esté definidasobre Q x S* x F, ya que bastaría con Q x (E U {e}) x F.

4Otros autores usan el símbolo h para esta relación.

Page 128: Teoria de lenguajes gramaticas y automatas para informatico

7.1. DEFINICIONES 129

es decir, el conjunto de aquellas cadenas que llevan al autómata desde elestado inicial a un estado del subconjunto F. Una definición alternativa delenguaje aceptado es:

En esta última definición, una palabra w es aceptada cuando la pila quedavacía en cualquier estado del autómata y la palabra ha sido leída completa-mente (no es necesario, por tanto, distinguir estados finales). Más adelanteveremos que estas dos definiciones son equivalentes.

Si dada cualquier descripción instantánea (DI) está unívocamente defi-nida la siguiente DI, diremos que el AP es determinista. En caso contra-rio, diremos que el AP es indeterminista. A diferencia con el caso de losAFD, no basta con que se cumpla que card(£a(<?, Z)} = 1. Por ejemplo, si

) no está fijado cuál es la descripcióninstantánea que sigue a (q,aw,X'y). Por tanto, se dice que una autómataes determinista si, para todos los estados q e Q y símbolos de la pila Z E F:

• o bien card

• o bien card(ó

De esta forma se asegura que sólo existe un movimiento posible (como mu-cho) tras cada descripción instantánea.

Desafortunadamente, existen lenguajes independientes del contexto quesólo pueden ser reconocidos por AP indeterministas, de modo que los len-guajes generados por AP deterministas es un subconjunto propio de losLIC.

Ejercicios

7.1 Construye la función de transición de un AP que reconozca C ={WCWR

7.2 Construye un AP que reconozca D — {WWR : w 6 (a + 6)*}. Justificaque D no puede ser generado por un AP determinista.

Equivalencia entre criterios de aceptación: La equivalencia en-tre las definiciones de aceptación dadas en esta sección, L(M) y N(M) sejustifica por el hecho de que dado un autómata M tal que reconoce un ciertoLIC por vaciado de pila L — N(M) siempre es posible contruir otro AP queacepta L cuando el autómata entra en un estado de aceptación: L = L(M')y viceversa, dado L = L(M) se puede contruir M' tal que L = N(M').

Supongamos L — Z/(M), y construyamos el autómata M' tal que N(M') -L, a partir de M. Los estados de aceptación de M tienen ahora, ademásde las transiciones que pudiera tener M, la posibilidad de pasar a un nuevo

Page 129: Teoria de lenguajes gramaticas y automatas para informatico

130 7. AUTÓMATAS CON PILA Y ANALIZADORES SINTÁCTICOS

estado qe que vacía la pila cuando el autómata accede a un estado de F. Elfondo de la pila es marcado con un símbolo inicial diferente X\, que sólopuede ser sacado de ella por qe, para evitar que sean aceptadas cadenasque vacían la pila en M (y que no están en Z/(M), es decir, no llegan a unestado de aceptación de M). Para ello se cambia el estado inicial a q( concontenido en la pila Xi. De esta forma Q' = Q U {q[, qe} y F" = F U {Xi}.La función de transición 6' difiere de 6 en los siguientes puntos:

Con las definiciones anteriores tenemos En el caso contrario de que tengamos L = N(M), definimos M' tal

que accede a un estado final q¡ en el momento en que la pila de M sevacía. Podemos tomar:Las diferencias entre ó' y ó son:

Con estas definiciones

7.2 Autómata de pila para una GIC

Dada G — (VJv, Vr,-P, 5), vamos a construir un AP que acepte preci-samente las cadenas de L(G). Para ello mostraremos dos procedimientosdiferentes, dependiendo de si partimos de la gramática en una forma ar-bitraria o de su transformada en la forma normalizada de Greibach. Enel primer caso, el funcionamiento del autómata se realiza de acuerdo conalguna forma de gramática que tiene una interpretación sencilla. En esteprocedimiento se basará la construcción de analizadores sintácticos de la sec-ción 7.4. En el segundo caso se obtiene un autómata menos indeterminista,y más conveniente para el estudio teórico de los LIC.

La construcción inmediata [8] define, dada la gramática G, un autómataM = (Q, £, A, 6, qi, Zi, F) que tiene:

• un único estado que es, obviamente, también el inicial

• un alfabeto de entrada igual al alfabeto terminal de la gramática

• un alfabeto de pila (A = V) idéntico al conjunto de todos los símbolosde la gramática; y

Page 130: Teoria de lenguajes gramaticas y automatas para informatico

7.2. AUTÓMATA DE PILA PARA UNA GIC 131

• el símbolo inicial de la gramática como símbolo inicial de pila (Z\ —5);

y no tiene estados de aceptación (F = 0). La función de transición 6 sedefine como:

Conviene recordar que el autómata así construido es indeterminista siempreque haya más de una regla de derivación con la misma parte izquierda.Se puede demostrar que L(G) = N(M); es decir, el autómata acepta porvaciado de pila el lenguaje generado por G.

En el segundo procedimiento se reescribe G en forma normalizada deGreibach. Se define entonces M = (Q, £,F,£, {q}, Zi,F) donde Q = {q}contiene un solo estado, los símbolos de la pila son las variables de lagramática F = V/v, el alfabeto del autómata es S = VT, el contenido inicialde la pila es el símbolo inicial de G (Z\ — S) y F = 0. Por último, la funciónde transición se obtiene directamende a partir las reglas de derivación:

Con estas definiciones 5 —> w <£=> w 6 AT(M), pues en la pila se encuen-tra almacenado en cada instante la subcadena de variables que resta porsustituir.

Ejercicios:7.3 Construye un autómata de pila que permita reconocer L(G] para la

gramática del ejercicio 5.4

7.4 Construyase un autómata de pila equivalente a las gramáticas:1.

2

Page 131: Teoria de lenguajes gramaticas y automatas para informatico

132 7. AUTÓMATAS CON PILA Y ANALIZADORES SINTÁCTICOS

7.5 Construyase un autómata de pila para la gramática:

7.6 Encuentra una gramática independiente del contexto para el lengua-je representado por la expresión regular (00)*(01|1)*1 1)*. Expresa dichagramática en forma normalizada de Greibach y obten el autómata con pilaasociado.

7.7 Encuentra un autómata con pila que reconozca el conjunto de cadenassobre el alfabeto {a, b} que contienen exactamente el doble número de aesque de bes.

7.3 Gramática correspondiente a un AP

Dado el autómata M = (Q, £, F, 6, q1, Z\, F) queremos construir unagramática independiente del contexto G = (V, £,<S, R) tal que L(G) =N(M). Para ello tomamos:

Los objetos < q, A, p > son los símbolos de la nueva gramática y representanel objetivo del autómata M de pasar del estado q al estado p eliminando elsímbolo A de la parte superior de la pila, ya sea directamente o a través deuna secuencia de pasos intermedios. Como el objetivo de M para que acepteuna cierta cadena es eliminar Z\ de la pila, pasando al mismo tiempo desdeqi hasta un estado cualquiera q, escribiremos como reglas de derivación deG:

Si un símbolo a (o quizás e) de la cadena de entrada w produce una tran-sición desde un nodo q hasta otro po y reemplaza A por 7 = B\B^ ... Bm,es decir, si (po5 7) £ ^a(?; A], el resultado es que la lectura de a produce uncambio en el objetivo del autómata, que es ahora pasar de po hasta el nododado p — pm descargando la cadena 7:

Por ello, por cada transición (p0,7) E óa(q, A) con 7 = BiB2 ... Bn, añadi-mos un conjunto de reglas de derivación a R:

para cada pi,p2,... ,pm G Q. Si m = O, entonces la regla es simplemente

Page 132: Teoria de lenguajes gramaticas y automatas para informatico

7.4. ANALIZADORES SINTÁCTICOS 133

Es posible demostrar [9] que de esta forma se obtiene una gramáticaG tal que L(G) = N(M). La gramática obtenida puede contener símbolosinútiles, que se pueden de eliminar usando el algoritmo 5.6.

Ejercicios

7.8 Construye la gramática equivalente al siguiente autómata de pila M —{?i) 92}, {a, b}, {X, Z},8, QI, Z, 0) cuya función de transición está definidapor:

7.9 Reconstruye la gramática del ejerció 7.3 a partir de su autómata depila.

7.10 Demuestra que dados L (LIC) y R (regular), entonces: L f ] R es unLIC; RL~l es regular; LR~l es LIC.

7.4 Analizadores sintácticos

Los autómatas de pila se utilizan en los intérpretes y compiladores de loslenguajes de programación para realizar el denominado análisis sintáctico,es decir, para determinar si una determinada construcción (sentencia, bucle,etc.) está bien formada. De hecho, en los compiladores, se acoplan alautómata de pila mecanismos paralelos de generación de código, de maneraque la compilación consiste básicamente en una tarea de traducción dirigidapor la sintaxis, realizada por un AP. En los intérpretes, se dota al autómatade pila de la capacidad de ejecutar las acciones que solicita el programa.

Los autómatas de pila que se utilizan son normalmente deterministas, o,en todo caso, con un indeterminismo muy limitado, que puede ser resueltomediante técnicas de retroceso limitado en caso de haber elegido una opciónincorrecta.

Los lenguajes independientes del contexto deterministas son un subcon-junto de los LIC que pueden ser reconocidos por AP deterministas. Dentrode ellos existen subclases, determinadas por la naturaleza de los autómatasque los reconocen. Existen esencialmente dos tipos de análisis sintáctico: elanálisis descendente (en inglés top-down) y el análisis ascendente (en inglésbottom-up). El análisis descendente se basa en comenzar con el símbolo ini-cial e ir estableciendo derivaciones por la izquierda que vayan casando conla cadena de entrada. El análisis ascendente consiste en simular la inversade una derivación por la derecha, desplazando la entrada a la pila y redu-ciéndola de acuerdo con las reglas de la gramática cuando en la pila aparece

Page 133: Teoria de lenguajes gramaticas y automatas para informatico

134 7. AUTÓMATAS CON PILA Y ANALIZADORES SINTÁCTICOS

la parte derecha de una producción, hasta que se acaba por tener el símboloinicial de la gramática.

En esta sección sólo nos fijaremos en el análisis descendente, que resultano ser en general tan potente como el ascendente (existen lenguajes paralos cuales es imposible construir un analizador descendente determinista).Los lenguajes y gramáticas que trataremos son los denominados LL(fc).

Una gramática no ambigua es LL(fc) si el autómata de pila correspon-diente, construido de acuerdo con las prescripciones de este capítulo, querealiza el análisis descendente, de derecha a izquierda (Left-to-right, la pri-mera L del acrónimo) según una derivación por la izquierda (Leftmost de-rivation, la segunda L), es tal que su indeterminismo puede ser eliminadosi se le dota de la capacidad de espiar k símbolos de la parte de la cadenade entrada que queda por leer antes de leerlos oficialmente. A esta últimacapacidad se le llama anticipación o preanálisis, en inglés lookahead.

Un ejemplo de gramática LL(1) servirá para ilustrarlo. Considérese latípica gramática de expresiones aritméticas rudimentarias:

Tal como está escrita, esta gramática es recursiva por la izquierda. Elautómata de pila correspondiente, que sería indeterminista, podría caer enun bucle infinito en algún caso; por ejemplo, podría decidir repetir indefini-damente la acción siguiente: sacar E de la pila, leyendo e de la entrada, ymeter en la pila E + T. Si se elimina la recursión por la izquierda de estagramática, el autómata sigue siendo indeterminista, aunque sin este tipo deposibles bucles infinitos:

La tabla de transiciones del autómata sería indeterminista:

Page 134: Teoria de lenguajes gramaticas y automatas para informatico

7.4. ANALIZADORES SINTÁCTICOS 135

(las transiciones marcadas con un asterisco hacen que el autómata sea inde-terminista). Sin embargo, si dotamos al autómata de la capacidad de mirarel primer símbolo de la parte de la cadena que queda por leer antes dedecidir que acción ha de tomar, es posible realizar un analizador completa-mente determinista para esta gramática. Denominaremos "pre" al conjuntode símbolos de preanálisis de cada transición, que además puede ser utili-zado para determinar si una transición determinista dada sería correcta ala vista de la cadena que queda por leer. La nueva tabla de transiciones,con los símbolos de preanálisis correspondientes se muestra en la figura 7.1.Nótese que en el nuevo autómata, las únicas transiciones que consumen

Figura 7.1: Tabla de transiciones para la gramática LL(1) descrita en eltexto.

símbolos de la entradas son las que ocurren cuando hay un terminal en lacima de la pila, y en este caso no es necesario el preanálisis. El autóma-ta así construido es un analizador LL(1), dado que sólo necesita mirar unsímbolo de la entrada para decidir la acción. Así, el conjunto de descripcio-nes instantáneas correspondientes al análisis de la cadena (a + a) * a seríael mostrado en la figura 7.2.

Cuando una entrada no está definida o el símbolo de anticipación noes del conjunto que determina una transición, se hace que el analizadorindique que la cadena no pertenece al lenguaje. La construcción de la tablade transición, con los símbolos de preanálisis, a partir de la gramática, esalgorítmica, aunque el algoritmo excede el alcance de este libro. De hecho,cuando la tabla resultante de aplicar el algoritmo es indeterminista inclusoconsiderando el preanálisis, se dice que la gramática no es LL(1).

Page 135: Teoria de lenguajes gramaticas y automatas para informatico

136 7. AUTÓMATAS CON PILA Y ANALIZADORES SINTÁCTICOS

Figura 7.2: Conjumanálisis de la cadena (

to de descripca + a) * a (ver

iones instantáneas correspondientes altexto).

Page 136: Teoria de lenguajes gramaticas y automatas para informatico

7.4. ANALIZADORES SINTÁCTICOS 137

Se puede demostrar que para cada autómata de pila con preanálisisexiste un autómata de pila determinista sin preanálisis. La demostración,que se deja como ejercicio, se basa en construir un nuevo autómata dondeel símbolo de preanálisis forma parte del estado, y donde se establece unesquema diferente de lectura de la cadena de entrada, lo que permite clasifi-car los lenguajes reconocidos por analizadores LL(1) (y, en general, LL(fc))como LIC deterministas.

Page 137: Teoria de lenguajes gramaticas y automatas para informatico

This page intentionally left blank

Page 138: Teoria de lenguajes gramaticas y automatas para informatico

Apéndice A

Nociones básicas de teoría

de conjuntos

Partiremos, de forma acrítica, de la idea intuitiva de conjunto comereunión de objetos o elementos, y supondremos que dado cualquier objetesiempre es posible determinar si este pertenece o no al conjunto1.

Se suele denotar con letras minúsculas a los elementos y con mayúscula;a los conjuntos. Por ejemplo, A = {a, e} denota un conjunto A formado poidos elementos o y e . Diremos que a pertenece a A y se escribe a £ A. Ereste punto, aceptaremos que los conjuntos pueden quedar definidos bien poiextensión (enumeración de todos sus elementos) o por comprensión (enun-ciación de una propiedad característica). A partir de aquí, utilizaremos laísiguientes definiciones y propiedades[2, 3]:

• A es parte o subconjunto de B o está incluido V x : x E A => x £ £?. La relación entre A y B se denomina relaciórde inclusión2 y diremos también que B contiene a A (B D A).

• A es parte propia o subconjunto propio de B, o está propiamenhincluido en

• Se llama conjunto vacío (0) al conjunto que no contiene ningún elementó y que satisface

1Est& restricción prohibe definiciones como la célebre paradoja del barbero d<B.Russellfl], y en general, la existencia de conjuntos que se contengan a sí mismoscomo el conjunto de todos los conjuntos.

2La inclusión de conjuntos es un ejemplo de relación de orden. Véase la págim140.

139

a es identico a•

Page 139: Teoria de lenguajes gramaticas y automatas para informatico

140 A. NOCIONES BÁSICAS DE TEORÍA DE CONJUNTOS

• El conjunto de las partes de un conjunto (P(U)) es el conjunto for-mado por todos los subconjuntos de U:

• El conjunto unión de A y B:

• El conjunto intersección de A y B:

• El conjunto complementario de A respecto a U:

• A + B = A\JB

• A — B = Aí~] B (diferencia)

• A® B = (A — B) + (B — A) (diferencia simétrica)

• A x B — { ( x , y ) : x G A /\y 6 B} (producto cartesiano)

Ejercicios

A.l Comprueba que la complementación satisface:

• Á = A

. 0 = u, Ü = 0

• AÜB = ÁHB, AñB = Á(JB (leyes de De Morgan)

• A C B <=^ B c Á

• A(JÁ = U, A n l = 0

A.2 Comprueba que el producto cartesiano de conjuntos satisface:

• (C C A) A (D C B} => (C x D) C (A x B)

• Ax(B(JC) = (AxB)(j(AxC)

• Ax(BHC) = (AxB)r](AxC)

A.3 Comprueba que A-B 4=> A 0 B = 0

A.l Correspondencias y relaciones

Dados dos conjuntos A y B, se llama correspondencia f de A en B(/ : A —> B) a un subconjunto dado F del producto cartesiano A x 5, yse denota:

Al conjunto A se le llama conjunto inicial (A = in(/)) y al 5 conjunto final(B — fm(/)). También se definen:

• or(/) = {x € A : ( x , y ) £ F para algún y e B} (conjunto original).

Page 140: Teoria de lenguajes gramaticas y automatas para informatico

A.1. CORRESPONDENCIAS Y RELACIONES 141

• im(/) = {y G B : (x,y) e F para algún x 6 A} - \ J x < E A f ( x ) (con-junto imagen).

Una correspondencia se denomina:

• unívoca •£=$> Vx £ A : /(x) contiene como máximo un elemento

• aplicación <í=> Vx 6 A : f ( x ) contiene un único elemento3. Si y es elúnico elemento de /(x), escribiremos y — /(x).

A su vez, una aplicación puede calificarse como:

• inyectiva<

• suprayecüva^=^ irn(f) = f i n ( f )

• biyección <=$> / es aplicación inyectiva y suprayectiva. Una biyecciónestablece un "emparejamiento" de cada elemento del conjunto inicialcon uno del final y viceversa, y se denota / : A 4—>• B

Una operación interna en A es una aplicación c : A x A —> A, deforma que z — c(x,y) € A. Si c es asociativa se dice que A es unsemigrupo. Si además existe un elemento neutro, entonces A es unmonoide.

• homomorfismo <$=$• / : A —>• B es una aplicación entre semigruposo monoides y conserva las operaciones internas c, c' definidas en losconjuntos inicial y final respectivamente

Una correspondencia de A en A recibe el nombre de relación:

Una relación es de equivalencia si es:

• reflexiva:

• simétrica:

• transitiva:

Una relación de orden tiene las propiedades:

• reflexiva

• antisimétrica:

• transitiva3Alternativamente, / es unívoca y or(/) =ñn(/)

Page 141: Teoria de lenguajes gramaticas y automatas para informatico

142 A. NOCIONES BÁSICAS DE TEORÍA DE CONJUNTOS

Dada una relación R de equivalencia en A, se definen sus clases deequivalencia como:

Una partición de A es una colección de subconjuntos {Ci} tales que:

Dada R de orden en A, se denota:

Se dice que C C A es convexoSe define ¿7, clausura o cierre convexo de (7, como el menor conjunto

convexo que contiene a (7. El concepto de clausura es un concepto bastantegeneral, y siempre se entiende como una extensión del conjunto de partida,hasta que este adquiere una cierta propiedad. Aquí hemos hablado de laclausura convexa (menor conjunto convexo), pero de forma análoga se de-finen la clausura reflexiva-transitiva de una relación (menor relación R queincluye a Ry que poesee dichas propiedades) o la clausura de Kleene de unlenguaje (menor lenguaje en el que la concatenación de dos cadenas es otracadena del lenguaje), etc.

Ejercicios

A.4 Prueba que el elemento neutro de un monoide es único.

A.5 Demuestra que dado un homomorfismo entre monoides f : A —> Bentonces /(A) = e, siendo X y e los elementos neutros de A y B respectiva-mente.

A.6 Comprueba que la definición de una clase de equivalencia C(x) nodepende del elemento representante x elegido.

A.7 Demuestra que una relación de equivalencia en A define una particiónen A y viceversa.

A.8 Comprueba que la inclusión de conjuntos es una relación de orden.

A.9 Demuestra las propiedades de la clausura o cierre convexo:

Page 142: Teoria de lenguajes gramaticas y automatas para informatico

A.2. CARDINAL. CONJUNTOS INFINITOS 143

• C convexo

• A,B convexos => A n B convexo

La noción intuitiva de cardinal de un conjunto (el número de elementosque contiene) no está exenta de problemas, sobre todo cuando se considerala existencia de conjuntos infinitos. Por otro lado, en la moderna teoríamatemática este concepto resulta clave para poder introducir de forma ri-gurosa los números naturales. Por ello se debe definir de forma precisa loque se entiende por cardinal o potencia de un conjunto.

Diremos que dos conjuntos A y B son equipolentes (A ~ B) si existeuna biyección entre ellos / : A i—>• B. Esta definición genera una particiónentre los conjuntos, ya que la relación que se establece es de equivalencia.

Si A ~ B diremos que A y B tienen el mismo cardinal, y escribiremos:card (A) = card(.B).

Interesa definir una relación de orden entre los cardinales. Ello puedehacerse de la siguiente forma:

card (A) < card (B) <^> A ~ C C B

Las propiedades reflexiva y transitiva de esta relación son inmediatas.La propiedad antisimétrica requiere una demostración más elaborada (véase[4])-

Los números naturales se introducen como símbolos para denotar car-dinales, y se definen de forma constructiva, a partir de la siguiente sucesiónde conjuntos:

C0 = 0

C, = {0}

C2 = {0,{0}}

c, = {0,{0},{0,W}}

A.2s

Page 143: Teoria de lenguajes gramaticas y automatas para informatico

Cada conjunto se define como reunión de todos los objetos (en este casoconjuntos) previamente definidos. De esta forma, los números naturales noson más que etiquetas para denotar los cardinales de los conjuntos de lasucesión anterior. Por ejemplo, 3 = cardas). Si un conjunto A es equi-potente con alguno de los Cn anteriores, entonces su cardinal es el númeronatural n G N y se dice que A es finito.

Un conjunto infinito no puede ponerse en biyección con ninguno de losCn anteriormente definidos, y posee además la sorprendente propiedad (quesuele tomarse como definición) de que puede ponerse en biyección con unaparte propia de sí mismo. Por ejemplo:

f ( n ) — 2n, / : N <—> {n 6 N, n es par}

Otra propiedad importante de los conjuntos infinitos es que no todostienen el mismo cardinal, sino que existe una sucesión infinita de potenciasposibles diferentes. Esto es consecuencia del teorema de Cantor , que afirmaque el cardinal del conjunto de las partes P(A) es estrictamente mayor queel cardinal del conjunto de partida A. Por ello, siempre es posible construirconjuntos de mayor cardinalidad que cualquiera dada:

card(A) < card(P(A)) < card(P(P(4))) < . . .

El menor cardinal infinito es el del conjunto N de los números naturales. Atodos los conjuntos equipotentes a N se les denomina infinitos numerables(ya que sus elementos se pueden contar). Por tanto, A se dice numerable siA ~ N. El siguiente cardinal conocido es el de M, conjunto de los númerosreales. Si A ~ IR se dice que A tiene la potencia del continuo (por ser losnúmeros reales representabas como puntos sobre una recta, la recta real).

La cuestión de si existe algún conjunto cuyo cardinal c sea tal quecard (N) < c < card (M) es un clásico ejemplo de teorema indecidible dentrode la aritmética. La existencia de proposiciones indecidibles en cualquiersistema axiomático que incluya la aritmética fue demostrada por Gódel en1931 y constituye el célebre teorema de incompletitud de Godel[5]. En estecaso, es posible tomar como axioma una u otra de las opciones (es decir, queexiste c o que no existe), lo que conduce a las llamadas teorías cantorianaso a las no-cantorianas respectivamente (algo semejante a lo que ocurrió conel desarrollo de las geometrías no-euclidianas, que rechazaban el llamadoquinto postulado de Euclides).

EjerciciosDemuestra las siguientes propiedades:

A. 10 La relación de equipotencia es una relación de equivalencia.

Page 144: Teoria de lenguajes gramaticas y automatas para informatico

A.2. CARDINAL. CONJUNTOS INFINITOS 145

A. 11 A, B numerables =$- A U B es numerable.

A.12 A, B numerables => A x B es numerable.

A. 13 El conjunto de los números racionales Q es numerable.

A.14 card (A} = n e N => card (P(A)) = 2n.

A.15 card (E) = card(P(N)), y por tanto card (R) > card(N).

A.16 card (C) = card (R) , siendo C el conjunto de los números complejos.

A.2.1 Demostración del teorema de CantorEl teorema afirma que card (A) < card(P(A)), por lo que hemos de

demostrar:- card (A) < card (P(A))~ card (A) ¿ card(P(A))Lo primero es trivial al tomar /(a) = {a}, biyección de A con un subcon-

junto de P(A). La demostración de la segunda proposición se realiza por re-ducción al absurdo. Supongamos que existe una biyección / : A 4—> P(A).Se define entonces el conjunto siguiente:

Como / es una biyección, cada elemento de P(A) tiene su original enA, en particular

Es fácil comprobar que la existencia de este elemento d es contradictoriaen sí misma, ya que

Por tanto la existencia de tal biyección debe ser rechazada.

A.2.2 Aplicación a la informáticaCualquier texto, mensaje o código de un lenguaje habitual se construye

a partir de un número finito de unidades elementales. Por ejemplo, lasfrases del castellano son un subconjunto de todas las cadenas que se puedenformar a partir del alfabeto habitual, las letras especiales (ñ, á, ...), los signosde puntuación y el espacio en blanco. En los lenguajes de programación,se utilizan 62 caracteres alfanuméricos más algunos símbolos específicos.Resulta intuitivo que, a partir de un número finito de elementos, es posibleconstruir un número infinito de estructuras, frases o programas. En efecto,si el número fuese finito existiría una frase que sería la más larga de todas

Page 145: Teoria de lenguajes gramaticas y automatas para informatico

146 A. NOCIONES BÁSICAS DE TEORÍA DE CONJUNTOS

(o, al menos tal que no existen frases más largas). Como basta añadir unapalabra a dicha frase para obtener una nueva que no está entre el conjuntofinito considerado, es imposible que el número de combinaciones sea finito.El razonamiento anterior, es un otro ejemplo de prueba por "reducción alabsurdo".

Obsérvese que casi todos los lenguajes de interés contienen un númeroinfinito de elementos, por lo que la definición por extensión del lenguaje esimposible. Para este fin es preciso recurrir a sistemas como las gramáticas.

Los programas se pueden ordenar efectivamente según su longitud ydentro de cada longitud por orden alfabético. Debe observarse que no essuficiente con un mero orden alfabético. Ojo: no es suficiente con ordenar,hay que dar forma de numeración.

De nuevo una demostración por reducción al absurdo: Los programaspueden ser ordenados de forma que a cada número natural le correspondaun programa. Es decir, podemos hacer una lista de todos los programasimplementables en nuestro lenguaje de programación: po,pi,p2,.... Nosrestringimos a los programas cuya entrada es un número natural y su salidatambién. Cada programa está caracterizado por la sucesión de salidas paracada entrada. Así, para un valor de entrada O, el programa producirá unasalida j90(0) y, en general, PÍ(J). Es posible, por tanto, construir una tabla

Si nos fijamos en la diagonal de la tabla: po(0),í>i(l),p2(2),... ésta formauna sucesión de naturales, que podemos modificar construyendo una nuevaque no coincide en ninguno de sus valores. Basta, por ejemplo, con añadirun uno a todos los valores: p0(0) + l,pi(l) + 1,P2(2) + 1,.... Es evidenteque la sucesión anterior no es la característica de ninguno de los programasP o , P i i P 2 , - - - , ya que la salida del programa PÍ no es la correcta cuando laentrada es i. Conclusión: no hay ningún programa en nuestro lenguaje deprogramación que produzca la salida buscada. La conclusión inmeditata esque para cualquier lenguaje de programación, existen tareas cuya resoluciónno puede ser implementada en ese lenguaje.

Si bien cabe argumentar que no hemos probado que las limitacionessiempre sean las mismas, dado cualquier conjunto finito de lenguajes deprogramación, siempre quedarán tareas fuera del alcance de todos ellos (elrazonamiento anterior sigue siendo válido aunque PQ,PI,... puedan estarescritos en distintos lenguajes de programación.

Page 146: Teoria de lenguajes gramaticas y automatas para informatico

Bibliografía

[1] M.Gardner, Paradojas. Labor, Barcelona (1981)

[2] J. de Burgos,Curso de álgebra y geometría. Alhambra, Madrid (1980)

[3] J.J.Climent, V.Migallón, J.Penadés,Matemática discreta. Teoría deconjuntos y análisis combinatorio. Babel Editores, Alacant (1991)

[4] Y.Ershov, Lógica Matemática. MIR, Moscú (1990)

[5] Varios autores, ¿Qué es la lógica matemática? Tecnos, Madrid (1983)

[6] N.Chomsky, El Lenguaje y el Entendimiento. Seix Barral, Barcelona(1971).

[7] N.Chomsky, Reglas y Representaciones. FCE, México.

[8] A.V. Aho y J.D. Ullman The Theory of Parsing, Translation, andCompiling - Volume 1: Parsing. Prentice-Hall, Englewood Cliffs, NJ,EE.UU. (1972).

[9] J.E.Hopcroft and J.D.Ullman,Introduction to Autómata Theory, Lan-guages and Computation. Addison-Wesley (1979)

[10] J.G. Brookshear, Teoría de la Computación. Addison-Wesley Iberoa-mericana, Delaware (1993).

[11] Natarajan, B.K. Machine learning: a theoretical approach. MorganKaufmann 1991, San Mateo CA(USA).

[12] H.Kermes, Enumerability, Decidability, Compatability, Springer-Verlag, Berlín (Alemania) (1969).

[13] J-L.A. Van de Snepscheut, What computing is all about. Springer-Verlag, New York, EUA (1993).

[14] M. Alfonseca, J. Sancho, M. Martínez Orga, Teoría de lenguajes,gramáticas y autómatas. Universidad y Cultura, Madrid (1990).

147