Elena ena G audios au dioso o Vázquez Tomás García Saiz
INTRODUCCION A LA TEORÍA DE AUTÓMATAS, G R A M Á T IC A S T Y LENGUAJES
1
ELENA GAUDIOSO VÁZQUEZ TOMÁS GARCIA SAIZ
INTRODUCCIÓN A LA TEORÍA TEORÍA DE AUTÓMATA AUTÓMATAS, S, GRAMÁTICAS GRAM ÁTICAS Y LENGUAJES
Editorial Universitaria Ramón Ateces
UnED
Las imágenes mostradas han sido tomadas y tratadas por los autores del presente libro. El icono de las cajas de trabajo, ha sido diseñada por Madebyoliver de Flaticon www.flaticon.com Reservados todos los derechos. Ni la totalidad ni parte de ese libro puede pued e reproducirse reproduc irse o transmitirse transmitir se por ningún procedimiento proce dimiento electrónico o mecánico, incluyendo fotocopia, grabación magnética o cualquier almacenamiento de información y sistema de recuperación, sin permiso escrito de Editorial Centro de Estudios Ramón Areces, S. A. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.conlicencia. www.conlicencia. com) si necesita fotocopiar o escanear algún fragmento de esta obra.
© EDITORIAL CENTRO DE ESTUDIOS RAMÓN ARECES, S.A. Tomás Bretón, 21 - 28045 Madrid Teléfono: 915.061.190 Fax: Fax: 914.681.952 91 4.681.952 Correo:
[email protected] Web: www.cerasa.es ISBN-13: 978-84-9961-285-0 Depósito legal: M-23463-2017 Impreso por: Campillo Nevado, S.A. Antonio González Porras, 35-37 28019 MADRID Spain Impreso en España i Printe d in Spain
Indice
1. Conceptos Concep tos previos previo s
1
1.1. .1. Concep Conceptos tos fundamen fundamentales tales de la teoría teoría de c o n ju n to s .................................... 1.2. .2. Conceptos Conceptos fundamentales fundamentales de la teoría teoría de a u tó m a ta s.................................... 1.3. .3. E je r c ic io s ............ .................. ........... ........... ........... ........... ........... ........... ........... ........... ............ ............ ............ ........... ........... ........... ........... ........
1 4 9
2. Autómatas finitos 2.1. Autómatas f i n i t o s ................................................................... ........................................................................................... ........................ 2.2. 2.2. Elementos Elementos de un autómata f i n i t o ........... ................. ............ ........... ........... ........... ........... ........... ........... ........... ........... ......
11 11 12
2.3. 2.3. Definició Definición n formal de autómata autómata finito finito d e term te rm in ista is ta ....................................... 2.4. 2.4. Representaci Representaciones ones de los autómatas autómatas finito finitoss deter de term m inist in istas as .............................. 2.4.1. 2.4.1. Diagrama Diagram a de trans tra nsic icio ione nes................................................................... s................................................................... 2.4.2. 2.4.2. Tabla de tra tr a n sic si c io n e s......................................................................... 2.5. 2.5. El lenguaje lenguaje de un autómata finito finito de term te rm inist in istaa............................................. 2.6. 2.6. Ejemplos Ejemplos de lenguajes lenguajes r e g u la r e s ........... ................ ........... ........... ........... ............ ........... ........... ........... ........... ........... .......
14 16 16 17 18 19
2.7. Autómatas finitos finitos no d eter et erm m inis in ista tas................................................................ s................................................................ 2.8. Equivalencia Equival encia entre autómatas autómata s finitos determinista determ inistassy no deter terministas . . . . 2.9. 2.9. E je rc ic io s ........... ................. ........... ........... ............ ........... ........... ........... ........... ........... ........... ........... ........... ............ ........... ........... ........... ........ ...
21 23 26
3. Gramáticas Gram áticas regulares 3.1. Definición de g ram ra m átic át ica............................................................... a...............................................................
3.2. 3.2. 3.3. 3.4. 3.4. 3.5. 3.5.
Tipos Tipos de gramáticas gramáticas:: gramáticas gramáticas re g u la re s ................................................... Ejemplos de gramáticas regulares ................................................ Gramáticas Gramáticas regulares regulares y autómatas autómatas fin fi n ito it o s ...................................................... E je r c ic io s ........... ................. ........... ........... ........... ........... ........... ........... ........... ........... ............ ........... ........... ........... ........... ........... ........... ......... ... VII
31 31
34 36 38 42
VIII
I n d i c e
4. Expresiones regulares 4.1. Introducción.................................................................................................... 4.2. Definición de las expresiones regulares.......................................................... 4.3. Lenguaje representado por una expresión r e g u la r ........................................ 4.4. Autómatas finitos y expresiones re g u la re s.................................................... 4.5. Propiedades de las operaciones de las expresiones regu lares........................ 4.6. E je rcic io s.......................................................................................................
45 45 46 47 50 56 57
5. Propiedades de los lenguajes regulares y lenguajes no regulares 5.1. Propiedades de los lenguajes re gula res.......................................................... 5.1.1. Unión de lenguajes regulares............................................................. 5.1.2. Complementario de un lenguaje re g u la r .......................................... 5.1.3. Intersección de dos lenguajes re g u la re s .......................................... 5.1.4. Concatenación de dos lenguajes regula re s........................................ 5.1.5. Estrella de Kleene de un lenguaje re g u la r ....................................... 5.2. Introducción a los lenguajes no regulares....................................................... 5.3. Introducción a la jerarquía de C h o m sk y ....................................................... 5.4. E je rc ic io s.......................................................................................................
59 59 60 63 64 67 70 72 76 76
6. Lenguajes y gramáticas independientes del contexto 6.1. Definición de las gramáticas independientes del c o n te x to ........................... 6.2. Derivaciones en las gramáticas independientes del conte xto ........................ 6.3. Lenguaje de una gramática independiente del contexto .............................. 6.4. Introducción a los árboles de deri vació n....................................................... 6.5. Forma Normal de Chomsky............................................................................ 6.6. Transformación a Forma Normal de Chom sk y.............................................. 6.7. E je rc ic io s.......................................................................................................
81 81 85 87 88 90 92 99
7. Autómatas a pila 7.1. Introducción a los autómatas a p i l a ......................................................... 7.2. Definición formal de un autómata a p i l a ....................................................... 7.3. Lenguajes aceptados por los autómatas a p i l a ............................................. 7.4. Autómatas a pila y gramáticas independientes del c o n te x to ........................ 7.5. Autómatas a pila determ in istas...................................................................... 7.6. E je rc ic io s.......................................................................................................
103 103 105 110 114 117 120
8. Propiedades de los lenguajes independientes del contexto 8.1. El lema de bombeo para lenguajes independientes del conte xto .................. 8.2. Los lenguajes independientes del contexto en la jerarquía de Chomsky . . .
123 123 125
INDICE
8.3. Propiedades de los lenguajes independientes del conte xto ........................... 8.4. E jercic io s.......................................................................................................
IX
127 129
9. Introducción a las máquinas de Hiring 9.1. Límites de la co m pu ta ció n ........................................................................... 9.2. Definición de una máquina de Turing............................................................ 9.3. Descripciones in stantá neas............................................................................ 9.4. Diagramas de transiciones para las máquinas de T u rin g .............................. 9.5. El lenguaje de una máquina de Turing: lenguajes recursivamente enumerables 9.6. Extensiones de la máquina de Turing b á s ic a ................................................ 9.7. Lenguajes recursivamente enumerables en la jerarquía de Chomsky . . . . 9.8. E je rc ic io s.......................................................................................................
133 133 134 137 139 140 146 147 147
10. Ejercicios de autoevaluación
149
11. Solución a los ejercicios 11.1. Capítulo 1 ....................................................................................................... 11.2. Capítulo 2 ....................................................................................................... 11.3. Capítulo 3 ....................................................................................................... 11.4. Capítulo 4 ....................................................................................................... 11.5. Capítulo 5 ....................................................................................................... 11.6. Capítulo 6 ....................................................................................................... 11.7. Capítulo 7 ....................................................................................................... 11.8. Capítulo 8 ....................................................................................................... 11.9. Capítulo 9 .......................................................................................................
181 181 182 185 187 190 198 205 209 215
Prólogo
El objetivo del presente texto es proporcionar una introducción a la materia de las máquinas de estado o autómatas y los diferentes tipos de lenguajes formales que reconocen. La teoría de autómatas es un área fundamental en el campo de las Ciencias de la Computación. Se ocupa del estudio de las máquinas de estados finitos y permite establecer el límite computacional de los ordenadores esto es, qué es capaz de computar una máquina actual y con qué complejidad. Las máquinas vistas en este texto, sirven de base para la construcción de compiladores, en concreto de los módulos que se encargan de los análisis léxico y sintáctico. Esta materia se proporciona en la asignatura de primero de grado de Ingeniería Informática de la Universidad Nacional de Educación a Distancia. Es por ello, que este es un libro especialmente diseñado para la enseñanza a distancia. Por tanto, para cada capítulo, se incluyen recomendaciones al estudio y una serie de pequeños ejercicios a realizar para afianzar conocimientos. Con el objetivo de animar al lector a realizar estos ejercicios, la solución de los mismos se incluye al final del texto. Para poder dar una visión completa del temario adaptándolo a un alumno de primero de grado, se han evitado, en la manera de lo posible, las demostraciones formales. Aquel lector interesado en profundizar los contenidos presentados en el presente texto, puede utilizar las siguientes dos referencias que sirven como material complementario: [Hopcroft et al., 2008] y [Brookshear, 1993]. Así mismo, los capítulos se han organizado con la idea de seguir una planificación concreta durante un cuatrimestre. Así, cada capítulo se correspondería con una o a lo sumo dos semanas de estudio. Los autores
XI
Capítulo 1 _____
Conceptos previos A lo largo del texto, se verán los lenguajes como conjuntos de cadenas que acepta una determinada máquina teórica. Por ello, se hará uso de conceptos básicos de teoría de conjuntos. Para ayudar al lector a recordar dichos conceptos, se ha introducido en este capítulo alguno de los conceptos más relevantes que se utilizarán a lo largo del texto. Así mismo, y a modo de glosario, se incluye una presentación de los conceptos fundamentales de la materia de autómatas, gramáticas y lenguajes.
1.1.
Conceptos fundamentales de la teoría de conjuntos
■ Conjunto
Un conjunto es una colección de objetos que se denominan elementos o miembros. Normalmente, los elementos de un conjunto se representan separados por comas y encerrados entre corchetes ({ y }). Se dice que un conjunto es finito cuando contiene un número finito de elementos. Algunos ejemplos de conjuntos finitos son: • El conjunto de letras vocales del alfabeto: V = {n, e, i, o. • El conjunto de días de la semana: S = viernes}.
{lunes, martes, miércoles, jueves,
• El conjunto formado por los números menores de 100: N = { 1 ,2 ,3 ,..., 97,98,99,100}. Se dice que un conjunto es infinito cuando contiene un número infinito de elementos. Algunos ejemplos de conjuntos infinitos son: 1
2
Co n c e p t o s
fundamentales
de
la
teoría
de
conjuntos
• El conjunto de números naturales: ÍV = {1,2 ,3 ,...}. • El conjunto de números primos:
P =
{1,3,5,7
• El conjunto formado por los números mayores de 100: M =
{101,102,103, 104,...}.
La cardinalidad de un conjunto determina el tamaño de dicho conjunto, esto es, el número de elementos que contiene. Se representa mediante dos líneas verticales, así, si se considera el conjunto finito V = {a,e,i,o,u}, entonces su cardinalidad se representa de la siguiente manera: |V| = 5. ■ Conjunto vacío
El conjunto vacío es aquel que no contiene ningún elemento. El conjunto vacío se representa mediante el siguiente símbolo: 0. ■ Pertenencia
Se dice que un elemento pertenece a un conjunto cuando cumple las condiciones que lo definen. El operador de pertenencia se representa mediante el símbolo € y en el ejemplo del conjunto V = {a, e, i,o, u}, se cumple que a ■ Subconjunto
Se dice que A es un subconjunto áe, B (A C. B ), si todos los elementos A pertenecen también al conjunto B. Esto es, para todo elemento se cumple que tu E B. El conjunto A es un subconjunto propio de Bis C no pertenecen a A. En este caso se representa la relación entre los dos conjuntos de la siguiente forma: Ac B .Por ejemplo, dados los conjuntos: A = {a,b ,c ,d }
B ={c, d}
C = {c, }d D= {e,
B es un subconjunto propio de
c A. A: B
■ Igualdad y desigualdad entre conjuntos
Dos conjuntos A y B son iguales (
A = B) si
se cumple q
Dos conjuntos A y B ,son diferentes ( pertenecen a B y viceversa. Esto es, existen tu E A tales que w ^ B y existen z 6 tales que z £ A. Así, siguiendo el ejemplo anterior, se cumple que:
=
y
CONCEPTOS
3
PREVIOS
■ Conjunto potencia
Dado un conjunto A, el conjunto potencia P{A ) es la colección de todos los subconjuntos que se pueden formar con los elementos de A. Por tanto, los elementos del conjunto potencia son a su vez conjuntos. Por ejemplo, considerando el conjunto A = {a, 6, c) entonces el conjunto potencia de A es: P{A) = {{a}, {6}, {c}, {a, 6}, {a, c}, {£>, c), {a, b, c}}. Dado un conjunto A, la cardinalidad de su conjunto potencia se define: P(A ) = donde |^4| es la cardinalidad del conjunto A. El conjunto potencia de un conjunto infinito es un conjunto incontable. ■ Operaciones entre conjuntos
Las principales operaciones entre conjuntos que se van a considerar son: -
Unión
La unión de dos conjuntos A y B, representada por todos los elementos que se encuentran en o en
U
es la colección de
A U B = { x : x E A o x e B} Por ejemplo, dados los conjuntos: A = {a,b ,c ,d } B = {c 1d} entonces:
C = { D = {e
A U B = {a,b, c,d} B U C = {c ,d } = B = C C'J D — {c,d,e,/} -
Intersección
La intersección de dos conjuntos A y B, representada por n es la colección de objetos que son elementos tanto de A como de B. Por consiguiente: AC\ B = {x \ x E A y x E B }
A = {a,
Por ejemplo, dados los conjuntos í 4 í1 B
=
{ íi, c }
- Diferencia
La diferencia entre dos conjuntos A y sBe repres el conjunto que resulta de eliminar del conjunto A los elementos del conjunto B. Por ejemplo, dados los conjuntos A= {a, c {d, e}, entonces:
Co n c e p t o s
4
fundamentales
de
la
teoría
de
autómatas
A - B = {6} C - D = {a,b} El conjunto
A —B se denomina conjunto complemento de B con respect
En ocasiones, se da por sentado que los elementos de todos los conjuntos considerados, pertenecen a un conjunto universal de mayor tamaño. En estos casos, el complemento de un conjunto X con relación a este conjunto universal, recibe el nombre de complemento de X . Por ejemplo, si se considera el conjunto universal como el conjunto de números naturales, entonces el complemento del conjunto de números naturales pares, será el conjunto formado por todos los números naturales impares. — Producto cartesiano
El producto cartesiano de dos conjuntos A y B , representado por conjunto de todos los pares ordenados de la forma (a, b), donde e A y Por lo general, A xB BxA. Por ejemplo, dados los conjuntos: A = {a,b ,c }
es el
B ={ 1 ,2 }
entonces: A x B = {(a. 1), (a ,2), (fe, 1), (6,2), (c, 1), (c, 2)} Es posible generalizar el concepto del producto de conjuntos para obtener el producto de más de dos conjuntos. Así, dados los conjuntos: A = {a, &}, S = { l ,2} y C = y}, entonces: A x B x C ={(a, 1, x), (fe, 2, x), (fe, 2, y)}
1.2.
(a, 1, y), (a, 2, x), (a, 2,
Conceptos fundamentales de la teoría de autómatas
A lo largo de este texto e independientemente del tipo de máquina que se considere, se van a utilizar una serie de conceptos comunes a todas las máquinas. Con el fin de servir de guía de consulta, se recogen en esta sección un listado de términos comunes y su definición.
Alfabeto Un alfabeto es un conjunto de símbolos finito no vacío. Normalmente se utiliza el símbolo £ para denotar un alfabeto. A continuación se muestran algunos ejemplos: ■ £ = {a, fe} un alfabeto compuesto por dos símbolos.
Co n c e p t o s
previos
5
■ £ = {0, 1, 2} un alfabeto compuesto por tres símbolos. ■ £ = {a, b, c, d} un alfabeto compuesto por cuatro símbolos. Cadena de caracteres
Una cadena de caracteres es una secuencia finita de símbolos de un alfabeto. Por ejemplo, aba es una cadena del alfabeto £ = {«., />, c}. Una cadena especial a considerar es la cadena vacía. La cadena vacía es aquella cadena que no contiene ningún símbolo. Esta cadena se representa con el símbolo e o con el símbolo Ay se puede definir con cualquier alfabeto. La longitud de una cadena es igual al número de símbolos que contiene la cadena. Así, la cadena 001 tiene una longitud igual a 3. Para indicar la longitud de una cadena w se utiliza la notación |
La concatenación de cadenas es una operación que permite construir nuevas cadenas a partir de otras más simples. Así, dado el alfabeto £ = {a, /;}, la concatenación de los símbolos ay bd a como resultado la cadena ab. De igual forma, la concatenación de las cadenas abb y bb da como resultado la cadena abbbb. Potencias de un alfabeto
Intuitivamente, esta operación es similar a la potencia de números. Así, por ejemplo, para calcular la potencia 2 del número 2 hay que multiplicar dos veces el número 2, mientras que para calcular la potencia 3 del número 2 hay que multiplicar 3 veces el número 2. Cuando se trata de símbolos, la operación similar a la multiplicación es la concatenación. De igual manera, se puede considerar la potencia de un alfabeto. Así, dado un alfabeto £, entonces se define £ fc como el conjunto de las cadenas de longitud k, tales que cada uno de los símbolos de las cadenas pertenece a £. Algunas definiciones importantes: ■ £* es el conjunto de todas las cadenas que se pueden formar con los símbolos de un alfabeto. ■ £ + es el conjunto de todas las cadenas que se pueden formar con los símbolos de un alfabeto excepto la cadena vacía.
Co n c e p t o s
6
fundamentales
de
la
teoría
de
autómatas
■ La cadena vacía e es el elemento neutro de la concatenación. Esto es, para cualquier alfabeto E, la cadena vacía concatenada con cualquier cadena perteneciente a E* da como resultado, esa misma cadena.
Lenguaje Dado un alfabeto E, un lenguaje L, es un subconjunto de cadenas que se pueden formar con los símbolos del alfabeto. Por tanto: ■ E* es un lenguaje, y está compuesto por todas las cadenas que se forman con los símbolos del alfabeto. ■ Cualquier lenguaje L es un subconjunto de E*, esto es, L C E*. ■ Se dice que un lenguaje es finito, cuando contiene un número finito de cadenas. Los lenguajes L = {a, aa, aaa, aaaa} y M = { , ab finitos. ■ Se dice que un lenguaje es infinito, cuando contiene un número infinito de cadenas. Por ejemplo, el lenguaje formado por todas las cadenas con un número par de símbolos, es un lenguaje infinito. ■ El lenguaje vacío es aquel que no contiene ninguna cadena. Se representa mediante el símbolo 0. El lenguaje vacío es un lenguaje que se puede definir para cualquier alfabeto. ■ El lenguaje formado únicamente por la cadena vacía (L = {e}). Es un lenguaje que se puede definir para cualquier alfabeto. No obstante, es importante insistir que 0 {e} ya que el primero no contiene ninguna cadena y el segundo contiene una única cadena que es la cadena vacía. ■ Un lenguaje finito se puede describir enumerando cada una de sus cadenas. No obstante, esto no es posible cuando el lenguaje es infinito. En este caso, es útil utilizar la definición de lenguajes mediante descripciones de conjuntos. Así por ejemplo, dado el alfabeto E = {a, 6}, se pueden definir los siguientes lenguajes: — El lenguaje formado por todas las cadenas que tienen el mismo número de a ’s y 6*s: L = (y/)| w contiene el mismo número de a ’s y
}.
— El lenguaje formado por todas las cadenas que empiezan por el símbolo a:
CONCEPTOS
7
PREVIOS
L —
{a: x G {a, 6}*}
donde la expresión x G {a, 6}* representa que la subcadena x puede contener cualquier combinación de símbolos
— El lenguaje formado por todas las cadenas que terminan por el símbolo b: L = {
x x: G {a, 6}*}
donde, de nuevo, la expresión x G {a, b}* representa que la subcadena x puede contener cualquier combinación de símbolos a y b.
Operaciones entre lenguajes Considerando los lenguajes como conjunto de cadenas, es claro que se pueden definir para los lenguajes las siguientes operaciones: — Unión: La unión de dos lenguajes L y M , designada como L U M, es el conjunto de cadenas que pertenecen a ,a M o a ambos. L — Concatenación: La concatenación de los lenguajes es el conjunto de cadenas que se puede formar tomando cualquier cadena de y concatenándola con cualquier cadena de M. Esta operación se puede denotar con un símbolo (L • M ) o simplemente sin operador (LM).
— Complementario: El complementario de un lenguaje L, se representa de la siguiente manera: L, y es el conjunto de cadenas que se pueden formar con el alfabeto E, y que no están contenidas en L. Por tanto, L = 11* — L.
— Clausura de Kleene o clausura: La clausura de un lenguaje, representa el conjunto de cadenas que se pueden formar concatenando cualquier número de veces las cadenas del lenguaje. Para ver un ejemplo sencillo de cómo se realiza la clausura de Kleene de un lenguaje, se considera el lenguaje formado por una única cadena L = {a}. En este caso, la clausura de Kleene contendría las cadenas que se forman al concatenar cero o más veces el símbolo a. Así, L* = {e, a, aa, aaa, aaaa, aaaaa....}. Como caso más general, sea ahora el lenguaje L = {0,1,01,10}, entonces: — L° es el resultado de concatenar cero veces las cadenas de un lenguaje únicamente da como resultado la cadena vacía. Así, L° = {e}. — L 1 es el resultado de concatenar una vez las cadenas del lenguaje, por tanto, el resultado son las mismas cadenas del lenguaje original. Así, L 1 = L = {0, 1,01, 10}.
Co n c e p t o s
8
—
fundamentales
de
la
teoría
de
autómatas
L2es el resultado de concatenar dos veces las cadenas del lenguaje. En
la siguiente tabla se muestra cómo se obtiene cada una de las cadenas del L2.Es importante recordar que la concatenación no es una ope lenguaje conmutativa. En la tabla se considera que se concatena la cadena que etiqueta la fila con la cadena que etiqueta la columna: 0 1 01 10
0 00 10 010 100
1 01 11 011 101
01 001 101 0101 1001
10 010 110 0110 1010
Así: L'2 =
(00,01,001,010,10,11,101,110,010,011,0101, 0110, 100, 101, 1001, 1010}. — L3 es el resultado de concatenar tres veces las cadenas del lenguaje. Se puede obtener concatenando las cadenas de L con las cadenas de L 2 vistas en el punto anterior. Así: L3=
(000.001,0001,0010,010,011,0101,0110,0010,0011,00101,
00110, 0100, 0101, 01001, 01010, 100, 101, 1001, 1010, 110. 111, 1101,1110,1010,1011,10101,10110,1100,1101,11001,11010, 0100,0101,01001,01010,0110,0111,01101,01110,01010,01011, 010101,010110,01100,01101,011001,011010,1000,1001,10001, 10010,1010,1011,10101,10110,10010,10011,100101,100110, 10100,10101,101001,101010}. Puesto que la clausura de Kleene es el resultado de concatenar cero o más veces las cadenas del lenguaje se puede definir L* como una unión de lenguajes de la siguiente manera: L* = L° U L1U L 2 U L3 U ...
Por tanto, si
L = ( 0, 1, 01,10} entonces L* = (e, 0, 1, 01, 10, 010,10 0,...}.
La estrella de Kleene de cualquier lenguaje cumple las siguientes dos propiedades: 1. Para cualquier lenguaje L, se cumple que e £ L*. 2. Para cualquier lenguaje L que cumpla que L ^ ( e) y L ^ 0, I* es un lenguaje que contiene un número infinito de cadenas.
CONCEPTOS
9
PREVIOS
Además: 1. Si
L =(e) entonces L* = {e}.
2. Si
L — 0 entonces L* = {e}.
Problemas En teoría de autómatas, un problema es la cuestión de decidir si una determinada cadena pertenece a un determinado lenguaje [Hopcroft et al., 2008]. Esto es, dado un alfabeto E y un lenguaje L sobre este alfabeto, entonces dada una cadena w de E*, el problema es decidir L. si w pertenece o no a
1.3.
Ejercicios
(1) Dado el alfabeto E = {0,1}, sea L el lenguaje formado por todas las cadenas con un número par de símbolos. Dar cinco ejemplos de cadenas pertenecientes al lenguaje L y cinco cadenas que no pertenezcan al lenguaje. (2) Dado el alfabeto E = {0.1}, sea L el lenguaje definido de la siguiente forma: L = {tu|n0(u>) = ni ( tu)} tiq ( x ) donde es el número de 0’s de la cadena w y ni (tu) es el número de l ’s de cadena w. Dar cinco ejemplos de cadenas que pertenezcan al lenguaje y cinco ejemplos de cadenas que no pertenezcan al lenguaje.
(3) Dado el alfabeto E = {0,1}, sea L el lenguaje definido de la siguiente forma: M = {0TiTn : n > 1} Dar cinco ejemplos de cadenas que pertenezcan al lenguaje y cinco ejemplos de cadenas que no pertenezcan al lenguaje. Indicar las diferencias con el lenguaje del ejercicio anterior y dar un ejemplo de cadena que pertenezca al lenguaje y no pertenezca a M. Indicar si es posible encontrar una cadena que esté en M y no en
L. (4) Dado un alfabeto E, indique si es verdadera o falsa la siguiente afirmación: E*.
E) =
Capítulo 2
Autómatas finitos Los autómatas finitos constituyen las máquinas teóricas más sencillas que se pueden definir. En este capítulo se comienza con el estudio de los llamados autómatas finitos deterministas y la clase de lenguajes que pueden aceptar. A continuación, se definen los autómatas finitos no deterministas y su equivalencia con los autómatas finitos deterministas.
2.1.
Autómatas finitos
Un autómata finito se basa en la definición de un número finito de estados que caracterizan un determinado sistema. Los cambios en el sistema, se representan mediante transiciones entre estados. De esta manera, un autómata finito puede representarse mediante un grafo donde los nodos son los estados el autómata y los arcos las transiciones. Un ejemplo sencillo de un autómata finito es el que modela una máquina expendedora de bebidas. La máquina debe controlar el número de monedas que se han introducido y su valor. Cuando tiene el número suficiente de monedas (en este caso 50 céntimos), la máquina expenderá la bebida pedida. Para simplificar el modelo, se supondrá que la máquina no da cambio. La máquina se encontrará inicialmente en el estado que representa que se han introducido cero monedas. Si se introduce una moneda de 10 céntimos, la máquina cambiará al estado en el que se han introducido 10 céntimos. La introducción de monedas se considera una acción externa. Estas acciones externas se representan mediante arcos que conectan los diferentes estados. Así, en la figura 2.1, se muestra el grafo de estados de una máquina expendedora. Con el objetivo de simplificar el ejemplo se ha considerado un grafo incompleto donde no están contempladas todas las posibles transiciones. Además, para facilitar la lectura del grafo, se han considerado estados diferentes aquellos que representan la misma cantidad de dinero pero obtenido con distinta secuencia de monedas (por ejemplo, el estado 30).
11
Elementos
12
de
un
autómata
finito
Figura 2.1: Máquina expendedora de bebida y el grafo incompleto de un grafo de estados que representa el dinero introducido en la máquina.
El grafo de la figura está incompleto puesto que faltan estados. Definir al menos tres estados que faltan en el grafo de la figura 2.1. ________
2.2.
Elementos de un autómata finito
Un autómata finito se define mediante los siguientes elementos: ■ Un conjunto finito de estados Q. ■ Un conjunto finito de símbolos que definen las acciones extemas. A este conjunto finito de símbolos se le denomina alfabeto (E). ■ Una función de transición T definida por T(q\,x) = donde E. La función de transición define las transiciones entre los diferentes estados del autómata dado un determinado símbolo. ■ Un estado inicial qo E Q. Es un estado particular donde comien del autómata. El estado inicial es único en el autómata.
A U T Ó M A T A S
13
FINITOS
■ Un conjunto de estados finales o de aceptación c El conjunto F está compuesto por uno o más estados en los que se considera que el autómata ha llegado a un estado que podríamos considerar exitoso. Volviendo al ejemplo anterior y teniendo en cuenta en el diagrama incompleto de la figura 2.1, el estado inicio es el estado en el que se han introducido 0 monedas, y el estado final,el estado en el que se han introducido 50 céntimos (representado en la figura con el vaso del café). Así, los elementos del autómata correspondiente con el esquema de la figura 2.1 son: ■ Conjunto de estados: Q = {0,2,5,10,20,25,30,35,45,50}. ■ Conjunto finito de símbolos que componen el alfabeto, que en el caso de este ejemplo es S = {d,c, x, v. í}, donde se considera la siguiente representación para las dife monedas que se pueden introducir en la máquina: 2; c 5; 10, v = 20, = 50. ■ Función de transición
T: ( 0, T
r(1 0 ,u ) = 30 T( 0, f) = 50
T(5, T(30, v) = 50
d) — 2 v) = 25 r( 2 5 , u) = 45
■ Un estado inicial qo = 0. ■ Un conjunto de estados finales o de aceptación: F = {50}. En este ejemplo, se ve que el estado de aceptación es aquel que indica el estado en el que se consigue la bebida. La función de transición correspondiente al diagrama de estados de la figura 2.1 está incompleto. Completar dicha definición. _________ De manera más general, los autómatas finitos procesarán una secuencia de símbolos conocida como cadena de entrada. Así, por ejemplo, en el ejemplo de la máquina de la figura 2.1, si el autómata procesa la siguiente secuencia de símbolos: xvv, se obtendría la siguiente secuencia de aplicación de la función de transición: ( 0, T = 10 => 50. Así, el esquema general del procesamiento de un autómata es el mostrado en la figura 2.2. En este esquema puede verse que un autómata finito procesa la cadena de entrada que se encuentra en una cinta de entrada que se extiende indefinidamente hacia la derecha. Dicha cinta de entrada contiene la cadena de entrada que se va a procesar. El autómata va analizando uno a uno los símbolos de entrada (estos símbolos pertenecen al llamado
De f i n i c i ó n
14
formal
de
autómata
finito
determinista
2={x,y} Entrada
• • • Cabeza de lectura apuntando al símbolo actual
Control de estados finitos Figura 2.2: Esquema general de un autómata finito.
alfabeto de la máquina E). El análisis se hace mediante el control de estados finitos definido mediante la función de transición. El símbolo actual a procesar en cada paso de ejecución del autómata viene marcado mediante un puntero usualmente conocido como cabeza de lecture del autómata. Una vez analizado el último símbolo de la cadena de entrada, se comprueba si el autómata ha llegado a un estado de aceptación (en ese caso, el autómata acepta la cadena] o no (en ese caso, el autómata rechaza la cadena). Una vez vistos los elementos que definen un autómata finito, en la siguiente secciór se mostrará la definición formal de un autómata finito. Antes de continuar conviene hacei hincapié en un hecho que hasta el momento hemos pasado por alto. Para cada estado y cada símbolo de la entrada, la función de transición devuelve un único estado. Esta circunstancia se conoce como determinismo.
2.3.
Definición formal de autómata finito determinista
Un Autómata Finito Determinista (AFD) se define formalmente mediante el uso de la siguiente quíntupla: M = donde:
,E Q, ó, g0, F) (
A U T O M A T A S
15
FINITOS
Qe s un conjunto finito de estados.
■
■ £ es un conjunto finito de símbolos de entrada denominado alfabeto. ■
5e s una función de transición. En esta función los argumentos de entrada son un estado y un símbolo de entrada del alfabeto. El argumento de salida es el estado destino de la transición.
■ f/o £ Q es un estado inicial. ■ F C
Qe s un conjunto de estados finales o de aceptación.
Esta especificación es común en la mayoría de textos y en particular en [Hopcroft et 2008, Brookshear, 1993]. En base a esta definición formal, el procesamiento de una cadena por parte de un AFD puede describirse de la siguiente forma. Considerando una cadena de entrada: aia2a3... an-ian, el AFD comienza su ejecución en el estado inicial g0. En primer lugar, el autómata ejecuta la transición S(q0,oí) = para ha en que, estando en el estado qo, se lea el símbolo cij. Posteriormente, se leerá el símbolo de la entrada a2,y utilizando la función de transición ó(qi, a2), se averiguará el estado en el q se encontrará el autómata con posterioridad de leer el símbolo 0,2. Este procedimiento se seguiría aplicando obteniendo los estados por los que iría pasando el autómata hasta llegar al símbolo final de la cadena. Por último, si an es el símbolo final de la cadena y S(q „-i, an) = qH, entonces el autómata acepta la cadena si qn € F, esto es, si qn es un estado de aceptación. Cuando el estado inicial de un autómata es de aceptación, esto es cuando q0 € F, entonces se considera que el autómata acepta la cadena vacía puesto que sin procesar ningún símbolo, el autómata llega a un estado de aceptación. E jemplo 2.1
En el caso del ejemplo de la figura 2.1, el estado de aceptación, sería aquel en el que se obtiene el vaso de café, esto es, el estado en el que se ha recogido la cantidad de 50 céntimos. En el caso concreto del ejemplo de la figura 2.1, no se han definido transiciones desde el estado final, puesto que ya se ha obtenido la cantidad necesaria para recoger la bebida. No obstante, esto no suele ser así en el los autómatas finitos deterministas. En muchos casos, el autómata puede pasar por el estado de aceptación y volver a otro estado si todavía hay símbolos de la entrada por procesar. o
R e p r e s e n t a c i o n e s
16
de
lo s
autómatas
finitos
deterministas
Para que un autómata finito, sea considerado determinista determinista se debe cumplir cump lir que, para cada estado y para cada símbolo del alfabeto haya una única transición aplicable.
No obstante, puede ocurrir también que para un determinado estado y un símbolo de entrada no haya ninguna transición definida. En este caso, se considera que el autómata devolvería un error puesto que no tiene ninguna acción definida. Para formalizar este caso, por lo general, se completa la definición del autómata, añadiendo un nuevo estado (denominado estado muerto o estado de error [Hopcroft [Hopcroft etal., 2008]). etal., 2008]). Este nuevo estado será destino de todas las transiciones no definidas en el autómata original. Cuando el autómata tiene definido el estado de error y todas las transiciones que llegan a él, se dice que el diagrama del autómata es un diagrama saturado. No es necesario saturar los diagramas para considerar un autómata determinista. Por el contrario, para considerar determinista un autómata basta con que no haya más de una transición aplicable en cada estado y por cada símbolo del alfabeto.
2.4.
Representacion Repre sentaciones es deterministas
de
los
autómatas autóm atas
finitos
Por lo general, la función de transición en la definición formal de un autómata finito se representa bien mediante diagrama de transiciones o transiciones o bien mediante tabla de transiciones.
2.4.1. Diagrama Diagram a de transiciones Un diagrama de transiciones es un grafo definido de la siguiente manera: ■ Para Para cada cada estad estado o
qE
Qxiste e un nodo.
■ Para Para cada estado estado q € Qy cada ca da símbo sím bolo lo de d e ent e ntra ra p p habrá un arco etiquetado con el símbolo a que vaya al estado q (ver figura 2.3). Si esa transición se produce para varios símbolos de la entrada, entonces un mismo arco se puede etiquetar con varios símbolos. ■ El estado inicial se marca con una flecha flecha que no tiene origen en ningún otro nodo: nodo:
Autómatas
17
finitos
Figura 2.3: Ejemplo de representación de una transición. F , se representan con un doble ■ Los estados finales finales o de aceptación que que pertenecen a F, círculo:
E jemplo 2.2 2 .2 Dado el el alfabeto alfabet o E = {a, 6}, en en la figura figura 2.4, se muestra muestr a un ejemplo ejemp lo del diagrama de transiciones de un autómata autó mata que acepta acep ta cadenas con más de un símbolo.
Figura 2.4: 2.4: Diagrama de transiciones de un autómata finito finito determinista que acepta cualquier cadena con más de un símbolo.
o
2.4.2.
Tabla Tabla de transiciones transici ones
Una tabla de transiciones es una representación tabular de las transiciones de un autómata, donde las filas de la tabla se corresponden con los estados y las columnas con los símbolos símbolo s del alfabeto. Así, la celda correspondie corresp ondiente nte a la fila del estado y la columna colum na del símbolo a, es el estado destino de la transición , a). En una tabla de transiciones, el estado inicial se marca con una flecha hacia la derecha ( —>■), mient mie ntra rass que los lo s esta es tado doss de ace a cept ptac ació ión n se marc ma rcan an con c on un aste as teris risco co (*)•
El
18
lenguaje
de
un
autómata
finito
determinista
Ejemplo 2.3 En la siguiente tabla se muestra la tabla de transiciones correspondiente al diagrama de transiciones de la figura 2.4. a
b
-* p
q
q
q*
q
q
o
2.5.
El lenguaje lengu aje de un autómata autóm ata finito determinista determ inista
Informalmente, se está asumiendo que la labor de un autómata finito determinista es procesar una cadena de entrada hasta llegar al último símbolo de la misma. El autómata aceptará la cadena si, al llegar al final de la cadena, el autómata ha llegado a un estado de aceptación. Formalmente, para representar en una única función todas las transiciones del autómata o lo que es lo mismo, todas las aplicaciones de su función de transición 6, se utiliza el concepto de func de función ión de transición extendida. Así, dado un autómata finito determinista, la función de transición extendida representada como ó, tiene como objetivo resumir el conjunto de transiciones que se pueden dar en el autómata si se inicia el procesamiento de una cadena de entrada uj desde el estado inicial. A modo de resumen, considerando definidas las siguientes transiciones: ¿(9o, ai) = Qi S{qi,a2) = qi Entonces, la función de transición extendida se definiría: definiría: S(q0. aia2) — Se ve que los argumentos de la función extendida son el estado inicial y la cadena de entrada, en vez de un sólo símbolo. El conjunto de todas las cadenas que acepta un autómata finito determinista constituyen el lenguaje que acepta. Formalmente, el lenguaje de un autómata finito determinista se puede definir utilizando la función de transición extendida. Así, Así, si tenemos un AFD A AFD A = (Q, E, (Q, E, S,q0, F), el F), el lenguaje que acepta el autómata A, autómata A, se se denota L denota L(A (A ) y se define: L(A L (A ) =
€
A U T Ó M A T A S
19
FINITOS
Por tanto, L(A L (A ) es el conjunto de cadenas iu iu con las que, partiendo desde el estado inicial y después de leer todos los símbolos de la cadena, el autómata llega a un estado de aceptación. El lenguaje que acepta un autómata finito determinista es el el conjunto de todas las cadenas que acepta el autómata y sólo esas. El conjunto de lenguajes aceptados por autómatas finitos deterministas se denomina conjunto de lenguajes regulares.
Vista la definición de un autómata finito y su proceso de reconocimiento de cadenas, es claro que, si el autómata tiene un número finito de estados n, entonces, n, entonces, para poder procesar una cadena con un número de símbolos m con m > n, entonces n, entonces el autómata deberá tener definido algún bucle. Un bucle es una transición que parte de un estado hacia sí mismo. Por ejemplo, en la figura 2.4, las transiciones del estado q para los símbolos a y b definen dos bucles en ese estado. estado.
E j em p l o
2.4 2. 4
Dado Dado el el alfabet alfabeto o E = {a,
b},sea M },sea M el el autómata aut ómata definido a continuación: M = M = ({p, ({p ,},E },E,ó, ,ó,p, p, {< {<7})
cuya función de transición transic ión <5se define mediante mediant e el diagrama diagra ma de transiciones transic iones de la figura 2.4. M M acepta el lenguaje formado por las cadenas con más de un símbolo. Al entrar en el bucle del estado de aceptación, el autómata acepta la cadena pero per o no puede llevar el el control de las veces que ha pasado por dicho bucle. Por tanto, las transiciones en un autómata finito únicamente dependen del estado actual y del símbolo de la entrada. Intuitivamente, un autómata finito determinista acepta un lenguaje para el cual no es necesario controlar la porción de cadena que lleva procesada. o
2.6.
Ejemplos Ejem plos de lenguajes lengu ajes regulares
Dado el alfabeto E = {a, 6}, algunos ejemplos sencillos de lenguajes regulares son:
20
Ejemplos
de
lenguajes
regulares
■ El lenguaje vacío (0). La definición formal del autómata finito determinista que acepta el lenguaje vacío es: M = ({qo, qi), E, S, q0, {qi}) donde la función de transición ó se define mediante el diagrama de transiciones de la figura 2.5. Se puede ver que, independientemente del símbolo de la entrada, no es posible alcanzar el estado de aceptación. Por tanto, este autómata no puede aceptar ninguna cadena y L(M ) es el lenguaje vacío.
Figura 2.5: Diagrama de transiciones del autómata que acepta el lenguaje vacío.
■ E*. Este lenguaje contiene cualquier cadena que se puede formal- con los símbolos de un alfabeto E. Por tanto, considerando E = {«., b}, E* es el lenguaje formado por cualquier cadena que se puede formar con los símbolos a y b. El autómata que acepta este lenguaje, se define de la siguiente forma: M = ({qo}, E, <5, q0, {qo})), donde la función de transición ó se define mediante el diagrama de transiciones de la figura 2.6. b
a Figura 2.6: Diagrama de transiciones del autómata que acepta el lenguaje E*.
■ Cualquier lenguaje compuesto por un número finito de cadenas. Para reconocer un lenguaje con un número finito de cadenas, un autómata deberá tener en cuenta cada una de las cadenas contenidas en el lenguaje. Por ejemplo, dado el alfabeto E = {a, b}, se considera el lenguaje L = {a, aa, ba}, el autómata M, que acepta L se define de la siguiente manera: M — ({p, q, s, í}, E, <5, p, {7-, t}) donde 6 se define mediante el diagrama de transiciones de la figura 2.7. ■ Dado el alfabeto E = {a,b,c}, el lenguaje L, formado por todas las cadenas que contienen un número par de símbolos a (se considera que estarán incluidos en el lenguaje aquellas cadenas que no contienen ningún símbolo a). Por tanto, L = L(M ), donde M es el autómata definido de la siguiente manera: M = ({p, q}, E, S.p, {p}), donde la función de transición 6 se define mediante el diagrama de transiciones de la figura 2.8.
A U T Ó M A T A S
21
FI NI T OS
Figura 2.7: Diagrama de transiciones del autómata que acepta el lenguaje L = {a, aa, ba}.
b
b
Figura 2.8: Diagrama de transiciones del autómata que acepta el lenguaje formado por las cadenas con un número par de a ’s.
Modificar el autómata de la figura 2.8 para que sólo acepte cadenas con un número par de a ’s y de longitud mayor que l. Esto es, el lenguaje no debe contener cadenas que no tengan ningún símbolo a.
2.7.
Autómatas finitos no deterministas
La principal restricción de los autómatas finitos deterministas, es que, para un determinado estado y un determinado símbolo de entrada, sólo puede haber una única transición aplicable. Intuitivamente, se ha visto anteriormente que los lenguajes regulares son aquellos para los que no es necesario controlar la porción de cadena que se va reconociendo. Aunque más adelante, se verá formalmente la limitación de los lenguajes regulares, en este apartado se presentan los autómata finitos no deterministas, con el objetivo de ver si, relajando la restricción del determinismo, se puede ampliar el poder de reconocimiento de los autómatas finitos. Así, en los autómatas finitos no deterministas, dado un determinado estado y un determinado símbolo de entrada, se pueden definir más de una transición aplicable. Por ejemplo, considerando el alfabeto E = {a, b}, en el autómata de la figura 2.9, las transiciones del estado pson no deterministas, puesto que, en el estado p para el símbolo a, hay d transiciones posibles: S(p, a) — q y S(p, a) = r. La definición formal de un autómata finito no determinista (AFN), es similar a la de
Autómatas
22
finitos
no
deterministas
o
Figura 2.9: Ejemplo de un autómata finito con un punto de no determinismo en el estado p.
un autómata finito determinista, solo que, para los AFNs, la función de transición devuelve un subconjunto de estados en vez de un único estado. Así, se define un autómata finito nc determinista A mediante la siguiente quíntupla: A = (Q, £, <5, (jo, F) donde: ■
Qe s un conjunto finito de estados.
■ £ es un conjunto finito de símbolos de entrada. ■
óes la función de transición del autómata. En realidad, se trata de una correspondenci entre el conjunto E x Qyel conjunto Q en la que para cada par (q, a) d a €£, le corresponde uno o más elementos de Q. Esto es, ahora para cada estado > para cada símbolo de entrada, se pueden definir diferentes transiciones.
■
o qG
■ F C
Qe s un estado inicial. s un conjunto de estados finales o de aceptación. Qe
Volviendo a la definición de la función de transición extendida, para un autómata finite no determinista, 5(qo, w) será un subconjunto de estados. Por tanto: V
Un autómata finito no determinista acepta una cadena tu, si 6(q0,w) contiene al menos un estado de aceptación. Esto es, si existe algún camino de ejecución del autómata que llega a un estado de aceptación después de procesar la cadena completa.
El lenguaje que acepta un autómata finito no determinista es el conjunto de cadenas que acepta el autómata. Formalmente, si A es un autómata finito no determinista, entonces el lenguaje que acepta el autómata L(A ) puede definirse:
A U T Ó M A T A S
23
FINITOS
L(A ) = {u>| 5(qo, w) n
/ 0}
A continuación, se verá que el no determinismo no aumenta el poder de reconocimiento de los autómatas y que el conjunto de lenguajes que aceptan los autómatas finitos deterministas coincide con el conjunto de lenguajes que aceptan los autómatas finitos no deterministas.
2.8.
Equivalencia entre autómatas finitos deterministas y no deterministas
En realidad el no determinismo no aumenta el poder de reconocimiento de los autómatas finitos deterministas. Así: Dado un AFN siempre se puede construir un AFD equivalente.
En esta afirmación hay que destacar el concepto de equivalencia. Dos autómatas son equivalentes cuando reconocen exactamente el mismo lenguaje.
La demostración formal de este teorema puede encontrarse en las siguientes referencias [Hopcroft et al., 2008, Brookshear, 1993]. El objetivo de este texto es mostrar, mediante un ejemplo, el proceso de transformación de un autómata finito no determinista en el autómata finito determinista equivalente. Así: Dado el alfabeto E = {0,1}, se considera M , el autómata finito no determinista definido de la siguiente manera: M = ({p ,g},E ,ó,p, {«}) donde la función de transición 5 se define mediante el diagrama de transiciones de la figura 2.10. M es un autómata finito no deteiminista puesto que en el estado p, existen dos posibles transiciones aplicables para el símbolo 0. El autómata finito determinista equivalente a M se definiría de la siguiente manera:
Q, ( E ,
ó,c
j
F
)
donde: ■ E es el mismo alfabeto que el del autómata no determinista, en este caso, E = {0, 1}.
24
Eq u i v a l e n c i a
0
e n t r e AF ND
y AFE
O
Figura 2.10: Ejemplo de un autómata finito no determinista. ■ El conjunto de estados Q será el conjunto potencia del conjunto de estados de' autómata no determinista. Así, Q = {{p}, {?}, {p, q), 0}. ■ El estado inicial es el estado correspondiente al subconjunto formado por el estado inicial del autómata no determinista. Así, el estado inicial de A es {p}. ■ Los estados de aceptación son los estados correspondientes a los subconjuntos que contengan uno o más estados de aceptación. Así, en el presente ejemplo, los estado; de aceptación son {(/} y {p, q}. ■ La función de transición, se define replicando las transiciones del autómata finito nc determinista. Así, por ejemplo, si desde el estado con un símbolo 0, el estado destine es qo p, la replica determinista de esta transición será 0) = {p, q\. La funciór de transición para los estados que representan más de un estado del AFN (por ejemplc {p, }), se define considerando las transiciones definidas para cada estado. Así: 5{{p, q}, 0) = S(p, 0) U % , 0) = {p, q} U {} = {p, q} S{{p-,q}, 1) = Í(p, 1) u % , 1) = {p} U = {p, De acuerdo a esta definición, existirán estados en el autómata finito determinista que nc son accesibles, esto es, a los que no llega ninguna transición. En este caso, estos estados sor prescindibles y no es necesario representarlos en el diagrama de transiciones del autómatí finito determinista. En la figura 2.11 se muestra el diagrama de transiciones del autómatí finito determinista equivalente al autómata finito no determinista de la figura 2.10 (nótest que el estado {}, no es un estado accesible). Como consecuencia de la equivalencia entre autómatas finitos deterministas y nc deterministas, se puede afirmar que:
El conjunto de lenguajes regulares es aquel conjunto de lenguajes que pueden ser reconocidos por los autómatas finitos (sin importar si son deterministas o no deterministas).
Au t ó m a t a s
25
finitos
Figura 2.11: Autómata finito determinista equivalente al autómata de la figura 2.10.
E jemplo 2.5 Dado el alfabeto S = {.r, y}, sea M el autómata definido de la siguiente manera: M = ({ 5o, 5 1,5 2} ,E ,5 ,5 0,{5 ’2}) donde la función de transición 5 se define mediante el diagrama de transiciones de la figura 2.12.
Figura 2.12: Ejemplo de un autómata finito no determinista.
Existe un punto de no determinismo en el estado S0 del autómata M puesto que si en la entrada aparece un símbolo y, entonces el autómata puede cambiar al estado o al estado S-2. Siguiendo el procedimiento visto anteriormente, se trata de definir un autómata finito determinista cuyas transiciones simulen las diferentes transiciones del autómata finito no determinista. Así, el autómata finito determinista equivalente a M se define de la siguiente manera: M' = donde:
{S q }. {{ S u S2}})
26
Ejercicios
■ El conjunto de estados se define mediante el conjunto potencia del conjunto de estados del autómata finito no determinista: {0, {So}, {Si}, {S2}, {So,
}{ i So, S2}, {Si, S2}, {So, Si, S2}} S
■ La función de transición ó* se define simulando las transiciones no deterministas de M. Así, 5* se define mediante el diagrama de transiciones de la figura 2.13 donde sólo se muestran los estados accesibles.
Figura 2.13: Autómata finito determinista equivalente al autómata finito no determinista de la figura 2.12.
o
2.9.
Ejercicios
(1) Dado el alfabeto
E — (a,
M =
({q0,
b} , sea L e
qi, 112},£, ,
, {r/2})
donde la función de transición 6 se define mediante el siguiente diagrama de transiciones:
/ dn \* 1 4U J*
( Ch \
h
V
J
a h
a
A U T Ó M A T A S
27
FI N IT O S
Indicar cuál de las siguientes afirmaciones es verdadera: á) La cadena ab pertenece a L (
b a € L).
b) La cadena bbbab pertenece a L (
a be L).
c) La cadena baaa pertenece a L (
a be L).
(2) Dado el alfabeto £ = {a, 6, c}, definir un autómata finito determinista que reconozca el siguiente lenguaje: L — {ar| no existe la subcadena be en :c}. (3) Dado el alfabeto E = {x, y}, definir un autómata finito determinista para el lenguaje formado por las cadenas que tengan al menos un símbolo x o un símbolo y. (4) Dado el alfabeto E = {a, b}, definir un autómata finito determinista para el lenguaje formado por las cadenas que contienen un único símbolo b al inicio de la cadena, seguido de cero o más símbolos a. (5) Dado el alfabeto E = {a, b}, sea Lx el lenguaje reconocido por el autómata de la izquierda y L2 el lenguaje reconocido por el autómata de la derecha. a
a
a
Indicar cuál de las siguientes afirmaciones es verdadera: á) Uno de los autómatas es determinista y el otro no lo es. b) El autómata de la izquierda tiene algún estado no accesible.
c) L\ — Lid) Ninguna de las anteriores afirmaciones es verdadera. (6) Dado el alfabeto £ = {0,1}, sea M el autómata finito definido de la siguiente manera:
28
Ej e r c i c i o s
M = ({
, s6 } p trq { , 5 }) T
donde la función de transición 5 se define mediante el siguiente diagrama de transiciones: 0
1
sean L y = {Ox : x € {0,1}*} y
L2= {x0 : x
{0,1}
Indicar cuál de las siguientes afirmaciones es verdadera:
o) ¿(A'/) = ¿1 n i> 2b)
L{ M)
x L 2. = L U
c) L(M) es el lenguaje complementario de L\ en E*. d) Ninguna de las anteriores afirmaciones es verdadera.
(7) Dado el siguiente autómata finito no determinista:
M = ({<#), qi, (¡ 2 , (h; f/4}, {a>b}t ,
{q2, g4})
donde la función de transición 6 se define mediante el siguiente diagrama de transiciones:
A U T Ó M A T A S
FI N I T O S
29
a) Describir el lenguaje que acepta el autómata M. b) Indicar los puntos de no determinismo del autómata M. c) Definir el autómata finito determinista equivalente al autómata finito no determinista M.
Capítulo 3 _______
Gramáticas regulares Hasta el momento, se han definido los lenguajes regulares como aquellos conjuntos de cadenas que pueden reconocerse mediante autómatas finitos. En definitiva, hasta ahora se ha visto que los autómatas finitos proporcionan un mecanismo que permite indicar si una cadena pertenece o no a un determinado lenguaje. No obstante, los lenguajes regulares y los que veremos en los siguientes capítulos de este texto, tienen en realidad una estructura inherente. Dicha estructura permite definir las reglas que generan las cadenas del lenguaje. Esta estructura se denomina gramática. En este capítulo se verá cómo las gramáticas son capaces de generar las cadenas que componen un lenguaje. Dependiendo de su propia estructura, se pueden definir diferentes tipos de gramáticas. Así, en este capítulo se definirán las llamadas gramáticas regulares y en el capítulo 6 se definirán las gramáticas denominadas gramáticas independientes del contexto.
3.1.
Definición de gramática
La definición de una gramática se basa en los siguientes cuatro elementos [Brookshear, 1993]: ■ Un conjunto finito de símbolos que componen las cadenas del lenguaje. Estos símbolos se denominan símbolos terminales. El conjunto de símbolos terminales se denomina alfabeto de símbolos terminales y se suelen representar con letras minúsculas. ■ Un conjunto finito de símbolos denominados símbolos no terminales. Los símbolos no terminales actúan como generadores de símbolos (tanto terminales como no terminales) y se suelen representar con letras mayúsculas. ■ Un símbolo inicial. El símbolo inicial es un símbolo no terminal a partir del cual se comienzan a generar cadenas de terminales y no terminales. 31
De f i n i c i ó n
32
de
gramática
■ Un conjunto finito de producciones o reglas de reescritura. Establecen cómo obtener las cadenas a partir de los símbolos no terminales conformando las denominadas derivaciones. Formalmente, una gramática se define mediante la cuádrupla: G = {V,T,S, P) donde V es el conjunto de símbolos no terminales, T es el conjunto de sím terminales, S es el símbolo inicial y P e s el conjunto de produc Una gramática genera cadenas mediante la substitución de los no terminales de la gramática, por cadenas de terminales y no terminales. Esta substitución se realiza en base a las producciones de la gramática. Este proceso se denomina derivación de la gramática. De manera informal, se puede decir que derivar una gramática consiste en ir substituyendo los símbolos no terminales por el lado derecho de la producción en la que dichos símbolos no terminales aparecen en el lado izquierdo. Cualquier derivación de una gramática se inicia con la derivación del símbolo inicial.
E jemplo 3.1 Sea la gramática G = (V, T. S, P) donde: ■ El conjunto de símbolos terminales
es
= {.r. y}.
■ El conjunto de símbolos no terminales V es: V = {S', A B} . ■
S e s el símbolo inicial de la gramática.
■ P es el siguiente conjunto de producciones: S->xA S->yB A. —y A —>• x B -¥ y B B -¥ y A continuación se muestra un ejemplo derivación de la gramática G:
GRAMÁTICAS
33
REGULARES
■\— ^r 4
Esta derivación genera la cadena aplicación de la producción A Otro ejemplo de derivación es el siguiente: S -> y B
xxx.Se ha representado la — » x A para substituir el no terminal .4.
y y B ^
que genera la cadena yyy. o
La aplicación de una u otra producción se realiza de forma no determinista dando lugar a diferentes cadenas de terminales. Antes de continuar con el estudio de las gramáticas regulares, conviene detenerse en ciertas cuestiones de notación. Así, dada la gramática del ejemplo anterior, se ve que hay varias producciones que tienen el mismo símbolo no terminal en el lado izquierdo. Estas producciones se podrían representar utilizando una notación más compacta, de la siguiente manera: S —>• xA\yB.Igualmente, se ha visto que normalmente se utilizan letras may para representar los símbolos no terminales y letras minúsculas para representar símbolos terminales. A continuación, se verá que se utilizarán letras griegas en minúsculas (cv./i, ...) para denotar cadenas de símbolos terminales y no terminales (e.g. teniendo en cuenta la gramática del ejemplo anterior podemos definir o = xxA). A la concatenación de símbolos terminales y no terminales que se derivan del símbolo inicial de la gramática, se le denomina forma sentencial. Tal y como se ha visto en el ejemplo anterior, cada una de las formas sentencíales que se van obteniendo en el proceso de derivación de una gramática, se relacionan mediante el símbolo de relación =á. Sobre este símbolo se puede especificar la producción que se ha utilizado en cada paso de la derivación. Un tipo especial de producción es aquella cuyo lado derecho contiene el símbolo e (en muchos casos se utiliza también el símbolo A). En este caso, se considera que esta producción deriva a vacío y no genera ningún símbolo adicional. A menudo, estas producciones se conocen como reglas e o reglas A. Ejemplo 3.2
Sea la gramática G, definida de la siguiente manera: G= (V,T,S,P) ■ El conjunto de símbolos terminales es: T = {;r}.
De f i n i c i ó n
34
■ El conjunto de símbolos no terminales es:
de
Gr a m á t i c a s
R e g u l a r e s
= {5, A}.
■ El símbolo inicial de la gramática S. ■ El conjunto de producciones P es: S A xA A —> ■e En este ejemplo, se ve que la tercera producción es una derivación a e. Un ejemplo de derivación de la gramática G es: S —► x A
a^
x x A = 4 x x
a
que genera la cadena xx. o
En tanto que las derivaciones de una gramática produce un conjunto de cadenas, se puede decir que las derivaciones de una gramática dan como resultado un lenguaje. Así: Dada una gramática G, el lenguaje que genera se representa mediante la L ( G ) y contiene todas las cadenas que pueden derivarse a p notación del símbolo inicial.
3.2.
Tipos de gramáticas: gramáticas regulares
Dependiendo de la estructura de las producciones, existen diferentes tipos de gramáticas. Así, las producciones de las llamadas gramáticas regulares se ajustan a la siguiente estructura: ■ El lado izquierdo de las producciones contienen un único símbolo no terminal. ■ El lado derecho de las producciones contienen: un único símbolo terminal, un símbolo terminal seguido de un símbolo no terminal, o el símbolo e.
GRAMÁTICAS
35
REGULARES
De acuerdo a estas condiciones, las gramáticas vistas en los ejemplos anteriores, son gramáticas regulares. Dada una gramática regular lenguaje regular.
G
el lenguaje que genera es siempre un
No obstante, puede ocurrir que una gramática que no sea regular genere un lenguaje regular. E jemplo 3.3
Sea G la gramática definida a continuación: G = ({S,A ,B ,C} ,{a ,b ,c }>S,P) donde S es el símbolo inicial de la gramática y producciones:
es el siguiente conjunto de
S — y
aAb
A —^ flj4|c B
B b |e
C —
cC
G no es una gramática regular puesto que la primera producción no cumple con las restricciones de las gramáticas regulars. No obstante, ) es un lenguaje regular puesto que está compuesto por las cadenas con uno o más símbolos a seguidos de uno o más símbolos b y terminadas en uno o más símbolos c. Este es un lenguaje regular que puede ser aceptado por el siguiente autómata finito: M = ({ft, 9i, ft , ft} , {a, &,c},5,go, {ft}) donde la función de transición ó se define mediante el siguiente diagrama de transiciones: a
b
e
b Una gramática regular equivalente a G podría definirse de la siguiente manera: G' = { { S , A , B , C } , { a , b , c } , S , P ' )
Ejemplos
36
de
gramáticas
regulares
donde P' es el siguiente conjunto de producciones: S^aA A —^ ciA\bB B -+ bB\cC C -»• cCje
_______ o ______
3.3.
Ejemplos de gramáticas regulares
A continuación se muestran algunos ejemplos de gramáticas regulares: ■
G= ({S1}, 0,
S P , ), donde P es el siguiente conjunto de producciones: S ^ e
G es una gramática regular. Al tener una única producción que deriva en e, la única cadena que se puede derivar a partir de las producciones de G es la cadena vacía. Por tanto L( G) — {e}. ■
G= ({5}, {re, y}, S, P), donde P es el siguiente conjunto de producciones: S ^ x S S —>• y S S-M: G es una gramática regular. A continuación, se muestran algunos ejemplos de derivaciones de G:
x
S
x S ^
S
y S = * v
s s s s
(y S —}xS
r'i S —R
x o =$■ x xb
x S S= ^ x y S c* 5
S
xx
€ S —►
xy
cu S ixS
xb ==>* xxb ==>-
pr &
S => xxx S- +x S S-+e y x S '==1? y x y S => yxy yS X X X
GRAMÁTICAS
37
REGULARES
Las cadenas que se derivan en estos ejemplos son: e, x, y, xy, x xx, yx y. G genera, por tanto, cadenas con cualquier combinación de los símbolos x e y. Por tanto, L(G) es el el lenguaje formado por todas las cadenas que se pueden formar con el alfabeto L ( = E*. ) G S, esto es, ■ G = ({S', v4}, {x, y}, S, P) donde P es el siguiente conjunto de producciones: y x S S — S -y- yS A -y- y A A —y xA A -y e G es una gramática regular. A continuación, se muestra un ejemplo de derivación en G: o
,
o S-ygS
n
y S S -r0 S — *xS
c
0
S —y y S =$■ y x S =#► yxyb = > yx yxb => yx yx x b ...
Como se puede apreciar en este ejemplo de derivación, el símbolo no terminal S no puede derivar nunca ni en el no terminal A, ni en ningún terminal ni en la cadena vacía. Por tanto, de estas derivaciones nunca se podrá obtener una cadena formada únicamente por terminales. Por tanto, G no deriva ninguna cadena y se cumple que L( G) = 0.* S ¿Es posible añadir alguna producción a la gramática G, de manera que pueda derivar alguna cadena de terminales? Dar algún ejemplo. m G — ({S,
A B}, , {re, y}, S, P) donde P es el siguiente conjunto de producciones: S —)■x A A ^ y A —y x B B f
G es una gramática regular. A continuación, se muestran algunas derivaciones: S -y r,
x A xy . A—*xB
S -y xA =>
r-, B —>£
= > xx
38
Gr a m á t i c a s
regulares
y
autómatas
finitos
En este caso, estas dos derivaciones son las dos únicas que se pueden definir teniendo en cuenta las producciones de la gramática G. Por tanto, G genera el lenguaje formado únicamente por dos cadenas, esto es, L(G) — {xx , x y}. Dada la gramática G = ({x}, {5}, 5, donde es el siguiente conjunto incompleto de producciones: {5 ->• xxS} . Indicar cómo completar el conjunto de producciones para que se cumpla que L(G) es el conjunto de cadenas formadas por un número par de símbolos x.
3.4.
Gramáticas regulares y autómatas finitos
Puesto que tanto los lenguajes que se derivan de las gramáticas regulares como los lenguajes que aceptan los autómatas finitos son lenguajes regulares, es fácil pensar que debe existir un procedimiento que nos permita, dada una determinada gramática regular G, pasar al autómata finito equivalente, esto es, al autómata que acepta el lenguaje L(G). Así: Para cada alfabeto E y para cada gramática regular G, existe un autómata finito M equivalente, esto es, que cumpla que L ( G ) = L ( M ) .
En realidad, esta afirmación se puede enunciar de una manera más general [Hopcroft al, 2008]: Para cada alfabeto E , { L { G ) : G es una gramática regular } = { L ( M ) : M es un autómata finito}, esto es, el conjunto de lenguajes que reconocen las gramáticas regulares, coincide con el conjunto de lenguajes que reconocen los autómatas finitos.
No es el objetivo de este texto, la demostración formal de estos teoremas. En su lugar, se mostrará el procedimiento por el cuál se puede obtener un autómata finito equivalente a una gramática regular dada. Así, dado un alfabeto E, se considera la siguiente gramática regular: G = (V, T, S, P), donde S es el símbolo inicial de la gramática; V es el conjunto de símbolos no terminales; E U e); y P es el conjunto de T es el conjunto de símbolos terminales (cumpliendo que producciones. Sea M autómata finito definido de la siguiente manera: M = (Q, E, 5, Qq , F) donde: ■
Q= ,V esto es, el conjunto de estados del autómata coincide con el conjunto símbolos no terminales de la gramática.
GRAMÁTICAS
39
REGULARES
■ q0 — S, esto es, el estado inicial del autómata será el estado que se corresponde con el símbolo inicial de la gramática. ■
F — A ,donde A es el conjunto de no terminales de la gramática G que derivan en la cadena vacía, esto es, son el lado izquierdo de producciones que derivan en e.
■ La función de transición <5, se define teniendo en cuenta las producciones de la gramática. Esto es así, puesto que, al aceptar las cadenas, el autómata debe simular las derivaciones de la gramática. Así, si en la gramática existe una producción S —> xA, en el autómata se define una transición del estado S al estado A etiquetada con el símbolo x (esto es, 5(S, x) = A). En los casos en que en el lado derecho de la producción haya un único terminal (por ejemplo A — x), > se procederá de la siguiente manera. Se co producciones en producciones de la forma: <
No_te rm in al
>—< T >erminal >< Nojt
donde el nuevo no terminal añadido, no pertenecía antes a la gramática. A continuación se añadirá una nueva producción que haga que este nuevo no terminal derive a su vez, en la cadena vacía. Teniendo en cuenta el autómata M definido de esta manera, se cumple que L(M) = L(G).
E jemplo 3.4
Dada la siguiente gramática G = ({5}, {x, y}, S, P) donde S es el símbolo inicial y P es el siguiente conjunto de producciones: S ^ x S S^yS S —y € El autómata finito equivalente estará definido de la siguiente forma: M = donde: -Q =
{Q,T,,5,
Gr a m á t i c a s
40
regulares
y
autómatas
finito
- E = {.r,y}. - q0 = S. - F = {5}. - La función de transición 5 se define mediante ei siguiente diagrama de transiciones: x
y
Se cumple que L(G) = L{ M) = E*. o
E j e m p l o 3.5
Dada la siguiente gramática G = {{S, A}, {;r, y}, 5, P) donde S es el símbolo inicial P es el siguiente conjunto de producciones: S->xS S^yS A - > y A A xA A —)■6 El autómata finito equivalente estará definido de la siguiente forma M = (Q, E, 6, qo, F donde: -
Q = {S,yl}.
-
E = {.t , y}.
- q0 = S.
Gr a m á t i c a s
-
41
regulares
F = { A ) .
— La función de transición 5 se define mediante el siguiente diagrama de transiciones: x
x
y
y
Se cumple que L( G) = L(M) = 0. o
E j e m p l o 3.6
Dada la siguiente gramática G = ({5, A. y P es el siguiente conjunto de producciones:
B{.t\
S ->• A - t y A -)• x B B ^ e Para obtener el autómata finito equivalente, en primer lugar, es necesario modificar la gramática para transformar la producción: A —¥ derecho esté formado por un tenninal seguido de un no tenninal. Así, se añade un nuevo terminal T al conjunto de no terminales. A continuación, se añade una nueva producción que haga que ese nuevo no tenninal derive en la cadena vacía, esto es, T —>• De esta forma, la gramática quedaría definida de la siguiente forma G = ({5, A, B, T}, {r. y}, S, P) con símbolo inicial S y donde P sería ahora el siguiente conjunto de producciones: S -» A ^ y T A —^ x B B ^ e T -> r
en
42
Ej e r c i c i o
El autómata finito equivalente estará definido de la siguiente forma: M = (Q, T,,S,q0, F) donde: -
Q = {S, A,B ,T} .
- E = {z, y) . -
Qo — S.
- F = { B ,T } . - La función de transición <5se define mediante el siguiente diagrama de transiciones:
Se cumple que L( G) = L(M) = {zx, xy }.
_______ o
3.5.
Ejercicios
(1) Dada la siguiente gramática G = ({5, A, B} , {o, 6}, S, P) donde S es el símbó inicial y P e s el siguiente conjunto de producciones: S -+ 6S'|o,J4|e üA\b A — B ->•
|e
y sea M el autómata finito definido de la siguiente manera:
GRAMATICAS
43
REGULARES
M = ({g0,
,q i 92, 93 }, {a, 6}, 5, go, {go, g2
donde 5 es la función de transición definida mediante el siguiente diagrama de transiciones: n
a) ¿SonequivalentesMyG? b)Si el símbolo inicial es el no terminal A: ¿serían equivalentes M y G1 (2) Considerando la gramática G (con símbolo inicial A) y el autómata M del ejercicio anterior, indicar si se cumple que: L(M) n ) = 0. (3) Considerando el autómata M del primer ejercicio, sea G la gramática definida a continuación: G = ({S,A,B},{a, b},S,P) donde S es el símbolo inicial de la gramática y producciones: S —^ ü A A —y Oj4| c| í>5 B ^ b \ t a) ¿Es G una gramática regular? b) Construir el autómata finito equivalente a G.
es el siguiente conjunto de
44
Eje rc ic io
c) ¿Se cumple que L(M) = L(G)? (4) Considerando la gramática G del primer ejercicio con símbolo inicial A, construir u autómata finito equivalente. (5) Dada la gramática G definida de la siguiente manera: G — ({5, , {0,1}, , P donde S es el símbolo inicial de la gramática y es el siguiente conjunto d producciones: S -*■ A1B A 0A\e B -»• 0B\lB\e a) ¿Es regular la gramática <3? En caso negativo indicar qué producción ■ producciones no cumplen con los requisitos que deben cumplir las gramática regulares. b) Describir el lenguaje L(G), ¿es regular? En caso positivo, definir un autómat finito que lo reconozca. (6) Dada la gramática G = ({«S, A, B] , {«, 6), 5, P) donde S es el símbolo inicial de 1 gramática y P e s el siguiente conjunto de producciones: S —> aA A —y ciA\bB B -»■ bB\b a) ¿Es G una gramática regular? b) Describir el lenguaje que genera la gramática G. c) Construir un autómata finito equivalente.
Capítulo 4________
Expresiones regulares Hasta el momento se han estudiado los autómatas finitos como reconocedores de los lenguajes regulares. Así mismo, se han estudiado las gramáticas regulares como gramáticas generadoras de las cadenas que componen los lenguajes regulares. En este capítulo, se verá que las cadenas que componen un lenguaje regular pueden ser definidas de manera declarativa. De esta manera, se puede describir la propia estructura de cada cadena en un lenguaje regular. Para ello, se utilizarán las llamadas expresiones regulares que describen de forma exacta los lenguajes regulares.
4.1.
Introducción
Diariamente se utilizan las expresiones regulares de manera inconsciente. Por ejemplo, cuando se interactúa con un ordenador al buscar un archivo. Para ello, se utiliza frecuentemente el patrón, * . t x t , cuando se quieren buscar los archivos con extensión t x t . Así, en este caso, el símbolo * puede entenderse como cualquier secuencia de caracteres. Otra aplicación de estos patrones, son los programas de validación de las direcciones de correo electrónico. Es frecuente que en el registro de una determina página web, pidan una dirección de correo válida. A menudo, se intenta introducir cualquier cadena para evitar este paso en el registro. Sin embargo, la página resalta el error. Una comprobación mediante patrones de una dirección de correo electrónico válida podría ser: *@* . [e s | com | e d u ] . En este patrón simplificado se indica que una dirección de correo puede comenzar como cualquier secuencia de caracteres seguida de un símbolo seguido nuevamente de cualquier secuencia de caracteres, seguido de un símbolo ’ . ’ y terminado bien en e s, com o ed u. En esta sección se verá, a través de un ejemplo concreto, la conveniencia de definir las cadenas de un lenguaje de manera declarativa. Así, dado el alfabeto E = {0,1}, se considera el siguiente autómata cuyo diagrama de transiciones se muestra en la figura 4.1. Es claro que 45
De f i n i c i ó n
46
de
las
expresiones
regulares
el lenguaje que reconoce este autómata está formado por las cadenas compuestas por O’s \ terminadas en un único símbolo 1. 0 1
Figura 4.1: Autómata finito que reconoce el lenguaje formado por las cadenas compuesta! por O’s y terminadas en un único símbolo 1.
Formalmente, este lenguaje puede definirse de la siguiente manera: L = {O71! :
0}
Sin embargo, existe otra manera de describir las cadenas del lenguaje mediante el use de las expresiones regulares. Utilizando el símbolo *, las cadenas del lenguaje se podríar describir de la siguiente manera: 0*1 donde se expresa que las cadenas del lenguaje deber contener: cero o más símbolos 0 seguidos de un único símbolo 1.
¿Qué otras aplicaciones pueden encontrarse al uso de patrones?
4.2.
Definición de las expresiones regulares
Formalmente, las expresiones regulares se definen de manera inductiva. Así, en prime: lugar, se definirán los casos base, esto es, las expresiones regulares más sencillas que se pueden definir. A continuación, se definirá cómo construir expresiones regulares más complejas a partir de estas expresiones regulares más sencillas. Así: Casos base: En primer lugar, se presentan las expresiones regulares más sencillas que st pueden definir, así, dado un alfabeto E:
— 6 es una expresión regular que representa el lenguaje formado por la cadena vacíí to — 0 es una expresión regular que representa el lenguaje vacío. — Si aGE, entonces a es una expresión regular (esto es, cualquier símbolo alfabeto puede considerarse una expresión regular).
EXPRESIONES
47
regul ar es
Paso inductivo: A partir de expresiones regulares sencillas, se pueden construir expresiones regulares más complejas utilizando ciertos operadores. Estos operadores son: +,o, *, equivalentes a la unión, concatenación y estrella de Kleene respectivamente. Así, si E y F on s dos expresiones regulares cualquiera y considerando que e, 0 y cualquier símbolo a del alfabeto, son también expresiones regulares, entonces [Hopcroft et al, 2008]:
— E + es F una expresión regular. Esto es, la unión de dos expresiones regulares e también una expresión regular. — E o F E ( concatenado con F) es una expresión regular. Esto es, la conc de dos expresiones regulares es también una expresión regular. Normalmente, el operador o puede no aparecer o substituirse por el símbolo •. Así: E o F = E ■F = EF.
— E* es una expresión regular. Esto es, la clausura de Kleene de una expresión regular es también una expresión regular.
4.3.
Lenguaje representado por una expresión regular
Cada expresión regular representa un conjunto de cadenas, esto es, un lenguaje. Por tanto: El lenguaje de una expresión regular es el conjunto de cadenas que representa esta expresión regular. Así, dada una expresión regular E L E ( denota cualquiera, ) el lenguaje que representa.
A partir de esta definición, se pueden enunciar las siguientes afirmaciones:
- L{e) = {e} -
L(0) = 0
- Dado
a 6£ entonces L(a) = {«}
A partir de la definición del lenguaje correspondiente a una expresión regular, se pueden definir los lenguajes resultantes de operar con las expresiones regulares, a través de las siguientes propiedades: (P.l) E + F es una expresión regular que representa la unión de los lenguajes que representan, L(E) y L( F) . Es decir, L ( E + = U L ( F ) .
Le n g u a j e
48
representado
p o r
un a
expresión
regula
(P.2) E F {E concatenado con F) es una expresión regular que representa 1 concatenación de L(E) y L( F) . Es decir, L(EF) = L (P.3) E* es una expresión regular que representa la clausura de L( E). Es decii L( E*) = (L(E))*. (P.4) El último punto, aunque parezca trivial, permite representar expresiones regulate complejas encerradas entre paréntesis. De esta manera, se pueden aplica operadores al conjunto de la expresión, teniendo en cuenta la precedencia entr operadores. Así, si E es una expresión regular, entonces (E) es una expresió regular que representa el mismo lenguaje que E. Es decir, L( (E) ) = L( E) . Al igual que ocurre con los operadores matemáticos, los operadores de las expresione regulares tienen que tener en cuenta cierta precedencia. Así, la precedencia entr operadores de expresiones regulares es: 1. El operador asterisco (*) 2. El operador concatenación (•) 3. El operador de unión (+)
E jemplo 4.1 Dado un alfabeto £ = {o,,
b,c}, sean E x, E2 y E3 las siguient E\
2 — by E 3 = a,E
Entonces: ■ El lenguaje de la expresión regular £j es el formado por la cadena a: L( E }) = {«}. ■ El lenguaje de la expresión regular E2 es el formado por la cadena b: L(E2) = {&}• ■ El lenguaje de la expresión regular
E 3es el forma
A continuación, se verán los lenguajes resultantes de aplicar las operaciones de uniói concatenación y clausura de Kleene a estas expresiones regulates. Así: ■ Según la propiedad (P.l), el lenguaje de la expresión regular L(EX + E2) = L{Ex) U L(E2) = {«} U {b} = {«, b}.
+ E> = o + b, e
■ De la misma forma, el lenguaje de la expresión regular Ej + + a + + c, e L E \( )U L(E2) L( Ei + E2 + Es) = U L{E3) = {o} U {6} U {c}
EXPRESIONES
49
REGULARES
■ Según la propiedad (P.2), el lenguaje de la expresión regular E } = es L{E \ ) • L(E2)= {a} • {b} = {ab}. Esto es, el lenguaje de la expresión regular a o a b o simplemente ab, sería el lenguaje compuesto únicamente por la cadena ab. • Según la propiedad (P.3), el lenguaje de la expresión regular E{, es L(E*) (L(Ei)*) = (a*) = {e, a, aa, aaa, aaa a,a aa aa ,. .}.
=
■ De la misma forma, el lenguaje de la expresión regular + E 2)* (a + b)* se obtendría de la siguiente manera. L((E\ + £¡2)*) = (L((E\ + Ya se ha visto antes que L( E\ + E2)= {a, b}, por tanto concatenación de cero o más veces los elementos de {a, Así, {L(E\ + E2)Y = {e, a, b, aa, ab, b a ,bb, aaa, aab, aba,abb, b Es claro que (L(E\ E2)Y contiene un número infinito de cadenas, en el ejemplo anterior sólo se han definido algunas cadenas. Dar cinco ejemplos adicionales de cadenas que pertenezcan al lenguaje. ______ ■ Si se consideran las siguientes expresiones regulares y ab, el lenguaje que representa la expresión regular E¿+ L(E-i) U L(E*) = {c} U {e, ab, abab, ababab, abobaba,b,...}. Es importante notar que este lenguaje es diferente al lenguaje representado por la expresión regular c + ab*. En este caso, y debido a la precedencia de operadores, la estrella de Kleene sólo se aplica sobre el símbolo b y no sobre la subcadena ab como en el caso anterior. Para diferenciar un caso de otro, se utilizan los paréntesis, y así ab* Y (abY- P°r tanto, el lenguaje que representa la expresión regular c + ab* es L(c + ab*) — {c, o., ab, abb, abbb, abbbb, abbbbb, . . . } Se ha visto que el lenguaje que representa la expresión regular (0 + ab*) contiene la cadena a. Esto es así, porque L(b*) = {f, b. bb, bbb. bbbb, bbbbh....}. Por tanto, al concatenar el símbolo a en la expresión ab*, el lenguaje resultante es L((ab*)) = {a. ab, abb, abbb. abbbb, abbbbb, .}, puesto que al concatenar a con la cadena vacía, el resultado es la misma cadena a. _______________ ■ Considerando las expresiones regulares Ei, E2 y E-¿, sea E la expresión regular definida de la siguiente manera E = (E\ + E 2) = + •r q ■ = Entonces, el lenguaje que representa la expresión regular E es L( E) = (L(Ei) 4 L(E-2))L( E, )) = (L(Et) • L(E¡0) U (L(E2) • L(E:i)) = {ac. be}. o
Au t ó m a t a s
50
4.4.
finitos
y
expresiones
regulares
Autómatas finitos y expresiones regulares
Tanto los autómatas finitos (deterministas o no deterministas) como las expresiones regulares definen el mismo tipo de lenguajes, los lenguajes regulares. Para probar esto se debería demostrar que: 1. Todo lenguaje definido por un autómata finito puede definirse mediante una expresión L = L{Á) para algún autómata finito A, e regular. Esto es, si expresión regular R tal que L — L(R). 2. Todo lenguaje definido por una expresión regular puede definirse mediante un autómata finito. Las demostraciones formales de ambas afirmaciones pueden encontrarse en las siguientes fuentes [Hopcroft et al., 2008] y [Brookshear, 1993]. El objetivo de este texto es mostrar, mediante ejemplos, el proceso de construcción de la expresión regular equivalente a un autómata finito. Así, dado el alfabeto E = {a, b} sea M el autómata definido de la siguiente manera:
M = {{q0, qu 92}, £, <5,
{(/1})
donde la función de transición 6 se define mediante el siguiente diagrama de transiciones:
Es claro que L(M) — {a}, puesto que la única cadena que lleva al estado de aceptación desde el estado inicial es la formada por un único símbolo a. En este caso, la expresión regular equivalente al autómata será E = a. En realidad, el estado q2 es un estado muerte y no es necesario definirlo. Con el fin de simplificar los diagramas de transiciones, en los ejemplos que siguen, no se definirán los estados muertos. ,qi92}» £. 8, q0,{<72}) don Sea ahora M = ({í/o, diagrama de transiciones:
Ex p r e s i o n e s
51
regulares
f/o En este caso L(M) = {ab} y la expresión regular equivalente al autómata es = ab. Sea ahora M = ({0, Q\}, E, ó, go, {91}) donde ó se define mediante el sig de transiciones:
En este caso L M ) ( = Por último, sea M = ({(/o, Q\ , }, E, diagrama de transiciones:
{a,b} y, por tanto, la expresión regul %, {<72}) donde 6 se define mediante el siguiente
En este caso L(M) = {ab, b } y, por tanto, la expresión regula (a + b) -b= ab+ bb. Para obtener la expresión regular de este último autómata, en realidad se ha utilizado el llamado método de eliminación de estados [Hopcroft et al., 2008, Brookshear, 1993]. Informalmente, este método consiste en ir eliminando del autómata aquellos estados que no son el estado inicial ni son el estado de aceptación. En su lugar, se etiquetan las transiciones, con las expresiones regulares que emulan el camino desde el estado inicial al estado aceptación donde los estados eliminados eran los estados intermedios. Así, para el autómata anterior, si se elimina el estado q\, el diagrama de transiciones resultante sería el siguiente:
En este caso, cuando hay varias transiciones de un estado a otro, éstas se pueden sustituir por una única transición etiquetada con la expresión regular que resulta de la unión de todas las expresiones regulares de cada una de las transiciones. Así, el diagrama de transiciones anterior puede representarse de la siguiente manera:
Au t ó m a t a s
52
9o
finitos
y
expresiones
regulares
o • b + b • b
En los ejemplos vistos hasta el momento, no se ha definido ningún bucle. En un autómat: finito, un bucle implica la repetición de cero o más veces la lectura del símbolo que etiquete la transición del bucle. Esto es equivalente en las expresiones regulares a la operación d( estrella de Kleene. Así, dado £ = {a, b},sea M el autómat M = ({í/o, <7i}, £ , 5,go, {<7i}) donde la función de transición ó se define median diagrama de transiciones: a
En este caso, la expresión regular equivalente es a* ■b. En la figura 4.2 se muestra uní representación gráfica del paso de este autómata finito a su expresión regular equivalente.
a*b
Figura 4.2: Representación gráfica del paso de un autómata finito a su expresión regula equivalente. Los bucles pueden darse en cualquiera de los estados de un diagrama de transiciones Por ejemplo, dado £ = {a, 6), sea M — ({t/o, 9i, f/2}, £, ó, q0, {92}) donde 5 es la función d« transición definida por el diagrama de transiciones de la figura 4.3. La expresión regular que describiría la secuencia de símbolos necesaria para pasar de estado 90 al estado 92, sería a ■a* ■b o bien no*6, donde a* representa el bucle del estado 91
EXPRESIONES
53
REGULARES
a a
Qo
Figura 4.3: Diagrama de transiciones con un bucle.
a
Figura 4.4: Diagrama de transiciones con un bucle en un estado y con un bucle utilizando varios estados.
Con el fin de ir completando el diagrama de la figura 4.3, se modifica la definición del autómata M , añadiendo una transición del estado al estado q\. Este nuevo diagrama de transiciones, se muestra en la figura 4.4. En este caso, para llegar del estado q0al estado <72, es cadenas que se representan mediante la expresión regular aa*b, como por ejemplo, la cadena aab. No obstante, la cadena aabcib también pertenece al lenguaje. Esto es así porque del estado q2 podemos volver al estado q2 pasando por el estado q\ ( con varios estados implicados). Si se aplica el método de eliminación de estados, el diagrama de transiciones resultante sería el que se muestra en la figura 4.5. aa*b
-
0 —
—
Figura 4.5: Diagrama de transiciones equivalente al de la figura 4.4 eliminando el estado q-y.
Dado el bucle del estado q2,la expresión regular equivalente al diagrama de transiciones se muestra en la figura 4.5 es ( ) •( )*. De manera general, y para cualquier alfabeto S, sea L el lenguaje que acepta el autómata finito cuyo diagrama de transiciones se muestra en la figura 4.6. Este diagrama de transiciones muestra todas las posibles transiciones que se pueden dar en un autómata de dos estados. Siguiendo este proceso, la expresión regular equivalente al autómata de la Figura 4.6 sería:
Au t ó m a t a s
54
finitos
y
expresiones
regulares
Figura 4.6: Autómata finito de dos estados con todas las posibles transiciones definidas.
(((eí ' ft) •el) •(e4 •(ej •e2) •e|))*) Donde ei,e2, e$ y e4 son, o bien símbolos del alfabeto o bien expresiones regulares. Por último, resaltar que lo explicado en los casos en los que se ha considerado automata: de dos estados, es generalizable a autómatas de más estados utilizando el método d( eliminación de estados. Es importante remarcar que el método de eliminación de estados considera que e autómata tiene un único estado de aceptación. Esta restricción no supone ninguna limitaciór en el procedimiento, ya que, en el caso de que un autómata tenga más de un estado dí aceptación, se considerarán las expresiones regulares que llevan a alcanzar cada uno de lo; estados de aceptación. La expresión regular final se obtendrá como resultado de la unión de cada una de las expresiones regulares obtenidas.
E jemplo 4.2 Dado el alfabeto E = {a, 6}, considere el autómata finito definido de la siguiente manera M = ({(lo, ft, ft, ft}, £,
ft, {ft, ft})
donde ó es la función de transición definida por el siguiente diagrama de transiciones: a
EXPRESIONES
55
REGULARES
Para obtener la expresión regular equivalente al autómata M, existen dos posibilidades: 1. Obtener el lenguaje L(M) y representarlo mediante una expresión regular. El lenguaje que acepta el autómata está formado por cadenas que comienzan por un símbolo a seguido de cualquier combinación de símbolos y (debido al bucle en el estado de aceptación q¡). Estas cadenas pueden representarse mediante la expresión regular a{a -tb)*.El autómata acepta también cadenas compuestas por un símbolo b seguid de cualquier número de símbolos b (debido al bucle en el estado de aceptación q2) y seguido por cero o más veces las subcadenas de la forma aa*b (por las transiciones existentes entre los estados q2 y q¿). Estas cadenas pueden representarse mediante la expresión regular bb*(a.a*bb*)*. Este lenguaje puede representarse como la unión de dos expresiones regulares. Así, L{ M) puede representarse mediante la siguiente expresión regular: (a(a + b)* + bb*{aa*bb*)*) 2. Obtener la expresión regular equivalente a M mediante el método de eliminación de estados. Como el autómata tiene más de un estado de aceptación, se considera que M será equivalente a la unión de las expresiones regulares de los siguientes autómatas: a
La expresión regular correspondiente al lenguaje del autómata de la izquierda es: (b)*. Por su parte, la expresión regular correspondiente al lenguaje del autómata de la derecha se obtiene eliminando en primer lugar, el estado q3. Hecho esto, el diagrama de transiciones resultante es:
Este diagrama de transiciones sería equivalente al siguiente diagrama: b + aa*b
56
Propiedades
de
l as
operaciones
de
Por lo que la expresión regular equivalente es:
las
expresiones
regulares
+ aa*b)*
Uniendo las expresiones regulares obtenidas del autómata de la derecha y del de la izquierda, la expresión regular equivalente al autómata M es: 0.(0 + b)* + b(b + aa*b)* Se puede apreciar que las expresiones regulares obtenidas por uno y otro medio no coinciden, pero sin embargo, son equivalentes, esto es, representan el mismo lenguaje.
_______ o _______
4.5.
Propiedades de las operaciones de las expresiones regulares
Las operaciones entre expresiones regulares y entre los lenguajes que representan, cumplen una serie de propiedades que se enumeran a continuación [Hopcroft et al., 20081. L y Al dos lenguajes: Así, sean ■ Conmutativa: con respecto a la unión. Así, L + M — M + L ■ Asociativa: con respecto a la unión. Así (
+
+
(AI +
■ Asociativa para la concatenación: (
L ■AI)
■ Elemento identidad y elemento nulo:
• 0 + L = L + 0 ya que 0 es el elemento identidad para la unión. •
e ■L — L ■e = y La que e es el elemento identidad para la concatenación.
• 0 -L = L- 0 = 0 ya que 0 es el elemento nulo para la concatenación. a Ley distributiva por la izquierda de la concatenación respecto de la unión: L ■ (AI + N)= L ■Al + L ■N ■ Ley distributiva por la derecha de la concatenación respecto de la unión: (AI + N ) ■L = AI ■L + N ■L
EXPRESIONES
57
REGULARES
■ Ley de idempotencia para la unión: L + L —L m Leyes relativas a las clausuras:
•
(L * )= L*
• 0*= e
• e* = e
4.6.
Ejercicios
(I) Dada la gramática G definida de la siguiente manera: = ({5, A, {0,1}, S, P) donde S es el símbolo inicial de la gramática y P es el siguiente conjunto de producciones: S-+A1B A ->• (L4|e B -> 0B|lS|e Indicar la expresión regular que representa al lenguaje L(G) (2) Dado el alfabeto E = {o, b, c), indicar la expresión regular que representa el lenguaje que acepta el autómata definido de la siguiente manera: M
={{?0t 9i, <72• 3}E. 5, (jo, {93})
donde ó es la función de transición definida mediante el siguiente diagrama de transiciones:
(3) Dado el alfabeto E = {a, 6}, se considera L\ el lenguaje representado por la siguiente expresión regular a(a + b)* y L 2 el lenguaje representado por la expresión regular (« + b)*b. Indicar las expresiones regulares que representan los lenguajes L\ \J L--¿y
L\ n
L j o-
58
Ejercicios
(4) Dado el alfabeto E = {0,1}, construir un autómata finito determinista, que acepte el lenguaje representado por la siguiente expresión regular: ((01 + 10)( 11)*0)‘ (01 + 10)( 11)* (5) Dado el alfabeto E = {a, 6}, construir un autómata finito determinista, que acepte el lenguaje representado por la siguiente expresión regular: baa* + c*(a + b) (6) Dado el alfabeto E = {0,1}, indicar la expresión regular equivalente al autómata finito determinista definido de la siguiente manera: M = ({ry0, f/i, 172, 53}, E, ó, fy0. {ífo}) donde 5 es la función de transición definida mediante el siguiente diagrama de transiciones:
1
Capítulo 5__________________
Propiedades de los lenguajes regulares y lenguajes no regulares Hasta el momento, se han visto los lenguajes regulares como aquellos lenguajes que pueden ser reconocidos por los autómatas finitos, generados por las gramáticas regulares o representados por las expresiones regulares. Estos lenguajes tienen una serie de propiedades importantes que se verán en este capítulo. Además, se empezará con el estudio de los lenguajes que no son regulares, esto es, los lenguajes para los que no es posible definir un autómata finito que los reconozca. De esta manera se comenzará a introducir la jerarquía de lenguajes que se estudiarán en el resto del texto, conocida como Jerarquía de Chomsky.
5.1.
Propiedades de los lenguajes regulares
En este apartado se introducirán algunas de las propiedades que cumplen los lenguajes regulares. Estas propiedades se conocen como propiedades de clausura ya que establecen cuándo operando lenguajes regulares, el resultado sigue siendo un lenguaje regular. En particular, los lenguajes regulares cumplen, entre otras, las siguientes propiedades de clausura: — La unión de dos lenguajes regulares es regular. — El complementario de un lenguaje regular es regular. — La intersección de dos lenguajes regulares es regular. — La concatenación de dos lenguajes regulares es regular. 59
60
Propiedades
de
lo s
lenguajes
regulares
— La estrella de Kleene de un lenguaje regular es regular. — La diferencia de dos lenguajes regulares es regular. En este texto se verán estas propiedades a través de ejemplos prácticos. Las demostraciones formales pueden encontrarse en [Brookshear, 1993] y en especial en [Hopcroft et al., 2008].
5.1.1.
Unión de lenguajes regulares
Dados dos lenguajes regulares y L 2,se cumple que regular. Para demostrar esta propiedad, es necesario probar que es posible construir un autómata finito que reconozca el lenguaje unión a partir de los autómatas finitos que reconocen cada uno de los lenguajes. En la figura 5.1 se muestra el esquema general de construcción del autómata finito que reconoce la unión de dos lenguajes regulares. Básicamente, el proceso consiste en hacer que el autómata que reconozca la unión de dos lenguajes L\ y L 2, debe reconocer cadenas del lenguaje L\ (por lo que simulará las mismas transiciones que el autómata que reconoce L\) o puede reconocer cadenas del lenguaje L2(por lo que sim el autómata que reconoce L >). Por tanto, sean M y P dos autómatas finitos que reconocen los respectivamente. Se define R el autómata que acepta el lenguaje L\ U L2 de la siguiente manera: R =
(Q, T
, , 6
, p
, F
)
donde: — Q — {p} U Q\ U Q2 donde Qi y Q2 son el conjunto de estados de AI y P respectivamente y pes un nuevo estado que cumple que ^ y — £ = Ei U £ 2 donde £1 y £ 2 son los alfabetos de M y P respectivamente. — F = iU F F2 donde F { y F2 son los conjuntos de estados de aceptación de M y P. Además, se cumple que pG F ise €
PROPIE DADES
DE
LO S
LENGUAJES
REGULARES
Y
LENGUAJES
NO
REGULARES
61
desde el estado inicial de los autómatas de L, y Lj
Figura 5.1: Esquema general de construcción del autómata finito que reconoce la unión de dos lenguajes regulares.
E jemplo 5.1
Dado el alfabeto E = {a. b}, se definen los siguientes dos lenguajes regulares: ■ Li el lenguaje que acepta el autómata finito M = ({
b
Q a Figura 5.2: Diagrama de transiciones del autómata que reconoce el lenguaje formado pollas cadenas con un número impar de a ’s.
■ L2 el lenguaje que acepta el autómata finito P = ({2,
62
Propiedades
a
de
l os
lenguajes
regulares
a
Figura 5.3: Diagrama de transiciones del autómata que reconoce el lenguaje formado por las cadenas con un número impar de b’ s.
El autómata que reconozca el lenguaje unión U L2, deberá reconocer cadenas que o bien tengan un número impar de a’s o bien tengan un número impar de s.Siguiendo el esquema general mostrado en la figura 5.1 y en el proceso descrito en este apartado, el autómata finito que acepta el lenguaje L, se define de la siguiente manera: Q = ({p, 5o, 91,92,93}, {«,
}5 ,{ p , b
donde 6 es la función de transición que se define mediante el diagrama de transiciones mostrado en la figura 5.4. b
b
Figura 5.4: Diagrama de transiciones del autómata que reconoce el lenguaje unión de los autómatas de las figuras 5.2 y 5.3.
Las transiciones desde el estado inicial pd e transiciones definidas para q0 y q¿ en los autómatas M y P respectivamente. Así, si en los autómatas M y P, están definidas las siguientes transiciones:
se
P ropiedades
de
lo s
lenguajes
regulares
<5i (f/0, a) = ?i Sliqo-.b) = qo
y
lenguajes
no
regulares
63
h ( < ,b) = qa 62{q 2 ,a) = q-2
Entonces, en el autómata que reconozca la unión se deberán definir las siguientes transiciones: S(p,a) = qi b{pi b) —qo
5(p,b) = q3 S {p ,a )= q 2 o
5.1.2.
Complementario de un lenguaje regular
Dado un lenguaje regular L, el complementario de L también es un lenguaje regular. Así, dado un alfabeto E, sea M = (Q, E, <5, q0, F) un autómata finito que cumple que L — L(M ). El siguiente autómata P = (Q,E, 5, q0, Q — F se ve, el autómata finito que reconoce el lenguaje complementario, coincide con M salvo por el conjunto de estados de aceptación. En P el conjunto de estados de aceptación, es el complementario de F. Por tanto, para construir el autómata finito que acepta el lenguaje complementario de un lenguaje regular dado, basta con convertir los estados de aceptación de M en estados de no aceptación y viceversa. Ejemplo 5.2
Dado el alfabeto E, sea M el autómata finito definido de la siguiente manera:
M = ({
q\,q , } ^ E ,S,qQ, {2})
donde 5 es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.5. L(M ) es el lenguaje formado por las cadenas que contienen la subcadena ab. L es el lenguaje formado por las cadenas que no contienen la subcadena ab. El autómata finito que acepta L se define de la siguiente manera: P = ({
64
Propiedades
b
a
de
l os
lenguajes
regulares
a
Figura 5.5: Diagrama de transiciones del autómata que reconoce el lenguaje formado por todas las cadenas que contienen la subcadena ah.
Figura 5.6: Diagrama de transiciones del autómata que reconoce el lenguaje formado por las cadenas que no contienen la subcadena ab.
5.1.3.
Intersección de dos lenguajes regulares
Dados dos lenguajes regúlales L\ y L2, la intersección de estos lenguajes, L\ fl L-¿ es un lenguaje regular. L \fl L2 es el lenguaje formado por las cadenas qu como a Z/2Esta propiedad es una consecuencia de las propiedades de los siguientes operadores: unión, intersección y complementario. Así, la intersección de dos lenguajes cumple que: L\ f”l
L2—¿ i U Lo
Puesto que ya se ha visto que tanto el complementario como la unión de lenguajes regulares, sigue siendo regular, la intersección de lenguajes regulares también es regular. El procedimiento para construir la intersección de dos lenguajes puede definirse de la siguiente manera. Dado un alfabeto E, sean My y M 2 los siguientes autómatas finitos: A/i = (<5i, E, <5i, f/a, Fi);
il/2 = (C?2. E. 52, r/¿2. F>)
el autómata que acepta L(My) fl L(M 2) se define de la siguiente manera:
Lntrrsrcción = (Q,
E, 5,qa, F)
donde: — Q = Q] x Q2. Esto es, los estados de M intersección son los pares formados con los estados de M\ y Mo.
PROP IEDADE S
DE
L OS
LENGUAJES
REGULARES
Y
LENGUAJES
NO
REGULARES
65
— qo — u ,q { <7*2)- El estado inicial de Mlnl(,r¡secci¿n es el par formado por los estados iniciales de Mi y M 2. — F = Fi x F2. Los estados finales de estados finales de Mi y M 2.
son los pares formados con los
— La función de transición se define de la siguiente manera: (5(pi, a), S(p2,a)) para todopx e
= Qu p2 € Q
Ejemplo 5.3
Dado el alfabeto E = {o. manera:
b},sean M y L los autómatas finitos defi
- M = ({go, (¡\. q2, ga}, E. 6¡u.q0. {q>. (73}) donde es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.7. Puede verse que L(M ) acepta las cadenas formadas por al menos un símbolo a, seguidas por al menos un símbolo b y terminadas en cero o más símbolos c. L(M) puede representarse mediante la expresión regular: aa*bb*c*. -
L =({ po.P i ,P 2 } , ^ , S l ,P o: fe } ) donde SL es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.8. Puede verse que L(L) acepta las cadenas formadas por cero o más símbolos c, seguidas de al menos un símbolo a y seguidas por uno o más símbolos b. L(L) puede representarse mediante la expresión regular: c'*aa*bb*. a
b
c
Figura 5.7: Diagrama de transiciones del autómata finito que reconoce el lenguaje representado por la expresión regular aa*bb*c*.
El lenguaje intersección L = L(M ) fl L(L) estará formado por todas aquellas cadenas que pertenecen tanto al lenguaje L(M ) como al lenguaje L{L). Por tanto, L estará formado por las cadenas que comienzan por uno o más símbolos a, seguidas por uno o más símbolos b. Las cadenas de L no contendrán ningún símbolo c, puesto que en los lenguajes L(M ) y L(L), no coinciden la posición en que deben aparecer los símbolos c’s. Un autómata finito que reconozca L puede definirse de la siguiente manera:
66
Propiedades
de
lo s
lenguajes
regulares
Figura 5.8: Diagrama de transiciones del autómata finito que reconoce el lenguaje representado por la expresión regular c*aa*bb*. Q = ( { ro ,ri ,r2} , £ ,5Q, {r2}) donde la función de transición 5q , se define mediante el diagrama de transiciones de la figura 5.9. Así mismo, L puede representarse mediante la expresión regular aa*bb*. a
b
- 0 Figura 5.9: Diagrama de transiciones del autómata finito que reconoce el lenguaje representado por la expresión regular a,a*bb*.
El autómata intersección también se podría haber definido siguiendo el procedimiento visto anteriormente. Así: P M n L
i,Q P i
Qinici ali
donde:
12 ,P 2 )} (sólo se han definido los estados accesibles). — Qp = {{ qo ,P q ), (í/ i ,P i ), (<7i ,P 2), {( Qinicial =
—
(*?0' jPo)-
í ‘ ,P2)}Fp = {(<72, P ). (Q 2
La función de transición 5 se define mediante el siguiente diagrama de transiciones:
PROPIEDADES
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
67
El diagrama de transiciones de este autómata, coincide con el diagrama de transiciones de la figura 5.9. o
5.1.4.
O
Sean dos lenguajes regulares, L\ y L2. Si el alfabeto sobre el que se define L\ no coincide con el alfabeto sobre el que se define ¿Qué cadenas estañan incluidas en el lenguaje L t D L2? _______________
O
¿Cuál sería el lenguaje que acepta el autómata M si se modifica el diagrama de transiciones de la figura 5.7 eliminando el estado y añadiendo un bucle con el símbolo en el estado ? _____
Concatenación de dos lenguajes regulares
Dados dos lenguajes regulares Li y L2, se cumple que Li • L2 también es un lenguaje regular. Para demostrar esta propiedad, se prueba que es posible construir un autómata finito que reconozca el lenguaje concatenación a partir de los autómatas finitos que reconocen cada uno de los lenguajes. Así, cualquier cadena w perteneciente a L \- L puede de w\ y w2 tales que W\ € La y w2 € L2. En la figura 5.10 se muestra el esquema general de construcción del autómata finito que reconoce la concatenación de dos lenguajes regulares. Básicamente, el proceso consiste en hacer que el autómata que reconozca la concatenación de los dos lenguajes Li y L2, debe reconocer en primer lugar, la subcadena € Li (por lo que simulará las mismas transiciones que el autómata que reconoce Li) y a continuación debe reconocer la subcadena w2 € L2 (por lo que simulará las mismas transiciones que el autómata que reconoce L2). Los estados finales del autómata que reconoce Li serán de aceptación si y sólo si, la cadena vacía pertenece a L2. Esto es así, puesto que la cadena vacía es el elemento identidad de la operación de concatenación. Así, dados dos autómatas finitos definidos de la siguiente manera: — M — (Q m , E;V/. dM,qo> F m ) donde: 6M es la función de transición de M, QM es el conjunto de estados de M , E m es el alfabeto de M y q0 es su — P = [Qp, E p,5p,po, F q ) donde pe S s la función de transición de de estados de P, Ep es el alfabeto de M y po es su estado inicial.
68
P ropiedades
Será estado final sólo si
de
l os
lenguajes
regulares
L2
autómata de L2
Figura 5.10: Esquema general de construcción del autómata finito que reconoce la concatenación de dos lenguajes regulares.
Entonces, L{M ) • L{P ), puede ser reconocido mediante el siguiente autómata finito: R
=
(
Q p , T, m U Ep, Q m U
q0,
donde F r = Fp si e ^ L(M ) y F r = p U F F m en otro c siguiendo el proceso general mostrado en la figura 5.10. Las transiciones desde los estados finales del autómata M al estado inicial del autómata P, se definen siguiendo el mismo procedimiento que en el autómata unión, cuando se unía el nuevo estado inicial a los estados iniciales de los autómatas que formaban la unión. E jemplo 5 .4
Dado el alfabeto E = {n, b, c}, sean los lenguajes Li y Z,2 representados respectivamente por las siguientes expresiones regulares: aa*bb* y c*a*b*. Los autómatas finitos que reconocen estos lenguajes pueden definirse de la siguiente manera: — M = ({í0, r i , r 2}, E, Í a/, ?’o, {r¿}), donde 6A¡ es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.9. — P = {{p^PuP-i}, L,ó,po, {po-Pi,í>2})> donde 5p es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.11. ¿Qué diferencia existe entre los lenguajes de los autómatas cuyos diagramas de transiciones se muestran en las figuras 5.8 y 5.11?
PROPIEDADES
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
69
a
Figura 5.11: Diagrama de transiciones del autómata finito que reconoce el lenguaje representado por la expresión regular c*a*b*. Siguiendo el esquema general mostrado en la figura 5.10, un autómata que acepte el lenguaje concatenación de Li y L2, L= L\ ■L2, se define de la sigui Q = ({r0, r 1, r 2, p0, Pi, P 2}, E , SQ, {r2, p0, ih , P 2}) donde 6 q es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.12: a
Figura 5.12: Diagrama de transiciones del autómata finito que reconoce el lenguaje concatenación de los lenguajes aa*bb* y c*a*b*.
Puesto que la cadena vacía pertenece a L2, el estado r 2 sigue siendo de aceptación. Las transiciones que parten desde r 2 se han definido teniendo en cuenta las transiciones que partían del estado inicial del autómata P. Así: — Si del estado p0 había una transición definida con el símbolo c al estado po, también desde el estado r2 se definirá una transición al estado p0 con el símbolo c. — Si del estado p0 había una transición definida con el símbolo b al estado p2, también desde el estado r-, se definirá una transición al estado p-2 con el símbolo b.
70
Propiedades
de
l os
lenguajes
regulares
Una vez procesada cada cadena de L, el autómata que acepte la estrella de Kleene debe poder reconocer más repeticiones de las cadenas del lenguaje
Autómata para Lj Un nuevo estado inicial que es de aceptación ya que la estrella de Kleene de cualquier lenguaje contiene la cadena vacía.
Figura 5.13: Esquema general de construcción del autómata finito que reconoce la estrella de Kleene de un lenguaje regular.
— Si del estado p0 había una transición definida con el símbolo a al estado pi, también desde el estado r 2 se definirá una transición al estado pi con el símbolo a.
_______ o _______
5.1.5.
Estrella de Kleene de un lenguaje regular
Dado un lenguaje regular L, la estrella de Kleene de este lenguaje, L*, también es un lenguaje regular. Ya se ha visto que la estrella de Kleene de un lenguaje está compuesta por cero o más repeticiones de las cadenas del lenguaje. Por tanto, un autómata que acepte la estrella de Kleene de L, deberá aceptar cualquier repetición de las cadenas de L. El esquema general de construcción de un autómata que acepte L*, se basa en esta idea (ver figura 5.13). Así, dado el alfabeto E, sea M un autómata finito que reconoce un lenguaje regular L. Si M se define de la siguiente manera: M = (Q, E. q0, F), entonces el autómata P que acepta L* se define: P = {Q,Y,,5Q,ii,F U q ) donde:
PROPIEDADES
de
lo s
lenguajes
regulares
y
lenguajes
no
regulares
71
■ El nuevo estado inicial q es de aceptación, puesto que la estrella de Kleene de cualquier lenguaje contiene la cadena vacía. ■ La función de transición 5q coincidirá con la función de transición del autómata M , salvo que ahora se deberán añadir las transiciones que permitan procesar las repeticiones de las cadenas. Así, desde los estados ñnales de M se definirán las transiciones que simulen las transiciones que partían en M desde el estado inicial. Ejemplo 5.5
Dado el alfabeto £ = (a, b},sea L el lenguaje que acepta el autómat de la siguiente manera: M = ({qo>9i}t S, 5m , ?oi Í9i}) donde ó es la función de transición cuyo diagrama de transiciones se muestra en la figura 5.14. L(M) es el lenguaje formado por todas las cadenas que comienzan por cero o más y terminan por una única a (L(M ) puede representarse mediante la expresión regular b
Diagrama de transiciones del autómata que reconoce el lenguaje representado por la expresión regular b*a. Figura 5.14:
La estrella de Kleene de L(M ), puede representarse mediante la expresión regular (b*a)*. El autómata que acepta L(M )*, se define de la siguiente manera: M* = ({, q0,
£ ,
6M *,q, {q,
donde la función de transición S m * se define mediante el diagrama de transiciones de la figura 5.15. o
I
72
ntroducción
a
los
lenguajes
no
regulares
b
Figura 5.15: Diagrama de transiciones del autómata que reconoce el lenguaje representado por la expresión regular (b*a)*.
En estos apartados se han presentado los procedimientos para construir los autómatas finitos que reconocen la unión, la concatenación, la intersección y la estrella de Kleene de lenguajes regulares. No obstante, en ocasiones, es más directo la definición de los autómatas a partir de la propia definición del lenguaje y de las cadenas que lo forman. Por ejemplo, dado el alfabeto E = {a, 6}, sea Li el lenguaje formado por las cadenas que contienen un número par de a ’s y L2 el lenguaje formado por las cadenas que contienen un número impar de o.’s. Es claro que ¿ i U = E* y por tanto, es fácil construir directamente el autómata finito que reconozca la unión.
5.2.
Introducción a los lenguajes no regulares
Se ha visto hasta el momento que los autómatas finitos ejecutan una transición teniendo en cuenta únicamente el estado actual y el símbolo de entrada. Intuitivamente, este comportamiento implica que no tienen memoria del total del camino recorrido. Así, dado el alfabeto E = {a, 6} sea M el autómata definido de la siguiente manera: M = ({(/o. q\, fe} ,£, S, ®>, {*}) donde 6 es la función de transición definida mediante el diagrama de transiciones de la figura 5.16. L(M ) es el conjunto de cadenas que empiezan por cualquier número de s (al menos un símbolo b) y terminadas por un único símbolo a. Este autómata, al aceptar cualquier cadena del lenguaje, no es capaz de controlar el número de símbolos b que ha leído antes de alcanzar el estado q¿.
a
Dado el lenguaje L(M ) y teniendo en cuenta lo visto en el capítulo anterior, /.cuál sería la expresión regular que representa ¿(A/)?_____
PROPIEDADES
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
73
b
Figura 5.16: Diagrama de transiciones del autómata finito que reconoce el lenguaje compuesto por las cadenas compuestas por cualquier número de s (al menos un símbolo b) y terminadas en un único símbolo a. De manera informal, se puede afirmar que aquellos lenguajes para los que es necesario recordar el camino al llegar al estado de aceptación, no pueden ser reconocidos por un autómata finito. Como primer ejemplo, dado el alfabeto E = {0,1}, se considera L el lenguaje definido de la siguiente manera: L = {0"1" : n > 0}. Las cadenas pertenecientes a L deben contener el mismo número de O’s que de l ’s. En este caso, si la longitud de la cadena está acotada L se podría reconocer mediante un autómata finito. De hecho, el autómata de la figura 5.17 reconoce cadenas con el mismo número de O’s y l ’s, pero siempre que la cadena tenga una longitud de a lo sumo seis símbolos. En este caso, el lenguaje es regular puesto que se puede controlar mediante estados, el número de O’s leídos, y comprobar así que coincide con el número de l ’s.
Figura 5.17: Autómata finito que reconoce el lenguaje L = {0” l n : 0 <
< 3}.
En el caso del lenguaje L = {0nl rt : n > 0} la longitud de las cadenas contenidas en L puede ser arbitrariamente grande. Por esta razón, no se puede controlar mediante estados el número de símbolos leídos. Esto es así, porque para n arbitrariamente grande, se puede encontrar un valor de n mayor que el número de estados del autómata. Para leer una cadena de longitud mayor que el número de estados del autómata, éste necesitaría al menos un bucle
I ntroducción
74
a
l os
lenguajes
no
regulares
para recorrerla. Un autómata finito, no puede controlar el número de veces que se recorre un bucle. Por tanto, en este ejemplo, se perdería el control sobre el número de O’s leídas de la entrada. Resultaría imposible entonces, controlar que el número de l ’s coincidiera con el número de O’s. Indicar la diferencia entre el lenguaje L = {Onl " ,n lenguaje reconocido por el siguiente autómata: 0
> 0} y el
1
De hecho, en los bucles de los estados y no es posible controlar cuántas O’s o cuántas l ’s se han leído. Por ejemplo, ejecutar este autómata con las cadenas 0011,000,00111 y 11100. ______________ En base a esta idea, a continuación, se muestra el lema que permite demostrar que un determinado lenguaje es no regular. Este lema enuncia una propiedad que deben cumplir todos los lenguajes regulares que contienen un número infinito de cadenas. Lema de Bombeo para los lenguajes regulares: Sea L un lenguaje regular. Existe entonces, una constante n (que depende de L) tal que, para toda cadena to perteneciente a L con |u>| > n, se puede descomponer w en tres cadenas w = xyz, tales que: (1)
y ¿ c-
(2) \xy\ < n. (3) Para todo k > 0, la cadena xy kz también pertenece a L. A continuación, se muestra un ejemplo de uso del lema de bombeo. Dado un determinado lenguaje, se prueba que no es regular demostrando que no es posible encontrar la manera de descomponer cualquier cadena del lenguaje, en tres subcadenas de manera que se cumplan las tres condiciones del lema del bombeo. Si se considera como ejemplo, el lenguaje L descrito anteriormente. Para cualquier cadena del lenguaje que se intente descomponer en tres subcadenas x, y y z, como la subcadena y ^ e, existen varias posibilidades: ■ y está compuesto sólo por O’s
PROPIEDADES
■
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
75
yestá compuesto sólo por l ’s
■ y está compuesto por O’s y l ’s Se ve que en todos estos casos, si se bombea la subcadena y, esto es, si se repite k veces, ya no podría coincidir el número de O’s y l ’s. En este texto no se profundizará sobre la aplicación del lema de bombeo para demostrar que un lenguaje no es regular. Por el contrario, únicamente se hace hincapié en que el uso del lema de bombeo para lenguajes regulares, es demostrar que un lenguaje es no regular. Dado un alfabeto E = {0,1}, a continuación, se muestran algunos ejemplos adicionales de lenguajes no regulares: — El lenguaje L, formado por todas las cadenas que tienen el mismo número de O’s y l ’s. Este lenguaje es distinto del definido anteriormente L0ni" = {O"!11, n > 0} ya que en L no se exige ningún orden en los símbolos. Así, las siguientes cadenas pertenecen a L: 1010, 0101, 110001....... Es claro que todas las cadenas de Lom» pertenecen a L, pero no al contrario (por ejemplo, 1010 ^ L0nV<). Por tanto, Lo"i" C L. — L= {0nl m2n : n. m > 0}. Este caso es similar al lenguaje Loni« • En este caso, deben coincidir el número de O’s y 2’s. — L = {0nl m,n < m}. Las cadenas de este lenguaje no tienen por qué tener el mismo número de O’s que de l ’s. No obstante, sigue siendo necesario controlar el número de símbolos leídos para comparar que el número de O’s sea menor que el número de l ’s. — L = {0nl 2n}. Las cadenas pertenecientes a L deben contener el doble número de l ’s que de O’s. — El conjunto de cadenas de ceros y unos cuya longitud es un cuadrado perfecto. — El conjunto de palíndromos, esto es, cadenas que se pueden leer de izquierda a derecha o de derecha a izquierda. A modo de ejemplo, las siguientes cadenas pertenecen al lenguaje de los palíndromos: 0110,101 101,11001 1,... Una vez visto que existen lenguajes no regulares, esto es, lenguajes para los que no se puede definir ningún autómata finito que los reconozcan, en la siguiente sección se va a introducir, la relación que existe entre las diferentes clases de lenguajes que se pueden definir para un alfabeto E.
I ntroducción
76
5.3.
a
la
jerarquía
de
C homsky
Introducción a la jerarquía de Chomsky
Dado un alfabeto E, cada lenguaje definido sobre este alfabeto puede ser de una determinada clase. Así, en primer lugar se han estudiado la clase de los lenguajes regulares, que son aquellos que pueden ser reconocidos por autómatas finitos (deterministas o no deterministas), generados por gramáticas regulares o bien representados por expresiones regulares. Se han visto igualmente, ejemplos de lenguajes que no son regulares. En el siguiente capítulo, se empezará el estudio de la siguiente clase de lenguajes, denominada lenguajes independientes del contexto. Los lenguajes independientes del contexto, son reconocidos por los llamados autómatas a pila. Aunque se insistirá en ello en los siguientes capítulos, es importante, introducir ya las relaciones que existen entre las diferentes clases de lenguajes. Así, todo lenguaje regular es a su vez, un lenguaje independiente del contexto. Esto no ocurre al contrario, esto es, existen lenguajes independientes del contexto que no son regulares. Al final de este texto, se introducirán otra clase de lenguajes, los lenguajes recursivamente enumerables, que son aquellos lenguajes que son reconocidos por máquinas de Turing. Este tipo de relación entre clases de lenguajes, permite la definición de una jerarquía de lenguajes. Esta jerarquía se denomina Jerarquía de Chomsky y se muestra en la figura 5.18. A lo largo de lo que resta de texto, se irá completando dicha jerarquía con los diferentes tipos de máquinas y gramáticas que reconoce cada clase de lenguaje. Es importante destacar que la relación entre las diferentes las clases de lenguajes, no influye en la relación de los lenguajes en sí. Esto es, dado un alfabeto E = (0,1}, se consideran los siguientes lenguajes: — El lenguaje E*. Ya se ha visto que E* es un lenguaje regular que puede ser reconocido por el autómata cuyo diagrama de transiciones se muestra en la figura 5.19. — El lenguaje L = {07T n, n > 0} que ya se ha visto anteriormente que es un lenguaje no regular. Sin embargo, se cumple que
5.4.
LCE*, puesto que todas las cade
Ejercicios
(1) Dado el alfabeto E = {a, b}. los lenguajes L { y L2 se representan por las expresiones regulares a*b y Ifub respectivamente. Definir:
PROPIEDADES
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
77
Figura 5.18: Esquema general inicial de la jeraquía Chomsky para lenguajes.
ü
1 Figura 5.19: Diagrama de transiciones del autómata que acepta el lenguaje E*.
a) Los autómatas finitos que reconozcan
y L2.
b) El autómata finito determinista que reconozca L\ U L2. c) El autómata finito que reconozca L\ •L2. d) El autómata finito que reconozca L*. e) El autómata finito que reconozca L\ fl L 2. (2) Dado el alfabeto E = {a. &}, sea L el lenguaje representado por la expresión regular b*aa*b(a + b)*. Construir el autómata finito que reconozca L*. (3) Dados los lenguajes: L = {0'T '\ ?>. > 0} y M = {0"lm,n, siguientes cuestiones:
> ü}, responder las
78
EJERCICIO'
a) Explicar qué diferencia existe entre los lenguajes L y M. b)Indicar si es verdadero o falso que L C M . Razonar la respuesta. c) Indicar si es verdadero o falso que M C L. Razonar la respuesta.
d) Indicar si es verdadero o falso que M = L. Razonar la respuesta. (4) Indicar cuál de los siguientes lenguajes no es regular: a) L = {«"fe"4:
n+ m > 5,« > 0. m > 0}.
b) L —{anbm : m > 5n, n > 0}. c)
L= {o" : jf¡ es entero}.
(5) Dado el alfabeto E = sea L x el lenguaje que representa la siguienti expresión regular (x + y)(x + y)*. Sea L 2 el lenguaje que acepta el autómati M = ({p, q}, E. 6,p, {g}), donde la función de transición S se representa mediant* el siguiente diagrama de transiciones: x
Indicar cuál de las siguientes afirmaciones es verdadera: fl) L[ —¿2b) Lx C L2. c) L2 C
d) Lx ±
L x .
L2.
(6) Sea L el lenguaje que reconoce el autómata M definido a continuación: M - ({p,
q, r, ,sí}, {0,1}, ¿,p, { })
donde S es la función de transición definida mediante el siguiente diagrama d< transiciones:
Pr o p i e d a d e s
de
l os
lenguajes
regulares
y
lenguajes
no
regulares
79
o) Describir informalmente las cadenas que pertenecen a L. b) Indicar si es verdadero que L c L i donde L\ = {0Ttl T,l0p : n, m, p > 0}. c) Indicar si es verdadero que
Lf l
(7) Dado el alfabeto £ = {0,1}, el lenguaje L se define como L = {w\w contiene un número par de 0’s, o exactamente dos l ’s }. Indicar qué expresión regular genera el lenguaje L; a) (1*01*01*0*) + (0*10*10*) b) (1*01*01*)*+ (0*10*10*) c) (10101)* + (0*10*10*) (8) Dada la siguiente expresión regular: (((a + b)c*(a + b)) + (( autómata finito: c
+ ab)*))* y el siguiente
-1
a Indicar qué valores deben tener Etiqueta-1 y Etiqueta-2 para que el autómata acepte el mismo lenguaje que la expresión regular:
80
Ej e r c i c i o s
a) Etiqueta-l=a, b Etiqueta-2=a (esto es, en esta opción, en la transición etiquetada con Etiqueta-1, se pueden encontrar dos posibles valores a o b. Esta definición es equivalente a definir dos transiciones desde el estado r/2 al estado una etiquetada con el símbolo a y otra etiquetada con el símbolo b). b) Etiqueta-1=c Etiqueta-2=«. c) Etiqueta-l=o. Etiqueta-2=o, b (esto es, en esta opción, en la transición etiquetada con Etiqueta-2, se pueden encontrar dos posibles valores o Esta definición es equivalente a definir dos transiciones desde el estado q.\ al estado qx una etiquetada con el símbolo a y otra etiquetada con el símbolo b). (9) Indicar si el lenguaje L(G) es regular, donde G es la gramática definida de la siguiente manera: G = ({S', A, B ), {0,1}, S, P) donde S es el símbolo inicial de la gramática y P es el siguiente conjunto de producciones: S 4 A l B A> CL41|e
Capítulo 6
____________________________________________
Lenguajes y gramáticas independientes del contexto Una vez vista la clase más sencilla de lenguajes que se pueden reconocer con máquinas de estados finitos, en este capítulo, se presenta una clase más amplia de lenguajes que engloba a los lenguajes regulares. Se trata de los lenguajes independientes del contexto. En primer lugar, se definirán las gramáticas independientes del contexto que generan este tipo de lenguajes. Así mismo, se verá una forma de representar las gramáticas independientes del contexto conocida como Forma Normal de Chomsky. En el siguiente capítulo, se presentarán los autómatas que pueden reconocer los lenguajes independientes del contexto, conocidos como autómatas a pila.
6.1.
Definición de las gramáticas independientes del contexto
Al igual que las gramáticas regulares, las gramáticas independientes del contexto están formadas por: {1) Un conjunto de símbolos terminales. (2) Un conjunto de símbolos no terminales (que actúan a modo de variables). (3) Un símbolo inicial. (4) Un conjunto finito de producciones que representan la definición recursiva de un lenguaje. En el caso de las gramáticas independientes del contexto, el lado izquierdo de las producciones debe contener únicamente un símbolo no terminal.Por otra parte, 81
82
De f i n i c i ó n
de
las
gramáticas
independientes
del
contexto
el lado derecho de las producciones no tiene ninguna restricción al contrario de lo que ocurría con las gramáticas regulares. Los elementos de una gramática se pueden representar mediante la cuádrupla:
G = (V, T, P, S) donde G es la gramática independiente del contexto, V es el conjunto de símbolos no terminales, T es el conjunto de símbolos terminales, P es el conjunto de producciones y S es el símbolo inicial. Cada producción puede aplicarse cuando aparezca el no terminal de su lado izquierdo, independientemente de la cadena en la que aparezca dicho no terminal. Es por ello, que estas gramáticas reciben el nombre de gramáticas independientes del contexto.
E jemplo 6.1 Dado el alfabeto E = {a;, y},sea L el lenguaje definido de {.t ny n : n> 0}. Una gramática independiente del contexto que genere L, puede definirse de la siguiente manera: G = ( { S } , { z , y } 1S ,P ) donde S es el símbolo inicial de la gramática y P es el conjunto de producciones que se muestra en la figura 6.1. S —>• S -F x y Figura 6.1: Gramática independiente del contexto para el lenguaje L = {xnyn : n > 0}.
o Las derivaciones de una gramática independiente del contexto, se realizan de igual manera que las derivaciones de las gramáticas regulares. Así, a partir del símbolo inicial de la gramática, se van sustituyendo los no terminales por los lados derechos de las producciones en las que este no terminal se encuentra en el lado izquierdo. De nuevo, se denominará forma sentencial a cada cadena de terminales y no terminales resultantes de cada paso de la derivación. Igualmente, se utiliza el símbolo de relación =*- para separar cada paso de la derivación.
LENGUAJES
Y GRAMÁTICAS
INDEPENDIENTES DEL CONTEXTO
83
El conjunto de cadenas de termínales que se derivan desde el símbolo inicial de una gramática independiente del contexto componen el lenguaje de la gramática L(G). Las derivaciones en las gramáticas independientes del contexto presentan sin embargo, ciertas particularidades que se verán en la siguiente sección. E jemplo 6.2
Dada la gramática de la figura 6.1, a continuación se muestran algunos ejemplos de derivación: S ->
S - t x y
xxyy
S - t x S y „
~
S Y.vSy
ry
S -> x S y = >
S —¥ x S y = >
S- ±x y
b —>xx by y => xx xy yy q
& txSy
^
S txy
b —>xx b y y => b —y xx x b y y y => x x x xyyy y
En este caso, algunos ejemplos de formas sentencíales obtenidas a lo largo de estas derivaciones son: x xS yy , x S y o xxxS yyy . o
La única diferencia, por tanto, entre las gramáticas independientes del contexto y las gramáticas regúlales es la forma que presentan en el lado derecho de las producciones. En la tabla 6.1, se muestra la comparación entre la estructura de las producciones de las gramáticas independientes del contexto y las gramáticas, regulares.
Lado izquierdo Lado derecho
Gramáticas Regulares
Gramáticas Independientes del contexto
Un único no terminal - Un único terminal - Un terminal seguido de un no terminal - La cadena vacía
Un único no terminal Cualquier cadena de símbolos terminales y no terminales, incluida la cadena vacía
Tabla 6.1: Comparación entre la estructura de las producciones en las gramáticas regulares y las gramáticas independientes del contexto.
De f i n i c i ó n
84
E je m p l o
de
las
gramáticas
independientes
del
contexto
6.3
Un buen ejemplo para ilustrar los lenguajes independientes del contexto es el lenguaje de los palíndromos [Hopcroft et a i, 2008]. Las cadenas que pertenecen a este lenguaje, son cadenas que se leen igual de derecha a izquierda que de izquierda a derecha. Esto es, una cadena w es un palíndromo cuando w= w R, donde wR es la Así, dado el alfabeto E = {0.1}, algunos ejemplos válidos de palíndromos son los siguientes: 0110,11011 y e. Por el contrario, las siguientes cadenas no serían palíndromos: 011 o 100. Éste es un lenguaje no regular puesto que es necesario tener en consideración qué porción de cadena se ha leído en cada momento para comprobar que, a continuación, se lee su inversa. Formalmente, se demuestra que el lenguaje de los palíndromos no es regular porque contiene un número infinito de cadenas y no cumple el lema de bombeo. Considerando el alfabeto E = {0,1}, la gramática que genera el lenguaje de los palíndromos se puede definir de manera recursiva. Así: Caso base:
Es claro que
0y 1 son palíndromos.
,e
Si w € E* es un palíndromo, entonces 0w0 y ltul también son palíndromos.
Paso inductivo:
Por tanto, el lenguaje de los palíndromos puede generase mediante la gramática independiente del contexto definida de la siguiente manera: ({5}, {0,1}, 5, P) donde S es el símbolo inicial de la gramática y P es el conjunto de producciones que se muestra en la figura 6.2. Gpalíndromo =
S —y 6
s-> o
S ~ ¥ 1
5 ->0S0 5-> 151 Figura 6.2: Gramática que genera el lenguaje de los palíndromos. Es importante destacar que las cadenas que pertenecen a L(Gpalíndromo) pueden tener longitud par o impar. o
LENGUAJ ES
Y GRAMÁTICAS
IN DE PE ND IE NT ES
D EL
C O NT E XT O
85
6.2. Derivaciones en las gramáticas independientes del contexto Ya se ha visto que una derivación en una gramática consiste en ir sustituyendo los símbolos no terminales por el lado derecho de la producción en la que dichos símbolos no terminales aparecen en el lado izquierdo. Sin embargo, en las gramáticas independientes del contexto, en el lado derecho de cada producción, pueden aparecer más de un símbolo no terminal. Por tanto, en cada paso de la derivación, se plantea la cuestión de qué símbolo no terminal derivar primero. Se puede elegir entre las siguientes alternativas: ■ Derivar siempre el terminal más a la izquierda de la forma sentencial. En este caso, la derivación se denota mediante la relación ( del inglés, most- derivación más a la izquierda) y se denomina forma sentencial por la izquierda. ■ Derivar siempre el terminal más a la derecha de la forma sentencial. En este caso, la derivación se denota mediante la relación ^ ( derivación más a la derecha), y se denomina forma sentencial por la derecha. ■ Derivar cualquier símbolo no terminal que aparezca en la forma sentencial sin seguir un orden determinado. Todas las cadenas que se pueden derivar de una determinada gramática independiente del contexto, constituyen el lenguaje de esta gramática. Este conjunto de cadenas es el mismo independientemente de la derivación que se realice, esto es:
Las derivaciones por la izquierda son equivalentes a las derivaciones por la derecha. Para denotar un conjunto de derivaciones a partir del símbolo inicial de la gramática, se utiliza el operador de relación =^>. E jemplo 6.4
Sea la gramática Gpnlinrh.omr> = ({5}, {0,1}, P) donde S es el símbolo inicial de la gramática y P seel conjunto de producciones de la figura 6.2. En el caso de esta gramática, en los lados derecho de las producciones hay a lo sumo un único no terminal por lo que no es necesario distinguir entre derivaciones por la izquierda o por la derecha. Así, a continuación se muestran algunos ejemplos de derivaciones de la gramática:
86
De r i v a c i o n e s
S -»• OSO
en
las
gramáticas
independientes
011S110
011110
’° 010S010 ^
0101010
S -»• 1S1 S^ ' 1 11S11 S^ ' ° 110S011 ^
1101011
oso
contexto
010
S -> OSO S^ í l 01S10 s
del
6^ ' 101S10 S^
En cualquiera de los ejemplos anteriores se podría utilizar la relación para denotar el conjunto de derivaciones definidas desde el símbolo inicial. Así, las derivaciones anteriores se podrían representar de la siguiente manera: 5=^010 S = ^ 011110 5=^0101010 S 1101011
_______ o _______
E jemplo 6.5 Dado el alfabeto E = {a, b, c), sea de la siguiente manera:
Gla gramática i
G = ({S,A.B},{a,b
P seel siguiente conjunto de p S-+AcB A B —* aBb\e
—y a
En el lado derecho de la primera producción de la gramática, hay dos no terminales A y B. Por tanto, en las derivaciones, se puede optar por derivar en primer lugar el no terminal A (derivación más a la izquierda) o bien, derivar en primer lugar el no terminal B (derivación más a la derecha). Así:
LENGUAJES
Y
G R AM A T I C AS
IN DE PE ND IE NT ES
S —>AcB^
S
im ¡m
S
S ->.4 c B
rn?
87
CO NT E XT O
.4 —
A^ a Al (
AcB
D EL
B - k a B^
im aAbcB ¿m abcB
¿m
abcaBb
abcaaBbb ¡,n' abcaabb
^
4cB
B
->a B I t
r,„
4 — 4
B
/m Acaabb
^
B-».i B/t
_
^
AcaBrm
AcaaBbb
.4 — ^^
rm. ’ aAbcaabb Añn abcaabb
_______ o _______ Dada la equivalencia entre las derivaciones por la izquierda y por la derecha, de ahora en adelante no se indicará qué tipo de derivación se está usando, aunque por lo general se utilizarán derivaciones más a la izquierda.
6.3.
Lenguaje de una gramática independiente del contexto
De manera similar a cómo se definía para las gramáticas regulares, el lenguaje generado por una gramática independiente del contexto se define de la siguiente manera: Si G= (V, T, S, P) es una gramática independiente del contexto, el lenguaje de G, designado como L(G), es el conjunto de cadenas de terminales que se pueden derivar desde el símbolo inicial de la gramática: L(G) =
w p { ertenece a T*|5
Esto es, L(G) está formado por todas las cadenas compuestas por terminales de la gramática que pueden ser derivados desde el símbolo inicial. El lenguaje que se deriva de una gramática independiente del contexto se denomina lenguaje independiente del contexto E j e m p l o 6 .6
Sea G = ({S1}, {a, b}. S, P) una gramática independiente del contexto donde S es el símbolo inicial y P e s el siguiente conjunto de producciones: S
aS\Sb\a\b
88
I
ntroducción
a
los
árboles
de
derivación
La gramática G es un ejemplo de gramática independiente del contexto no regular (la segunda producción no cumple con las restricciones de las gramáticas regulares). A continuación, se muestran algunos ejemplos de derivación: S -)■ aS S
aS S — ¥flS
S -*■ aS
S ^ S b h^ S —y
fy S b(lS
('y S
= > aab =$> aaab => aa —
b Sbb
S --- HlS
— H 2
Sbbb ^
f-y S --- l(lS
bbbb
f-y S --- HlS
=> aab =$> aaab
=> a
S= 4 Í) aaaaSb => aaaabb
El no terminal A de la gramática genera subcadenas de símbolos a mientras que el no terminal B genera subcadenas de símbolos b. En las cadenas que se derivan de G no tienen 's. b Por tanto, el lenguaj por qué coincidir el número de a's y ) L ( = G
{a"&m|n, m > 0, si n = 0 entonces m > 0 y viceversa }
donde n y m no pueden ser igual a 0 simultáneamente ya que e ^ L(G). o
6.4.
Introducción a los árboles de derivación
A modo de introducción se presenta en esta sección la representación de las derivaciones de una gramática en base a árboles de derivación. Esta representación, además de mostrar gráficamente las posibles derivaciones de cada no terminal de una gramática sienta las bases para la aplicación y programación de las gramáticas independientes del contexto en la construcción de compiladores. La construcción del árbol de derivación de una cadena se realiza definiendo el nodo raíz del árbol con el símbolo inicial de la gramática. Los nodos hijos del nodo raíz serán los no terminales y terminales que se derivan del símbolo inicial en la gramática. Los nodos hoja del árbol de derivación son los nodos que se corresponden con símbolos terminales. Una de las aplicaciones inmediatas de los árboles de derivación es la prueba de la equivalencia entre las derivaciones por la izquierda y por la derecha.
LENGUAJES
Y GRAMATICAS
INDE PENDI ENTES
89
DEL CONTEXTO
E j e m p l o 6 .7
Sea G la gramática independiente del contexto definida de la siguiente manera: G = ({ 5 ,A B } 1{fl,51c},S !P) donde S es el símbolo inicial de la gramática y producciones:
es el siguiente conjunto de
S ->■ aAbB
A
—^
A -»• B B
e —>■cB —>■c
A continuación se muestran dos ejemplos de derivación de la gramática G: S — aA bB S ->• aAbB
A —
aaAbbB
A-toAb
aaAbbB
B-±c
aaabbbcc
Los árboles de derivación correspondientes a estas derivaciones se muestran en las figuras 6.3 y 6.4. S
a
A
b
c
e
Figura 6.3:
Árbol de derivación de la cadena aabbc.
Recorriendo los nodos hoja de las figuras 6.3 y 6.4, se ve coinciden las cadenas de terminales que se obtienen expandiendo el árbol por la derecha o por la izquierda.
_______ o _______
90
F orma
Figura 6.4:
N ormal
de
C homsky
Árbol de derivación de la cadena aaabbbcc.
Una vez vistas las gramáticas independientes del contexto y los lenguajes que generan, a continuación se estudiará cómo es posible dotar de cierta estructura a las producciones de una gramática independiente del contexto siempre que ésta no genere la cadena vacía.
6.5.
Forma Normal de Chomsky
Se dice que una gramática está en Forma Normal de Chomsky si sus producciones cumplen las siguientes restricciones: — El lado izquierdo contiene un único no terminal. — El lado derecho contiene: exactamente dos no terminales, o un único terminal. Esto es, las producciones tienen la forma: A BC, donde A ,B y C son no terminales, o A —>• o, donde A es un símbolo terminal. Cualquier lenguaje independiente del contexto que no contenga la cadena vacía e, puede derivarse mediante una gramática en Forma Normal de Chomsky.
El objetivo de la Forma Normal de Chomsky es unificar la estructura de las producciones de la gramática sin modificar el lenguaje que reconoce. En la tabla 6.2 se completa la tabla 6.1 y se compara la estructura de las producciones en las gramáticas regulares, las gramáticas independientes del contexto y las gramáticas independientes del contexto en Forma Normal de Chomsky.
LENGUAJES
Lado izquierdo Lado derecho
Y GRAMÁTICAS
INDEPENDIENTES
DEL CONTEXTO
Gramáticas regulares
Gramáticas independientes del contexto
Gramáticas en FNC
Un único no terminal - Un único teiminal - Un terminal seguido de un no terminal - La cadena vacía
Un único no terminal Cualquier cadena de símbolos terminales y no terminales, incluida la cadena vacía
Un único no terminal - Dos no terminales - Un único terminal
91
Tabla 6.2: Comparación entre la estructura de las producciones en las gramáticas regulares, las gramáticas independientes del contexto y las gramáticas en Forma Normal de Chomsky (PNC).
E j e m p l o 6 .8
Dado el alfabeto E —{0,1. 2}, se considera el lenguaje L = {0"1''2"' : n, m > 1). L es un lenguaje independiente del contexto no regular que puede ser generado por la siguiente gramática G = ({S. A B} , , {0,1,2}, S, P) donde S es el símbolo inicial y conjunto de producciones:
es
S ->• 0A1B A -+ 0 A 1 A ->■ e B ^ 2 B B 2
L no contiene la cadena vacía, por tanto, es posible encontrar una gramática en Foima Normal de Chomsky, equivalente a G. En este caso, G se define de la siguiente manera G = ({S',G. H, C, F, D ,E }, {0 , 1,2}, 5', P ')donde S' es el símbolo inicial y P' es siguiente conjunto de producciones:
92
Tr a n s f o r m a c i ó n
a
F orma N ormal
de
C homsky
S ' ->CH S1 CF H ->■ AF A —v CG AD B - > E B E —^ 2 B -►2 F ^ D B
A - > CD C-> 0 D - > 1
La siguiente sección muestra cómo transformar una gramática independiente del contexto que no genere la cadena vacía en una gramática equivalente en Forma Normal de Chomsky.
_______ o _______
6.6.
Transformación a Forma Normal de Chomsky
Dada una gramática independiente del contexto que no genere la cadena vacía, es posible transformarla a su Forma Normal de Chomsky, siguiendo los siguientes pasos [Hopcroft et al., 2008]: (1) Eliminación de las producciones t. (2) Eliminación de las producciones unitarias (aquellas que en su lado derecho haya un único no terminal). (3) Eliminación de las producciones de la forma cterminalxno terminal?»,
o más de un terminal o una combinación de más de dos terminales y no terminales. (4) Eliminación de las producciones que en su lado derecho haya más de exactamente dos no terminales.
Le n g u a j e s
y
gramáticas
independientes
del
contexto
93
Es importante destacar que en cada uno de los pasos, se debe ir obteniendo gramáticas equivalentes a la original. Por tanto, si se eliminan ciertas producciones, es necesario añadir o modificar el resto, de manera que se asegure que la gramática resultante sigue siendo equivalente. La demostración formal de la equivalencia entre la gramática original y su correspondiente Forma Normal de Chomsky, queda fuera de los objetivos de este texto y puede consultarse en [Hopcroft et ai,2008].
Eliminación de las producciones
e
Las producciones e son aquellas producciones que tienen la cadena vacía en su lado derecho. Así, dada la siguiente gramática G = ({S', A}, {0,1}, P) donde S es el símbolo inicial y P lesiguiente conjunto de producciones: S -f 0A1 A - f 0A1 A-fe La gramática G contiene una producción e: f e. Si se elimina esta producción, se deben añadir las producciones que simulen su aplicación. Así, por ejemplo, teniendo en cuenta la siguiente derivación :
S s^ ' 0A1 ^
01
Si se elimina la producción A — f e, es necesario añadir la producció de la substitución del no terminal A por e. en la producción S —f 0A1. De la misma manera, sería necesario añadir la producción A —>01. Por tanto, una vez eliminadas las producciones , la gramática G’ — ({5, A}, {0,1}, S P) , es equivalente a G, donde S es el símbolo inicial y el si conjunto de producciones: 5 —f 0A1 A - f 0A1 5 - f 01 A -> 01
Transformación
94
a
F orma N ormal
de
C homsky
Eliminación de las producciones unitarias Las producciones unitarias son aquellas que en su lado derecho haya un único no terminal. Así, la siguiente gramática G = ({ S A, , y P el siguiente conjunto de producciones: S - t (MI A-MM1 A ^ B B ^ 2 B B - t 2 tiene una única producción unitaria: A —> ■B .Su elimi de las producciones e. Dada la siguiente derivación en la que se utiliza la producción A —>B: S
(MI ^
OBI B^ > B 02B1
Sería similar' por tanto, eliminar la producción y substituirla por A —f 2B y de —> 2 . manera similar añadir la producción A Después de esta transformación, las producciones de la gramática serían las siguientes: S->(Ml A - t O A l A ^ 2 B A ^ 2 B - ± 2 B B ^ 2
Eliminación de las producciones de la forma cterm in alxno terminal>, o más de un terminal o una combinación de más de dos terminales y no terminales En la siguiente gramática G = ({S, P el siguiente conjunto de producciones: S —»■0.4 A ->■0A A - t B l B - + B 1 B - > 1
A,
LENGUAJES
Y G R A MÁ T I C A S
IN DEP END IEN TES
D EL
CO NT E XT O
95
Las siguientes producciones: S -> OA A ^ O A A - 4 B - 4 B l
deben modificarse para convertir los lados derechos en la forma . El objetivo es conseguir que en los lados derechos haya únicamente no terminales. Para ello, será necesario añadir nuevos no terminales a la gramática, que deriven en los terminales que están actualmente en los lados derechos. Así, se añaden los siguientes nuevos no terminales: M y N que substituirán a los terminales 0 y 1: S -4 M A A - 4 M A A - * B N B
-> B N
Para no modificar el lenguaje generado por la gramática, se deben añadir las producciones correspondientes a los nuevos no terminales: M - 4 0 y —> 1. La gramática resultante será, por tanto: 5 4
M A
A - * M A A
-»■ B N B — >■ B N M -4 0 N 1
Eliminación de las producciones que en su lado derecho haya más de exactamente dos no terminales Este paso es similar al anterior. Sea
G la
gramática definida a continuación:
G = ( { S , A B , C } ! { 0 ,1 12 } ! S , P )
donde
S es
el símbolo inicial y P el siguiente conjunto de producciones:
96
Transformación
a
F orma N ormal
de
C homsky
S -y A - > OA A - > 0 B IB B - H C ->2C C 2 En este caso se trata de transformar la primera producción en la que en el lado derecho hay tres no terminales: S A B C . Así, se añadirá un nuevo no terminal a la gramática Q (que substituirá a los no terminales By Q BC.
E jemplo 6.9 Dada la gramática G = ({ gramática y P el siguiente conjunto de producciones:
S A, ,
B , C} , {«,, b}, 5, P) donde S
ASB
S
A»•- aASjCje B -»• SbS\bb C a para transformar la gramática G en una gramática equivalente en Forma Normal de Chomsky, se seguirán los pasos enunciados anteriormente. Así: (1) Eliminación de las reglas e. La única producción epsilon en esta gramática es Las producciones de la gramática serán:
>
S -»• A S B \S B \a A> aAS\aS\C B -+ SbS\bb C a (2) Eliminación de las producciones unitarias. La única producción unitaria en esta gramática es A — >■C. Así que se substituye la producción ►C por la pro A a. Así, las producciones de la gramática serán:
LENGUAJES
Y
G R A MÁ T I C A S
I ND EP EN DI EN TE S
D EL
97
C O NT E X TO
S -> ASB \SD \a A —¥ aA£|aS|a B
-»■ SbS\bb
C-¥a
(3) Eliminación de las reglas de la forma cterm in alx no terminal> o . En la gramática del ejemplo se tendrían que transformar las siguientes producciones: A
-»■ a A S
A —>aS B
Sb S
B ^ b b
Para transformar estas producciones se añaden nuevos no terminales que deriven en los terminales correspondientes. Así, se añaden los no terminales y N y las — > ay iV — producciones M forma:
>
S -> A S B \ S B \ n A A A B
M
-+ M S —Q —> S N S
B -> N N C->a M
a
N - > b
(4) Eliminación de las reglas que en su lado derecho haya más de exactamente dos no terminales. Para finalizar, únicamente quedaría modificar las siguientes producciones cuyos lados derecho contienen más de dos no terminales: S
ASB
A
M A S
B
-»■ S N S
A
98
Tr a n s f o r m a c i ó n
a
F orma N ormal
de
C homsky
Para transformar estas producciones en otras con exactamente dos no terminales en el lado derecho se sigue un proceso similar al del paso anterior. Así, se añaden nuevos no terminales que deriven en la parte sobrantes de la producción. En este ejemplo, se P , 0 y añadirían los nuevos no terminales P-> SB O ^ AS Q N S Finalmente la gramática quedaría de la siguiente manera ya en Forma Normal de Chomsky: S —»■ A P S SB S a A ->• M O A -¥ M S A a C —> ■a B —»■SQ B - ¥ N N P -¥ S B O —»• A S Q —>■ N S M —>■a N -»• 6
___ o ___ En este punto cabe preguntarse, si existe una forma de transformar las gramáticas independientes del contexto que sí contengan la cadena vacía: Si G es una gramática independiente del contexto cuyo lenguaje consta de al menos una cadena distinta de e, entonces existe una gramática G i en la Forma normal de Chomsky, tal que L ( G 1) = L ( G ) —{e} [Hopcroft et , .a l 2008].
La demostración y la aplicación de este teorema queda fuera de los objetivos de este texto.
LENGUAJES
6.7.
Y
GRAMATICAS
I ND EP EN DI EN TE S
DEL
99
C O N TE X T O
Ejercicios
(1) Dado el alfabeto £ = {0,1}, sea L el lenguaje compuesto por las cadenas que son palíndromos de longitud par. Un palíndromo es una cadena que se lee igual de derecha a izquierda que de izquierda a derecha. Algunos ejemplos de palíndromos de longitud par son: 00,11,1001,l i l i , 101101,010010, __ Definir una gramática independiente del contexto que genere L. (2) Dado el alfabeto £ = {a, b, c}, sea L el lenguaje definido de la siguiente manera: L = {canbn+1cbmam+1 ,n, m > 0} a) ¿Pertenece la cadena vacía a L? b) Dar cinco ejemplos de cadenas pertenecientes a no pertenecientes a L.
y cinco ejemplos de cadenas
c) Definir una gramática independiente del contexto que genere L. d) Dar tres ejemplos de derivación de la gramática definida en el apartado anterior. e) ¿Es L un lenguaje regular? (3) Dado el alfabeto £ = {;r, y, c}, sea L el lenguaje definido de la siguiente manera:
{(xy)nc(yx):nn > 1}
L = a) ¿Pertenece la cadena vacía a L? b) Dar cinco ejemplos de cadenas pertenecientes a no pertenecientes a L.
y cinco ejemplos de cadenas
c) Definir una gramática independiente del contexto que genere L. d) Dar tres ejemplos de derivación de la gramática. e) ¿Es L un lenguaje regular? (4) Dado el alfabeto £ = {;c, y , s e a L el lenguaje generado por la gramática G definida de la siguiente manera: G = ({5.A,i?},{x.y, z } , S , P ) donde S es el símbolo inicial y P es el siguiente conjunto de producciones:
100
Ej e r c i c i o s
S — > A A —> B — y>B B ^ e a) ¿Pertenece la cadena vacía a L1 b)Dar cinco ejemplos de cadenas pertenecientes a no pertenecientes a L.
y cinco ejemplos de cadenas
c) Definir el lenguaje L que genera la gramática G. d)¿Es L un lenguaje regular? (5) Dado el alfabeto E = {x, y}, sea L el lenguaje generado por G, donde G es la gramática definida de la siguiente manera: G = ( { S , A £ } , { z ,2/},S,P) donde S es el símbolo inicial y
P seel siguiente conjunto d
S ->B A —>- x A y A ->• xy B —>■ x x B y B -4 xx y á) ¿Pertenece la cadena vacía a L? b) Dar cinco ejemplos de cadenas pertenecientes a no pertenecientes a L.
cinco ejemplos de cadenas
c) Definir el lenguaje L. d) ¿Es L un lenguaje regular? (6) Dada la gramática G = ( { S } , { x , y } . S , P ) donde S es el símbolo inicial de la gramática y P lesiguiente conjunto de producciones: S —>x S y S xy
L E N GU A J ES
Y
G RA MÁ TI C AS
INDEP ENDI ENTES
DE L
101
C ON TE XT O
Transformar la gramática independiente del contexto G en una gramática equivalente en Forma Normal de Chomsky. (7) Sea L un lenguaje independiente del contexto que no contiene la cadena vacía. Indicar cuál de las siguientes afirmaciones es verdadera (Justifique sus respuestas): a) Siempre es posible encontrar una gramática en Forma Normal de Chomsky que genere el lenguaje L. b) Siempre es posible encontrar una gramática en Forma Normal de Chomsky que genere el lenguaje complementario de L. (8) Dada la gramática G = ({S', A, gramática y P lesiguiente conjunto de producciones:
B }, {a, b, c}, S,
donde S
S -► A —^ uAb A ^ e B —> cB B c Transformar la gramática independiente del contexto G en una gramática equivalente en Forma Normal de Chomsky.
Capítulo 7
Autómatas a pila Una vez vistos los lenguajes independientes del contexto como aquellos lenguajes |ue generan las gramáticas independientes del contexto, en este capítulo se presentan los lutómatas a pila. Los autómatas a pila son máquinas teóricas que reconocen lenguajes ndependientes del contexto. Los autómatas a pila superan las limitaciones de los autómatas initos mediante el uso de una memoria adicional de tipo pila.
1 , 1 ,
Introducción a los autómatas a pila
Un autómata a pila es una máquina de estados compuesta por un control de estados y ina cinta de entrada con un puntero al símbolo actual, esto es, el símbolo de la cadena de ¡ntrada a analizar. Los autómatas a pila, disponen además de una memoria tipo pila. Esto 'S, una memoria de tipo UF O (del inglés Last In First Out). En esta memoria, el único :lemento accesible es el último que se ha introducido en la pila. En la figura 7.1 se muestra :1esquema general de un autómata a pila. Comparando la figura 7.1 con el esquema general le un autómata finito (ver figura 2.2), se ve que la única diferencia entre ambos tipos de lutómatas es la memoria tipo pila.
E jemplo 7.1
A lo largo de este capítulo se desarrollarán ejemplos de autómatas a pila. Ahora es el noniento de ver un ejemplo informal del uso que se va a hacer de esta pila. Se ha visto que la limitación fundamental de los autómatas finitos es que sus transiciones lependían únicamente del estado del autómata y del símbolo actual en la cinta de entrada. >ío son capaces, por tanto, de llevar ningún tipo de control sobre los símbolos leídos hasta el nomento. 103
I
104
ntroducción
a
lo s
autómatas
a
pila
£={x,y} Entrada Cabeza de lectura apuntando al símbolo actual
Figura 7.1: Esquema general de un autómata a pila.
Por el contralio, los autómatas a pila pueden utilizar su memoria, para poder llevar la cuenta de los símbolos leídos hasta un determinado momento. Por ejemplo, dado el alfabeto E = {:r, y}, sea L el lenguaje definido de la siguiente manera: L = {xnyn :
> 0}
Informalmente, un autómata a pila que aceptara el lenguaje L, por cada x que lea de la entrada, introduce un símbolo en la pila, que actuará como un contador. Por otra parte, cuando leyera símbolos y,extraería uno de los símbolos introducidos a pila. De esta manera, la pila quedará vacía si se han leído el mismo número de r ’s que de s de la entrada. Se puede ver, por tanto, que en los autómatas a pila, cada transición supone una lectura de un símbolo en la cinta de entrada y una operación en la pila. A continuación, se presenta la definición formal de los autómatas a pila. o
AUTÓMATAS
7.2.
a
105
pila
Definición formal de un autómata a pila
La definición formal de un autómata a pila es similar a la de un autómata finito salvo que ahora es necesario incluir en la definición la memoria tipo pila. Así, la pila se define mediante: (i) unos símbolos especiales de pila (que pueden incluir los propios símbolos del alfabeto) y (ii) las operaciones que, en cada transición se realiza sobre la pila. Así, un autómata a pila se define mediante la siguiente séptupla [Hopcroft et 2008]: P = {Q,T, ,T, 6, qo ,Z0, F ) donde: ■
Qe s un conjunto finito de estados.
■ E es el alfabeto del autómata compuesto por un conjunto finito de símbolos. ■ T es el conjunto finito de símbolos de pila. Está formado por todos aquellos símbolos que se pueden introducir en la pila. Por lo general, T = S l ) T donde T es un conjunto de símbolos especiales de pila. ■ 8 es la función de transición definida de la siguiente manera, 5(q, a, X ) , donde: — q es el estado de partida. —
a E e es el símbolo que se lee de la entrada.
—
X €F es un símbolo de la pila.
Cada función de transición en un autómata a pila, se define de la siguiente manera:
S(p,a,X)=
7)
donde p G Qe s el estado de partida de la transición, 6 E es el símbolo que se l la entrada, x € T es el símbolo que se lee de la pila, es el estado de destino de la transición, y 7 € T se el símbolo o símbolos que se introducirán en la cima de la pil Si 7 = e, entonces, simplemente se extrae el símbolo de la cima de la pila. Si 7 = se reemplaza X por Y. Y si 7 = Y Z entonces se reemplaza X por y se introduce Y en la cima de la pila. Dado que cada transición puede devolver como salida un conjunto de pares, se trata de una función de transición no determinista. Cuando se introduce más de un símbolo a la vez en la pila, el símbolo más a la izquierda será el elemento de la cima de la pila. Este orden de inserción, se muestra en la figura 7.2.
106
De f i n i c i ó n
formal
de
un
autómata
a pil;
Pila
Figura 7.2: Orden de inserción en la pila cuando se introduce más de un símbolo en la pila
■ ft es el estado inicial. ■ Z0 es un símbolo especial de pila vacía o símbolo de fondo de pila. Puesto que ei la pila sólo está accesible la cima de la pila, en ocasiones es necesario marcar la pili con ciertos símbolos especiales que ayudan en la gestión de la pila. Uno de ellos es e símbolo que permite marcar la pila vacía, esto es, este símbolo indica que bajo la cimi de la pila no quedan símbolos por analizar. ■
F seconjunto de estados de aceptación o estados finales.
La función de transición de un autómata a pila puede representarse mediante un diagram; de transiciones, donde los nodos representan estados y los arcos transiciones entre estados Las transiciones deben representar el símbolo que se lee de la entrada, el símbolo que se leí de la cima de pila y el símbolo que se introduce en la pila. Así, en un diagrama de transicione de un autómata a pila, las transiciones se etiquetan con una tema: a,X-,Y donde a es el símbolo que se lee de la entrada, X es el símbolo que se lee de la cima di la pila y Y es el símbolo que se introduce en la pila.
E jemplo 7.2 Dado el alfabeto E = {z, y},sea AI el autómata a pila defini AI = ({ft, (/i . ft. ft} , E , r , ó, ft, Z0. {ft}) donde el conjunto de símbolos de pila se definí r = {a, Zuj y la función de transición 5 se define de la siguiente manera (se supone q inicialmente la pila se encuentra vacía):
A U TÓ M A TA S
A
107
P I L A
5(q0,e,e)= (gi,Z0); ó(cj2, y, a) =
S{qt, x, e) = (qi,a)\ 5{qi, a) q2 ( , e); <%2, e, 2o) = (?3i c)
En la figura 7.3 se muestra el diagrama de transiciones del autómata Al. x, e; a
y, a; e
Figura 7.3: Autómata a pila del autómata AI.
A continuación se describe el funcionamiento del autómata: — En la transición 6(q0, e, e) = (q^, ZQ), el autómata marca en primer lugar, la pila con el símbolo de pila vacía. — En el bucle ó(qi,x, e) = qi ( , a), el autómata, cada vez que lee una no lee ningún símbolo de la pila (dado que el tercer término en la transición es e) e introduce un símbolo a en la pila a modo de contador. - En la transición S(qi,y,n) — (q2,e), el autómata pasa al estad y de la entrada. No obstante, el uso de la pila en esta transición merece un poco de atención. Como se ve en el último término de la transición, ésta sólo se podrá ejecutar si en la cima de la pila se encuentra un símbolo a. Por tanto, esta transición sólo se podrá ejecutar si previamente el autómata ha introducido al menos un símbolo a en la pila, esto es, si ha leído previamente un símbolo x de la entrada. El último término de la transición (esto es, e) indica que el autómata en esta transición no introduce ningún símbolo en la pila. — En el bucle 5(q2, y, a) = (q 2 , e), el autómata, cada vez que lee una y de la entrada, comprueba si hay un símbolo a en la cima de pila y no introduce ningún símbolo en la pila. - La transición S(q2,e, Z0)= (í/3, e), indica que el autómata llegará al estad aceptación si en la cima de la pila encuentra el símbolo de pila vacía Z0. El hecho de que en la transición de qi a q2 se lea un símbolo a de la entrada, implica que para leer al menos un símbolo y de la entrada debe haber leído al menos un símbolo x previamente. ____________
De f i n i c i ó n
108
Paso
Cadena de entrada
x y x y
formal
Función de transición ó2{q0,x, e) =
(a) (b)
‘ o
I
de
un
autómata
a
pila
Contenido de la pila
■ V
, e) = (qi,e) S 2 ÍQo y,
aZo Zo ü Z q
Tabla 7.1: Transiciones en el autómata
_______ o _______
E jemplo 7.3 Dado el alfabeto E = {a:, y}, sea M el autómata a pila definido de la siguiente manera: -M2 = ({tfot gi }) £ , r 2,<$2, 0i z0,{go})
donde T2 = {a, Z q } es el conjunto de símbolos de pila y la función de transición se define mediante el diagrama de transiciones de la figura 7.4 (en todos los diagramas de transiciones que siguen en este ejemplo se supone que la pila se encuentra vacía). x, e\ a
x, e; e í/,e;e
y,a; e
,ye; e
Figura 7.4: Diagrama de transiciones de la función de transición
En el estado qo,si en la entrada hay un símbolo y, hay un punto de no d y, por tanto, el autómata M 2 es no determinista. Así, sea una cadena de entrada. En la tabla 7.1 se muestra el funcionamiento del autómata con esa cadena (en negrita se muestra el símbolo actual de la entrada y subrayado el símbolo de la cima de la pila). En el paso © , se ve que al haber una y en la entrada, se pueden aplicar dos posibles transiciones © (a) y © (b). En el primer caso, el autómata llegaría a un estado de aceptación y en el segundo no. En la figura 7.5 se muestra el diagrama de transiciones de la función de transición 52 modificado (en este caso, el estado q-¡ no es alcanzable). Con esta modificación, el estado q0
A U T Ó M A T A S
Paso ‘ ©
A
109
PI LA
Cadena de entrada x y x y
Función de transición
£ í (<7o, :c,e) = (a) (b)
MooiV>a) = e) ¿2(,f)
Contenido de la pila aZ 0 Zg
Z q ü
Tabla 7.2: Transiciones en el autómata M 2 modificado.
también sería un punto de no determinismo si en la entrada hubiera un símbolo puesto que las operaciones sobre la pila son distintas (ver pasos (2) (a) y (2) (b) en la tabla 7.2). .7:, e; a
e; e
y,e; e
y , «; e
y, c; e
Figura 7.5: Diagrama de transiciones modificado de la función de transición
Por último, si se considera la modificación de la función de transición 52 de la figura 7.6, en el estado qo vuelve a haber un punto de no determinismo si en la entrada aparece un símbolo y. En este caso, las operaciones sobre la pila serían las mismas, pero cambia el estado destino en la transición (ver pasos (2) (a) y (2) (b) en la tabla 7.3). e; a
x, e; e
Figura 7.6: Nueva modificación del diagrama de transiciones de la función de transición 52.
Aunque los estados destino de dos transiciones sean los mismos, el contenido de la pila es importante, porque puede determinar el comportamiento futuro del autómata. ¿Qué otros puntos de no determinismo se podrían definir modificando el diagrama de transiciones de la figura 7.4? ________________________________
Le n g u a j e s
110
aceptados
po r
lo s
autómatas
a
Paso
Cadena de entrada
Función de transición
Contenido de la pila
0 0
x y x y
¿2(0-*ié ) = ((/0,«)
aZo
Zo Z q
(a) (b)
pil
Tabla 7.3: Transiciones en el autómata A/o modificado nuevamente.
_______ o _______
7.3.
Lenguajes aceptados por los autómatas a pila
Se dice que un autómata a pila acepta una cadena cuando al terminar de procesar 1 cadena el autómata se encuentra en un estado de aceptación. Se ve por tanto, que este criteri de aceptación es similar al criterio de aceptación de los autómatas finitos independientement del contenido que quede en la pila del autómata. No obstante, este criterio es equivalente al utilizado en otros textos, como por ejemplc [Hopcroft et al.,2008] que establece que un autómata a pila acepta una cadena c terminar de procesarla, vacía su pila. No obstante, a lo largo de este texto, se considerar únicamente el criterio de aceptación mediante estados finales. Así, sea P = (Q,T,,T,6,q0, Z q ,F )un autómata a pila. Entonces L( aceptado por P (por estado final), es (se considera que inicialmente la pila se encuentr vacía): L(P) =
(-^ (g,e ,o)}
donde qes un estado de aceptación, se ha terminado de leer la entrada y el co final de la pila resultante (a) es irrelevante (el operador I-* indica que se han ejecutado toda las transiciones posibles desde el estado inicial). Dado el no determinismo de los autómata a pila definidos de esta manera, un autómata acepta una cadena cuando, al menos, haya u camino dese el estado inicial que lleva a un estado de aceptación. El conjunto de lenguajes que aceptan los autómatas a pila es el conjunto de lenguajes independientes del contexto.
A U T Ó MA T A S
A
PI LA
111
Cadena de entrada
Función de transición
Contenido de la pila
0 © © © © © ©
% o ,f, e) = (<7i , Z 0) = (<7i,r/.) 5(qu x, e) = (qu a) 5{qu x,e) =
Zu aZo aaZ{] aaaZ0
xxxyyy xxxyyy xxxyyy xxxyyy xxxyyy xxxyyy xxxyyy
©
xxxyyy
Paso
5{quV
üci Z q cl Z q
Z0 Aceptar
Tabla 7.4: Ejemplo de ejecución del autómata del ejemplo 7.2 con la cadena xxxyyy. E j e m p l o 7 .4
Dado el alfabeto E = {re, y}, se considera el autómata a pila cuya función de transición se define mediante el diagrama de transiciones de la figura 7.1. Este autómata utiliza la pila para llevar la cuenta del número de x leídas, para comprobar posteriormente que ha leído el mismo número de y’s. Si el autómata llega al final de la cadena con la pila vacía (esto es, en la cima de la pila se encuentra el símbolo de pila vacía entonces el autómata llegará al estado de aceptación puesto que se han leído de la entrada el mismo número de x e y ’s. En la tabla 7.4 se muestra un ejemplo de ejecución del autómata para la cadena xx xyyy (se supone que inicialmente la pila se encuentra vacía). Aunque en este momento, sólo se han definido los autómatas a pila no deterministas, se puede ir adelantando que este autómata es un autómata a pila determinista puesto que no tiene ningún punto de no determinismo. Por tanto, el lenguaje que acepta el autómata del ejemplo 7.2 puede definirse de la siguiente manera: L = {.rnyn : n > 0} o
Le n g u a j e s
112
aceptados
p or
l os
autómatas
a
pi
E j e m p l o 7 .5
Dado Dado el alfab alfabeto eto E = {a\y {a \y}, }, sea el lenguaje lenguaje L L - { x ny"‘ y" ‘ : 0 < < m}. Esto Esto es, está compuesto por las cadenas formadas por símbolos ¡r’s ¡r’s seguidos por símbolos símbol os s, don el número de x’s es menor o igual que el número de t/’s. Un autómata a pila que acepte puede definirse de la siguiente manera: manera: M = {{qo,qi, 72, 72, 7a}, 7a}, S , I \
7o- Z0, Z 0, {q¿}) {q¿})
donde donde T = {a, Z {a, Z0j di agrama ma de la figi 0j y <5es la función de transición definida por el diagra 7.7 (se supone que inicialmente la pila se encuentra vacía). x, e; a
, a;
e; e
Figura 7.7: Diagrama de transiciones del autómata que acepta el lenguaje L lenguaje L = { x nym ny m : 0 n < m}.
Este autómata aut ómata es similar simil ar al autómata de la figura 7.1 7.1 salvo que, una vez comprobado comproba do q se han leído el mismo número de símbolos x y símbolos y, y, el autómata continúa leyen símbolos y símbolos y de de la entrada en el estado de aceptación 73. ¿Cómo se podría modificar el diagrama de transiciones de la figura 7.7 para que el número de símbolos y’s de las cadenas del lenguaje L sea estrictamente mayor al número de símbolos x ’s, esto es, es, para que m>n? o
E j e m p l o 7 .6
Dado el alfabeto alfabet o E = {¡r, ¡r, y], y] , sea el lenguaje L lenguaje L = { x ny'”\ n > m > 0}. En este caí caí L está L está compuesto por las cadenas formadas por símbolos símbolos r ’s y seguidas seguidas por símbolos y donde el número de ¡r’s es mayor o igual que el número de //’s. Un autómata a pila que acej L puede L puede definirse de la siguiente manera:
A U T O MA MA T AS AS
A
113 113
flLA
,r, e; a
Figura 7.8: m > 0}.
a; e
Diagrama de transiciones del autómata que acepta el lenguaje L =
Paso Cadena de en entrada © © © © © © ©
x x x y y x x x y y x x x y y x x x y y x x x y y x x x y y xx x x x y y
Función de transición Contenido de la pila 5{q0,e,e) = {qi,Z0) Z q ) 6(qu (qu x,e) = ( aZ Q S(qu x , e ) = (1Q-Z{ j ü Z q QXI ü ¿>(qi,x,t) = (71?«) qxl Z q 8{qi,y, a) = (72, e) g Z q ¿(72, y, a)= a)= (52, e) % 2, e,a) e,a) = (qa,e) Zo Zo Aceptar
x x x y y Tabla 7.5: 7.5:
n >
Ejemplo de ejecución del autómata de la figura 7.8 7.8 con la cadena (*Í7o? 7i? 72? 73}"?
7o? Zo, Zo, {73})
donde F = {«., Z0} e5s la función de transición definida por el diagra Z 0} y es 7.8 (se supone que inicialmente la pila pi la se encuentra vacía). vacía). En la tabla 7.5 se muestra un ejemplo de ejecución del autómata para la cadena xx x x x y y . Ahí puede verse que el autómata acepta la cadena porque llega al estado de aceptación al terminar de leer la cadena, pero la pila no queda vacía. vacía.
______ ___ _ ______ _______ _ o ____ Una propiedad importante de los autómatas a pila no deterministas es que siempre es posible modificar su diagrama diagram a de d e transiciones para par a que antes de aceptar las cadenas de su lenguaje, vacíen su pila. En este texto no se va a revisar la demostración formal de esta propiedad (que puede puede encontrarse en [Hopcroft et 2008]). En su lugar, lugar, se verá un ejemplo práctico que lo muestre. muestre.
114 114
Autómatas
a
pila
y
gramáticas
independientes
del
context ^
E j e m p l o 7 .7
Dado el alfabeto E = M - ({g0,
y}, y} , sea el autómata a pila definido d 93, 93, gi}, gi }, E, {a, {a ,
, S,
Z0, {94}) Z0, {94})
donde la función de transición 6 se define mediante el diagrama de transiciones de 1 figura 7.8. Esta función de transición se puede modificar para que vacíe su pila antes d aceptar cualquier cadena. Así, el nuevo diagrama de transiciones, se muestra en la figura figura 7. 7. (se supone igualmente que la pila se encuentra vacía). vacía). x, e x, e;; a
y, a\ e.
e, a; e, a; e
Figura 7.9: Diagrama de transiciones del autómata que acepta el lenguaje L m > 0 } y vacía su su pila antes antes de aceptar cualquier cualquier cadena. cadena.
l
Definir las transiciones correspondientes a la cadena de entrada _________ ____ _ x x x x y y con el diagrama de transiciones de la figura 7.9. ______ o
7.4.
Autómatas Autóma tas a pila y gramáticas gram áticas independiente indepe ndientess de contexto
Ya se ha visto que los autómatas a pila aceptan el conjunto de lenguajes independiente del contexto. Esto es, el conjunto de lenguajes que aceptan los autómatas a pila coincid con el conjunto de lenguajes que aceptan las gramáticas independientes del contexto. E esta sección se muestra el procedimiento para obtener el autómata a pila equivalente a un gramática independiente del contexto dada. En este caso y al igual que ocurría con los autómatas finitos, se trata de simular mediant un autómata a pila las posibles derivaciones de una gramática. gramática. Así, dada una gramática gramá tica G (V, T, .S P) donde S es S es el símbolo sím bolo inicial y P seel el autómata a pila equivalente se define de la siguiente manera:
A U T O M A T A S
A
115
P I L A
M = (Q, (Q , S , T, <5,
Z0; { / } )
donde: m Q = {j, p . qy/ qy/ } . El conjunto de estados será será siempre el el mismo independientemente de la gramática considerada. ■ E = T .Esto T .Esto es, el conjunto de símbolos terminales constituyen el alfabeto del autómata. ■ F = V U T U { Z0}. Z0}. Esto es, el conjunto símbolos de pila está formado formado por la unión unión de símbolos no terminales y terminales de la gramática, junto junt o con el símbolo especial especial de pila vacía, Z0. ■ La func función ión de de transici transición ón 5 se define de la forma form a siguiente iHopcroft
2008]: 2008]:
(1) 5(i, e 5(i, e,, e) = (p, (p, Z0) Se marca la pila con un símbolo especial de pila vacía. (2)
p, p ( 5 ( e,, e) = (
p, pS, ) Se introduce el símbolo inicial de la gra
(3) Para cada no terminal termina l A se simulan las producciones de la gramática: ¡5 )\Si
Ae Aseuna producción de P de P}}
(4) Para cada símbolo terminal a, 5{q,a,a.) = {(q, {(q, f)}, se leen los símbolos de entrada y lo equiparamos con los terminales de las producciones. (5) S(q,e,Z0) = (f,e). La demostración formal de que el autómata a pila así definido es equivalente a la gramática independiente del contexto, queda fuera de los objetivos de este texto y puede consultarse en [Hopcroft et al., 2008]. al., 2008]. De la misma forma, el proceso de construcción de una gramática equivalente a un autómata a pila dado queda fuera de los objetivos de este texto y puede consultarse también en [Hopcroft et ai , 2008]. E j e m p l o 7 .8
Dada la gramática G definida de la siguiente manera: G = ({S,A },{x,y},S ,P) donde S es S es el símbolo inicial y P es P es el siguiente conjunto de producciones:
Autómatas
116
a
pila
y
gramáticas
independientes
del
S — A —> j ' A ij A
context
> — x>x
El autómata a pila equivalente se define de la siguiente manera: M =
,q /}, {je, y}, {5, A, x, y, Z0}, 5, ¿, Z0, {/})
donde la función de transición 5 se define mediante el diagrama de transiciones de ] figura 7.10. e. 5; x Ay e. A-, xA y e, A; xx V, VA x, x; e
Figura 7.10: Diagrama de transiciones del autómata equivalente a la gramática G d( ejemplo 7.8.
Dada la cadena de entrada xxxxyy, en la tabla 7.6 se muestra un ejemplo de ejecució del autómata de la figura 7.10. Ahí se puede ver que los pasos © y © hay dos puntos de n deterninismo puesto que se podría elegir entre las siguientes dos transiciones: 6 {q, e, A)
=
[q,xAy);
, e,
En el ejemplo se ha mostrado la secuencia de transiciones que llevan a un estado d aceptación. No obstante, y al igual que ocurría con los autómatas finitos no determinista: basta con que haya una secuencia de transiciones que lleven a un estado de aceptación par que la cadena pueda ser aceptada. o
=
A U T Ó M A T A S
A
117
PI LA
Paso
Cadena de entrada
© © ©
xxxxyy xxxxyy xxxxyy x x x x y y xxxxyy x x x x y y xxxxyy x x x x y y xxxxyy xxxxyy xxxxyy x x x x y y
©
©
© © ©
(0 )
Función de transición
Contenido de la pila
6(i, e, e) = ( p , Z 0) 5{p,e,e) = 6{q,e,S) = (q , x A y ) 6{q,x,x) = (q,e) 6{q,e,A) = 5{q,x,x) = (g,e) 6{q,e,A) = ( ) S (q,x,x)= e) 6(q,x,x) = (g,e) S{q,y,y) = (?,e) = (íM) í(5,6,Z0) = (/,e)
xxxxyy
^0
sz{) xAyZ0 A y Z o xAyyZa AyyZo xxyyZo ■FyyZo yyZ o yZo Zo Aceptar
Tabla 7.6: Pasos de ejecución del autómata de la figura 7.10 con la cadena de entrada xxxxyy.
7.5.
Autómatas a pila deterministas
En el estudio de la teoría de autómatas es conveniente buscar la definición de máquinas teóricas deterministas. Esto es así, porque el objetivo final es trasladar estos autómatas a rutinas de programación que hagan la función requerida (por ejemplo, en el caso de la programación de un compilador). Hasta el momento, la definición de un autómata a pila ha sido no determinista. A continuación, se definen los autómatas a pila deterministas y posteriormente se verá si el conjunto de lenguajes que aceptan los autómatas a pila deterministas coinciden con el conjunto de lenguajes que aceptan los autómatas a pila no deterministas. Informalmente, un autómata a pila deteiminista es aquel que no permite que se puedan ejecutar más de una transición dados un estado, un símbolo de la entrada y un símbolo de la cima de la pila. Formalmente, se dice que un autómata a pila P = (Q, E, T, ó, q0, F) es determinista si y sólo sí se cumplen las siguientes condiciones [Hopcroft et ., 2008]: (1)
5(q,a, X ) tiene como máximo un elemento para cualquier G € Eo y X G T. Esto es, si en un autómata a pila determinista se encuentra definida la siguiente función de transición S(qt,x,e) (ver figura 7.7) el resultado de esta tra un único elemento, esto es:
118
Autómatas
a
pila
deterministas
8(qux,e) = (qi,n)
(2) Si e, X ) tiene que estar vacío. ( , X) no está vacío para algún a de E, entonces 5 .a q Esto es, si en un autómata a pila determinista se encuentra definida la siguiente función de transición S(qi,y, a) (ver figura 7.7) no puede existir otra transición de la forma 5(qi.e_,u)
Cabe preguntarse en este punto, si los autómatas a pila deterministas reconocen el mismo conjunto de lenguajes que los autómatas a pila no deterministas. Existen lenguajes independientes del contexto para los que no es posible construir un autómata a pila determinista que los reconozca.
La demostración formal de esta afirmación queda fuera de los objetivos de este texto y puede encontrarse en [Hopcroft et ai , 2008, Brookshear, 1993]. E je m p l o
7.9
Dado el alfabeto E = {*, y} , sea L el lenguaje definido de {xnyn,n > 0} U {xny2n. n > 0}. Un autómata a pila que reconozca el lenguaje L deberá controlar, utilizando la pila, el número de x leídas. Posteriormente, deberá comparar este número de x’s con el número de y s. ’ Como el número de y s’ puede ser igual que el número de x' s o por el contrario ser el número de x’s. El autómata a pila AI definido de la siguiente manera: M -
(Í7o, 7i,72, 73, 74,75}, 2 , 5, 7o, Z0, {75})
donde el conjunto de símbolos de pila es T = {a, Z0} y <5es la función de transición definida mediante el diagrama de transiciones de la figura 7.11. AI es un autómata a pila no determinista, puesto que en el estado 7x existen dos transiciones posibles si en la entrada hay un símbolo x independientemente del símbolo que se encuentre en la cima de la pila: 5(qi,x,e) = {(72,
a), (74,00)}
No es posible construir un autómata a pila equivalente a AI puesto que, para cadenas arbitrariamente grandes, no es posible determinar si después habrá que reconocer el mismo número o el doble número de y' s. o
AUTÓMATAS
A
119
PILA
x, e; a
Figura 7.11: Diagrama de transiciones del autómata que acepta el lenguaje L = { x ny n, n > 0} U {xny2n, n > 0}. Por último, se puede destacar otra restricción de los autómatas a pila deterministas:
En los autómatas a pila deterministas no siempre es posible vaciar la pila antes de aceptar la cadena. E jemplo 7.10
Dado el alfabeto E = {r , y},sea L el lenguaje definido de la siguiente n > 0} U {x1ly" : n > 0}. Un autómata a pila determinista que acepte el lenguaje L puede definirse de la siguiente manera: M = ({<5f0, <7i, <72,03}, S, , 0o, ZQ, {03}) donde el conjunto de símbolos de pila es definida mediante el diagrama de transiciones de la figura 7.12. x, e; a
T {o, Zo}
y , «; e
Figura 7.12: Diagrama de transiciones del autómata que acepta el lenguaje L = {a." : n > 0} U {.r
nyn : n > 0}.
120
E J E R C I O IOS
Es claro que para cadenas con el mismo número de .r’s e y’s la pila se vacía. No obstante para cadenas compuestas sólo por .r’s la pila contiene todas los símbolos introducidos er el estado q\. o
7.6.
Ejercicios
(1) Dado el alfabeto E = {.r. y}, sea L el lenguaje definido de la siguiente manera: L {x nym : n 0). Responder a las a) Construir un autómata a pila que reconozca L. b)¿Es un autómata a pila determinista? c) En caso negativo, ¿es posible construir un autómata a pila deterministí equivalente? d) ¿Al aceptar las cadenas del lenguaje, la pila está vacía en todos los casos? e) ¿Es posible definir una gramática en Forma Normal de Chomsky que genere L? (2) Dado el alfabeto E = {.r, y}, sea L el lenguaje definido de la siguiente manera: L = {.fnym : 0 < m < n}. Responder a las siguientes cuestiones: a) Construir un autómata a pila que reconozca L. b) ¿Es un autómata a pila determinista? En caso negativo, ¿es posible construir ui autómata a pila determinista equivalente? c) ¿Al aceptar las cadenas del lenguaje, la pila está vacía en todos los casos? d) ¿Es posible definir una gramática en Forma Normal de Chomsky que genere L? (3) Dado el alfabeto E = {.r, y}, sea M el autómata definido de la siguiente manera: M = ({yo.
T = {
A U T Ó M A T A S
A
121
P ILA
e; e
, e; e
e, e; Zo
Responder a las siguientes cuestiones: a) Describir las cadenas contenidas en L(M). tí)¿Es posible construir un autómata finito que reconozca L(M) 7 ¿Por qué? En caso afirmativo, construir un autómata finito que reconozca L(M). c) ¿Es posible definir una gramática en Forma Normal de Chomsky que genere L(M)? (4) Dado el alfabeto E = {a, L — {anbmcpaQbn\q = p+m , n, m
b,c}, sea L el lenguaje definido d l>,p > 0}. Respond
a) Describir las cadenas contenidas en L(M). b) Construir un autómata a pila que reconozca L. c)
¿Es un autómata a pila determinista?
d)
¿Al aceptar las cadenas del lenguaje, la pila está vacia en todos los casos?
é) ¿Es posible definir una gramática en Forma Normal de Chomsky que genere L1 (5) Dado el alfabeto E = {«,&, c}, sea L el lenguaje definido de la siguiente manera: L = {u 'V ^a ’l donde i . j > 0, k - j}. Responder a las siguientes cuestiones: a) Describir las cadenas contenidas en L(M). tí) Construir un autómata a pila que reconozca L. c) ¿Es un autómata a pila determinista? d) ¿Al aceptar las cadenas del lenguaje, la pila está vacía en todos los casos? e) ¿Es posible definir una gramática en Foima Normal de Chomsky que genere L ? (6) Dado el alfabeto E = { j,
y} , sea G la gramática definida de la si C ?= ({5 ,A ,JB}!{x ,y}.S,P )
122
Ej e r c i c i o s
donde S es el símbolo inicial de la gramática y P es el siguiente conjunto de producciones: S ->• A -)• xAy\xy B -»• x Byy \xyy
x y\AxByy |
x
Constmir un autómata a pila equivalente a la gramática G siguiendo el procedimiento visto en la sección 7.4.
y
Capítulo 8 _____________
Propiedades de los lenguajes independientes del contexto Ya se ha visto que los lenguajes independientes del contexto son aquellos lenguajes generados por gramáticas independientes del contexto y reconocidos por autómatas a pila. Se ha visto igualmente que los lenguajes independientes del contexto deterministas forman un subconjunto de los lenguajes independientes del contexto y son aquellos reconocidos por autómatas a pila deterministas. En este capítulo, mediante la presentación del lema de bombeo para lenguajes independientes del contexto, se comenzará con el estudio de los lenguajes recursivamente enumerables no independientes del contexto. Así mismo, se presentarán algunas propiedades interesantes de los lenguajes independientes del contexto.
8.1.
El lema de bombeo para lenguajes independientes del contexto
Para empezar el estudio de los lenguajes no independientes del contexto, se comenzará enunciando una propiedad que deben cumplir esta clase de lenguajes. Esta propiedad se denomina Lemade Bombeo para los lenguajes independientes del contexto y se enunci como sigue [Hopcroft et al., 2008]: Sea L un lenguaje independiente del contexto. Entonces existe una constante n tal que si z es cualquier cadena de L tal que |r | > n, entonces se puede dividir la cadena z en cinco subcadenas z = uvwxy de manera que se cumpla que: ( 1)
(2) vx
<
n.
e. Esto es, o -v o x deben ser no vacías. 123
124
El
lema
de
bombeo
para
(3) Para todo i > 0, uv'wx'y
lenguajes
independientes
de l
contexto
L.
Este lema es similar al que se enunció en el capítulo 5 para los lenguajes regulares. Así mismo, se utiliza de manera similar. Esto es, el lema de bombeo sirve de base para demostrar que un determinado lenguaje no es independiente del contexto. Así, dado un lenguaje L, se prueba que no es independiente del contexto mostrando que no es posible encontrar la manera de descomponer cualquier cadena de L en tres subcadenas de manera que se cumplan las tres condiciones del lema del bombeo. La demostración formal del lema de bombeo, queda fuera de los objetivos de este texto. A continuación, se ilustra la aplicación del lema mediante un ejemplo práctico. E jemplo 8.1
Dado el alfabeto E = {0,1,2}, sea L el lenguaje definido de la siguiente manera: L = {0nl" 2n : n > 0} Para cualquier cadena, z £ L, que se intente descomponer en cinco subcadenas u,v, w,x e y, existen varias posibilidades: ■ v está compuesto sólo por 0’s y x está compuesto sólo por l ’s. En ese caso si se bombean v y x, no coincidirán el número de 0’s y l ’s con el número de 2’s. ■ i1está compuesto sólo por 0’s y x está compuesto sólo por 2’s. En ese caso si se bombean v y x, no coincidirán el número de 0’s y l ’s con el número de 2’s. ■ v está compuesto sólo por l ’s y x está compuesto sólo por 2’s. En ese caso si se bombean v y x, no coincidirán el número de 0’s y l ’s con el número de 2’s. ■ Si v o x está compuesto por 0’s y l ’s o 2’s al bombear entonces no sólo no coincidiría el número sino el orden de los símbolos de las cadenas del lenguaje. Por tanto, no es posible trocear ninguna cadena del lenguaje L de manera que cumpla las condiciones del lema de bombeo. Por esta razón, se puede decir que L es un lenguaje no independiente del contexto. o
PROPI EDAD ES
DE
L OS
LENGUAJES
INDEPEN DIENTES
D EL
125
CONTEXTO
Informalmente se puede decir que los lenguajes no independientes del contexto son aquellos para los que una única memoria tipo pila no es suficiente. Por ejemplo, en el caso del ejemplo anterior, un autómata a pila que reconociera L deberá guardar en la pila un contador del número de símbolos 0 que ha leído para comprobar, a continuación, que el número de símbolos 1 coincide con este contador. No obstante, una vez hecha esta comprobación, se pierde la información del número de O’s e l ’s leídos de la cadena de entrada (esto es así, porque se vacía el contador de la pila). Por consiguiente, no será posible comprobar que el número de 2’s coincide con el número de O’s y l ’s leídos en la cadena de entrada.
8.2.
Los lenguajes independientes del contexto en la jerarquía de Chomsky
Hasta el momento se ha visto que existen lenguajes regulares, lenguajes independientes del contexto deterministas, lenguajes independientes del contexto no deterministas y lenguajes no independientes del contexto. A continuación, se describen las relaciones entre cada una de estas clases de lenguajes. Así: — Todo lenguaje regular es un lenguaje independiente del contexto determinista. De hecho, cualquier autómata finito determinista puede simularse mediante un autómata a pila determinista que no haga uso de la pila.
E jemplo 8.2
Dado el alfabeto £ = {:i;, y} , sea L el lenguaje definido de la siguiente manera: L = {a:TI
y:m n,
> 0}
L es un lenguaje regular puesto que no es necesario saber el número de :r’s e s leídas en la cadena de entrada. Así, es posible definir un autómata finito M que cumpla que L (M ) = L. Así, M puede definirse de la siguiente manera: M = ({<7o, <7i •'/■>}■£, S,
Los
L E N G U A J E S
I N D E P E N D I E N T E S
D EL
C O N T E X T O
EN
LA JERARQUÍA
DE
CHOMSKT
126 x
y y
Sea Mi el autómata a pila determinista definido de la siguiente manera:
Mi = ({ífo? 9ii 72)1
r, ¿i, 7oi ^0(72})
donde el conjunto de símbolos de pila es r = {Z0} y <5i es la función de transiciór definida mediante el siguiente diagrama de transiciones: x, e; e
V,£\í
- 0 ^ Es claro que L — L(M ) = L{M \) puesto que M\ no hace uso de la pila. Por tanto L es también un lenguaje independiente del contexto determinista.
— Todo lenguaje independiente del contexto determinista es un lenguaje independiente del contexto. Esta afirmación es trivial, ya que todo lenguaje independiente de: contexto determinista es reconocido por un autómata a pila determinista y por tanto es a su vez, un lenguaje independiente del contexto. En este momento se puede completar la gráfica de la jerarquía de Chomsky de la figure 5.18 con la clase de lenguajes independientes del contexto deterministas (ver figura 8.1). Para distinguir un lenguaje independiente del contexto para el que no es posible construir un autómata finito que lo reconozca, de un lenguaje regular que a su vez es también un lenguaje independiente del contexto se debe especificar en qué nivel de la jerarquía se encuentra el lenguaje. Así, L = : n > 0} es un lenguaje independiente del contexto no regular. ________________________
Propiedades
de
lo s
lenguajes
independientes
del
contexto
127
Figura 8.1: Esquema general de la jerarquía Chomsky para lenguajes regulares y lenguajes independientes del contexto (APD: Autómata a pila determinista; GIC: Gramática independiente del contexto; AP: Autómata a pila).
8.3.
Propiedades de los lenguajes independientes del contexto
Al igual que para los lenguajes regulares, para los lenguajes independientes del contexto, también se pueden enunciar ciertas propiedades [Hopcroft et al., 2008]. Aunque se ilustrarán algunas de las propiedades con ejemplos prácticos, no es el objetivo de este texto la demostración formal de cada una de ellas. ■ La unión de lenguajes independientes del contexto da como resultado un lenguaje independiente del contexto. ■ La concatenación de lenguajes independientes del contexto da como resultado un lenguaje independiente del contexto.
128
Propiedades
de
l os
lenguajes
independientes
del
contexto
■ La estrella de Kleene de un lenguaje independiente del contexto es un lenguaje independiente del contexto. Por el contrario: La intersección de dos lenguajes independientes del contexto puede no ser independiente del contexto. E jemplo 8.3
Dado el alfabeto S = {a:,y, s}, sean L\ y manera: L\ = { r nynzp : u ,p > 0 }
los lenguajes definidos de la siguiente
L2 = {xpy nzn : n,p > 0}
El lenguaje intersección de L\ y y a L2.Por tanto:
L 2contiene todas aquell
L =
Lxn
= { x nynz" : n > 0}
L es un lenguaje no independiente del contexto.
_______ o _______ Otras propiedades interesantes de los lenguajes independientes del contexto son las siguientes: ■ Si L es un lenguaje independiente del contexto y i? es un lenguaje regular, entonces Lí ~l Re s un lenguaje independiente del contexto.
E jemplo 8.4
Dado el alfabeto E = {.r, y}, sean L\ y L2 los lenguajes definidos de la siguiente manera: Li = {xnyn : n > 0 } Entonces
L2 = {x nym : n, m > 0}
L = L \D L2 será el lenguaje definido de la siguiente manera:
PROPIEDADES
de
l os
lenguajes
independientes
L = {xnt/‘
del
129
contexto
0}
L es un lenguaje independiente del contexto.
_______ o _______
■ Si L es un lenguaje independiente del contexto y i? es un lenguaje regular entonces L — R es un lenguaje independiente del contexto. Por el contrario: El complementario de un lenguaje independiente del contexto L no es necesariamente independiente del contexto. y
Dados dos lenguajes L\y es necesariamente independiente del contexto.
8.4.
L2independientes d
Ejercidos
(1) Dado el alfabeto E = {.r, y}, sea L¡ un lenguaje regular y L-¿ un lenguaje independiente del contexto no regular. Dar ejemplos que hagan ciertas las siguientes dos afirmaciones: (i) L2 C
L{.
b) Lx C L 2. (2) Dado el alfabeto E = {0 ,1 ,2 ), sea G la gramática definida de la siguiente manera: G = ({5, A 5} , {0,1,2}, S, P) donde S es el símbolo inicial de la gramática y producciones:
es el siguiente conjunto de
130
Ej e r c i c i o '
S A -+ 0 A l\e B -)• a) Describir informalmente el lenguaje que genera la gramática G. b) Construir un autómata a pila no determinista equivalente a la gramática G. c) Construir un autómata a pila determinista equivalente a la gramática G. d) Dé un ejemplo de ejecución de cada uno de los autómatas construidos en lo apartados anteriores, para una cadena válida del lenguaje L(G). (3) Contestai' a las siguientes preguntas. Razonar las respuestas dando un ejemplo práctic< a cada cuestión: a) ¿Existe algún lenguaje independiente del contexto no regular compuesto por ui número finito de palabras? b) Para cualquier lenguaje independiente del contexto determinista, ¿es posibli construir un autómata a pila determinista que lo acepte y que vacíe su pila ante; de aceptar cada cadena? c) Para cualquier lenguaje independiente del contexto, ¿es posible construir ui autómata a pila determinista que lo acepte? (4) Dado el alfabeto E = { definido de la siguiente manera:
x. y}, sea
M = ({/, F}, E, 5 ,/, {F}) donde la función de transición 5 se define mediante el siguiente diagrama di transiciones:
y sea L2 el lenguaje definido por la gramática G, donde G es la gramática definida di la siguiente manera:
PROP IE DADES
DE
LOS
LENGUAJES
I NDE PE NDI ENT ES
DEL
CONTEXTO
131
G = ({S},{x,y}),S ,P) donde S es el símbolo inicial de la gramática y producciones:
es el siguiente conjunto de
S —>• x S y S e Indicar cuál de las siguientes afirmaciones es verdadera: ci)
L] —
Lo
b) L]
c) Lr d)
Lo. L 2
C
L2 C L i
(5) Dado el alfabeto
E
= {x, y}, sea el lenguaje L definido de la siguiente manera:
L = {x ny m : n + m es un número par, n, m > 0}. a) Indicar si L es un lenguaje regular o un lenguaje independiente del contexto no regular. b) Construir el autómata finito o a pila (según sea el caso) que reconozca el lenguaje L. (6) Indicar si es verdadera o falsa la siguiente afirmación; El lema del bombeo aplicado a los autómatas a pila demuestra que el lenguaje L = {xnynzn : n > 0} no puede ser reconocido por ningún autómata. Razonar la respuesta. (7) Dado el alfabeto E = {a, 6), sea G la gramática definida de la siguiente manera: G= ({S,A,B},{a,b},S,P) donde S es el símbolo inicial de la gramática y P es el siguiente conjunto de producciones:
132
E j e r c í c í o ;
S ->• A B A ->■ Aa A -> a B Bb B b a) Indicar si la gramática G es una gramática regular o es una gramátic independiente del contexto no regular. b) Describir el lenguaje que genera la gramática G. c) Construir el autómata más sencillo que reconozca L(G).
Capítulo 9 _______________
Introducción a las máquinas de Turing Una vez visto el límite de los autómatas a pila, en este capítulo se empezará con el estudio de las máquinas de Turing. Las máquinas de Turing son las máquinas teóricas con mayor poder de reconocimiento y de hecho constituyen el límite de la computación, esto es, todo lenguaje que no pueda ser reconocido por una máquina de Turing no puede ser reconocido por ninguna máquina teórica. El objetivo de este texto es presentar una introducción a las máquinas de Turing pero no se profundizará en su estudio.
9.1.
Límites de la computación
Antes de comenzar con la definición de las máquinas de Turing, es importante introducir que estas máquinas definen el límite de lo que se puede computar con un ordenador. Es difícil pensar en un problema que no se pueda resolver mediante un ordenador. No obstante, existen lenguajes para los que no es posible construir una máquina que lo reconozca. Aunque no se presenta una definición formal, se ve que si se considera un alfabeto E, el conjunto de lenguajes que se pueden construir con este alfabeto, es el conjunto potencia de E*. E* es un conjunto infinito y por tanto, su conjunto potencia es un conjunto incontable. Por otra parte, el conjunto de autómatas que se pueden definir con un número finito de estados es infinito contable. Es claro que hay un número infinito de autómatas que se pueden enumerar teniendo en cuenta el número de estados (esto es, autómatas con un único estado, autómatas con dos estados, autómatas con tres estados,...). Por tanto, dado un alfabeto E, el conjunto de lenguajes que se pueden definir sobre E es mayor que el conjunto de autómatas que se pueden construir. Por consiguiente, hay lenguajes para los que no es posible definir una máquina teórica que los reconozca. 133
134
De f i n i c i ó n
I={x,y}
y
de
una
máquina
T ur i
de
Entrada
6
B
X
y
/V
vS
X
y
B
B
y
■a •
Cabeza de lectura/escritura apuntando al símbolo actual; con posibilidad de escritura y de movimiento a la derecha y a la izquierda
Control de estados finitos
Figura 9.1: Esquema general de una máquina de Turing.
Las máquinas que se presentan a continuación constituyen el límite de lo computa! Esto es, lo que no pueda reconocer una máquina de Turing no puede ser reconocido ] ninguna máquina teórica. Esta afirmación se conoce como Tesis de Turing. De hecho, máquinas de Turing son máquinas sin límite en la capacidad de memoria o de tiempo computación y pueden considerarse, por tanto, más potentes que los ordenadores actuales En [Brookshear, 1993, Hopcroft el al ., 2008] se pu de que existen lenguajes que no pueden ser reconocidos por máquinas de Turing, así coi ejemplos de este tipo de lenguajes.
9.2.
Definición de una máquina de Turing
Una máquina de Turing puede verse como una unidad de control que actúa sobre i cinta de entrada que inicialmente se encuentra con una cadena de símbolos de longitud finí La máquina de Turing tiene una cabeza de lectura que inicialmente se encuen tra situada er casilla más a la izquierda que contiene la entrada. La principal característica de las máquii de Turing es que ahora la cabeza de lectura puede moverse por la cinta de entrada tai hacia la derecha como hacia la izquierda. Además, ahora la cabeza de lectura también es escritura, esto es, la máquina de Turing va a poder escribir símbolos en la cinta de entra En la figura 9.1 se muestra el esquema general de una máquina de Turing. Tal y como se ve en la figura 9.1, la cinta de entrada se extiende indefinidamente a
I ntroducción
a las
máquinas
de
Tu r i ng
135
derecha y a la izquierda. Las casillas que no están ocupadas por los símbolos de la cadena de entrada se supone que contienen un símbolo especial no incluido en el alfabeto, denominado símbolo blanco. Además, la máquina de Turing podrá escribir en la cinta cualquier otro símbolo que se considere necesario de entre los contenidos en el llamado conjunto de símbolos de cinta. La cabeza de lectura de la máquina de Turing ahora es, por tanto, una cabeza de lectura/escritura. Así, la cinta de entrada, además de contener la cadena a analizar, le sirve a la máquina de Turing como memoria, de manera similar a la pila en los autómatas a pila. No obstante, ahora cualquier elemento de la cinta de entrada está accesible y no sólo la cima de la pila como ocurría en los autómatas a pila. Teniendo en cuenta este esquema, una transición en una máquina de Turing a partir de un determinado estado, comporta las siguientes acciones: — Cambio de estado. — Escritura de un símbolo en la cinta en la casilla que señala la cabeza de lectura/escritura. — Movimiento de la cabeza de lectura/escritura hacia la izquierda o hacia la derecha. Formalmente, una máquina de Turing se define mediante la siguiente séptupla [Hopcroft et al., 2008]: M = (Q ,E ,T J ,q 0,B ,F ) donde: ■
Qe s el conjunto finito de estados.
■ E es el conjunto finito de símbolos de entrada que componen el alfabeto de entrada. ■ T es el conjunto completo de símbolos de cinta que contiene, además de otros símbolos, los símbolos del alfabeto. Así, siempre se cumple que E C T. ■ La función de transición 5 es una correspondencia que se define de la siguiente manera: 6(q, X ) = (p, VE D) donde: — q es el estado de partida de la transición.
De f i n i c i ó n
136
de
un a
máquina
de
Tu r i n
— X es el símbolo que se lee de la cinta de entrada. —
s el estado destino de la transición. pe
— 1' es el símbolo que se escribe en la cinta de entrada. — De s el movimiento que hace la máquina de Turing. Puede tomar los siguientes valores: o i? o —>: la máquina de Turing desplaza un lugar a la derecha su cabeza c lectura/escritura (R inicial del inglés right). o
Lo-t—: la máquina de Turing desplaza un lugar a la izquierda s lectura/escritura (L inicial del inglés left).
• (jo es el estado inicial. ■ B es un símbolo especial para denotar el espacio en blanco. Se cumple que
E
B e .r ■ F C
Qe s el conjunto de los estados de aceptación o estados finales.
Al igual que en el resto de autómatas vistos hasta el momento, una máquina de Turir acepta una cadena cuando, partiendo del estado inicial es capaz de llegar a un estado fin recorriendo la cadena de entrada. Sin embargo, ahora los estados de aceptación se considers estados finales. Esto es así porque una diferencia fundamental de las máquinas de Turing cc respecto a los autómatas vistos hasta el momento, es que una máquina de Türing para s ejecución una vez llega a un estado de aceptación. Por tanto, para aceptar una caden no es necesario que una máquina de Tiiring termine de procesar dicha cadena de 1 entrada. Al igual que en los autómatas finitos y en los autómatas a pila, la función de transición c una máquina de Turing puede describirse mediante una tabla de transiciones. En la tabla c transición de una máquina de Turing, las filas representan los estados de la máquina mienta que las columnas representan los símbolos que se pueden encontrar en la cinta de entrar (esto es, E U T). Puesto que la máquina de Turing para su ejecución al llegar al estado final, no se definirá ninguna transición desde los estados finales.
Ejemplo 9.1 Dado el alfabeto £ = {.?;, y}, sea M la máquina de Turing definida de la siguien manera:
INTRODUCCIÓN A LAS MÁQUINAS DE TURING
137
donde r = £ U {£?} es el conjunto de símbolos de cinta y definida mediante la siguiente tabla de transiciones: X
~>Q
r
{q, 0; ~
V (y, 1;
es la función de transición
B (/,
-
B; R) -
Esta máquina de Turing llega al estado final leyendo cualquier símbolo de la entrada y reemplazando en la cinta los símbolos x por símbolos 0 y los símbolos y por símbolos 1. Como se ve en este ejemplo, una máquina de Turing, además de procesar cadenas de entrada realiza operaciones en la cinta de entrada. En el caso de este ejemplo en particular, modifica el contenido de la cinta por cada símbolo que lee de la entrada.
_______ o _______
9.3. Descripciones instantáneas Puesto que en una máquina de Turing, cada transición implica la lectura de un símbolo de la entrada, un movimiento en la cinta y una operación de escritura en la cinta, es conveniente disponer de un mecanismo de representación que permita representar el estado de la máquina y de la cinta en cada momento. Es por ello que se definen las llamadas descripciones instantáneas en una máquina de Turing [Hopcroft et al., 2008]. Así, dada una cadena de entrada a\a2 ... a.¿_ia,a!+1... a.n, se supone que el símbolo actual de la entrada es el símbolo a, y que la máquina de Turing se encuentra en el estado La descripción instantánea de la máquina de Turing con esta configuración se representaría de la siguiente manera: n1a2 ...a i_iga
donde se ha representado el estado en el que se encuentra la máquina a la izquierda del símbolo actual. Así, dado un alfabeto E sea la máquina de Turing definida de la siguiente manera:
M=(Q,'Z,T,6,q0.B, F)
138
Descripciones
i n s t a n t á n e a
donde T es el conjunto de símbolos de cinta, B es el símbolo especial para denotar ur posición en blanco, qü es el estado inicial y F es el conjunto de estados finales. Así, dada una determinada configuración inicial de la máquina: aín a • • •
ai-iQaiai+i
sea la siguiente una transición definida en M :
6(q,
« ¿) =
(p, y, L)
entonces la configuración resultante al aplicar esta transición sería: ai
• • • a , - 2 ( /a !- 1y a í+1
Es importante notar que ahora el símbolo que denota el estado se encuentra a la izquierda di elemento i-l-ésimo ya que la máquina ha hecho un movimiento a la izquierda. Además ahoi el elemento i-ésimo es una Y puesto que la máquina de Turing ha realizado una operado de escritura tal y como indicaba la transición). El paso de una transición a otra se representa utilizando el símbolo K Así: 0,10,9 . . . a,;_igo¿a)+1 b aio.2 ■- ■a,_290»-i^'oj+i E j e m p l o 9 .2
Dado el alfabeto £ —{.r, y}, sea M la máquina de Turing definida en el ejemplo 9.1. í se considera la siguiente configuración inicial:
qxxyxyxBBB Entonces, la configuración final resultante al aplicar la máquina de Turing a esta cadena c entrada sería:
qxxyxyxBBB b OqxyxyzBBB b 00 OOÍOqyxBBB b OOlOlqxBBB b 001010
b b
001 001010
b
Indicar la configuración final resultante para las siguientes configuraciones iniciales: qxyxyxBB, qyyyxxBB y qyxxxyyBB.
o
INTRODUCCIÓN
9.4.
A
LAS
MAQUINAS
DE
TURING
139
Diagramas de transiciones para las máquinas de Hiring
Además de la tablas de transiciones, la función de transición de las máquinas de Turing pueden representarse igualmente utilizando diagramas de transiciones. Estos diagramas son similares a los vistos hasta el momento, en los que los nodos representan los estados y los arcos representan las transiciones. Cada transición se representa indicando el símbolo que se lee de la cinta de entrada, el símbolo que se escribe en la cinta de entrada y el movimiento que debe realizar la máquina. Así, por ejemplo, la porción de diagrama de transiciones mostrada en la figura 9.2, indica que la máquina cambia del estado p al estado cuando lee un 0 de la cinta escribiendo una X en la cinta y moviendo la cabeza de lectura/escritura una posición a la derecha. 0, Ar ;
Figura 9.2: Porción del diagrama de transiciones de una máquina de Turing.
E j e m p l o 9 .3
Dado el alfabeto E = {.r. y}, sea M la máquina de Turing definida de la siguiente manera: M = (Q, 'Z, r,6,q0, B , F ) donde:
-
Q
= {0ó,0i,0/}-
- r = E u { i? }. -
F = { ? / } •
la función de transición 5 se define mediante la siguiente tabla de transiciones: X * 9o
((/!,.r; R)
R)
0i
Ú
-
B ( qj , v ;R ) (qf ,B ;R ) ( 0 i , y; R) (qi,B\R) y
-
-
140
L
e n g u a j e s
R E C U R S I V A M E N T E
ENUMERABLE
y,y;R
B ,B ; R Figura 9.3: Diagrama de transiciones de la máquina de Turing del ejemplo 9.3.
Teniendo en cuenta esta tabla de transiciones, en la figura 9.3 se muestra el diagrama < transiciones de la máquina de Turing. Se puede ver en el diagrama de transiciones de la figura 9.3, que el estado q\ se encuento definidos tres bucles que hacen que la máquina de Turing siga desplazando la cabeza < lectura y escritura hacia la derecha indefinidamente. Por el contrario, desde el estado r se ha definido ninguna transición porque es un estado final. El diagrama de transiciones < la figura 9.3 sería equivalente al diagrama de la figura 9.4 donde no se ha definido ningui transición desde el estado q\. En este caso, como qi no es un estado final, se supone qi actúa como estado muerto. o
9.5.
El lenguaje de una máquina de Turing: lenguaje recursivamente enumerables
Una máquina de Turing acepta una cadena, cuando, al procesarla, llega a un estado fin o de aceptación. No obstante, ya se ha visto en la sección 9.2 que la diferencia fundament con los autómatas finitos y de pila es que ahora, cuando la máquina de Turing llega a i estado de aceptación, termina sus cálculos y acepta la cadena aunque no haya terminac
I n t r o d u c c i ó n a l a s m á q u i n a s
de
141
Turing
Figura 9.4: Diagrama de transiciones de la máquina de Turing del ejemplo 9.3 eliminando los bucles del estado cji. de procesarla. Por el contrario, los autómatas finitos y a pila si necesitan terminar de leer la cadena de entrada antes de aceptarla. Así mismo, se vio en la sección 9.2 que una consecuencia importante de este hecho es que de los estados finales de una máquina de Turing no parte ninguna transición. Es por ello que a estados también se los conoce como estados de parada). Dada una máquina de Turing M el lenguaje que acepta se representa por L(M ). Los lenguajes que son reconocidos por máquinas de Turing se denominan lenguajes recursivamente enumerables o estructurados po r frases [Hopcroft et al., 2008, Brookshear, 1993], A su vez, es claro que todo lenguaje independiente del contexto es, a su vez, recursivamente enumerable. E j em p l o
9.4
Dado el alfabeto E = {0,1}, sea L el lenguaje definido de la siguiente manera:
L= {0nl n : n > 0} Es posible definir una máquina de Turing que reconozca L. Así, sea M la siguiente máquina de Turing: M =
( { q o , q i , q 2 , q s , q j } ^ J ^ , q 0,B ,
donde el conjunto de símbolos de cinta es F = E U {X, y la ñtnción de transición 5 se define mediante el diagrama de transiciones de la figura 9.5 El funcionamiento de esta máquina de Turing consiste en ir marcando cada símbolo 0 que lee de la entrada con un símbolo A'. A continuación, busca en la cinta un símbolo 1 y lo marca con un símbolo Y . Después, se desplaza hacia la izquierda en la cinta hasta encontrar
142
L
e n g u a j e s
0,0: R
r e c u r s i v a m e n t e
e n u m e r a b l e
Y, Y\ L
Y, Y ; R Figura 9.5: Diagrama de transiciones de la máquina de Turing que acepta el lenguaje L = {0'T* : n > 0 } . el primer símbolo 0 que no haya marcado todavía. Así, la máquina de Turing aceptará 1 cadena cuando en la cinta sólo queden símbolos y eso sólo ocurriría si coinciden ( número de símbolos 0 y 1 en la entrada. Así, sea 0011 Bu Bna configuración de entrada. Las descripciones instantánea representan la ejecución de la máquina son las siguientes: - X qo00UBBB b XqiO O llBB b XO qtO llBB I X q 20 0 Y llB B b q2XQQYllBB b X qo0 0 Y U B B b X X q & Y llB B b X X X X O Y q illB B b X X 0 q 2Y Y l B B b X X q 20 Y Y lB B b X q 2X 0 Y Y l B B I X X q 0O Y Y lB B b X X X q xY Y l B B b X X X Y q ¡ Y \ B B b X X X Y Y q xl B B I X X X Y q 2Y Y B B b X X X q 2Y B b Y X X q 2X Y Y Y B B b I X X X X X Y q 3Y Y B B b X X X Y Y q 3Y B B b b X X
Definir las descripciones instantáneas que resultan de aplicar la máquina de Turing de la figura 9.5 a la configuración de entrada: 000111BB.
o
INTRODUCCIÓN
A
LAS
MÁQUINAS
DE
0,0; B
143
TURING
1,1;/?
Figura 9.6: Diagrama de transiciones de la máquina de Turing que acepta el lenguaje L — {0nl n2n : n > 0 } . E je m p l o
9.5
Dado el alfabeto E = {0,1,2}, sea L el lenguaje definido L = {0"T*2n : n > 0}. En este caso, L es un lenguaje recursivamente enumerable no independiente del contexto (ver sección 8.1). Una máquina de Turing que reconozca L puede definirse de la siguiente manera: M = ( { ( / o , gi,q2,
< 7 o ,
, {qf })
donde el conjunto de símbolos de cinta se define de la siguiente manera: = E U { X , Y , B } y la función de transición 8 se define mediante el diagrama de transiciones de la figura 9.6. El funcionamiento de esta máquina de Turing es similar a la máquina de la figura 9.5 y consiste en ir marcando cada símbolo 0 que lee con un símbolo X, a continuación, busca en la cinta un símbolo 1 , lo marca con un símbolo Y y busca en la cinta a continuación un símbolo 2 y lo marca con un símbolo Z. Después, se desplaza hacia la izquierda en la cinta hasta encontrar el primer símbolo 0 que no haya sido marcado todavía. Así, la máquina de Turing aceptará la cadena cuando en la cinta sólo queden símbolos X , Y y Z ’s y eso sólo ocurrirá si coinciden el número de símbolos 0,1 y 2’s en la entrada. Así, sea 001122BB una configuración de entrada. Las descripciones instantáneas que representan la ejecución de la máquina son las siguientes:
144
Le
n g u a j e s
recurs
iv a m e m t e
e n u m e r a b l e
ftOOl 122DDD b XqiQ \1 22BB b X0q1U 22 B B b b X 0 Y lq 222BB X 0 Y q 3lZ 2 B B b b q3X0YlZ2BB b X qo0 b B Z Y 0 l 2 b X X Y q x\Z 2 B B X X Y Y q 2Z2 B B b X X Y Y Z q 22BB b b X X Y q 3Y Z Z B B X X q 3Y Y Z Z B B b X q 3X Y Y Z Z B B b X X q 0Y Y Z Z B B b X X Y q ^ Y Z Z B B X X Y Y qiZ Z B B b X X Y Y Z q hZ B B b X X Y Y Z Z q bB B b X X Y Y Z Z B q j B
Definir las descripciones instantáneas que resultan de aplicar la máquina de Turing de la figura 9.6 a la configuración de entrada: 0001112225B.
o
Hasta el momento se están considerando máquinas de Turing que paran su ejecución c< las cadenas que aceptan, y para aquellas que no aceptan las máquinas de Turing continúi por lo general desplazando su cabeza de lectura y escritura indefinidamente hacia la derecl Es importante recordar que todas aquellas transiciones no definidas en estados que no s< finales, se supone que parten hacia un estado muerto. No obstante, existen lenguajes para los cuales una máquina de Turing es capaz de par su ejecución tanto cuando acepta una cadena como cuando no. Estos lenguajes se dice qi son recursivos o decidibles. Así, todo lenguaje independiente del contexto es decidible. En el caso de los lenguajes decidibles, es posible modificar las máquinas de Turing qi los reconozcan de manera que paren su ejecución siempre, pero marcando en la cinta si cadena es aceptada o no.
Ejemplo 9.6
Dado el alfabeto E = {0,1}, sea M la máquina de Turing de la figura 9.5. Se podi modificar su diagrama de transiciones de manera que la máquina M pare su ejecucit independientemente de que acepte o no la cadena de entrada.. Para ver si una cadena aceptada o no bastaría con inspeccionar el contenido de la cinta. A modo de ejemplo, < la figura 9.7 se muestra el diagrama incompleto de transiciones ya modificado. Por clarid; se ha marcado las transiciones con los símbolos y que representan las siguient transiciones:
INTRODUCCIÓN
A
LAS
MÁQUINAS
A
1,1 \R 2,2; R
DE
145
TURING
B 2,2; R
C 0,0; L 1,1; L 2,2 -L X , X; L Y, Y ; L Z, Z ;L
D 0, N; R l,N;R 2 ,N - R X ,N ] R Y,N:R Z ,N \ R
Esta máquina de Turing pararía siempre para cada cualquier cadena de entrada. No obstante, si la máquina de Turing acepta la cadena, escribirá en la cinta, al final de la cadena procesada, el mensaje O K . Por el contrario, si la máquina no acepta la cadena, escribirá al inicio de la cinta el símbolo N indicando que la cadena no es aceptada. 0,0; R
Y;
Figura 9.7: Diagrama de transiciones incompleto de la máquina de Turing que acepta el lenguaje L = {0"ln : n > 0}, parando siempre la máquina.
Completar el diagrama de tr ansiciones de la figura 9.7. o
146
9.6.
Extensiones
de
l a m á q u i n a d e
Turing
básic
Extensiones de la máquina de Turing básica
Con el objetivo de ampliar el poder de reconocimiento de las máquinas de Turing se ha propuesto una serie de extensiones:
- Las máquinas de Turing de varias cintas. — Las máquinas de Turing no deterministas.
No obstante, se puede demostrar (aunque no es el objetivo de este texto) que las máquim de Turing no deterministas son equivalentes a las máquinas de Turing de varias cintas y éstí a su vez son equivalentes a las máquinas de Turing deterministas con una única cinta.
Figura 9.8: Esquema general final de la jerarquía Chomsky para lenguajes.
I n t r o d u c c i ó n a l a s m á q u i n a s
9.7.
de
147
Turing
Lenguajes recursivamente jerarquía de Chomsky
enumerables
en
la
Ya se ha comentado que existen lenguajes que no pueden ser reconocidos por ninguna máquina de Turing. Los lenguajes recursivamente enumerables engloban al resto de clases de lenguajes vistos hasta el momento. Así, se puede completar el gráfico de la jerarquía de lenguajes de Chomsky el cuál se muestra en la figura 9.8.
De hecho, una máquina de Turing puede considerarse más potente que cualquier ordenador actual, ya que una máquina de Turing no tiene limitaciones en cuanto a memoria y tiempo de procesamiento. El determinar la complejidad en tiempo y en memoria de un determinado problema se ocupa la teoría de la complejidad y computabilidad.
9.8.
Ejercicios
(1) Dado el alfabeto E = {0,1}, definir una máquina de Turing que acepte el lenguaje L = { wE{0,1 }* ,n0(m) = ni(w)}.
(2) Dado el alfabeto E = {0,1,2}, sea M la máquina de Turing definida de la siguiente manera:
M = ({7o, 7i, 72, 73,7 4,7 /}, £ , I \ , ry0, B. {gf })
donde T = E U {Ar, Y} y S es la función de transición definida mediante el siguiente diagrama de transiciones:
148
E j
0,0; R
e r c i c i o
Y, Y; L
a) Describir el lenguaje L(M ). b) Definir un autómata a pila determinista que acepte c) ¿Cuál sería la configuración final después de ejecutar la máquina de Turing I\ cuando la configuración inicial es (/o0011222? (3) Dado el alfabeto E = {a-, y ,;}, definir una máquina de Turing que acepte el lenguaj formado por las cadenas que contienen al menos un símbolo x, un símbolo y y u símbolo s (considerar que al inicio de la cadena de entrada siempre hay un símbol en blanco, esto es, la configuración inicial para cualquier cadena de entrada w e; B w B B , con la cabeza de lectura/escritura situada en el primer símbolo de la izquierd de la cadena w). (4) Dado el alfabeto E = {a, 6, c}, definir una máquina de Turing que acepte el lenguaj formado por las cadenas no vacías tal que el primer símbolo de cada cadena no vueh a aparecer en el resto de la cadena. (5) Dado el alfabeto E = {a, b, c}, definir una máquina de Turing que acepte el lenguaje L =
{anbnc2 : n > 0} n
Capítulo 10 ____________
Ejercicios de autoevaluación Introducción La resolución de los ejercicios contenidos en este capítulo involucra todos los contenidos vistos en el texto, por lo que proporciona una ayuda adicional al estudio de la materia de Introducción a autómatas, gramáticas y lenguajes formales. Así, para cada ejercicio, se indican los conceptos involucrados que intervienen en su resolución, y se enumeran ciertas cuestiones adicionales. Estos dos elementos, además de la solución al ejercicio, proporcionan un elemento útil para el repaso de los contenidos. Aunque en algunas ocasiones se da respuesta a las cuestiones adicionales planteadas, se recomienda no consultar dichas soluciones antes de intentar resolver el ejercicio. En la mayoría de los casos son ejercicios similares a los vistos a lo largo del texto, su función es fundamentalmente proporcionar material de trabajo para repasar y comprobar la adquisición del conocimiento de esta materia.
Ejercicios
[TI Dado el alfabeto E =
y} sea L el lenguaje que genera la gramática definida de
la siguiente manera: G = ({S} ,{x,y},S,P ) donde S es el símbolo inicial de la gramática y producciones: S —^ S —>Sy S — xy > 149
es el siguiente conjunto de
150
Sea
M l eautómata definido de la siguiente manera: M — ({<7o>f/i !
S, {«., Z q },S, o<
{92})
donde la función de transición S se define mediante el siguiente diagrama de transición^ x, e;e
y.e; e
Indicar cuál de las siguientes afirmaciones es verdadera: (a)
L= L(M )
(b)
Lc
(c)
L (M )c L
(d)
L¿
L( M)
L( M)
Conceptos involucrados Para resolver este ejercicio es necesario: ■ Saber derivar el lenguaje que genera una determinada gramática. Identificar al men cinco cadenas que pertenecen y cinco cadenas que no pertenecen al lenguaje. Sab identificar la cadena de menor longitud que se deriva de la gramática. ■ Saber inteipretar autómatas a pila, el lenguaje que aceptan e identificar la función qi cumple la pila en el reconocimiento de las cadenas. ■ Conocer teoría básica de conjuntos: igualdad entre conjuntos y definición < subconjuntos.
Solución La opción verdadera es la opción (a). El lenguaje L generado por la gramática G el lenguaje compuesto por todas aquellas cadenas formadas por símbolos x y seguidas 1 símbolos y, conteniendo al menos una x y una y. El autómata a pila M acepta el misn conjunto de cadenas, ya que sólo utiliza la pila para comprobar que en la cadena de entrai
EJERCICIOS
DE
151
AUTOE VALUAC ION
haya al menos un símbolo x y al menos un símbolo y. En los estados se leen símbolos x e y en ese orden.
y r/¿ comprueba que
Cuestiones adicionales
Para continuar con el trabajo en el ejercicio conviene plantearse las siguientes cuestiones: ■ ¿Es L un lenguaje regular? En caso afirmativo, construir el autómata finito que reconoce el lenguaje L. En este caso, puesto que el autómata a pila prácticamente no hace uso de la pila al procesar las cadenas, se puede definir el siguiente autómata finito: P = ({Po,Pi
x y
■ Definir un lenguaje Lyindependiente del contexto no regular que cumpl Es claro que si se define L\ = {xnyn : n > 0} se cumple que Ly c L.
Dado el alfabeto E = {x. y, ;}, sea Ly el lenguaje que expresa la siguiente expresión regular (z+y)*x. Sea Lo el lenguaje que acepta el autómata definido de la siguiente manera: M = ({p, q, r}, E, 5,p, {r}) donde la función de transición <5está definida por el siguiente diagrama de transiciones: y
Indicar cuál de las siguientes afirmaciones es verdadera:
152
(a) U = U (b) L\ C
L 2
(c) L2 C L i
(d) Ninguna de las anteriores afirmaciones es verdadera
Conceptos involucrados Para resolver este ejercicio es necesario: ■ Saber interpretar expresiones regulares. Identificar al menos cinco cadenas qu pertenecen al lenguaje correspondiente a la expresión regular y cinco cadenas qu no pertenecen a dicho lenguaje. ¿Cuál es la cadena de menor longitud que genera 1 expresión regular? ■ Saber interpretar autómatas finitos. Identificar al menos cinco cadenas que pertenece al lenguaje que acepta el autómata y cinco cadenas que no pertenecen a dicho lenguaji ¿Cuál es la cadena de menor longitud que acepta el autómata? ■ Conocer teoría básica de conjuntos: igualdad entre conjuntos y definición d subconjuntos.
Solución La opción verdadera es la opción (c). El autómata acepta todas las cadenas que comienza por cero o más símbolos 2 (dado el bucle en el estado p), seguidos de una o más s (dad la transición de p a qyel bucle en el estado q) y terminadas en un único símbolo la transición del estado q al estado r). L u por su paite, contiene todas aquellas cadenas qu comienzan por cualquier combinación de s’s e s (dado el término (2 + y)* de la expresió regular) y terminadas en una única x. Es claro que todas las cadenas que acepta el autómata están contenidas en Li, pero no ¡ contrario. Por ejemplo, la cadena x € L\ pero L2. Por tanto, se cumple que C
Cuestiones adicionales Para continuar con el trabajo en el ejercicio conviene plantearse las siguientes cuestione: ■ ¿Cuál esla expresión regular equivalente al autómata finito M ? Siguiendo de eliminación de estados, se elimina en primer lugar el estado q. El diagrama d transiciones resultante es:
EJERCICIOS
DE
153
AUTOEVALUACIÓN
Considerando que el bucle del estado p equivaldría a la estrella de Kleene del símbolo z, la expresión regular equivalente al autómata del enunciado sería: • Definir un autómata finito equivalente a la expresión regular (.: + y)*x. Un autómata finito equivalente a esta expresión regular podría definirse de la siguiente manera: M =
{91})
donde la función de transición 5 se define mediante el siguiente diagrama de transiciones:
■ ¿En qué lugar de la jerarquía de Chomsky se encuentran Li y L 2? Ambos lenguajes son lenguajes regulares ya que los reconocen una expresión regular y un autómata finito respectivamente.
Dado el alfabeto E = {.r, 1/}, considerar los lenguajes: L\ = {.rnyn : v > 0} y ¿2 = {xny2n: n > 0}. Sea L el lenguaje intersección de L\ y Lo, esto es, fl L2. Indicar cuál de las siguientes afirmaciones es verdadera: (a) El lenguaje L es un lenguaje regular. (b) El lenguaje L es un lenguaje independiente del contexto determinista no regular. (c) El lenguaje L es un lenguaje independiente del contexto no determinista no regular.
154
(d) El lenguaje L es un lenguaje recursivamente enumerable no independiente de contexto.
Conceptos involucrados Para resolver este ejercicio es necesario: ■ Conocer la operación de intersección entre dos conjuntos. La intersección de los do¡ lenguajes L\ y L 2 contiene todas aquellas cadenas que pertenecen tanto al lenguajt L o . Las cadenas pertenecientes a la intersecc L\ como al lenguaje deben cumplir las condiciones de ambos. ■ Saber interpretar las condiciones de pertenencia de una cadena a un lenguaje dado. Ei este caso, si w E L\entonces -w debe tener el mismo número de . parte, si tu £ L 2 ,entonces w debe tener el doble número de s que de .r’ pueda cumplir estas dos condiciones el número de r ’s e s en w debe ser ü. Esto m es posible puesto que en la definición de ambos lenguajes se especifica que n > 0. Poi tanto, Lj í~l L -2 = 0. ■ Conocer algunos lenguajes dentro de cada nivel de la jerarquía de Chomsky. Ei concreto, el lenguaje 0 es un lenguaje regular que reconoce el siguiente autómata finito .r
r
V
V
Solución Puesto que L\ fl L2 es un lenguaje regular, la opción verdadera es la (a). CUESTIONES ADICIONALES
■ Definir un lenguaje Lo de manera que L\0. P L2 de la siguiente manera: L o = {xny: n > 0}. La cadenas formadas por una serie de símbolos x y terminadas en un único símbolo y Por tanto, L 2 n L o = {xy} es un lenguaje finito y por tanto, es un lenguaje regular qut puede ser reconocido por el siguiente autómata:
EJERCICIOS
DE
■ Definir
155
AUTOEV ALUAC IÓN
doslenguajes L i y L 2 de manera que:
• Li D Lo es un lenguaje independiente del contexto no regular. Sean Li = {xnynzm: n, ni > 0} y L2= [xnynz que es un lenguaje independiente del contexto no regular.
n
• Li rU 2 es un lenguaje recursivamente enumerable no independiente del contexto. Sean L\ = {xnynzm : ?í , m. 0 >} y L \fl L2 = { x nynz n :n 0 >} que es un lenguaje recursi independiente del contexto.
[4 ] Dados dos lenguajes L 2 y L2 independientes del contexto no regulares. Indicar cuál de las siguientes afirmaciones es falsa: (a) La unión de ¿1 y L 2 siempre es un lenguaje independiente del contexto. (b) La concatenación de L\ y L2 siempre es un lenguaje independiente del contexto. (c) La estrella de Kleene de L-¡_ siempre es un lenguaje independiente del contexto. (d) La intersección de
L \y L 2 siempre es un lenguaje independiente del co
Conceptos involucrados Para resolver este ejercicio es necesario conocer las propiedades de los lenguajes independientes del contexto vistas en el capítulo 8.
Solución La afirmación de la opción (d) es falsa. En el capítulo 8 se desarrolla un ejemplo de dos lenguajes independientes del contexto Lcuya in enumerable no independiente del contexto.
156
Cuestiones adicionales Para continuar con el trabajo de este ejercicio, convendría recordar ejemplos de lenguaje independientes del contexto y definir su unión, concatenación y estrella de Kleene. Como punto de partida, se pueden considerar los siguientes dos lenguajes: Li = { x nynzm : n, m > 0 }
{xnymz2n : n, m > 0}
y dar respuesta a las siguientes cuestiones: — ¿Qué cadenas componen el lenguaje
L*1
— ¿Qué cadenas componen el lenguaje L.¿? — ¿Qué cadenas componen el lenguaje L\ U
Considere el lenguaje L = {xnynzn\n > 0}. Indicar cuál de las siguiente afirmaciones es verdadera: (a) Es posible construir un autómata a pila determinista que reconozca L. (b) L es un lenguaje regular. (c) L es un lenguaje recursivamente enumerable no independiente del contexto. (d) Ninguna de las anteriores afirmaciones anteriores es verdadera.
Conceptos involucrados Para poder dar solución a este problema es necesario conocer la jerarquía de Chomsk; En particular es especialmente útil conocer ejemplos de cada uno de los niveles disponible en la jerarquía.
Solución La opción verdadera es la opción (c). La opción (a) es falsa puesto que L no cumple t lema de bombeo (ver sección para los lenguajes independientes del contexto 8.1. De manei trivial la opción (b) es falsa (si un lenguaje no es independiente del contexto no puede se
Ejercicios
157
d e a u t o e v a l u a c i ó n
regular). La opción (c) es verdadera ya que existe una máquina de Turing que reconoce L (ver sección 9.5). Cuestiones adicionales
Para continuar el trabajo con el ejercicio, conviene recordar la máquina de Turing que reconocería el lenguaje Lyen general recordar las máquinas de Turing vista 9.
Dado el alfabeto E, sea M el autómata a pila definido de la siguiente manera: M = ({p, <7,
r,
s,
t,
u,/} , E, T, 5,p, Z0, {/})
donde T = {a, c, Z0} es el conjunto de símbolos de pila y es la función de transiciones que se define mediante el siguiente diagrama de transiciones (se supone que inicialmente la pila se encuentra vacía): a, e; a
fe, e; c
c,e;c
a, c; e
Indicar cuál de las siguientes afirmaciones es verdadera: (a) L{M ) es un lenguaje regular. (b) No existe una gramática en Forma Normal de Chomsky que genere L(M ). (c) El número de c’s en todas las cadenas que pertenecen a L (M ) debe ser igual a la suma de los símbolos a y fede la entrada. (d) Ninguna de las anteriores afirmaciones es verdadera.
158
Conceptos involucrados Para resolver este ejercicio es necesario conocer el funcionamiento de los autómatas s pila y saber identificar la función de la pila. Esto es, qué símbolos inserta y lee de la pila el autómata y cuándo lo hace. Así mismo, es necesario conocer la jerarquía de Chomsky para lenguajes. Por último, una vez identificado el tipo de lenguaje que reconoce el autómata es necesario conocer cuándo es posible transformar una gramática a su Forma Normal de Chomsky.
Solución La opción verdadera es la opción (d). La opción (a) es falsa puesto que el autómata acepta el lenguaje: L ( M )- { a Tlbr"‘Cp a qbn ,
q — p
+ m , n,
>
l,p
> 0}
que es un lenguaje independiente del contexto no regular. El autómata utiliza la pila por un lado, para llevar la cuenta del número de símbolos a leídas al inicio de la cadena para comprobar que coincide con el número de 5’s leídas al final. Por otro lado, el autómata utiliza la pila también para llevar la cuenta del número de símbolos b leídas al inicio de la cadena (después de las primeras a ’s) y el número de c’s que se leen a continuación, para comprobai que el número de a ’s leídas al final de la cadena (antes de las últimas 6’s) coincide con la suma de bsy c’s leídas.
Cuestiones adicionales Para continuar trabajando con el ejercicio se recomienda responder a las siguientes cuestiones: ■¿ Es posible modificar el autómata a pila del enunciado para que reconozca el lengu L\ ?, donde'. L \ =
{dnbmcpamb: nn ,
rn > 0 }
Para reconocer el lenguaje bastaría con modificar las trans Li en los estados r y s, para que el autómata no introduzca ningún símbolo en la pil£ cuando lee símbolos c de la entrada. ■ ¿Es posible modificar el autómata a pila del enunciado para que reconozca el lenguaje L o ? , donde:
EJERCICIOS
DE
AUTOEVALUACIÓN
L2 =
159
{anbmcmdml f : n ,m , p > 0}
En este caso, no sería posible modificar el autómata a pila M puesto que L2 es un lenguaje recursivamente enumerable no independiente del contexto. L 2 es similar al lenguaje {xnynz 11 n : > 0 } y no cumple el lema de bombe independientes del contexto. ■ ¿Es posible definir una gramática en Forma Normal de Chomsky que genere el lenguaje L 3 ?, donde: 1
q= p+ m, n. m > O.p > 0}
{anb"lcpaqbn,
En este caso, no es posible definir una gramática en Forma Normal de Chomsky que genere el lenguaje L 3 puesto que c € L 3ya que n, m y p
m Dado el alfabeto S = {a, b,c}, sea L el lenguaje que representa l (a + b)*bc(a + b)*. Indicar cuál de las siguientes afirmaciones es verdadera: (a) c G L. (b)
LC
Lodonde L2 es el lenguaje representado por la expresión regular be (a + />)*.
(c) L contiene un número infinito de cadenas. (d) Ninguna de las anteriores afirmaciones es verdadera. Conceptos involucrados
Para resolver este ejercicio es necesario saber interpretar las expresiones regulares vistas en el capítulo 4, saber definir el lenguaje que expresan y saber identificar cadenas válidas y no válidas de este lenguaje. El lenguaje L del enunciado es el lenguaje que contiene las cadenas que comienzan con cualquier combinación de cero o más símbolos y seguidas de la subcadena be y terminadas con cualquier combinación de cero o más símbolos a y b. Son cadenas válidas de este lenguaje las siguientes: , be, babbcbb, bbbcaaa y baabcaa. Las siguientes cadenas no son cadenas válidas del lenguaje: a,a, bb, ccc, aabbac y cae.
160
Solución La opción verdadera es la opción (c). La opción (a) es falsa puesto que la cadena más corta contenida en L es la cadena bey e £ L. La opción (b) es falsa porque existen cadenas de L que no pertenecen a L<¿. L 2 contiene las cadenas que comienzan por la subcadena be y terminadas con cualquier combinación de símbolos a y b. Por tanto y a modo de ejemplo, la cadena abena G L pero abeaa ^ L2. De hecho, se cumple que C L. La opción (c) es verdadera puesto que L se define mediante la operación de estrella de Kleene y la estrella de Kleene de cualquier lenguaje distinto de {e} o 0, contiene un número infinito de cadenas.
Cuestiones adicionales Para continuar trabajando con el ejercicio se recomienda responder a las siguientes cuestiones: ■ Definir un autómata finito equivalente a la expresión regular (a -|- b)*bc(a 4- b)*. Ur posible autómata finito equivalente a esta expresión regular se define de la siguiente manera: M x = ({0, 91*92}, {a, b, c}5^,q0, {<£>}) donde la función de transición <5| se define mediante la siguiente tabla de transiciones:
- * 9o 9i q*¿
a
b
9o 9o
9i 9)
92
92
c -
Q 2 -
■ Definir un autómata finito equivalente a la expresión regular bc(u + b)*: Un posible autómata finito equivalente a esta expresión regular es similar al autómata M x definido anteriormente: M 2 = ({ío, 9i> donde la función de transición
60 se
Qu} ,{«, b, c}¿2, qo, {92})
define mediante la siguiente tabla de transiciones: a
—t 9o 9i 9l
—
-
cl 2
b 9i
c —
-
92
92
-
EJERCICIOS
DE
161
AUTOEVALUACIÓN
8
Dado el alfabeto E = {0,1}, sea L el lenguaje formado por todas las cadenas de ongitud par (se considera que c € L). Indicar cuál de las siguientes afirmaciones es verdadera: (a) L es regular. (b) L es un lenguaje independiente del contexto determinista no regular. (c) L es un lenguaje independiente del contexto no determinista no regular. (d) L es un lenguaje recursivamente enumerable no independiente del contexto.
Conceptos involucrados Para resolver este ejercicio es necesario conocer la jerarquía de lenguajes de Chomsky.
Solución Es claro y se ha ido viendo a lo largo del texto que L es un lenguaje regular ya que no es necesario ningún tipo de memoria para reconocer sus cadenas.
Cuestiones adicionales Para continual' trabajando con el ejercicio se recomienda responder a las siguientes cuestiones: ■ Definir un autómata finito que reconozca L. El autómata M definido a continuación cumple que L(M) — L: M = ({?;,},
{p})
donde la función de transición <5 se define mediante el siguiente diagrama de transiciones: 1
1
162
■ Definir una expresión regular que represente el lenguaje L. La expresión regular ((O + 1)(0 + 1))* genera cadenas con un número par de símbolos. ■ ¿Es posible definir una gramática en Forma Normal de Chomsky que genere L? No, no es posible ya que e E L. ■ Definir una gramática regular que genere el lenguaje L. La gramática G definida a continuación cumple que L ( = L: G) G={{S,A},{0,1},S,P) donde S es el símbolo inicial y
P e s el siguiente conjunto de S —^ S —t S ^e A - > 0 S A - H S
9
Dado el alfabeto E = {
ab}, sea L el , el siguiente lenguaje que acept autómata:
donde ó es la función de transición definida mediante el siguiente diagrama de transiciones: fl
Indicar cuál de las siguientes afirmaciones es verdadera: (a) L es un lenguaje independiente del contexto no regular. (b) Es posible definir una gramática G en Forma Normal de Chomsky tal que L — L(G). (c) L contiene un número infinito de cadenas.
Ejercicios
d e a u t o e v a l u a c i ó n
163
(d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar autómatas finitos, conocer la jerarquía de lenguajes y la definición de la Forma Normal de Chomsky para gramáticas independientes del contexto.
Solución La única opción verdadera es la opción (d). M únicamente acepta la cadena vacía y por tanto, L ={e}. La opción (c) es por consiguiente falsa, y es regular por lo que la opción (a) es falsa (esta opción es trivialmente falsa puesto que M es un autómata finito y por tanto L(M) siempre será regular). La opción (b) es falsa puesto que e £ L.
Cuestiones adicionales Para continuar trabajando con este ejercicio se recomienda dar respuesta a las siguientes cuestiones: ■ Modificar el autómata finito M de manera que L(M) contenga un número infinito de cadenas. Bastaría con añadir un bucle para alguno de los símbolos del alfabeto en el estado s. ■ ¿Qué expresión regular representa el lenguaje L del enunciado? Puesto que L = {<=}, la expresión regular compuesta únicamente por la cadena vacía e representaría L. ■ ¿Es necesario definir el estado t en el autómata M para que el autómata sea determinista? No, en este texto se considera determinismo si no hay ambigüedad en las transiciones, pero puede no definirse el estado muerto.
1 0 J Dado el alfabeto S = {a, 6}, sean L x y Lo los lenguajes que reconocen los autómatas Mi y M 2 respectivamente, donde M\ — donde ó] es la función de transición definida mediante el siguiente diagrama de transiciones:
a
164
y M2 = ({s, í}, 2, <52, s, {t}) donde ó2 es la función de transición definida mediante el siguiente diagrama de transiciones: bb
Indicar cuál de las siguientes afirmaciones es verdadera: (a) L\ U L2 se puede expresar mediante la expresión regular (a + b)*. (b)
L\UL2 = {e}.
(c) Li U L2 es un lenguaje independiente del contexto no regular. (d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar autómatas finitos, conocer las operaciones entre lenguajes (en concreto la unión), conocer la representación de lenguajes mediante expresiones regulares y conocer la jerarquía de lenguajes.
Solución La opción verdadera es la opción (a). L\ es el lenguaje formado por las cadenas con un número par de a’s. Lo es el lenguaje formado por las cadenas con un número impar de a ’s. Por tanto, L\U L2 contiene cualquier cadena que, o bien tenga un número par de a’s, o tenga un número impar de a ’s. Por tanto, L\ U L2 contiene cualquier cadena que se pueda U formar con los símbolos del alfabeto. La opción (b) es falsa puesto que e € pero Li U Lo. eya que existen otras cadenas en L x U La opción (c) es trivialmen puesto que L\ U L2 es un lenguaje regular (por ser la unión de dos lenguajes regulares).
Cuestiones adicionales Para continual- el trabajo con este ejercicio, se recomienda dar respuesta a las siguientes cuestiones: ■ Resolver este ejercicio modificando el autómata j para que acepte las cadenas que contengan un número par, tanto de símbolos a como símbolos b. Para que Mi acepte las cadenas que contengan un número par, tanto de símbolos a como símbolos b, se modificaría el autómata de la siguiente manera:
EJERCICIOS
DE
165
AUTOEVALUACIÓN
M[ = ({5o13i, 92, donde la función de transición
0S , <5', go- {
5' se define mediante la siguiente tabla de transiciones:
a
“ Mo
0\ 02
93
b 02 Qo Os Os Oo 02 Oí
En este caso Li U L2 contiene todas las cadenas que o bien tienen un número impar de símbolos a o bien tienen un número par de símbolos a y símbolos En este caso, la opción verdadera sería la opción (d) puesto que en este caso, la opción (a) sería falsa puesto que la cadena aab pertenece al lenguaje que expresa la expresión regular L 2y aab £ L{M[). ( a+ b)* pero aab 6 ■ Definir el autómata que acepte el lenguaje L\ U L2. Siguiendo el método descrito en la sección 5 . 1 . 1 , el autómata Munión definido a continuación acepta el lenguaje L[ U I 2 :
n u{<70, ió (
l) 0.2 1(/3; S, í} O
donde la función de transición <5,m¿on se define mediante la siguiente tabla de transiciones:
a I* Í0i,t) Oí Oo Oo 0¡ 02 03 02 Os S t t* 8 ¿El autómata Mnmón
b (02; s ) 02 Os Oo 0^ S
■t
esun autómata determinista o no determinista?
autómata Mun¡ón es un autómata finito no determinista puesto que en el nuevo estado inicial I hay dos transiciones posibles para cada símbolo del alfabeto.
166
Dada la siguiente máquina de Turing: M = ({®>,
u 929, < 73, 94}, { 0 ,1}, {0,1, X , Y,
, 0. 5 , {g4})
donde 6 se define mediante la siguiente tabla de transiciones: 1 (92, Y, L)
(
-
-
-
-
-
-
0 <7o ( g t , x , R ) (91, 0, R) 9i ?2 (q2. 0, L) q I
X -
Y (93, Y R) (9i ,Y,R) (92, Y, L) (9a, Y R) m
B -
(94,
B R) . -
Considere la siguiente configuración inicial í/oOOOIIISjBB. Indicar cuál de la siguientes afirmaciones es verdadera: (a) La configuración final una vez ejecutada la máquina de Turing con esa configuración inicial es X X XYYYBq^B. (b) La configuración final una vez ejecutada la máquina de Turing con esa configuración inicial es q4X X X Y Y Y B B . (c) La configuración final una vez ejecutada la máquina de Turing con esa configuración inicial es X X X Y Y Y q ^ B B . (d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario conocer el funcionamiento de las máquinas df Turing.
Solución La opción verdadera es la opción (a). Basta con mostrar las configuraciones de la cint£ de entrada en cada paso de ejecución de la máquina de Turing: «,000111 i- A'r/x00111 I- X 0r/i0111 b XOO91I I I b A O ^ O ril b Xq^dOYU b q2X 0 0 Y l l b Ag00 0 ri l b X X qiQYU b X X O f r Y l l b X A O T ^ l l b XX ()q2Y Y l b X X q 20 Y Y l b X q 2X Q Y Y l b X X q 0OYYl b X X X q {Y Y l b X X X Y q i Y l b X X X Y Y q i l b X X X Yq2Y b Y X X X q 2Y Y Y b b b X X X Y q AY Y b X X X Y Y q :iY b X X X Y Y Y q 3B b B
EJ ER CI CI OS
DE
R U T O E VA L U AC I Ó N
167
Cuestiones adicionales Aunque es una máquina de Turing que se ha estudiado en el capítulo 9, se recomienda buscar las configuraciones finales dadas las siguientes configuraciones iniciales: q0UQQBB. qoOlOIBBB, qoOülBBB y
12
Dado el alfabeto E = {0,1}, considere el lenguaje L = {0"10n : n > 1}. Indicar cua de las siguientes afirmaciones es verdadera: (a) L es un lenguaje regular. (b) El lenguaje complementario de L es regular. (c) L es un lenguaje independiente del contexto no regular. (d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario conocer la jerarquía de lenguajes vistas a lo largo del texto.
Solución La opción verdadera es la opción (c). L es un lenguaje independiente del contexto no regular, el autómata a pila que lo reconozca será similar al que reconoce el lenguaje L = {xnyn : n 0 >} visto en el capítulo 7. La opción (b) es falsa puesto que el complementario de un lenguaje regular es regular. Por tanto, si el complementario de L fuera regular entonces L debería ser regular.
Cuestiones adicionales Para continuar con el trabajo en este ejercicio conviene definir el autómata a pila que acepte el lenguaje L.
168
13J Dado el alfabeto S = {.r, y.
considere el lenguaje que representa U siguiente expresión regular: x*y*z* y L2 el lenguaje que acepta el autómata definido de la siguiente manera: NI = ({ pq, r), , S, define mediante el siguiente diagrama de transiciones: x
y
Indicar cuál de las siguientes afirmaciones es verdadera: (a) L\ = L2 (b) L x C ¿ 2 (c) L/2 C L\ (d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar autómatas finitos, expresione! regulares y conocer las operaciones entre lenguajes.
Solución La opción verdadera es la opción (d). La opción (a) es falsa puesto que la cadena xyzy € L2 pero xyzy ^ Lj y por tanto, la opción (c) es igualmente falsa. Por otra parte, la opciór (b) es falsa puesto que xz G L\ pero xz £ L2.
Cuestiones adicionales Para continuar con el trabajo de este ejercicio conviene dar respuesta a las siguiente: cuestiones: ■ Definir el autómata finito equivalente a la expresión regular x*y*z*. El autómata Afi definido a continuación es equivalente a esta expresión regular:
EJERCICIOS
DE
169
AUTOEVALUACIÓN
Mz = ({go,
,7 i-<2}, {*, y ,z) , fa.
, {go, 71, 72})
donde la función de transición ¿2 se define mediante la siguiente tabla de transiciones:
7o 7Í 72*
X
y
7o
71
( l2
-
71
(l2
-
-
/W
72
■ Definir Ja expresión regular equivalente al autómata finito M. Una expresión regular equivalente al autómata finito M sería la siguiente: x* ( + + yy*z(z + x + V)*)-
Dado el alfabeto E, sea M el autómata a pila definido de la siguiente manera: M - ({p, q, r, s, t, u}, E, T, ó,p, ZQl {«}) donde T — {.4, B, Zoj es el conjunto de símbolos de pila y es la función de transición definida mediante el siguiente diagrama de transiciones (se supone que inicialmente la pila se encuentra vacía):
a,
e;A
b,e:B
c.B\t
a,A\e
Indicar cuál de las siguientes afirmaciones es verdadera: (a) L(M) es un lenguaje regular. (b) El número de a' s debe coincidir con el número a L(M) . (c) El número de pertenecen a L{ M).
s en todas las cadenas que pertenecen
b’ s debe coincidir con el número de c’s en todas las c
(d) Ninguna de las anteriores afirmaciones es verdadera.
170
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar un autómata a pila y sabe: definir el lenguaje que acepta. Este autómata se ha visto ya a lo largo del texto. El objetive de este ejercicio es saber interpretar las opciones que se plantean.
Solución La opción verdadera es la opción (c). El autómata introduce en primer lugar, el símbolo de pila vacía en la pila. Después, introduce en la pila un símbolo A cada vez que lee un símbolo í de la entrada. A continuación, lee símbolos b de la entrada (al menos uno), mientras introducf en la pila un símbolo B por cada b que lee de la entrada. A continuación, lee símbolos c (a menos uno) de la entrada mientras extrae de la cima de la pila un símbolo B. Cuando hí leído el mismo número de símbolos cy pila), empieza a leer símbolos a de la entrada mientras extrae un símbolo A de la cima de 1; pila por cada a que lee. Finalmente, acepta la cadena cuando la pila vuelve a estar vacía. Po tanto, L(M) = {a'&c’a1: i , j > 0}.
Cuestiones adicionales Para continual- el trabajo con el ejercicio, se recomienda modificar el autómata para qu« acepte el lenguaje L = {alb'ckái+:1+k : i,j,k > 0}. En símbolo A en la pila por cada símbolo a,byc. que se lea de la entrada. Posteriormente, po: cada símbolo a del final de la cadena que se lea de la entrada, se extraerá un símbolo A de 1¡ pila. El autómata a pila aceptará la cadena cuando la pila se quede vacía.
Sea M la máquina de Turing definida a continuación: M
=
( {fí o, 9 i , 9 / } , ( o , 1 } . { 0 , 1 ,
ó, g0, B, {qf })
donde la función de transición 6 se define: % o , 1) = (qi,B,R)
ó(9i, 1) = (9/,1,-ñ) <5(9i,0) = (9 /, 0.7?)
b(qi;B) = Indicar cuál de las siguientes afirmaciones es verdadera:
Ejercicios
(a)
d e a u t o e v a l u a c i ó n
171
L ( M )es regular.
(b) L(M) es independiente del contexto determinista no regular. (c) L( M) es independiente del contexto no determinista no regular. (d) L(M) es recursivamente enumerable no independiente del contexto.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar una máquina de Turing y recordar la jerarquía de lenguajes.
Solución La opción verdadera es la opción (a). La máquina de Turing únicamente comprueba que el primer símbolo de la cadena sea un símbolo 1.
Cuestiones adicionales Puesto que el lenguaje L(M) es regular, se recomienda: ■ Definir la expresión regular que representa el lenguaje L{M). El lenguaje puede representarse mediante la expresión regular 1(0 -I-1)*. ■ Definir el autómata finito que acepta el lenguaje L( M). El autómata que se define a continuación acepta el lenguaje L(M): P = ({(/0,
* ¿ Qll¿ ventaja se podría encontrar en definir una máquina de Turing en vez de un autómata finito para reconocer el lenguaje L(M)? La máquina de Turing puede parar una vez que compruebe que el primer símbolo de la cadena es un 1.
172
16 Sea G la gramática definida de la siguiente manera G = ({S', , B ) , {.r, y} , S, donde S es el símbolo inicial y
P e s el siguiente conjunto de produc S — x>x A y y B A - 4 x x A A —>e B - 4 y y B B ^ e
Indicar cuál de las siguientes afirmaciones es verdadera: (a) G es una gramática regular. (b) L(G) es un lenguaje regular. (c) L(G) es un lenguaje independiente del contexto no regular. (d) G no puede transformarse en Forma Normal de Chomsky.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar las gramáticas independiente! del contexto y las diferencias con las gramáticas regulares. Así mismo, es necesario sabe definir el lenguaje que se deriva de una gramática y las condiciones que cumple uní gramática en Forma Normal de Chomsky.
Solución La opción verdadera es la opción (b). La opción (a) es falsa puesto que las produccionei de G no cumplen con las restricciones de las producciones de las gramáticas regulares La opción (d) es falsa puesto que e ^ L(G) y por tanto es posible transformar G en un¡ gramática en Forma Normal de Chomsky. Para averiguar cuál de las opciones (b) o (c) e: verdadera, se debe definir el lenguaje L(G). Así, las cadenas que se derivan del no termina A son aquellas cadenas que contienen un número par de :r’s ( o bien cero x). De la mism¡ manera, las cadenas que se derivan del no terminal B son aquellas cadenas que contienen ut número par de y 's (o bien cero y). El número de x' s no tiene por qué coincidir con de y 's y por tanto, L[G) es un lenguaje regular.
Cuestiones adicionales Para continuar con el trabajo del ejercicio, se recomienda dar respuesta a las siguiente! cuestiones:
Ejercicios
173
d e a u t o e v a l u a c i ó n
■ Definir la expresión regular equivalente a la gramática G. Una expresión regular equivalente a la gramática G es xx(xx)*yy(y y) *. ■ Definir un autómata finito equivalente a la gramática G. Puesto que la gramática G no es una gramática regular, no es posible aplicar el procedimiento visto en la sección 3.4. Para definir el autómata finito equivalente a se debe definir el autómata considerando las cadenas incluidas en L(G). Así, el autómata M definido a continuación, acepta el lenguaje L(G): M = ({go, gi,
9 3 ,94},
{*, y}-S, g0, {94})
donde la función de transición ó se define mediante la siguiente tabla de transiciones: X
9o 9i 92 9i 2 9i
y •
-
93
93
-
94
9|
-
93
171
Sea G la gramática definida de la siguiente manera G = ({5}, {a, b, c}. S, donde S es el símbolo inicial y P e s el siguiente conjunto de produccio S accS S ->■ bScc S cc Indicar cuál de las siguientes afirmaciones es verdadera: (a) G es una gramática regular. (b) L(G) es un lenguaje regular. (c)
L(G )es un lenguaje independiente del contexto no regular.
(d) No es posible definir una gramática en Forma Normal de Chomsky equivalente a G.
174
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar las gramáticas independiente: del contexto, conocer la jerarquía de lenguajes y las condiciones de una Forma Normal d( Chomsky.
Solución La opción verdadera es la opción (c). La opción (a) es falsa puesto que G no cumpl< con las condiciones de una gramática regular. La opción (d) es falsa puesto que e ^ L( G y por tanto, es posible transformar la gramática G es una gramática equivalente en Form. Normal de Chomsky. La opción (b) es falsa puesto que L(G) no cumple con el lema d< bombeo de los lenguajes regulares. Intuitivamente, es necesario disponer de una pila pan poder reconocer las subcadenas que genera la segunda producción de la gramática.
Cuestiones adicionales Para continuar con el trabajo en este ejercicio, conviene dar respuesta a las siguiente: cuestiones: ■ Definir un autómata a pila equivalente a la gramática G. El autómata a pila definidt a continuación acepta el lenguaje L(G): M = ( { , qi,
q2,
q$,q4,
donde T = {c, Z0} es el conjunto de símbolos de pila y la función de transición 6 s< define mediante el siguiente diagrama de transiciones (se supone que inicialmente 1¡ pila contiene únicamente el símbolo Z q ): b, e; cc
c, c;
Ejercicios
d e a u t o e v a l u a c i ó n
175
■¿ Cuál sería el lenguaje que generaría G si se elimina la primera producción ? En ese caso el lenguaje sería: L = {bnc2n+‘ 2, n > 0).
1 8 j Dado el alfabeto E = {a, b}, sea L\el lenguaje re expresión regular a(a)* y ¿2 el lenguaje representado por la expresión regular (a + b)*b. Indicar cuál de las siguientes afirmaciones es verdadera: (a)
Lin Li puede representarse mediante la expresión regular a(a. + b)*b.
(b) L i fl L2 es un lenguaje independiente del contexto no regular. (c) Ly U Lo es un lenguaje independiente del contexto no regular. (d) Ninguna de las anteriores afirmaciones es verdadera.
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar expresiones regulares y conocer las operaciones de unión e intersección entre lenguajes regulares.
Solución La opción verdadera es la opción (d). L¡ es el lenguaje formado por todas las cadenas compuestas por uno o más símbolos a. L2 es el lenguaje formado por todas las cadenas que terminan por b. El lenguaje intersección es el lenguaje vacío. Por tanto, la opción (a) es falsa. La opción (b) y (c) son falsas puesto que tanto la unión como la intersección de dos lenguajes regulares siempre es un lenguaje regular.
Cuestiones adicionales Para continuar trabajando con este ejercicio, se recomienda dar respuesta a las siguientes cuestiones (en este caso, los autómatas son similares a los vistos en los ejemplos del capítulo 4): ■ Definir un autómata finito que acepte el lenguaje L x. ■ Definir un autómata finito que acepte el lenguaje L>. ■ Definir un autómata finito que acepte el lenguaje L x U L o .
176 176
■ Definir un autómata finito finito que acepte el lenguaje
Dado el el alfabeto alfabe to E = {«, 6}, 6}, sea M sea M el el siguiente autómata a pila: M M = ({p,,r,s},E,r,
Z0 Z 0
donde T = {n, {n, b, Z0} Z 0} es el conjunto de símbolos de pila y la función funció n de transiciór definida mediante el siguiente diagrama de transiciones (se supone que inicialmente la pilí se encuentra vacía): a,e a,e; a
etiqueta —1
a , «; e
etiqueta —3 etiqueta —3
Indicar qué valores deben tomar etiqueta-1, etiqueta-2 y etiqueta-3 para etiqueta-3 para que L( L ( M) seí el lenguaje formado por los palíndromos de longitud impar. impar. (a) etiq et ique ueta ta-1= -1=6, 6, e; b, etíqueta-2=a, e; e, etiqueta-3=6, 6; e (b) etiqu et iqueta eta-1=6 -1=6,6; ,6; e, etiqueta-2=n, etique ta-2=n, e; e; a, etiqueta-3=6,6; a, etiqueta-3=6,6; e (c) etiq et ique ueta ta-l= -l=6, 6,6 6; e, etiqueta-2=a, e; e; e, etiqueta-3=6 etiquet a-3=6,6 ,6;; e (d) etiqueta-l=6,6; e, etiqueta-2=n, e; a, etiqueta-3=6, e; e
Conceptos involucrados Para resolver resolver este ejercicio es necesario conocer el funcionamiento de un autómata a pilí y saber interpretar el lenguaje que acepta.
Solución La opción verdadera es la opción (a). El autómata utiliza la pila para ir controlando lo¡ símbolos que ha leído y así poder comprobar después que lee los mismos símbolos pero er orden inverso. Como las cadenas deben tener una longitud impar, en la mitad de la cadena
Ejercicios
177 177
d e a u t o e v a l u a c i ó n
habrá un símbolo que no será necesario controlar en la pila. Al leer cada símbolo de la entrada, hay que decidir si estamos leyendo un símbolo de la primera parte de la cadena (nodo q) o bien estamos leyendo el símbolo intermedio (transición del estado q al estado r). Esta decisión se realiza de modo no determinista, puesto que el autómata no puede determinar a priori donde se encuentra la mitad de la l a cadena. cadena. Cuestiones adicionales
Para continuar trabajando con este ejercicio, se recomienda definir un autómata a pila que reconozca el lenguaje compuesto por los palíndromos de longitud par (se considera que e no pertenece al lenguaje). Bastará con modificar el el autómata del ejercicio para que en las transiciones del nodo q al nodo r, se r, se extraiga el símbolo correspondiente de la pila. Así: 6(q, a) = 5{q,b) =
20
Dado el alfabeto E expresión regular:
{a,
a, c) ó, e)
bc}, . sea L L el lenguaje que representa la siguiente
( Sea
bau*+c*(a bau*+c*(a + b))
Al el el autómata finito definido de la siguiente manera: M = (
{
p, p ,,q
donde la función de transición 6 se se define mediante el siguiente diagrama de transiciones: c
178
Indicar para qué valores de las etiquetas se cumple que L que L(( M ) — L: (a) etiqueta-l=c, etiqueta-2=6, etiqueta-2=6, etiqueta-3=«, etiqueta-4=n (b) etiqu eti queta eta-1= -1=6 6, etiqueta-2=c, etiquet a-2=c, etiqueta-3=tt, etiqueta-4= etiqu eta-4=n n (c) etiqueta etiq ueta-l=n -l=n,, etiqueta-2=a, etique ta-2=a, etiqueta-3=a, etiqu etiquet etaa-4= 4=£> £> (d) etiquet etiq ueta-l= a-l=o, o, etiqueta-2=b, etiqueta-2=b, etiqueta-3=a, etique etiquetata-4= 4=/> />
Conceptos involucrados Para resolver este ejercicio es necesario saber interpretar expresiones regulares y autómatas finitos.
Solución La opción verdadera es la opción (a). Desde el estado inicial del autómata se han definido dos transiciones, al estado r y y al estado q. La porción de autómata que parte del estado r se encarga de reconocer cadenas del segundo término de la unión en la expresión regular. Por otro lado, la porción del autómata que parte del estado q se encarga de reconocer cadenas del primer término de la unión de la expresión regular regular.. Por tanto, la transición transició n del estado p estado p al al estado q debe ir etiquetada con un símbolo c para cubrir el segundo término de la expresión regular. Así mismo, la etiqueta-3 debe ir etiquetada con un símbolo a. Puesto que el primer término de la expresión regular marca que las cadenas deben comenzar por la subcadena la etiqueta-2 y 3 deben tomar to mar los valores h y a respectivamente. La opción (b) es falsa puesto que si las etiquetas tomaran esos valores, entonces la cadena brb £ L pero L pero bcb L{M). La L{M). La opción (c) es falsa puesto si las etiquetas tomaran esos valores, entonces la cadena acb acb ^ L pero acb E L{ L { M) M).. La opción (d) es falsa puesto que, si las etiquetas tomaran esos val entonces la cadena acb ^ L pero L pero acb acb E L( M) .
Cuestiones adicionales Para continuar con el trabajo en este ejercicio se recomienda definir la gramática regular equivalente a L. a L. La gramática G definida a continuación cumple que L( que L(G) G) = L: G = ({S,Aí B,C},{a,b,c},S,P) donde S es el símbolo símbol o inicial de la gramática gramá tica y producciones: producciones:
es el siguiente siguien te conjunto conjun to de
Ejercicios
d e a u t o e v a l u a c i ó n
179
S^aB S — S -y bC B - y t yc C — A —y clB A —y bB A - y cA C —y aC a C
Capítulo 11 _________
Solución a los ejercicios 11.1.
Capítulo 1
(1) Tal y como indica la definición de las cadenas del enunciado, todas las cadenas que pertenezcan al lenguaje deben tener un número par de símbolos. Por tanto: ■ Cadenas que pertenecen a L\ 00,01,11,1001,0011 ■ Cadenas que no pertenecen a L: 0,1,111,010,11001 (2) En el enunciado no se especifica en qué orden deben aparecer los símbolos ceros y unos en las cadenas del lenguaje. Por tanto, bastará con que las cadenas tengan al menos un símbolo 0 y un símbolo 1 y que cumplan la condición de tener el mismo número de ceros que de unos. Así: ■ Cadenas que pertenecen a L: 01,10,0101,00110011,010101 ■ Cadenas que no pertenecen a L: 0,1,010,110,11100 (3) En este caso, las cadenas del lenguaje además de tener el mismo número de ceros que de unos, deben cumplir la condición de que los símbolos 0’s deben aparecer en la cadena, siempre antes que los símbolos l ’s. Por tanto: ■ Cadenas que pertenecen a L: 0011,01,000111,00001111,0000011111 ■ Cadenas que no pertenecen a L: 10,101,1010,1100,11001 No es posible encontrar una cadena que esté en M y no esté en L, puesto que todas las cadenas de M cumplen la condición de tener el mismo número de 0’s que de l ’s (y tener al menos un símbolo). Se cumple por tanto, que M C L. 18 1
182
Ca p í t u l o
2
No obstante, existen cadenas de L que no están en M. Por ejemplo, la cadena 0101 cumple la condición de tener el mismo número de 0 que 1 pero los ceros no se anteponen a los unos que es la condición adicional que impone M . Por tanto, 0101 e L pero 0101 ^ M. (4) E* es el conjunto de todas las cadenas que se pueden formar con los símbolos del alfabeto E. Por el contrario, el conjunto potencia de E es el conjunto de todos los subconjuntos de símbolos que se pueden formal- con los símbolos del alfabeto. En el primer caso, los elementos son cadenas y en el segundo caso, los elementos son conjuntos. Quizás tendría más sentido preguntar si es lo mismo E*) = E*. De nuevo, el conjunto potencia contiene subconjuntos, en este caso es el conjunto de todos los subconjuntos de cadenas que se pueden formar con los símbolos del alfabeto E.
11.2.
Capítulo 2
(1) El autómata finito del enunciado es un autómata finito determinista. Para determinar la afirmación verdadera habría que probar cada una de las entradas de las opciones y comprobar cuál de ellas lleva al autómata a un estado de aceptación. Así: ■ La opción (a) es falsa puesto que: a) = —> S(q2, b) = El autómata terminaría su ejecución y el estado q\ no es de aceptación. Por tanto, el autómata rechazaría la cadena ah. ■ La opción (b) es falsa puesto que: 5{qQ,b) = qQ —> S(qQ.b) = ->• 5{q0J>) = qo —► S(q0,a) = q2 — b(q2, b) = qx. > estado q\ no es de aceptación. Por tanto, el autómata rechazaría la cadena bbbab. ■ La opción (c) es verdadera puesto que: á(y0. = q0 5(q0la) = q2 —> S(q2, a) = q2 —> <5(go, a) = q2 .El autómata termi q2 es de aceptación. Por tanto, el autómata aceptaría la cadena baaa. (2) Puesto que la cadena vacía no contiene la subcadena be entonces el estado inicial será de aceptación. El autómata de la figura 11.1 reconoce el lenguaje L. Es un autómata finito determinista pero su diagrama no está saturado. Para ello, habría que definir el estado de error que sería destino de todas las transiciones no definidas. (3) El autómata que reconozca el lenguaje del enunciado únicamente deberá controlar que se lee al menos un símbolo de la entrada. Por tanto el autómata finito determinista de la figura 11.2 reconoce el lenguaje del enunciado.
S o l u c i ó n a l o s
a
183
ejercicios
b
b
goc Figura 11.1: Autómata finito determinista que acepta el lenguaje L = subcadena be en i} .
no contiene la
x
Figura 11.2 : Autómata finito determinista que acepta todas las cadenas que tienen al menos un símbolo x o un símbolo y.
a
Figura 11.3: Autómata finito determinista que acepta todas las cadenas que comienzan por un único símbolo b seguido de cero o más símbolos a.
184
Ca p í t u l o
2
(4) El autómata que reconoce el lenguaje del enunciado, debe leer al inicio de la cadena un símbolo 6. A partir de ahí únicamente podrá leer símbolos a. En la figura 11.3 se muestra el autómata finito determinista que reconoce el lenguaje del enunciado. (5) La opción (a) es falsa ya que ambos autómatas son deterministas. La opción (b) es falsa puesto que todos los estados del autómata de la izquierda son accesibles (esto es, le llega alguna transición). La opción verdadera es la (c). Li es el lenguaje formado por las cadenas que no contengan la subcadena bb que coincide con L2. (6) L\ está formado por las cadenas que empiezan por un símbolo 0. L2 está formado por las cadenas que terminan por un símbolo 0. El autómata acepta todas aquellas cadenas que empiezan por 0 y terminan en Ü. Por tanto, L(M) = n y la opción (a) es verdadera. La opción (b) es falsa puesto que por ejemplo, 10 € L2 pero 10 L(M) . La opción (c) es falsa puesto que 00 £ L(M) y 00 e (el complementario de L\ sería el conjunto de cadenas que se pueden formar con los símbolos de E y que no están contenidos en L\). (7)
a) El autómata M acepta cadenas que o bien, comienzan por la subcadena aa y terminan en cero o más símbolos b, o bien comienzan por el símbolo a seguido de uno o más símbolos b . b) El autómata AI es no determinista puesto que en el estado
los estados accesibles):
M a f d
= ({{()}, U
u
&}, {?i, ffi}, {74}}, {a,
{íy0}, {{91, íft}, {(/j }})
donde la función de transición <5 se define mediante el siguiente diagrama de transiciones:
S o l u c i ó n a l o s
11.3. (1)
185
ejercicios
Capítulo 3 a) Si, son equivalentes. Siguiendo el procedimiento visto en la sección 3.4, M es el autómata finito correspondiente a la gramática G. M además tiene un diagrama de transiciones saturado, y de hecho, el estado g3 y la transición desde se podrían eliminar. b )Si el autómata M y la gramática G fueran equivalentes, debería cumplirse que L (M) = L(G). Basta con comprobar que la cadena vacía e € L(M) pero ahora no deriva la cadena vacía ya que el símbolo inicial de la gramática es A.
(2) Para que se cumpla que L(M) fl L(G) — 0 debe cumplirse que no existe ninguna cadena perteneciente tanto a L(M) como a L(G). Esto no es así, ya que por ejemplo, la cadena ab generada por la gramática la acepta también el autómata. (3)
a) G es una gramática regular porque sus producciones cumplen con las restricciones de las gramáticas regulares. Para construir el autómata finito equivalente, es necesario transformar la producción: B —>■ en otra producción de la forma B —» bT donde T es un nuevo no terminal que deriva en la cadena vacía, esto es, se añade la producción »■e. b) El autómata M definido a continuación, es equivalente a G:
O= ({5, donde la función de transición 6 se define mediante el siguiente diagrama de transiciones: o
Ca p í t u l o
186
c) No se cumple que L(M) = L(G) puesto que, por ejemplo, la cadena pero bbb £ L(G).
3
£ L{M)
(4) Siguiendo el procedimiento de construcción de un autómata finito equivalente a partir de una gramática regular, el autómata equivalente a la gramática G, se define de la siguiente manera: M = ({A B,S}, {a, 6}. S, A, { transición definida por el siguiente diagrama de transiciones:
(5)
5} ),
a) La gramática G no es una gramática regular. El lado derecho de la primera producción S — A1B > no cumple con las restricciones de l regulares. b) A pesar de que la gramática G no es una gramática regular, el lenguaje que genera sí es regular. Así, L ( genera cadenas compuestas por las sub G) pueden derivar del no terminal A, seguidas de un símbolo 1 y finalmente, las subcadenas que se pueden general del no terminal B. Las subcadenas que se pueden derivar del no terminal A son cadenas de cero o más O’s, mientras que las subcadenas que se pueden derivar del no terminal B son cadenas de cero o más ü’s y l ’s (en cualquier orden y número). Por tanto, las cadenas de L(G) son cadenas de cero o más ceros, seguidas por un símbolo 1 y seguidas por cualquier combinación de símbolos 0 y 1 (en cualquier orden y número). El autómata M definido a continuación cumple que L(M) = M
—
({
c ío ,
):
gi}, {0.1}, < 5 . Qo-. { < ? i} )
donde la función de üansición ó se define mediante el siguiente diagrama de transiciones: 0
ü
S o l u c i ó n a l o s
(6)
187
ejercicios
a) Si, todas las producciones cumplen con las restricciones de las gramáticas regulares. b) Esta gramática es similar a la del ejercicio 3. En esta ocasión, L( G) contiene todas las cadenas con uno o más símbolos , seguidos de dos o más símbolos b. c)Siguiendo el procedimiento visto en la sección 3.4, el autómata finito M definido a continuación cumple que L(M) = ): M = { { S , A , B , T }, { a , b } , S , S , {r}) donde la función de transición 6 se define mediante el siguiente diagrama de transiciones: a 5
11.4.
Capítulo 4
(1) Esta gramática genera el lenguaje compuesto por las cadenas de cero o más símbolos 0, seguidas por un símbolo 1 y seguidas por cualquier combinación de símbolos 0 y 1 (en cualquier orden y número). La expresión regular que representa estas cadenas es: 0 *1 ( 0 + 1 )*
(2) El lenguaje del autómata está formado por las cadenas que empiezan por el símbolo a seguido de la subcadena be una o más veces. Por tanto, el lenguaje ) puede representarse mediante la siguiente expresión regular: a{bc Por otra parte, siguiendo el método de eliminación de estados: liminación del estado
q\. El diagrama de transiciones queda como sigue:
qo
ab
02
qs
— Eliminación del estado q 2- El diagrama de transiciones queda como sigue:
188
Ca p í t u l o
4
be
La expresión regular resultante es: abc(bc)*. (3)
L ]UZ/2 es la unión de los dos lenguajes. La unión se representa mediante el operador ‘+ \ Por tanto, la expresión regular que representa la unión de los dos lenguajes, será la unión de las expresiones regulares correspondientes a cada uno de los lenguajes. Así, L \ U ¿2 se representará mediante la expresión regular: a(a + b)* + b)*b. Sin embargo, no hay operador que represente la intersección de dos lenguajes. Para poder representar el lenguaje intersección, se tiene que averiguar las cadenas que lo componen. Así, el lenguaje L\ está compuesto por todas las cadenas que comienzan por un símbolo a. Por su parte, L 2 está compuesto por todas las cadenas que terminan por un símbolo b. La intersección de ambos lenguajes deberá contener aquellas cadenas que cumplen con las condiciones de ambos lenguajes. Así, las cadenas que pertenecen al lenguaje intersección, deberán comenzar por un símbolo a y terminar por un símbolo b. Por tanto, L-¡ n Lose representa por la expresión regular: o(a -l- b)*b.
(4) La expresión regular representa el lenguaje formado por todas aquellas cadenas que comienzan por cero o más repeticiones de la subcadena representada por la expresión regular: ((01 + 10)(11)*0) (esto es, subcadenas que comienzan bien por 01 o bien por 10, seguidas de cero o más repeticiones de 11 y terminadas en 0). Las cadenas terminan por la subcadena representada por la expresión regular: (01 + 10)(11)* (esto es, subcadenas que empiezan bien por 01, o bien por 10 y a continuación cero o más repeticiones de 11). Un autómata que acepte los sufijos de las cadenas del lenguaje, esto es, ((01+10)(11)*) podría definirse con el diagrama de transiciones que se muestra a continuación:
Puesto que los prefijos de las cadenas del lenguaje, tienen esta misma estructura salvo que deben terminar en un símbolo 0 y poder repetirse cero o más veces, basta con
SOLUCIÓN
A
LOS
EJERCICIOS
189
conectar el estado s con el estado p mediante una transición con el símbolo 0. Así, el diagrama de transiciones del autómata que reconoce el mismo lenguaje que la expresión regular ((01 + 10)(11)*0)*(01 + 10)(11)* es:
(5) El lenguaje, L, correspondiente a la expresión regular + c*(a + b) es la unión de los lenguajes L\ y L2, representados respectivamente por las expresiones regulares baa* y c*(a + b). Así, L\ es el conjunto de cadenas que comienzan por la subcadena ba seguida de cero o más a ’s. Dado el alfabeto E = {«, r}, el autómata finito determinista que acepta L\ puede definirse de la siguiente manera M = ({(/o, qu t/2}, {a, 6}, ó, go, {f/2}) donde S es la función de transiciones definida por el siguiente diagrama de transiciones; a
Qo
Por su parte Ln es el lenguaje que contiene a las cadenas que comienzan por cero o más símbolos c seguidas de un único símbolo a o un único símbolo b. Así, L2 puede reconocerse mediante el autómata finito determinista definido de la siguiente manera: P = ({q¿, g4), E, ó', q:i, {f/4}), donde 6' es la función de transición definida mediante el siguiente diagrama de transiciones:
La unión de ambos lenguajes podría reconocerse mediante el siguiente autómata finito no determinista Q = ({q, ,q2; i q¿, <74}, E, 6", , {qi, (74}) donde 6" es q transición definida mediante el siguiente diagrama de transiciones:
C a p í t u l o
190
5
tí
c (6) Siguiendo el método de eliminación de estados, el siguiente autómata sería el resultado \y q q2: de eliminar los estados 10
Examinando con cuidado el autómata resultante de eliminar los estados t/i y se ve que una vez se alcanza el estado <73(que no es un estado de aceptación) el autómata ya no podría aceptar la cadena de entrada. Por tanto, la expresión regular equivalente al autómata dado sería la estrella de Kleene de la unión de las expresiones regulares del bucle del estado q0\ (10 + 01)*
11.5. (1)
Capítulo 5 a) El lenguaje L x representado por la expresión regular a*b, está compuesto por todas aquellas cadenas que comienzan por cero o más símbolos a y terminadas en un único símbolo b. Un autómata finito que reconozca I ) se puede definir de la siguiente manera: Mi = ({®>, <7i }, £, h h ■Q01 {íi})
S o l u c i ó n a l o s
19 1
ejercicios
donde la función de transición 5 ^ se define define mediante el siguiente diagrama de de transiciones: a
Por su parte, el lenguaje L2 representado por la expresión regular 6*«6, está compuesto por todas aquellas cadenas que comienzan por cero o más símbolos y terminadas en la subcadena ab. Un autómata aut ómata finito que reconozca reconoz ca L2 se se puede definir de de la siguiente manera: manera: <5a/2)P0)
M2 M 2= donde la función de transición transiciones:
5 m 2
se define mediante el siguiente diagrama de
b
b) Para construir el autómata finito que reconozca el lenguaje L = U L2 se puede seguir el procedimiento visto en este capítulo. Así, el autómata finito finito que reconoce L reconoce L puede puede definirse de la siguiente manera: M = ({q ,qo,q ,q o,q i,p0, i,p 0,Px,P2},Tl,SLl Px,P2},Tl,SLluL uL2, 2,q,{ q,{
192 192
C a p í t u l o
5
M M es un autómata finito no determinista. El autómata finito determinista equivalente a M a M se se definiría de la manera siguiente: ^determinista
— ( P { Q
m
),
bdete}'minisitn
9? {{gi. {{gi.Po Po}< }< W ,
{
donde P donde P{Q {Q m ) ) es el conjunto potencia de Q m = {q, PiPi- Pi] y la función de transición ^deterministase ^deterministase define define mediante el siguien siguiente te diagrama de transicio (sólo se muestran los estados accesibles):
c) Para construir el autómata finito que reconozca el lenguaje L — Ly ■L2 se puede seguir el procedimiento visto en este capítulo. Así, Así, el autómata finito finito que reconoce L reconoce L pue puede de definirse de la siguiente manera: manera: M Lvl 2 - ({
} })
0 2
donde dond e <5^,, ,¿2 es la función de transición tran sición definida mediante median te el siguiente siguien te diagrama diagr ama de transiciones: a
b
En este ejemplo, el estado de aceptación de M de Mii no es estado de aceptación de M lvl L>, esto es, e £ L->. l vl 2 porque la cadena vacía no pertenece a L>
S o l u c i ó n a l o s
193
ejercicios
De nuevo, las transiciones del estado rji en M en M i ,. i-, simulan las transiciones desde el estado p estado po o en Al en Alo. o. Así: Así: Si S(po. b)= po enton b)= en tonce cess Si S(pQ S(pQ. a) = pi p i entonces ¿(91. ¿(91. a) = pi
,
d) Para construir el autómata finito que reconozca el lenguaje L* se puede seguir el procedimiento visto en este capítulo. Así, el autómata finito que reconoce L reconoce L\\ puede definirse de la siguiente manera: manera: M l * =
({tf, 9o,
5, {?.,})
donde tambi én es de aceptación y q es un nuevo estado inicial que también mediante el siguiente diagrama d iagrama de transiciones: a
se define
b
Las transiciones desde el nuevo estado inicial 9, simulan las transiciones desde el estado qo en M en M x. Así: x. Así: Si a) = Qo ento en tonc nces es ¿(9, ¿(9 , ) = 90 Si ¿(90, b) = 91 = 91 entonces 6 (q, b) = q^ De la misma forma, el autómata que acepte la estrella de Kleene debe aceptar cero o más concatenaciones de las cadenas del lenguaje. Por esta razón, desde el estado final 91 se definen transiciones que simulan las transiciones desde el estado 90 en M en M \. Así: \. Así: Si ¿(90, ¿(90, a) = 90 enton ent onces ces ¿(91, a) = q0 Si ¿(90, b) — 91 91 entonces ¿(9!, b) = 91 e) El lenguaje L lenguaje L\\ Pl Lo, contiene aquellas cadenas w tales que w € y € L2. Esto es, son cadenas que cumplen con las restricciones del lenguaje L \ y y del lenguaje L o . Así, la única cadena perteneciente a la intersección es la cadena ab. Por tanto, el autómata aut ómata finito que reconoce L \ L2 es el autómata finito definido de la siguiente manera: n
Mi^nLo Mi^nLo =
({90!
l' \9 l ' 2)1 £,
: {92}) {92})
9o
donde ¿¿in ¿¿ inL L2 se define define mediante el siguiente diagrama de transiciones: transiciones:
p0
Ca p í t u l o
194 194
5
5o
(2) La expresión regular b*aa*b(a+ b*aa*b(a+ b)* representa todas las cadenas subcadena ab. ab. Por tanto, el lenguaje L L del enunciado puede ser reconocido por el autómata M autómata M = = ({50, ({50,51 51,52 ,52}, }, £ , 5 , qQ. {(72}) donde 6 es la función de transición definida mediante el siguiente diagrama de transiciones: b
a
a
Siguiendo el procedimiento general de construcción del autómata finito que reconozca la estrella de Kleene de un lenguaje regular, un autómata finito que acepte la estrella de Kleene de L de L se se definirá de la siguiente manera:
M ’ =
({
q,0q\ , q2), E,6*,
q,
donde q es es un nuevo estado inicial inicial que que será será también de aceptación (puesto que € y S* es la función de transición definida mediante el siguiente diagrama diagra ma de transiciones: transiciones: b
(3 )
a
a
a) L contiene L contiene todas las cadenas cade nas formadas por O’s y seguidas de l ’s cumplien cump liendo do que el número núm ero de O’ O’s es igual ig ual al número núme ro de l ’s. M s. M contiene contiene también todas las cadenas formadas por O’ O’s y seguidas de l ’s, pero las cadenas cadena s de M de M no no tienen por qué tener el mismo número de d e O’ O’s que de l ’s. que L C M . Todas Todas las cadenas cade nas de L de L pertenecen pertenecen también b) Efectivamente se cumple que L a M puesto M puesto que qu e cumplen cump len que están formadas formada s por O’ O’s y seguidas por l ’s. que M C L, ya L, ya que existen cadenas en M en M que que no están en L como L como por c) Es falso que M ejemplo, la cadena caden a 00011. 00011.
{,
q2
S o l u c i ó n a l o s
d)
ejercicios
1 95
Es falso que M = L puesto que existen cadenas en M que no están contenidas en L (ver punto anterior).
(4 ) Los lenguajes de las opciones (a) y (c) son regulares. El lenguaje de la opción (a) puede representarse mediante la expresión regular: aaauaaa*b*+ aaaaaa*bb*-f anana* bbb* + aaaa*bbbb* +aa.a*bbbbb*+ aa.*bbbbbb*. El lenguaje de la opción (c) puede representarse mediante la expresión regular: (aaaaciaanaa)*. El lenguaje de la opción (b) no es regular puesto que es necesario llevar la cuenta del número de símbolos a leídos en la cadena de entrada. (5 ) Todas las cadenas que acepta el lenguaje son generadas por la expresión regular y viceversa. Así, L \ = L o . Ambos lenguajes representan el conjunto contienen al menos una x y una y.Es evidente que el autó expresión regular del enunciado sería M ' = ({p, E, transición 5 ' se define mediante el siguiente diagrama de transiciones: x
En el caso de este ejemplo en concreto, se ve que el lugar que ocupa el símbolo (.t o y) no es relevante, esto es, el autómata puede leerlo al principio (como el caso del autómata M' o al final como el caso del autómata M del enunciado). Esto no es así para todos los casos. Por ejemplo, dado el alfabeto E = {.t , y}, sea L el lenguaje correspondiente a la siguiente expresión regular: xy(x + y)*. El autómata equivalente sería P = ({p, q, r}, E, 5 ,p, {7}) donde la función de transición ó se define mediante el siguiente diagrama de transiciones: x
Tanto el autómata como la expresión regular, aceptan el lenguaje formado por las cadenas que empiezan por la subcadena xy . Por el contrallo, sea R el autómata definido de la siguiente manera:
C a p í t u l o
196
R =
donde la función de transición transiciones: x
5
({P, 9 ,?'}, £,í',P,{r}) 5 '
se define mediante el siguiente diagrama de
En este caso, L(R ) está formado por todas las cadenas que terminan en la subcadena xy. En el caso de los lenguajes L\ y L 2la única restricc aparición de un símbolo (:r o y). En el caso de los lenguajes L(P ) y L(R ), las cadenas que componen uno y otro, deben cumplir que deben contener la subcadena xy . Pero además, en el caso de las cadenas contenidas en L(P ) esta subcadena debe estar al inicio, mientras que en el caso de las cadenas contenidas en L(R ), esta subcadena debe estar al final. Esto es, las cadenas de estos lenguajes tienen dos restricciones (la aparición de la subcadena y la posición de la misma). Esta diferencia se muestra en la posición de los bucles en el autómata. (6)
a) El autómata M nunca acepta cadenas que comienzan por el símbolo 1. Por tanto, todas las cadenas que pertenecen a L deben empezar por el símbolo 0 . Además, una vez que el autómata procesa una cadena que comienza con 0, mientras siga leyendo ceros se queda en el estado q que es de aceptación. En el momento que lee un símbolo 1 va al estado s donde se queda mientras siga leyendo l ’s de la entrada. Como s es un estado de no aceptación, sólo aceptará la cadena cuando vuelva al estado q y esto ocurrirá sólo si vuelve a leer al menos un símbolo 0. Parece claro, por tanto, que el autómata acepta cadenas que empiecen y terminen en 0. b) Es falso que
L c
c) Es falso que yOlOeLj.
Lí l
. L \ Por ejemplo, la cadena 0101
L\=
0 ya
que por ejemplo, la
(7 ) El lenguaje L puede definirse como la unión de dos lenguajes L\ y donde L\ = {w\ w contiene un número par de 0’s} y = {tv\tu contiene exactamente dos l ’s}. L\ puede representarse mediante la expresión regular ( 1*01 *01 )* mientras
So l u c i ó n a l o s
197
ejercicios
que L ¿ puede representarse mediante la expresión regular (0*10*10*). Por tanto, L puede representarse mediante la expresión regular (1*01*01)* + (0*10*10*) que se corresponde con la expresión regular de la opción (b). La opción (a) es falsa. Por ejemplo, la expresión regular de esta opción genera la cadena 000 y 000 ^ L. De la misma manera la opción (c) es falsa, ya que por ejemplo, E L p la cadena 00 ero 00 no puede ser generada por la expresión regular de opción. (8) El autómata del enunciado debe ser el autómata que acepta la estrella de Kleene del lenguaje representado por la expresión regular ((a + b)c*(a + 6)) + (ac + nb)*. Según el procedimiento de construcción del autómata que acepta la expresión regular de un lenguaje dado, las transiciones etiquetadas con Etiqueta- 1 y Etiqueta-2 deben simular las transiciones que había en el autómata original desde el estado inicial. Por tanto, si en el autómata se encuentran deñnidas las siguientes transiciones: Si 5(q0, a) = qi y 5(q0 , Si 6(qo, a) = <73 entonces S(qo, a) = q% Así, Etiqueta-l=a y Etiqueta- 2=n,
b)= q{ entonces % 4,
=
y 5{q4,
byla opción verdadera e
(9 ) La gramática G genera cadenas compuestas por las subcadenas que se derivan del no terminal A, seguidas de un símbolo 1 y tenninadas en las subcadenas que se derivan del no terminal B. El no terminal B mediante las producciones B -> 0 B\e, genera cadenas de 0’s (o bien la cadena vacía). Por su parte, el no terminal A genera cadenas de 0’s seguidas de l ’s, pero cumpliendo la condición de que el numero de 0’s debe ser igual al número de l ’s. A continuación se muestra gráficamente la derivación de la subcadena 0011: A
198
C a p í t u l o
6
Se puede ver que cada vez que el no terminal A deriva un símbolo 0 deriva igualmente un símbolo 1. Por tanto, el lenguaje L{G ) puede definirse de la siguiente manera L(G) {(0nl" )10m : n > 0, ni > 0}. L(G) es un lenguaje no regular.
11.6.
=
Capítulo 6
( 1) Al inicio del capítulo 6, se ha definido la gramática Gpaiindromo, que genera el lenguaje formado por las cadenas que son palíndromos de longitud tanto par como impar. Una gramática que genere los palíndromos de longitud par, se podría definir de la siguiente manera: G = ({P},{0,1},P,Q)
donde P es el símbolo inicial y
Qe s el siguiente conjunto de p P —)• e P ->■ 0 P 0 P - i - 1P 1
A continuación se muestran algunos ejemplos de derivación: P
0P 0 ^
P
1P1 P^ °
P -> 1P 1 (2)
a) Se cumple que
00 10P 01 ^
1001
11P 11 P^ °
110P011 ^ e^
110011 Ly a que la la cade
n = rn — 0).
b)
— Cinco ejemplos de cadenas que pertenecen a L: cabbcbaa, caabbbcbbaaa, caaaabbbbbcbbbbaaaaa, caaabbbbcbbbaaaa, caaaaabbbbbbcbbbbbaaaaaa. — Cinco ejemplos de cadenas que no pertenecen a L: c, abb, acb, ccabb, caabbcbbaa.
c) Dada la gramática G — ({S, .4 , B } y{a, b, e}, 5 , P) donde S es el símbolo inicial de la gramática y P es el siguiente conjunto de producciones:
S o l u c i ó n a l o s
ejercicios
199
S cAcB A —^ ciAb B —y A ^ b B —y (i - >
L{G )= L .
se cumple que
d) A continuación se muestran tres ejemplos de derivación más a la izquierda de la gramática: S
s
cAcB
cbcB => cbca
cA cB A= £ bcaAbcB ==$ cabbcB = £ cabbca
S
—$■cA cB A^ £ b caAbcB ==£ cabbcB B= ^ u cabbcbBa ==£ cabbcba
e) L no es un lenguaje regular. Un autómata que reconozca L debe controlar el 's que lee de la entrada para poder comprobar qu b número de a ’s y las restricciones del enunciado (y esto para cadenas arbitrariamente grandes). Formalmente, se demuestra que L no es regular porque no cumple con el lema de bombeo. (3 )
a) Se cumple que b)
L ya. que la cadena más corta de L es
con n =
1.
— Cinco ejemplos de cadenas que pertenecen a L\ xyxyxycyxyxyx , xy xyxy xycyxyxyxyx, x y xyxy xyxycyx yxyxyxyx. — Cinco ejemplos de cadenas que no pertenecen a c,xxcyy,cxyyx,xyyx,xycyxyx.
c) Dada la gramática G = ({5, P es el siguiente conjunto de producciones:
,{.r, y, c}, S, P) donde S es } A
S A — x y A y x A - y c se cumple que L{G) = L donde L = {(x y)mc(y x) n : n >
1 }.
d) A continuación se muestran tres ejemplos de derivación e la gramática: S —> x y A y x ==£ xycyx n
b n
S
A
A -t xyAyx
a
. 4 —> .i y A y x
xyA yx xyAyx
=>
=>
A
A —>c
A
A —t x y A y r
xyxyA yxyx => xyxycyxyx xyxyAyxyx
xyxyxycyxyxyx
L:
=>
,
xyxyxyAyxyxyx
200
C a p í t u l o
6
e) L es un lenguaje independiente del contexto no regular. No es posible definir un autómata finito que reconozca L ya que dicho autómata necesitaría saber el número de pares xy que ha leído al inicio de la cadena de entrada para poder comprobar que el número coincide con el número de pares del final de la cadena (y esto para cadenas arbitrariamente grandes). Formalmente, se demostraría que no es un lenguaje regular porque no cumple el lema de bombeo. (4 )
a) La cadena vacía no pertenece a L puesto que no es posible definir una derivación que genere e a partir del estado inicial S. b) — Cinco
ejemplos de cadenas que xyz,xyyz,xxyzz,x xyyzz,xxxyyzzz.
pertenecen
a
L:
— Cinco ejemplos de cadenas que no pertenecen a L: c)
El símbolo inicial de la gramática, deriva en El no terminal A deriva formas sentencíales que contienen el mismo número de x ’s bien, deriva en yB donde el no terminal B deriva subcadenas de s o la cadena vacía. Por tanto, mientras se use la segunda producción, se generan cadenas con el mismo número de x ’s que de í ’s. Por otro lado, cuando se usan la tercera y cuarta producción se generan subcadenas de ;/s (el número de s no tiene por qué coincidir con el número de r ’s y c’s. Por tanto, L se puede definir de la siguiente manera: L =
{x nymz n: n, m > 0 }
d) L es un lenguaje independiente del contexto no regular. No es posible definir un autómata finito que reconozca L ya que es necesario controlar el número de x ’s leídas de la entrada para poder comprobar que se leen el mismo número de .:’s y esto para cadenas arbitrariamente grandes. Formalmente se demostraría que no es un lenguaje regular porque el lenguaje no cumple el lema de bombeo. (5 )
a) e L puesto que la cadena de menor longitud que se puede derivar de la gramática G es xy b)
— Cinco ejemplos de cadenas xx yy ax y,TXxy yy, xx xx yy,xxx xyy yy.
que
pertenecen
a
L:
— Cinco ejemplos de cadenas que no pertenecen a L: c) El símbolo inicial de la gramática o bien deriva en el no terminal A o bien deriva en el no terminal B. Por tanto, L se puede definir como la unión de las cadenas que se derivan del no terminal A y las cadenas que se derivan del no terminal B. El no terminal A deriva cadenas con el mismo número de símbolos y símbolos y .Mientras que el no terminal B deriva cadenas con el doble número de símbolos
So l u c i ó n
a
los
201
ejercicios
x que símbolos y.En ambos casos, las ;i;’s deben preceder a las puede definirse de la siguiente manera: L = Lj U I 2 donde: — Li es el conjunto de cadenas que se derivan del no terminal A. Así: L| = { i V . n > 0 }.
— L2 es el conjunto de cadenas que se derivan del no terminal B. Así: L2 = {:<:2ny n , n > 0 } .
d) L no es un lenguaje regular puesto que es necesario llevar la cuenta, para cadenas arbitrariamente grandes, para poder comprobar que el número de símbolos x leídos al inicio de la cadena de entrada coincide, bien con el número de símbolos y leídos al final de la cadena de entrada, o bien, es el doble del número de símbolos y contenidos al final de la cadena de entrada. (6) Para transformar la gramática del enunciado en una gramática equivalente en Forma Normal de Chomsky, se seguirán los siguientes pasos: ■ Eliminación de las producciones e: en el caso de este ejercicio, la gramática no contiene ninguna producción e. ■ Eliminación de las producciones unitarias: de nuevo, en el caso de este ejercicio, la gramática no contiene ninguna producción unitaria. ■ Eliminación de las producciones de la forma cterm in alx no terminal:», o más de un terminal o una combinación de más de dos terminales y no terminales. Se debería transformar ambas producciones de la gramática. Así se introducen en la gramática dos nuevos no terminales: X e Y con sus correspondientes producciones: X —y x y Y . Así, las producciones de la gramática resultante serían las siguientes: S -> X S Y S X Y X —»• x Y -> y ■ Eliminación de las producciones que en su lado derecho haya más de exactamente dos no terminales. La única producción a modificar sería S —)• X S Y . Para ello, se introduce un nuevo no terminal, Q, en la gramática y la producción: Q —» 5 1 '. Así, las producciones de la gramática resultante serían las siguientes:
s. Por tant
202
C a p í t u l o
6
X Q Q - 4 S Y S X Y X -> x Y -4 y S
-4
Por tanto, la gramática equivalente en Forma Normal de Chomsky, se define de la siguiente manera: G fnc =
({ 5 , X , Q, Y }, {x, y},
donde S es el símbolo inicial de la gramática y producciones:
P f
PFNC) n c
es el siguiente conjunto de
S^XQ Q -4 S Y S -4 X Y X -4 X Y ^ y (7 ) De las afirmaciones de este ejercicio la única verdadera es la primera afirmación. Así: á) Siempre es posible encontrar una gramática en Forma Normal de Chomsky que genere el lenguaje L. Al cumplirse que ^ L, esta afirmación es verdadera por la propia definición de Forma Normal de Chomsky. b) Siempre es posible encontrar una gramática en Forma Normal de Chomsky que genere el lenguaje complementario de L. Esta afirmación es falsa puesto que: Si
e^
Por tanto, en este caso, no es posible encontrar una gramática en Forma Normal de Chomsky para L. (8) Para transformar la gramática del enunciado en una gramática equivalente en Forma Normal de Chomsky, se seguirán los siguientes pasos: ■ Eliminación de las producciones e: En este caso, la gramática G tiene una producción e: A - 4 .S e i se elimina dicha producción se debe siguientes producciones a la gramática:
S o l u c i ó n a l o s
203
ejercicios
S -> abB A — > ah
Por tanto, las producciones resultantes de la gramática serían las siguientes: S aAbB S -»■ abB A —>aAb A —^ ab B —^ cB B -»■ c
■ Eliminación de las producciones unitarias: En este caso, la gramática no contiene ninguna producción unitaria. ■ Eliminación de las producciones de la forma cte rm in alxno terminal>, o más de un terminal o una combinación de más de dos terminales y no terminales. Para realizar este paso, se añaden los siguientes nuevos no terminales: Qc con sus correspondientes producciones:
y
Qa►a
Qb ~ Qc
* ^
b C
Por tanto, las producciones resultantes de la gramática serían las siguientes: Q
S —^ S QaQbB A —> ■ A QaQh B —^ B ->■ c
Q
Qa “ >• O Qb ^ b Qc c
■ Eliminación de las producciones que en su lado derecho haya más de exactamente dos no terminales. Este paso debe realizarse para las producciones:
204
C a p í t u l o
6
S —> QaAQbB S QaQbB A —> QnAQb Para el caso de la producción: S QaAQbB, se añade, en primer lugar, el siguiente nuevo no terminal: R { y sus correspondientes producciones:
QaR{ Ri —> AQbB 5 -►
Puesto que el lado derecho de la producción de R\ sigue teniendo más de dos no terminales, se añade un nuevo no terminal R2 y sus correspondientes producciones. Así:
S QaR\ R± —yAR'2 R 2
QbB
Para el caso de la producción: S -* QaQbB el procedimiento es similar. Se añade un nuevo no terminal i?3 y las correspondientes producciones:
S —>QqR% R¿ QbB Para el caso de la producción A el nuevo no terminal R4:
—> •
QaAQb, el procedimiento es similar. Se anade
A —>Q(lR4 i?4 —> AQb
Por tanto, las producciones resultantes de la gramática serían las siguientes:
S o l u c i ó n a l o s
205
ejercicios
S — > QaR i H\ —y AR2 R2 QbB S —y QaRz R3 ^QbB A —y Q11R4 R a —y AQb A QaQb B -> QCB B -y c Qn ~ ^ a Qb — ^ b Qn —>c Por tanto, la gramática equivalente en Forma Normal de Chomsky, se define de la siguiente manera: G
f n c
— ({ 5 , A , B 7Qa, Q¿,, Qc, i 2i, i?2, #3, ^4}. {«161 c}, 5 , P f
donde S es el símbolo inicial de la gramática y producciones:
P f
n c
QaR ! R\ —y AR2 R‘i — y QbB S —y QaRs R3 “ ► QbB A y QaR4 A y QaQb B —>■QCB B —>c
11.7. ( 1)
)
es el siguiente conjunto de
5 ->
Qa Qb Qc
n c
a b
c
Capítulo 7 a) Un autómata que acepte L puede definirse de la siguiente manera:
206
C a p í t u l o
M - ({go- q \ •
8a, cu}- {•'%y }, {«,
7
8o, £ 0, {4})
donde la función de transición ó se define mediante el siguiente diagrama de transiciones: i’, e; a
y, ; f
£>) Es un autómata a pila no determinista. De hecho, hay dos puntos de no determinismo. En el estado qx si en la entrada viene un símbolo x, el autómata puede optar por introducir uno o dos símbolos a (aunque en ambos casos el estado destino es c/a )• También en el estado (fe hay un punto de no determinismo similar. c) No es posible construir un autómata a pila determinista equivalente porque el lenguaje del enunciado es independiente del contexto no determinista. Es interesante comprobar cómo actúa el no determinismo en este autómata y se recomienda probar el autómata con la cadena xxyyy. el) Al aceptar cada cadena del lenguaje la pila siempre quedará vacía. é) Sí, es posible definir una gramática en Forma Normal de Chomsky que genere L puesto que e ^ L. (2 )
a) Un autómata que reconozca L puede definirse de la siguiente manera: M
= ({ío- 8i, 82,83,84}, {.f, y } , {«, Z o } , S , 80, z
0> {f/3, 84})
donde la función de transición S se define mediante el siguiente diagrama de transiciones: x, e; a , a; £ a; £
£, Z q , £
b) Es un autómata a pila determinista. c) Dependiendo de la cadena de entrada el autómata a pila puede no vaciar la pila antes de aceptarla. Por ejemplo, al terminar de analizar la cadena xx x yy el contenido de la pila sería nZ0.
So l u c i ó n a l o s
207
ejercicios
d) Dado que e ^ Chomsky que genere el lenguaje L. (3 )
a)
L ,sí es posible definir una gramática en Forma No
M L )( contiene a todas aquellas cadenas formadas por símbolos y a continuación símbolos ysin importar el número, salvo que un símbolo x y un símbolo y en la cadena de entrada. Son ejemplos de cadenas válidas del lenguaje: xy, xyy, xx y, __
b) Sí. El autómata M no hace uso de la pila y por tanto, el autómata finito P definido a continuación también acepta L: P =
({Po)
donde la función de transición 6 se define mediante el siguiente diagrama de transiciones: y x x
c) Sí, porque (4 )
y
e^ L(M ).
a) Las cadenas contenidas en L son aquellas cadenas que comienzan por símbolos a, seguidas de símbolos b, seguidas de símbolos e, seguidas nuevamente de símbolos a y finalmente, terminadas en símbolos b. Además, las cadenas deben cumplir las siguientes condiciones: ■ El número de símbolos a del inicio de la cadena deben coincidir con el número de símbolos b del final de la cadena. ■ El número de símbolos a del final de la cadena debe coincidir con la suma de símbolos b del inicio de la cadena y símbolos c de la cadena. Las siguientes cadenas son ejemplos de cadenas válidas pertenecientes al lenguaje L: ,a b c aabcaabb, ciaababbb, aaabbcaaabbb y abab. b) Un autómata a pila M definido de la siguiente manera: M =
({(/o, q\, <7-2.3}, {a, 6, C'}, r ,
6, f / o , Ztí. {<73})
donde T = {a, b, c. Z q } y la función de transición siguiente diagrama de transiciones:
<5
se define mediante el
208
C a p í t u l o
c, b; cb 6, a;ba а,Zq \ c, c; cc б, 6; bb «, a; aa
7
a.Zo 6 , a; e
a, 6,; e a, c; e
cumple que L(M ) — L. c) M es un autómata determinista. d) Sí, el autómata M siempre vacía la pila antes de aceptar la cadena. e) Sí, puesto que e £ L(M). (5 )
a) Las cadenas de L están formadas por símbolos a, seguidos de símbolos b, seguidos de símbolos c y finalmente terminadas en símbolos a. Además, las cadenas de L cumplen con las siguientes condiciones: ■ El número de símbolos a del inicio de la cadena, debe coincidir con el número de símbolos a del final de la cadena. ■ Puesto que j = k. el número de símbolos b debe coincidir con el número de símbolos c. Las siguientes cadenas son ejemplos de cadenas válidas pertenecien te al lenguaje L: abca,nabcaa,ubbccn,aaaabbccnaaa y abbbccca. b) Un autómata a pila M definido de la siguiente manera:
M = ({go, ry,, q-2, 5 3 ,94,9s}, {a, b, c}, T, 6, q0, Z0) {5 -5 }) donde T —{A, B,Z0}y la función de transición <5se define mediante el siguiente diagrama de transiciones: a, e; A
cumple que L(M ) = L.
b,e ,B
c,
;e
a,
;e
So l u c i ó n a l o s
209
ejercicios
c) M es un autómata a pila determinista. d) Sí, el autómata M siempre vacía la pila antes de aceptar cualquier cadena del lenguaje. é) Sí, puesto que e
L(M).
(6) El autómata equivalente a la gramática G del enunciado, se define de la siguiente manera: m
=
{/})
donde el conjunto símbolos de pila es T = {5 , A, B, , Z0} y la función de transición ó se define mediante el siguiente diagrama de transiciones: e, ; xy e, B\ e, ; B yy e, 5 ; e e, xA y e. A; xy e,S-,xyy e.S; xB yy e, 5 ; x x; f V: V, f
11.8. ( 1)
Capítulo 8 0 a) Si ¿2 = {xnyn : n >} y contenidas en L] (puesto que L\ contiene todas las cadenas que se pueden formar con el alfabeto E). Por tanto, sería cierto que ¿2 C L\.
b) Si se considera el mismo lenguaje L-¿ = {xny n : n > 0} y L\ = 0 , entonces se cumple que L\ C Esta relación también se cumpliría si L] = {xnyn : 0 < n 5 <}. Se deja como ejercicio, definir un autómata finito M tal que L(M ) = L x.
C a p í t u l o
210
(2)
8
a) Las cadenas contenidas en L(G) están formadas por símbolos 0 seguidas por el mismo número de símbolos 1 y terminadas en cualquier número de símbolos 2. Las cadenas del lenguajes deben contener al menos un símbolo 0, un símbolo 1 y un símbolo 2. Las siguientes, son ejemplos de cadenas válidas de L(G): 0001112 y 01222.
012 , 00112 , 0122 ,
b) Se puede definir un autómata equivalente a la gramática G siguiendo el procedimiento descrito en la sección 7 .4 . Así, el autómata M definido de la siguiente manera: M =
q, /} , {0; 1,2}, T, 5, i, Z 0, {/})
donde el conjunto símbolos de pila es transición 5 se define mediante el siguiente diagrama de transiciones:
T = {S,
e, 5 ; OAIB e.,A;e e,A\QAl e,B] 2 e. B\ 2 2,2: f 1.1;6 0,0; 6
cumple que L(M ) = L(G). c) El autómata M definido en el apartado anterior es no determinista, puesto que en el estado q existen varios puntos de no determinismo. Por ejemplo, en el estado q, si en la cima de la pila se encuentra un símbolo A, es posible ejecutar las dos siguientes transiciones: {q,e,A) = e) 5 (q,e,A) = (?,0A1) 8
De la misma forma, en el estado q2, si en la cima de la pila se encuentra un símbolo B, es posible ejecutar las siguientes transiciones:
2
O L UC I O N
A
L OS
211
EJ ER CI CI OS
5{q,t,B) = {q,2B) 8{q,e,B) = {q, 2) El autómata determinista M ' definido a continuación, cumple que L(M ') = L(G). M' — ({? 0 i 5it 52, 5 3 }, {0, 1> 2}, T, S\ 5 o, Zq, { 5 3 })
donde T = {a, Z0} y la función de transición 6' se define mediante el siguiente diagrama de transiciones: 0,e;a
l,a;e
2,e;e
Este autómata, utiliza la pila para comprobar que en la entrada hay el mismo número de 0 que de 1. Finalmente, termina de procesar leyendo los símbolos 2 de la entrada. Como no importa el número de símbolos 2 que se lea, en el estado q¿ el autómata no utiliza la pila. d) La siguiente tabla muestra la ejecución del autómata M si la entrada contiene la cadena 0122 (como no se ha especificado lo contrario se asume que la pila se encuentra vacía):
Paso
Cadena de entrada
® © © © ©
0122 0122 0122 0122 0122 0122 0122 0122 0122 0122 0122
© © © © ©
Función de transición = (qi,Za) % i,e,e ) = (52,® 6{q2,e,S)= % 2, 0, 0) = (52, e) 5{q2,e,A) = ((fe, e) = (<72, <0 5(q2,e,B) = (q2,2B) <5(52,2,2) = (52, 6)
j " \ ' 0 O 1 n S
II O Í F
¿(52, 2, 2) = (52, e) ¿(52, c, Zo) = (53, f)
Contenido de la pila z 0
SZo OAlBZo A 1B Z0 IB Z 0 B Z 0 2BZ0 B Z 0 2Z q Zo
212
C a p í t u l o
8
En el paso (5), de las dos posibles transiciones, se ha elegido la transición: 6 (q2, e, A) = (q2l 0/ 11). De la misma forma, en el paso (7), de las dos pos ,2 transiciones, se ha elegido la transición: S(q2, e, B) = mientras que en el paso @ se ha elegido la transición: ó( e, B ) = han realizado de manera no determinista. Teniendo en cuenta la misma cadena 0122, la siguiente tabla muestra la ejecución del autómata Ai': Paso
Cadena de entrada
(D © <3>
0122 0122 0122 0122 0122
© (3 )
Función de transición
Contenido de la pila
^0
í ( 9o,f,f) = (91,^0) % i.0 ,e) = (r/i,a) 5 (qi,l , a ) = (92, 5{q2,2 ,Z 0) = (93, e) ¿( 93, 2 , e) = (93, c)
á) No, todo lenguaje que contenga un número finito de cadenas es regular. Para reconocer un lenguaje con un número finito de cadenas, basta con definir un autómata finito que vaya reconociendo cada uno de los símbolos de cada cadena del lenguaje. Por ejemplo, dado el alfabeto E = y}, sea el lenguaje L = {xx, yx, yy}formado por un número finito de cadenas. El siguiente a finito M , aceptaría el lenguaje L:
M = ({«>,9i,ft> 93,94), £,£,«>, ( ft ,
94
})
donde la función de transición 5 se define mediante el siguiente diagrama de transiciones:
b) No, no siempre es posible que el autómata a pila determinista vacíe su pila antes de aceptar las cadenas de su lenguaje. Por ejemplo, un autómata a pila determinista que acepte el lenguaje!, = {.r 'V : n > ü}U{xn : n > 0} no puede vaciar su pila cuando reconoce cadenas formadas únicamente por símbolos c) No. Dado un determinado alfabeto E, existen lenguajes independientes del contexto no deterministas para los cuales no es posible definir un autómata a pila
S o l u c i ó n a l o s
213
ejercicios
determinista que los reconozca. Por ejemplo, dado el alfabeto E = sea el lenguaje L = {wwR : w E {«,£>}*}. Las cadenas perteneci E están compuestas por una subcadena formada por cualquier combinación de símbolos a y b,seguida de la subcadena inversa. Son cadenas válidas E las siguientes: abbu, ,a ,bb,baab b babbbbab. Un autómata a pila n determinista que acepte L puede definirse de la siguiente manera: Af = ({®>, gi,
Z0, {t;3})
donde T = {A, B, Z(,} es el conjunto de símbolos de pila y la fu transición 6 se define mediante el siguiente diagrama de transiciones (se supone que inicialmente la pila se encuentra vacía): b, b, b, Z¡)\ BZ[)
;A B
B A \ B
B
a, A; A A a , B , A B b,B\e a, Z q ,‘ AZ q
a.,
;Af
(4 ) La opción verdadera es la opción (b) (¿i está compuesto por cadenas que comienzan por cero o más símbolos x, seguidas de uno o más símbolos y. Por su parte. Lo está compuesto por cadenas con igual número de símbolos x e y. En principio, el autómata M acepta todas las cadenas de Lo, excepto la cadena vacía que si pertenece a L2-Esto es, e e ¿2 y e ^ ¿ i - Por tanto, no se cumple ni la relación L¡ = L-¿ ni la relación L 2 C L\. Tampoco es cierto que L\ C Lo puesto que hay cadenas contenidas en L | y no en L2, como por ejemplo, la cadena xyy. (5 )
a) El lenguaje está formado por cadenas formadas por símbolos x seguidas de símbolos y con la única condición que la suma del número de .%’s y el número de y's sea un número par. L es, por tanto, un lenguaje regular. De hecho, L puede definirse como la intersección de dos lenguajes regúlales L x y Lo, donde: Ei = {x nyul,n, m > 0};
L2 = {«;: w E {x, y}*, ü < |w;| y |w| es par}.
b) Dado el alfabeto E = {x, y}, sean M x y Mo los autómatas que reconocen los lenguajes L\ y Lo respectivamente, donde M x y M 2 se definen de la siguiente manera:
214
C a p í t u l o
Mi = {{qo,qi},T,, 5 1,q0,{q0}) donde la función de transición transiciones:
8
M2 = ({92,93,94}, £,¿2,92, {94})
se define mediante el siguiente diagrama de
y
y la función de transición 62 se define mediante el siguiente diagrama de transiciones: x
Q 2
y V
Siguiendo el procedimiento visto en la sección 5 . 1.3 , el autómata que acepte la intersección de Li y L 2 se define de la siguiente manera:
M lxq L í = (<9 » £ A inÍ2,( g 0, 92), {(90,94)}) Q= {(<70, g2), (<7o, 93), (9o, 94), (91,92), (91,93), (91,94)} y la función de donde transición 6 se define mediante el siguiente diagrama de transiciones (sólo se muestran los estados accesibles):
S o l u c i ó n a l o s
215
ejercicios
(6) Es falsa. El lema de bombeo enuncia una propiedad que deben cumplir los lenguajes independientes del contexto. Si un lenguaje no cumple el lema de bombeo entonces no puede ser independiente del contexto. Ese es el caso del lenguaje L del enunciado. a) La gramática G es una gramática independiente del contexto no regular. No es una gramática regular ya que, por ejemplo, la primera producción contiene dos símbolos no terminales en su lado derecho.
(7)
b) La primera producción deriva en los no terminales Las producciones que tienen el no terminal A en el lado izquierdo, generan subcadenas de símbolos a. Por otro lado, las producciones que tienen el no terminal B en el lado izquierdo, generan subcadenas de símbolos b. Por tanto, el lenguaje que genera esta gramática se puede expresar mediante la expresión regular Es un ejemplo de una gramática independiente del contexto no regular que genera un lenguaje regular. c)El autómata más sencillo que reconoce L(G) es un autómata finito que ya se ha visto anteriormente y que se define: M = ( f e , <7i, <72), f e f e
tfo, f e } )
donde la función de transición 5 se define de la siguiente manera: x
y
11.9. (1) El lenguaje L contiene todas aquellas cadenas que tienen el mismo número de O’s y 1 ’s, sin imponer ninguna restricción sobre el orden en el que deben aparecer los símbolos 0 e 1 en la cadena. Así, son cadenas válidas del lenguaje las siguientes: 0011, 1100, 0101 , 1001 , 001011 ,....
Una máquina de Turing que acepte este lenguaje, irá recorriendo la cinta, equiparando cada 0 o 1. Así, marcará el primer símbolo que encuentre (0 o 1). Después, buscará en la cinta el otro símbolo para marcarlo igualmente. Si al final, la cinta se encuentra totalmente marcada, entonces la cadena pertenecerá al lenguaje. Así, una máquina de Turing de estas características se define de la siguiente manera:
Ca p í t u l o
216
M = ({q0, qi, qi, <73, /} - {0,1}, {0,1, X ,
, S, q0, B,
9
})
donde 6 se define mediante la siguiente tabla de transiciones:
~^ Qo Qi Q2 S3
0
1
B
(r/2, X. R) (q^Y-L) (S2r0,ñ) (93!0, L)
(Si -x, R) (quYR) (03, Y, L) [q¿-. i, L)
(qj,B, R)
Y
X
(q0,Y, R) (Qi,Y,R)
( ,y, R) 92
(q o , x , R )
( 93 , y l )
ú (2)
a) El lenguaje L( M) contiene todas aquellas cadenas que empiezan por 1 o más símbolos 0, seguidas del mismo número de símbolos 1, y terminadas por uno o más símbolos 2. b) El lenguaje L( M) es un lenguaje independiente del contexto no regular. El autómata a pila acepta el lenguaje L(M) está definido en la solución del ejercicio 2 del capítulo 8. c) Dada la configuración inicial, la secuencia de configuraciones es la siguiente: (/o0011222i?B b A'g1011222BJB b X Q qjll2 22B B b Xg 30Y 1222 B B b q b X q 0O Yl2 22BB b X X qiY l2 2 2 B B b X X Y q 1\2 22BB b X X q 2Y Y 2 2 2 B B b X q 2X Y Y 2 2 2 B B b X X q 0Y Y 2 2 2 B B b X X Y q 3Y222B B b X X Y Y q 322 2BB b X X Y Y 2 q A22BB b X X Y Y 2 2 q A2 B B b X X Y Y 2 2 2 q 4B B b X X Y Y 2 2 2 B q 4B La configuración final es X X Y Y 2 2 2 B q 4B.
(3) El lenguaje del enunciado no pone restricciones en cuanto al orden en que deben aparecer los símbolos en la cadena. Por tanto, una máquina de Turing que acepte el lenguaje del enunciado únicamente deberá comprobar la aparición de al menos un símbolo x, un símbolo y y un símbolo z en cada cadena de entrada. Este lenguaje lo reconoce la máquina de Turing M definida de la siguiente manera:
donde la función de transición (i se define mediante el siguiente diagrama de transiciones:
So l u c i ó n
a
los
217
e j e r c i c i o s
•Z-, x\ L
y , y \ R * Ft rW ^ ^
y,y\L -
, I l
x,x;R F?
~
~ r
-V - •%*) X-/
J >W J il l
b,c}, la máquina de Turing M def
(4) Dado el alfabeto E = {a, reconoce el lenguaje del enunciado:
A/ = ({«J.?i*«2,íft»?/},S.SU {X, B}, 5,
a 9o ( q u X , R ) 9i 92 93
Ú
~
b
c
(92, X, i?) (91, 6,72)
(q:i>X, R)
(92, 0, R)
-
{q3,a„R)
(93, &, -ft) -
-
(91, c,ñ) (92, 0,22)
B -
-
-
-
-
-
-
-
{qflB,R) (9/, 22) (9; , 22, 22) -
(5) Dado el alfabeto E = {a, b, c), la máquina de Turing M definida a continuación reconoce el lenguaje del enunciado:
M - ({q0, 9i,
q2, 93, 94, <75, <76, 9/}, E, E U {X, Y, Z, B}, 6,
donde la función de transición transiciones:
B, {9/})
ó se define mediante el siguiente diagrama de
218
Ca p í t u l o
a, a; R,
6,6; R
9