) ) ) ) ) ) N o .D E U B R 0 ^ 7 ;3 - t± . ie » L _ L Z No. DEETIG. M ^ 4 -T ^ Teoría de autómatas ) lenguajes formales Dean Kelley Departamento de Matemáticas y Ciencias de la Computación Gustavus Adolphus College T raducción: Ma Luisa Diez Platas Facultad de Informática Universidad Pontificia de Salamanca en Madrid Revisión técnica: Luis Joyanes Aguilar Facultad de Informática Universidad Pontificia de Salamanca en Madrid PRENTICE HALL M adrid • México • Santafé de Bogotá • Buenos Aires • Caracas • Lima • Moi San Juan • San José • Santiago • Sao Paulo • W hite Plains www.FreeLibros.com CONSULTORES EDITORIALES: SEBASTIÁN DORMIDO BENCOMO Departamento de Informática y Automática UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA LUIS JOYANES AGUILAR Departamento de Lenguajes, Sistemas Informáticos e Ingeniería de Software UNIVERSIDAD PONTIFICIA DE SALAMANCA en Madrid www.FreeLibros.com DEAN KELLEY Teoría de autómatas y lenguajes formales No está permitida la reproducción total o parcial de esta obra ni su tratamiento o transmisión por cualquier medio o método, sin autorización escrita de la Editorial. DERECHOS RESERVADOS © 1995 respecto a la primera edición en español por PEARSON EDUCACIÓN, S. A. C / N úñez de Balboa, 120 28006 M adrid ISBN 0-13-518705-2 Depósito Legal: M-21607-2001 Última reimpresión, 2001 Traducido de: AUTOMATA AND FORMAL LANGUAGES: AN 1NTRODUCTION PRENTICE HALL © 1995 ISBN: 0-13-497777-7 Editor de la edición en español: Juan Stumpf Diseño de cubierta: DIGRAF Composición: AULA DOCUMENTAL DE INVESTIGACIÓN Impreso por ENCO Artes Gráficas, S.L. , IMPRESO EN ESPAÑA - PRINTED IN SPAIN Este libro está impreso con papel y tintas ecológicos www.FreeLibros.com A m is P adres . y a l tío F u d d www.FreeLibros.com Contenido Prólogo .................................................................................... ............. xi 0. Preliminares m atem áticos........................................................... 0.1 Lógica elem ental................................................................................... 0.2 Definiciones b ásicas...................................................... :.................... 0.3 Operaciones con conjuntos.................................................................. 0.4 Relaciones y funciones........................................................................ 0.5 Inducción................................................................................................ 0.6 Cardinalidad........................................................................................... 1 1 6 8 12 19 22 1. Alfabetos y lenguajes.................................................................... 1.1 Alfabetos, palabras y lenguajes.......................................................... 1.2 Operaciones con cadenas..................................................................... 1.3 Operaciones con lenguajes.................................................................. Problemas ....................................................................................................... 29 29 32 34 41 2. Lenguajes regulares...................................................................... 2.1 Lenguajes sobre alfabetos.................................................................... 2.2 Lenguajes regulares y expresiones regulares.................................... 2.3 Autómata finito determinista.............................................................. / 45 48 53 www.FreeLibros.com 45 VIII TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES 2.4 2.5 2.6 2.7 2.8 2.9 2.10 AFD y lenguajes................................................................................... Autómata finito no determinista......................................................... Equivalencia de AFN y AFD............................................................... 8-transiciones......................................................................................... Autómatas finitos y expresiones regulares........................................ Propiedades de los lenguajes regulares .......................................... . Aplicaciones de las expresiones regulares y los autómatas fin ito s..................................................................................................... Problemas ....................................................................................................... 59 61 66 70 75 84 90 93 3. L e n g u a je s in d e p e n d ie n te s d el c o n te x to ........................................ 105 3.1 Gramáticas regulares.......................................................................... 105 3.2 Gramáticas regulares y lenguajes regulares.................................... 110 3.3 Gramáticas independientes del contexto.......................................... 114 3.4 Árboles de derivación o de análisis y am bigüedad........................ 117 3.5 Simplificación de gramáticas independientes del contexto.......... 122 3.6 Propiedades de los lenguajes independientes del contexto........... 136 3.7 Autómata de p ila.................................................................................. 144 3.8 Autómatas de pila y lenguajes independientes del contexto......... 151 3.9 Forma normal de G reibach................................................................. 162 Problemas ....................................................................................................... 168 4. M á q u in a s d e T u r in g ................................................................................. 171 4.1 Definiciones básicas........................................................................... 171 4.2 Máquinas de Turing como aceptadoras de lenguajes..................... 178 4.3 Construcción de máquinas de T uring............................................... 184 4.4 Modificaciones de las máquinas de Turing...................................... 194 4.5 Máquinas de Turing universales........................................................ 205 Problemas ........................................................................."....:...................... 207 5. M á q u in a s d e T u rin g y l e n g u a j e s ........................................................ $ 5.1 Lenguajes aceptados por máquinas de T u rin g ................................ 5.2 Lenguajes regulares, independientes del contexto, recursivos y recursivamente enumerables............................................................ 5.3 Lenguajes recursivos y recursivamente enum erables.................... 5.4 Gramáticas no restringidas y lenguajes recursivamente enum erables.......................................................................................... 5.5 Lenguajes sensibles al contexto y la jerarquía de Chom sky.......... Problemas ....................................................................................................... www.FreeLibros.com 209 209 210 215 221 228 235 CONTENIDO IX 6. Resolubilidad.................................................................................. 6.1 El problema de parada........................................................................ 6.2 El problema de correspondencia de Post.......................................... 6.3 Irresolubilidad y lenguajes independientes del contexto............... Problemas ....................................................................................................... 241 241 245 258 263 7. Introducción a la complejidad com putacio nal......................... 7.1 Complejidad espacial.......................................................................... 7.2 Complejidad tem poral........................................................................ 7.3 Introducción a la teoría de la com plejidad....................................... Problemas ....................................................................................................... 265 272 281 288 Referencias y bibliografía 291 índice a n a lític o ................. 293 www.FreeLibros.com 265 Prólogo Este libro es el resultado de las anotaciones tomadas en el curso de introducción a la teoría de la computación, impartido en la universidad Gustavus Adolfus. Di­ cho curso abarca los temas de lenguajes formales y autómatas, máquinas de Tu­ ring y computabilidad a través de la resolubilidad. El curso va dirigido a estu­ diantes de segundo año de Ciencias de la Computación y hasta ahora este curso tenía como principal prerrequisito el haber seguido con anterioridad un curso so­ bre lectura y tratamiento de las demostraciones matemáticas. El libro está dirigido a estudiantes con los conocimientos matemáticos míni­ mos. El Capítulo 0 trata dé los preliminares matemáticos necesarios para poder abordar la lectura del libro én su totalidad. El nivel de conocimientos matemáticos en los capítulos siguientes es ini­ cialmente bajo, pero se eleva a medida que los temas lo requieren y la capacidad del estudiante se incrementa. Trataré de evitar las demostraciones matemáticas rigurosas en la medida de lo posible, en especial en los primeros capítulos. Por tanto, se evitará dar muchos detalles de las demostraciones que sean tediosas. Por otro lado, trataré de presentar teoremas y definiciones de la forma más preci­ sa posible. La mayoría de mis razonamientos tienen la intención de motivar mas que la de ser matemáticamente completos o elegantes. Creo, además, que los ejercicios contribuyen, en gran medida, al buen aprendizaje del proceso. Al final de cada sección, los ejercicios planteados pre­ tenden ilustrar, revisar y ampliar los conceptos vistos en las mismas. Hay ejercí- www.FreeLibros.com XII TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES cios desde bastante fáciles a muy difíciles. La mayoría de los ejercicios más fá­ ciles pretenden reforzar las ideas vistas en la sección, mientras que los más difí­ ciles ilustran y amplían dichas ideas. Los Capítulos del 1 al 7 terminan con unas colecciones de problemas. Di­ chos problemas pretenden animar al lector a investigar sobre los temas tratados. Generalmente (aunque no siempre), el material tratado en las colecciones de problemas representan lo que yo considero necesario para estar interesado en re­ alizar incursiones a través de la línea de desarrollo principal del texto. El texto consta de ocho capítulos. A continuación se realiza una breve des­ cripción de cada uno de ellos. El Capítulo 0 cubre los preliminares matemáticos y lógicos. Consiste en una rápida revisión de la lógica y la teoría de conjuntos, siendo un capítulo bastante completo. Además, en este capítulo se repasan todos los conocimientos matemá­ ticos necesarios para entender el resto del texto. En el Capítulo 1 se presentan las definiciones básicas y la notación usada para alfabetos, cadenas y lenguajes. Se definen y estudian las operaciones ele­ mentales sobre cadenas y lenguajes. El Capítulo 2 trata de los lenguajes y las expresiones regulares. Se definen los autómatas finitos y se establece la relación de los mismos con los lenguajes regulares. Se introduce el no determinismo. Además, se estudian las propiedades fundamentales de los lenguajes regulares (lema del bombeo, algoritmos de deci­ sión, etc.). El Capítulo 3 introduce los conceptos sobre gramáticas desarrollando, ade­ más, las propiedades de las gramáticas independientes del contexto y los autó­ matas de pila. Se presentan varias simplificaciones y formas normales de gramá­ ticas. El Capítulo 4 es el primero de los cuatro capítulos cuyo tema central son las máquinas de Turing. Este capítulo contiene definiciones básicas, las distintas versiones de máquinas de Turing e introduce la idea de funciones Turing-computables y lenguajes reconocidos por las máquinas de Turing. El Capítulo 5 estudia las relaciones entre las máquinas de Turing y los len­ guajes formales. Además, establece la jerarquía de Chomsky. En el Capítulo 6 se habla de la resolubilidad. Comienza con el problema de parada de las máquinas de Turing, después trata el problema de la irresolubilidad del problema de la correspondencia de Post y presenta algunos problemas irresolubles para los lenguajes y gramáticas independientes del contexto. El ca­ pítulo termina con el estudio de las funciones computables totales. El Capítulo 7 es una introducción a la complejidad computacional del reco­ nocimiento del lenguaje. Se estudia en función de los recursos de espacio y tiempo (de la máquinas de Turing). www.FreeLibros.com PRÓLOGO XIII Aunque la mayoría del material presentado se corresponde con el contenido usual de un curso de introducción a la teoría, la novedad de este texto quizás ra­ dique en el nivel con el cual se enfoca. He tratado de transmitir todos estos con­ ceptos a estudiantes que no sean avezados matemáticos, de forma que puedan comprenderlos al mismo tiempo que desarrollan su capacidad matemática. Entiendo que éste es el material suficiente para cubrir un curso de un semes­ tre de cuatro días a la semana. Generalmente trato los Capítulos del 1 al 5 en su totalidad, con la rapidez con que los estudiantes son capaces de asimilarlos. Este material es el corazón de cualquier curso de teoría de lenguajes formales y no me importa tomarme el tiempo necesario para que los estudiantes puedan dige­ rirlo. Dependiendo de la audiencia, imparto algunas clases del Capítulo 0 o sim­ plemente asigno trabajos a cerca del mismo. La mayoría del material presente en el Capítulo 0, proviene de un curso corto (2 créditos) de demostraciones mate­ máticas que una vez se impartió en la universidad. Siempre trato de desarrollar el Capítulo 6 en su totalidad, aunque depende del tiempo que quede del semes­ tre. Al principio me sorprendió que, cuando el tiempo apremia, la resolubilidad puede ser presentada bastante bien por medio de conferencias cortas. Me gustaría agradecer a mi amigo Ding-Zhu Du de la Universidad de Min­ nesota, Minneapolis, por sugerirme el Problema 1.7, el cual trata de la desigual­ dad de McMillan. El desarrollo anterior al Lema 2.8.3, usado en el lema de Ar­ den, fue sugerido por una de las primeras personas que revisaron este libro. Me gustaría agradecerle, a él o a ella, por llamar mi atención sobre el mismo (debido a Brzozowski). Me gustaría también expresar mi aprecio a mis amigos T. J. Morrison y D. J. Malmanger por su estímulo y apoyo moral a lo largo de este pro­ yecto aparentemente infinito. Finalmente, me gustaría dar las gracias a las si­ guientes personas por sus comentarios cuando revisaron el manuscrito: Moon Jung Chung (Michigan State University), Ronald K. Friesen (Texas A&M University), Micha Hofri (University of Houston), Robert Kline (West Chester Uni­ versity) y S. A. Kovatch (General Electric). Dean Kelley www.FreeLibros.com Teoría de autómatas lenguajes formales www.FreeLibros.com o Preliminares matemáticos 0.1 LÓGICA ELEMENTAL Para el estudio de la teoría de la computación se necesitan tres herramientas ma­ temáticas básicas. Una de ellas es la notación teórica establecida, otra el dominio de los conceptos de funciones y relaciones, y la tercera son unos buenos conoci­ mientos de inducción matemática. La capacidad para usar la notación teórica establecida depende, fundamentalmente, del conocimiento de las definiciones básicas de símbolos y sus significados. Conocer las otras dos herramientas de­ pende de la capacidad para entender razonamientos lógicos. Por tanto, comenza­ remos con una presentación -de las ideas fundamentales de la lógica para pasar a establecer los mecanismos matemáticos requeridos. En lógica, una proposición o sentencia es una frase de la cual se puede de­ terminar si es verdadera o falsa. Las frases “2 + 1 es 5”, “3 > V8~” y “ 17 es un número primo” son proposiciones, mientras que “ven a nuestra fiesta”, “¿qué hora es?” y “esta proposición es falsa” no lo son. Si P y Q son proposiciones, se dice que P es equivalente a Q si para todos los casos tienen el mismo valor de verdad. Por eso las frases “3 < 5” y “ íc es irracional” son equivalentes, como lo son las frases “ Vfe es un entero” y “4 < 3”, puesto que sus valores de verdad son los mismos. Si P es una proposición, su negación se denota por —i P. Si P es verdadera, -i P es falsa, y si P es falsa, -> P es verdadera. —<P se lee “no P”. Por ejemplo, si P es la proposición “3 < 5”, —>P es “3 > 5”. Dado que el valor de verdad d e —>P www.FreeLibros.com 2 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES depende del valor de verdad de P, podemos usar una tabla, llamada tabla de ver­ dad, para indicar la dependencia: p -i P V F F V La tabla de verdad presenta los valores de verdad de —i P correspondientes a los valores de verdad de P. La conjunción de las proposiciones P y Q se denota por P a Q y se lee “P y <2 ”• La proposición compuesta P a Q es verdadera sólo cuando P y Q sean verdaderas simultáneamente. Por eso podemos obtener la tabla de verdad si­ guiente: P Q V V V V F F F V F F F F P a Q Es importante hacer notar que para una proposición compuesta la tabla de verdad debe considerar todas las posibles combinaciones de los valores de ver­ dad correspondientes a los componentes de la misma. Considérense las conjunciones siguientes 1. 3 < V ! 7 y 25 = 52. 2. 3 < V77 y 26 = 52. 3. 3 > VÍ7 y 25 = 52. 4. 3 > VT7y 26 = 52. De estas cuatro proposiciones compuestas, sólo la primera es verdadera. En todas las demás, al menos uno de los componentes es falso, lo que hace que la conjunción sea falsa. La disyunción de las proposiciones P y Q se denota por P v Q. Es verdadera cuando al menos una de las dos es verdadera. Otra forma de decir esto es que P v Q e s falsa solamente cuando P y Q son falsas a la vez. P v Q s e lee “ P o Q”. www.FreeLibros.com PRELIMINARES MATEMÁTICOS 3 La proposición P —> Q se llama proposición condicional y tiene la siguiente tabla de verdad p Q P-^Q V V V V F F F V V F F V La condicional se lee “si P entonces Q”. Para entender los valores de verdad de P —>Q, considérese la proposición “Si el sol brilla, entonces Carlos juega al béisbol”. Para determinar cuando es verdadera esta proposición, nos pregunta­ mos si la persona que la ha hecho está diciendo la verdad. Tenemos cuatro casos que corresponden a las cuatro líneas de la tabla de verdad precedente. En el primer caso (el sol brilla y Carlos juega al béisbol), se ha dicho la ver­ dad. En el segundo caso (el sol brilla y Carlos no juega al béisbol), no se ha di­ cho la verdad. En los dos últimos casos (el sol no brilla y Carlos juega al béis­ bol; el sol no brilla y Carlos no juega al béisbol), no deberíamos decir que la persona que hizo la proposición es un mentiroso puesto que el sol no brilla y él, o ella, sólo dijeron lo que ocurriría si el sol brillara. En la condicional P —> Q, la proposición P se llama hipótesis, condición o antecedente, mientras que Q se llama conclusión o consecuente. La recíproca de la condicional P —>Q es la proposición Q —» P. La contrapuesta de P —>Q es (—' Q) —> (—' P). Advierta que P —» Q y su contraposición son equivalentes puesto que tienen los mismos valores de verdad para todos los casos, como muestra la siguiente tabla de verdad: p Q P ^Q ~ 'Q -I p V V V F F V V F F V F F F V V F V V F F V V V V Consideremos la proposición P —>Q a Q —» P. Es fácil ver que la proposi­ ción es. verdadera sólo cuando P y Q tienen los mismos valores de verdad. Esta www.FreeLibros.com 4 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES proposición en forma abreviada es P Q, la cual se lee “P si y sólo si Q". Se llama proposición bicondicional. Las proposiciones —■(P a Q) y ( - 1 P) v ( - 1 Q) son equivalentes (ésta es una de las leyes de De Morgan; véase Ejercicio 0.1.2). Considérese la proposición - .( / » A f i) < - > ( - .P ) v ( - . Q) A causa de la equivalencia de proposiciones, obtenemos que ambos lados de la bicondicional tienen el mismo valor de verdad en todos los casos. Por tanto la bicondicional es verdad en todos los casos. Esto sugiere el siguiente teorema: T eorem a 0.1.1. Sea P y Q proposiciones para las cuales P o Q es siempre verdadera. Entonces P y Q son equivalentes. Por otro lado, si P y Q son equivalentes, en­ tonces la bicondicional P <-> Q es siempre verdadera. Un proposición es una tautología si es siempre verdadera. Fíjese que si P y Q son equivalentes entonces, según el teorema previo, P Q t s una tautología. Por tanto, la equivalencia puede ser definida como: P y Q son equivalentes si P Q es una tautología. Cuando la proposición condicional P —> Q es una tautología, se escribe P => Q. De forma similar podemos escribir P <=í> Q si la bicondicional P Q es una tautología. Fíjese, que substancialmente, esto no significa más que la condi­ cional (o bicondicional) es una proposición verdadera. La verdad de P —>Q depende de los valores de verdad de P y Q. Por otro lado, —■{A a B) —» (—iA) v ( - 1 B) es una proposición verdadera sea cuales sean los valores de verdad de sus componentes A y B. Esto puede ser representado por -i (A a £ ) = > ( - . A) v(-< B). Una contradicción es una proposición que siempre es falsa. Por tanto, la ne­ gación de una tautología es una contradicción. Una frase abierta o función proposicional es una proposición que contiene una variable. Por ejemplo, la frase “x 2 + 2x+ 16 = 0” contiene la variable x, al igual que la frase “jc fue el primer presidente de los Estados Unidos” . La colec­ ción de objetos que pueden ser sustituidos por una variable en una frase abierta se llama conjunto de significados de esa variable. Llamaremos conjunto de ver­ dad de la frase abierta, al conjunto de objetos pertenecientes al conjunto de sig­ nificados para los cuales la frase abierta se convierte en una proposición verda­ dera al sustituir la variable por ellos. Si se considera que el conjunto de signifi­ cados para la frase abierta x 2 + 2x + 16 = 0 es el de los números reales, entonces el conjunto de verdad es vacío. Si el conjunto de significados incluye además . —1 ± i VTT entonces el conjunto de verdad tiene algún elemento. www.FreeLibros.com PRELIMINARES MATEMÁTICOS 5 Si P es una frase abierta que contiene la variable x, se escribe P (x). Gene­ ralmente, cuando se muestra una frase abierta, el conjunto de significados para la(s) variable(s) que contiene es explícitamente declarado o se deduce fácilmen­ te del contexto. Ciertos operadores indican la forma de seleccionar elementos del conjunto de significados. Esos operadores son los cuantificadores universal y existencial. Una frase de la forma “para todo x del conjunto de significados P (x) es ver­ dadera” se dice que es una frase universalmente cuantificada. Esto indica que el conjunto de verdad de P (x) esta compuesto por todos los objetos pertenecientes al conjunto de significados de x. Esto, en forma abreviada, se escribe Vx P (x), lo cual se lee “para todo x, P (x)” . Fíjese que Vx P (x) ya no es una frase abierta, puesto que su verdad o falsedad puede ser determinada. Por ejemplo, si P (x) es la frase abierta “x + 1 > x” y el conjunto de significados es la colección de todos los números reales, entonces Vx P (x) es una proposición verdadera. Una frase de la forma “existe un x en el conjunto de significados para el cual P (x) es verdadera” se dice que está cuantificada existencialmente. Esto in­ dica que algún elemento del conjunto de significados es un valor que, al sustituir a x, hace que P (x) sea verdadera. Lo cual quiere decir que algún elemento del conjunto de significados está también en el conjunto de verdad de P (x). Esto en forma abreviada, se escribe 3 x P (x) y se lee “existe un x tal que P (x)”, o “para algún x, P (x)”. Tenga en cuenta que 3 x P (x) ya no es una frase abierta. Teorem a 0.1.2. —>(Vx P (x)) es equivalente a 3 x -> P (x). Demostración. Supongamos que - i V x P (x) es verdadera. Entonces Vx P (x) es falsa, y por tanto, el conjunto de verdad de P (x) no es todo el conjunto de significados de x. Entonces, el conjunto de verdad de —<P (x) contiene algún elemento. Por tanto la proposición 3 x —■P (x) es verdadera. Ahora supongamos que —>Vx P (x) es falsa. Entonces Vx P (x) es verdadera, así que el conjunto de verdad de P (x) es todo el conjunto de significados de x. Por lo tanto, el conjunto de verdad de -i P (x) es vacío, lo que implica que 3 x —iP (x) es falsa. Con esto hemos demostrado que las dos proposiciones tienen exactamente los mismos valores de verdad y, por tanto, son equivalentes. □ Si P (x) es una frase abierta, entonces un contraejemplo para Vx P (x) es un elemento, t, del conjunto de significados de forma que P (t) sea falsa. Se puede demostrar una proposición de la forma “Si para cada x P (x), entonces Q (x)” probando que Vx (P (x) —» Q (x)) es verdadera. Esto puede ser refutado si se proporciona un contraejemplo. Por ejemplo, la proposición “si n es primo enton- www.FreeLibros.com 6 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES ces 2” - 1 es primo” podría ser refutada si se encuentra un contraejemplo tal como « = 1 1 . Ejercicios de la Sección 0.1 0.1.1. Obtener la tabla de verdad para P v Q . 0.1.2. Probar que -i (P a Q) es equivalente a (—>P) v (-> Q). Probar que —>(P v Q) es equivalente a (—>P) a (—iQ). Estas dos equivalencias se conocen como las leyes de De Morgan. 0.1.3. Probar que P a (Q v R) es equivalente a (P a Q) v (P a R) y que P v (Q a R) es equivalente a (P v 0 a (P v P). 0.1.4. Probar que P y —>(—■P) son equivalentes. 0.1.5. Simplificar ' (( ■P) v ( i0 ). 0.1.6. Simplificar -> ((-> Q) a (—>P)). 0.1.7. ¿Son equivalentes P —> Q y Q —>P? 0.1.8. ¿Cuáles de las siguientes proposiciones son tautologías? (a) P o - . ( - . P ) , (e) P a—iP. (b) —1 (P v 0 <-» —1 P a —1 Q. (f) (c) P v (g) ( P < - > 0 - * ( P - » 0 . —1 P. (d) (P v —1 P) a ((2 v -< 0 . (Pa - P ) ^ Q . (h) ( P 0 -1 P v g. 0.1.9. Probar que las siguientes proposiciones son contradicciones: (a) (P - ) 0 a (Pa i 0. (b) ((P v 0 a -i P) a (—>0 . (c) (P a 0 A ( i P). 0.1.10. Mostrar que —>3 x P (x) es equivalente a Vx -> P (x). DEFINICIONES BÁSICAS Ahora veremos las nociones básicas sobre teoría de conjuntos. Un conjunto es una colección de objetos llamados elementos del conjunto. Si A es un conjunto y a es un elemento de A, se usa la notación a e A (se lee “a es un elemento de A ”). Se usa la notación b <£ A cuando es necesario indicar que b no es un elemento de A. Si sabemos que A contiene exactamente los elementos a\, < 22, a,„ lo indi­ camos escribiendo A = {0 1 , <22 , . . . , an}. Por ejemplo, el conjunto de los números naturales menores que 6 puede ser escrito A = {0, 1, 2, 3,4, 5}. Esta notación www.FreeLibros.com PRELIMINARES MATEMÁTICOS 7 puede ser extendida a los conjuntos para los cuales no es posible listar todos sus elementos, tales como N = {0, 1, 2, ...} o N + = {1,2, 3, . . . }. Un conjunto sólo se caracteriza por sus elementos y no por el orden en el cual se listan. Por eso {1, 2, 3} y {2, 1,3} denotan el mismo conjunto. Los conjuntos A y B son iguales si contienen exactamente los mismos ele­ mentos. Por tanto, si A = {1, 2, 3} y B = {2, 1, 3}, se puede escribir que A = B. Fíjese que {a} y a no son lo mismo. Tenemos que a e A, pero a & {a}. También el conjunto {{a, b ) } tiene un único elemento que es el conjunto {a, b). Por otro lado, [ a , b } tiene dos elementos, a y b. Por consiguiente, {{a, b}} ¿ {a, b}. Si A y B son conjuntos y todos los elementos de A son también elementos de B, se escribe A c B y se dice que A es un subconjunto de B. Por ejemplo, si A = {1, 2, 3} y B = {0, 1, 2, 3 ,4 , 5}, se tiene A c 8 . Por otro lado, B no es un subconjunto de A, porque los elementos 0 ,4 y 5 de B no lo son de A. Obsérvese que s i A Q B y B ^ A simultáneamente, entonces todos los ele­ mentos de A están en B y todos los elementos de B están en A. Por lo tanto, si A c B y B c A, tenemos que A = B. T eorem a 0.2.1. S i A c B y B c C , entonces A c C . Demostración. Sea x e A. Entonces, si A c B se obtiene que x e /?. Además, puesto que B c C y x e B, tenemos que x e C. Por tanto, dado que x era un elemento arbitrario de A, resulta que A c C . □ Para completar las definiciones, es conveniente considerar un conjunto es­ pecial 0, llamado conjunto vacío o nulo, el cual no tiene elementos. El conjunto vacío es un subconjunto de todos los conjuntos; por lo cual se puede escribir 0 c A , para todo conjunto A. Algunas veces es conveniente describir el contenido de un conjunto en tér­ minos de una propiedad que sea característica de todos los elementos del con­ junto. Sea P (x) una proposición sobre x. La notación {x| P (x)}, que se int erpre­ ta como “el conjunto de todos los x tales que P (x)”, denota el conjunto de todos los x para los cuales P (x) es una proposición verdadera. Por ejemplo, Z + = { x | x e N y x > 0 } describe el conjunto de los enteros positivos. A = {x|x e N y x < 5} es el conjunto {(), 1, 2, 3,4}. Supongamos que A es un conjunto. Definimos conjunto potencia de A como 2a = {S| B c A ¡ . Por ejemplo, sea A - {a, b,c}. Entonces 2A es el conjunto {0, {a}, {b}, {c}, {a,b}, {a,c}, {b , c }, {a, b, c}} Obsérvese que 0 e 2a y A e 2a Supongamos que / es un conjunto. Si para todo a e l tenemos que Aa es un conjunto, entonces {Aa | a e /} se llama fam ilia indexada de conjuntos. Por www.FreeLibros.com 8 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES ejemplo, si para todo n > 0, A n = [-1 /n , l/n], entonces {An\n e Z +} es la fami­ lia de los intervalos cerrados desde - l / n a l / n para n = 1 , 2, 3 ... 0.3 OPERACIONES CON CONJUNTOS En aritmética se puede sumar, restar o multiplicar dos números. En la teoría de conjuntos existen tres operaciones que son análogas a las anteriores. La unión de conjuntos A y B se denota por A u B y es un conjunto formado por los elemen­ tos que aparecen en A, en B o en ambos. Por tanto A kj B = {x | x e A o x e B}. La intersección de A y B es el conjunto A n B = { x\ x e A y x e B } . Obsér­ vese que si x g A n B entonces se puede decir que x aparece simultáneamente en A y B. Por ejemplo, si A = {0, 1, 2, 3, 4, 5} y B - {2, 3, 5, 9} entonces A u B = {0, 1 , 2 , 3 , 4 , 5,9} y A n f i = { 2 , 3 , 5 } . Obsérvese que Z + u {0} = N , mientras que N n Z + = Z +. Se dice que los conjuntos A y B son disjuntos si A n i 5 = 0. T eorem a 0.3.1. Dados los conjuntos A y B, se tiene lo siguiente: 1. 0uA=A. 2. 0 n A = 0. 3. Si A c S , entonces A o B = A. 4. Si A c B, entonces A u B = B. 5. AnA=A=AuA. 6. (a) A u B =B kj A. (b) A n B = B n A . 7. (a) A u ( f i u C ) = ( A u S ) u C . (b) A n ( B n C ) = ( A n B ) n C . 8. (a) A n ( f i u C ) = ( A n B ) u ( A n C). (b) A u ( B n C ) = ( A u B ) n ( A u C ) . Demostración. Dejaremos la demostración de la mayoría de las propiedades para que sea realizada por el lector. www.FreeLibros.com PRELIMINARES MATEMÁTICOS 7. 9 (a) Un elemento x satisface A u ( 5 u Q « x e A o x e ( B u C) « x e A o ( x e B o x e C) « ( j t e A o x e B) o x e C O x g (AuB) o xe C <=> x e ( A u 5) u C Por tanto tenemos que A u ( B u Q c ( A u B ) u C y también ( A u f i ) u C c A u ( B u C ) con lo que ambos conjuntos son igua­ les. 8. (b) Un elemento x satisface x e A u ( # n C ) < = > x G A o x e (B n C ) <=> x g A o ( x e B y x e C ) <¿>(xe A o x e B) y ( x e A o x e Q <=> x g (A u B) y x e ( A u Q <=>x g ( A u B ) n ( A u Q con lo que tenemos que cada uno de estos conjuntos A u (B n Q y (A u B) n (A u Q es un subconjunto del otro. Por tanto los dos conjuntos son iguales. □ Si A y B son dos conjuntos cualesquiera, el complemento de B con respecto a A (también llamado complemento relativo) es el conjunto A - B = {x\ x e A y x g B } Por lo tanto, A - B esta compuesto por todos los elementos de A que no es­ tán también en B. Por ejemplo, si A = {0, 2, 4, 6, 8, 10} y B - {0, 1, 2, 3,4}, en­ tonces A - B = {6, 8, 10}, mientras que B - A = {1, 3}. Es conveniente pensar que todos los conjuntos aquí tratados se consideran subconjuntos de un conjunto universal U. Los complementos pueden ser forma­ dos con respecto a este conjunto universal. Si A es un conjunto, entonces U - A es el conjunto de todos los elementos que no están en A. Conviene denotar tales complementos mediante A; de forma que U - A = A . Obsérvese que 0 = U y V=0. www.FreeLibros.com 10 TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES T eorem a 0.3.2. Dados los conjuntos A y B: 1. A - B =A n B . 2. ( A n B ) = A u B. 3. (Au B)=AnB. 4. Á = A. Demostración. Vamos a probar los Apartados 1 y 3 y dejaremos el resto para el lector. Un elemento x satisface xe A -B xe A y x £ B <=>x e A y x e B <=>xe A n B Por lo tanto, tenemos que A - B c : A n B y A n B c : A - B , a s í que tenemos que A - B = A n B con lo que (1) queda probado. Para el Apartado 3, un elemento satisface x e A u B <=> x i. A u B <=>x <£ A y x <£. B <=>xeAyxeB <=>x e A n B Por lo tanto, tenemos que A u f i c A n B y A n B c A u B , con lo que los dos conjuntos son iguales. □ Téngase en cuenta que los apartados (2) y (3) del Teorema 0.3.2 se conocen como las leyes de De Morgan para conjuntos. Dados dos conjuntos A y B, su producto cartesiano, A x B, es el conjunto de todos los pares ordenados de los que el primer elemento proviene de A y el se­ gundo de B. Así que, A x B = {(a, b)\ a e A y b e B] Por ejemplo, si A - {1, 2, 3} y B - {5, 6} entonces A x B = {(1, 5), (2, 5), (3, 5), (1, 6), (2, 6), (3, 6)} www.FreeLibros.com PRELIMINARES MATEMÁTICOS 11 Obsérvese que dos pares ordenados son iguales si y sólo si los elementos correspondientes de los mismos son iguales. Por lo tanto (a, b) = (c, d) sólo cuando a = c y b = d. Luego un par ordenado es distinto que un conjunto de dos elementos. Ejercicios de la Sección 0.3 0.3.1. Probar las siguientes afirmaciones: (a) Si A c B, entonces 2a c 2b. (b) S i / l n 5 = (4 u 8 , entonces A = B. (c) Si A = B entonces A r \ B = A u B. 0.3.2. Si A c B, entonces para todo conjunto C, se obtiene que A u C c B n C y A n C c f i n C . Probarlo. 0.3.3. Si A c C y B c D ¿se cumple que C u D c / l u S ? 0.3.4. Probar o refutar las siguientes afirmaciones: (a) Si A u B - A u C, entonces B - C. (b) S i A n / í = A n C , entonces B = C. 0.3.5. Sea {Z?a | a e /} una familia indexadadeconjuntos.Seusará lanotación u a s i Bapara indicar la unión de todoslos Ba y n a6¡Baparaindicar la inter­ sección de todos los Ba. Probar que para todo conjunto A se cumplen las si­ guientes igualdades: (a) A Oe / Bq) —Wfx e I r~'1Ba)- (b) A u (o a e / Ba) —r \( s i (A kj Ba). 0.3.6. Demostrar las siguientes igualdades: (a) A - B = A - ( B n A ) . (b) B c A si y sólo si A n B = 0. (c) (r>ae i Ba) - A = n ae i (Bn - A) . (d) ( A - B ) - C = ( A - C ) - ( B - C ) = A - ( B u C ) . (e) A r \ B = 0 y A n B = 0 s \ y sólo si A = B„ 0.3.7. ¿Son ciertos los siguientes resultados? ' (a) 2An 2 B = 2AnB. (b) 2/' u 2 i = 2AuB. 0.3.8. Los pares ordenados (x, y) se definen formalmente por medio de la siguiente igualdad (x,y) = {{a-}, {.v, y}¡. Usando la definición anterior, mostrar que (a, b) = (c, d) si y sólo si a = c y b = d. www.FreeLibros.com 12 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 0.3.9. Dados los conjuntos A , B y C , probar que: (a) A x ( g n Q = ( A x B ) n ( / l x q . (b) A x ( B k j Q = ( A x B ) u ( A x Q. (c) A x ( B - Q = ( A x B ) - ( A x C ) . RELACIONES Y FUNCIONES Una relación del conjunto A con el conjunto B es un subconjunto de A x B. Por tanto, si R c A x B y (a, tí) e R, se dice que a está relacionado con b bajo la re­ lación R. Por ejemplo, si A = {2, 3 ,4 , 5} y B = {1, 3, 5, 7, 9}, entonces R = {(2, 1), (2, 3), (5, 3), (5, 5)} es una relación, y 2 está relacionado con 1 bajo esta relación. Si A y B son el mismo conjunto, se dice que la relación es una relación so­ bre A. Por ejemplo, sea í c N x N definida por (x , y) e R si y sólo si x < y. R es la relación “menor o igual que” sobre N . La relación R c A x B define dos subconjuntos, uno de A y otro de B. Estos son Dom (R) = {a | a e A y (a, x) e R para algún x e B) Im ( R) = { b | b e B y (y, b) e R para algún y e A) y se conocen como el dominio y la imagen de R, respectivamente. Por ejemplo, si A = {<7. b. c, d, e} y B = {1, 2, 3,4, 5} con R = {(a, 1), (a , 2), (b, 5), (c, 4)}, entonces se tiene que Dom (R) = {a, b, c} e Im (/?) = { 1, 2 ,4 , 5} Si R c z A x B es una relación de A con B, entonces el conjunto 7T1 = {(b, a)\(a, b) e /?} es un subconjunto de B x A. Por consiguiente, ella mis­ ma es una relación de B con A. Llamaremos a R~] inversa de la relación R. Sea A un conjunto no vacío. Una colección Jl de subconjuntos no vacíos de A es una partición de A si se cumple lo siguiente: 1. Si B y C son conjuntos en ¡A. , entonces o bien B = C o B n C = 0. 2. A= B. Intuitivamente, una partición de A divide a A en partes no vacías disjuntas. Por ejemplo, sea A = {x|x e N y x < 10} y sea * = { { 0 , 2 , 4 } , { 1 , 3 , 5 } , { 6 , 8, 10},{7,9}} www.FreeLibros.com PRELIMINARES MATEMÁTICOS 13 una partición de A. Por otro lado, ®= { { 0 , 2, 4, 6}, {1,2, 3, 5, 7}, {9, 10}, 0} no es una partición. Veamos otro ejemplo interesante. Sea Q el conjunto de los números racio­ nales. Para cada r e ü , sea Por tanto £>3/8 contiene a (3, 8), (6, 16), (9, 24) y así sucesivamente. Obsér­ vese que la colección F = {Qr\ r e Q} es una partición de N x Z +. Para verlo, primero obsérvese que si Qr y Qs son elementos de F y si (x, y) e Q, n Qs>en­ tonces s = x /y = r con lo que s = r y por tanto Qr = Qs. Puesto que 2 r c N x Z + para todo r, tenemos que U r s ü & ' £ N x Z +. Por otro lado, si (x, y) e N x Z +, entonces x / y e Q , y, por tanto, (x, y) e Qr, siendo r —x /y . Así (jc, y) e s q Qr. De todo ello se concluye que e q Qr = N x Z +. Vamos a ver un nuevo ejemplo de una partición de un conjunto que es la colección {Zo, Z ¡, ..., Z m- 1 }, donde m es un entero positivo fijado y Z / se de­ fine como Z ; = {x\x e Z y x - i = km para algún entero k } Por ejemplo, si m = 3, tenemos Zo = {0, ±3, ±6, ± 9 ,...} , Z i = { ...,- 5 ,- 2 , 1,4, 7, ...} y Z 2 = {..., -4 , -1 , 2, 5, 8,...}. Supongamos que SI es una partición del conjunto X. Definamos una relación sobre X mediante R = {(x, y) |x e y están en el mismo conjunto de A } Por ejemplo, si X = {0, 1,2} y Jl = {{0}, {1,2}}, entonces R sería el con­ junto R = {(0, 0), (1, 1), (2, 2), (1,2), (2, 1)}. Una relación definida'de esta manera tiene algunas propiedades interesan­ tes. Primero obsérvese que, si a e X y puesto que A es una partición de X, existe algún A e JZ para el cual a e A . Por tanto (a, á) e R. Segundo, si (a, b) e R ello significa que a y b están en el mismo conjunto de A , con lo que también b y a están en el mismo conjunto de A . Entonces (,b, a) e R. Finalmente si (a, b) e R y (b, c) e R entonces a, b y c están en el mismo conjunto de A . En consecuencia tenemos que (a, c) e R. www.FreeLibros.com 14 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES En resumen, para la relación R = {(x, y) | x e y están en el mismo conjunto de A] tendremos lo siguiente: 1. (a, a) e R para todo a e X (propiedad reflexiva). 2. Si (a, b) e R, entonces (b, a) e R (propiedad simétrica). 3. Si (a, b) y (b, c) estlán en R, entonces (a, c) e R (propiedad transitiva). Toda relación que tenga estas tres propiedades se dice que es una relación de equivalencia. Supongamos que R es una relación de equivalencia sobre el conjunto X. Para cada x e X, se define el conjunto [x] = [y e X \ (x, y) e R }. El conjunto [a] se llama clase de equivalencia de x. Teorem a 0.4.1. Las clases de equivalencia de una relación de equivalencia R sobre un conjunto X forman una partición de X. Demostración. Para probar este teorema se necesita demostrar que las clases de equi­ valencia son disjuntas entre sí y que'su unión es X. Primero veremos que son disjuntas entre sí. Supongamos que z e [x] n [y]. Entonces (x, z) e R y (z, y) e R. Dado que R es transitiva, entonces (x, y) e R. Por lo tanto, x e [>'] e y e [x], y en consecuen­ cia (x, y) e R e (y, x) e R. Ahora bien, si 16 [x], entonces (t, x) e R y, debido a la transid vidad de R, (t, y) e R. Por lo tanto t e [y], con lo que se obtiene [x] c [y]. A la inversa, si t e [y] entonces (t, y) e R, y (/, x) e R, de lo que se de­ riva que t e [x] e [y] e [x]. De todo lo visto se sigue que si [x] n [y] * 0, enton­ ces [x] = [y]. Ahora bien, puesto q u e / f es una relación de equivalencia sobre X, todo x e X debe satisfacer (x,x) e R, con lo que x e [x]. Esto significa que todo ele­ mento de X está contenido en una clase de equivalencia, con su mismo nom­ bre. □ De lo visto anteriormente se deduce el siguiente teorema: Teorem a 0.4.2. Cualquier partición A de un conjunto no vacío X define una relación de equivalencia sobre X. Por lo tanto existe una relación muy estrecha entre las relaciones de equiva­ lencia y las particiones. www.FreeLibros.com PRELIMINARES MATEMÁTICOS 15 Una función de ,4 a B es una relación de A con B con unas características adicionales. El conjv ' ' f e A x B una función si Dom (f ) = A y si para cual­ quier pareja (x, y) y (x, r.) que pertenezcan a / entonces y = z- Esto significa que \ para todo elemento x ■' - A existe ' ’inico y tal que (x, y) e /. Generalmente se escribe / : A —» B y se usa la notación f ( x ) = y, donde (x, y) e /. De hecho, esta notación puede ser c.v, elida a ; : . jnes en general, como se ha hecho con la /?-imagen del Ejercicio n,4.3. T eorem a 0.4.3. Sean las fu nciones/: A —>B y g: A —> B. Entonces f = g si y sólo si / (x) = g (x) para t o d o A . Demostración. Supongamos que/ = g. Sea .v un elemento de A. Entonces si y = /( x ) , se tiene que (x, y) e f y por tanto (x, y) e g. En consecuencia, y = g (x). A la inversa, supongamos que f ( x ) - g (x) para todo x de A y supongamos que (x,y) es un elém tm o arbitrano d e /. Entonces y = / ( x ) = g (x) con lo que (x, y) e g, obteniéndose que/ c g. Por otro lado, si (x, y) es un elemento arbitra­ rio de g, tenemos que v —g (x) = / ( x ¡ y por tanto (x, y) 6 / , obteniéndose g c / . Se concluye finalmente q u e ,/= g. Para que / c A x 1' ea una fcr.dón, se requiere que Dom ( / ) =A. Esto es más restrictivo que lo de eable p e; ios objetivos de este libro. Definiremos/ífnción total como la e!;r de función ue hemos definido previamente. Definire­ mos función parcial o una ó n / q u e satisface las condiciones de que Dom ( / ) c A , y que m v. y) y ( x . . pertenecen a / , entonces y - Z- La única dife­ rencia que aparece aLue es que ce ;a función parcial de A a i? el dominio de la función no necesita ser el conjunto en su totalidad. Usaremos el término fun­ ción, sin modificar, \ e.¡ referiré cualquier función parcialo total que cuali­ ficaremos sólo cuarta a neceSea una función / : A —> B. Si A e A, diremos que la imagen de X b a jo f es /(.Y) - {v e i : ; Si F e 5, la imagen : • f T eorem a 0.4.4. / (x) para algún x e X) *a de Y fe s el conjunto ' (V) = j x e A ; (x) = y para algún y e Y] Sea/ : A —> B una función 1. / (0) = 0. 2- /({ * } ) = { f (x)} para todo e s A. 3. SiX eFc itonce c /(F ). www.FreeLibros.com 16 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 1 (X) c / 1 (Y). 4. S i l c 7 c 5 , entonces / 5. Si X e Y son subconjuntos de B, entonces f ~ l ( X - Y ) = f - \ ( X ) ~ f - { (Y). Demostración. La demostración se obtiene fácilmente a partir de las definiciones pre­ cedentes, por lo que se deja la misma para el lector. □ Una función/ : A —> B se dice que es uno a uno o inyectiva si, para cuales­ quiera (x, y) e / y (z, y) e / , entonces x - z . Esto quiere decir que si f ( x ) - f ( z ) entonces x = z. Una fu n c ió n /se dice que es sobreyectiva si, para cualquier y e B, existe al­ gún x e A para el c u a l/ (x) = y. La fu n c ió n /: N -» N definida por f ( n ) = n es a la vez inyectiva y sobre­ yectiva. La función g: N —» N , donde g (rí) = n + 1, es inyectiva pero no sobre­ yectiva, ya que no existe ningún x e N, tal que x + 1 = 0. La función h: R —> R, donde h (x) = x2, no es ni inyectiva, ni sobreyectiva. S i /e s inyectiva y sobreyec­ tiva a la vez, se llama biyección o correspondencia uno a uno. Obsérvese que si / : A —> B es sobreyectiva e n to n c e s /-1 ({¿>}) ^ 0 para todo b e B . S ' i f e s una bi­ yección, entonces, para todo b e B, f ~ ] ({£}) es un conjunto con un único ele­ mento. Por tanto c u a n d o /e s una b iy ecció n ,/-1 \ B —>Ae s una función. Las funciones y las relaciones se pueden asociar de una manera adecuada. Sean las relaciones R ^ A x B y S c i B x C . Definimos la composición de R y 5 como S ° R = {(a, c) e A x C \ para algún b e B, (a, b) e R y (¿>, c) e 5} Por tanto si R - { { 0, 1), (0, 2), (1, 1)} y S - {(1, a), (2, fr)}, tendremos que S ° R = {(0, «), (0, b), (1, a)}. Por otro lado, R ° 5 = 0, puesto que no hay símbo­ los que aparezcan simultáneamente como primer componente de un elemento de R y como segundo componente de un elemento de S. Por tanto, en general, R ° S y S 0 R no son la misma. La composición de funciones se realiza de la misma forma: g ° f = { (a, b) | para algún y, / ( « ) = y y b =g (y)} Por ejemplo, sea/ : R -> R definida co m o /(x ) = x + 1 y g: R —>R definida como g (X) = x2. Entonces tenemos que 8 ° / W = 8 (/(* )) = 8 (x + 1) = (x + l) 2 y f ° 8 (*) =f (8 (x)) = f ( x 2) = x2 + 1 www.FreeLibros.com PRELIMINARES MATEMÁTICOS 17 Ejercicios de la Sección 0.4 0.4.1. Sean A y B los conjuntos A = ( 2, 3,4,5} y B= {1, 3, 5, 7, 9}. Sea R la relación R = {(•*,)') e A x B\ x<y] Listar los pares ordenados de R. 0.4.2. Demostrar las siguientes igualdades: (a) Dom (R~l) = Im (R). (b) Im (JT1) = Dom (R). 0.4.3. Sea R q A x B una relación de A con B. Sea X c A. Definimos R-imagen de X como R (X) = {>’ 6 B\ (x, y) e R para algún x e X] Obsérvese que la /?-imagen de X es la imagen de la relación R restringida al subconjunto X x B de A x B. Sean D y E subconjuntos de A. Probar las siguien­ tes igualdades: (a) ü ( D u £ ) = í (D) u R (E). (b) R (D n E) = R (D) n R (£). (c) Dom (R) = R-] (B). (d) Im (R) = R(A). 0.4.4. Sean las relaciones R q A x B y S q A x B. Entonces R u S c A x B e s también una relación de A con B, al igual que R n S . Demostrar las siguientes afirma­ ciones: (a) Dom (R<u S) = Dom (R) u Dom (S). (b) Im (i? u S) - Im (R) u Im (5). (c) (R u S) (X) = R (X) v S (X) para cualquier X c A . (d) (7? u S)_l = R~] u S~K (e) ( í n S J ' ^ J r ' o T 1. 0.4.5. Sea m = 5. Encontrar los conjuntos Zo, Z i, Z 2 , Z 3 , Z4. 0.4.6. Probar que {Zo, Z j , . . Z„, _ j } constituye una partición de Z para un m > 0 de­ terminado. 0.4.7. Determinar si cada una de las relaciones siguientes es una relación de equiva­ lencia sobre el conjunto A = {0, 1,2, 3, 4,5) www.FreeLibros.com 18 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES (a) Rt = {(0, 0), (1, 1), (1, 2), (2, 2), (3, 3), (4,4), (5, 5)}. (b) /?2 = í , u {(2,1)}. (c) /?3= i ? i - { ( l ,2)}. (d) R, = R2 u {(2, 3), (1, 3), (3, 1), (3,2)}. 0.4.8. Sea { Z o , Z i , Z 2 , Z 3 , Z 4 } la partición de Z definida en la página13.¿Cuál esla relación de equivalencia sobre Z que genera esta partición? 0.4.9. Sea [A\,A 2, ..., Am} una partición de A y [B\,Bz, ■■■,B„}unaparticióndeB. Probar que el siguiente conjunto es una partición de A X B: {A¡xBj\i= 1,2, . . . , m y j= 1,2, ...,«} 0.4.10. Sean A y B los conjuntos definidos de la siguiente manera A= {0, 1,2,3} y * 5 = {-1, 0,l/2, l , 3/2,2 ,3 ,4 } ¿Cuáles de las siguientes relaciones son funciones totales, cuáles funciones par­ ciales y cuáles no son funciones? (a) / = {(0, 1), (1, 2), (2, 3), (3,4)} (b) /= { (0 ,0 ), (1,1/2), (2,1), (3, 3/2)} (c) / = {(0,0), (1,1), (1,-1), (2, 3)} (d) /= { (0 , 0), (1,3), (2,2)} (e) /'= {(0, 0)} 0.4.11. Sean / : A —> C y g: B —>D dos funciones tales que, f{x) = g (x) para todo x e A n B. Probar q u e /u g es una función d e A u B e n C u D . 0.4.12. Sea/: A —» B una biyección. Probar q u e /-1 también es una biyección. 0.4.13. Demostrar que si / “' (f(X)) = X para todo X c A entonces/ es inyectiva. De­ mostrar que si f ( f ~ [ (Y)) = Y para todo Y c B. entonces/es sobreyectiva. 0.4.14. Sea / : A —>A una función para la cual / ( / (x)) = x para todo x e A. Probar que / es una relación simétrica sobre A. 0.4.15. Sean las funciones f :A —>B y g: C —>D y supongamos que A n C = 0 y B n D = 0. Probar q u e /u g es sobreyectiva s i / y g lo son. Probar que / u g es inyectiva si / y g lo son. 0.4.16. Sean/y g las funciones definidas como www.FreeLibros.com PRELIMINARES MATEMÁTICOS 19 g= {(x,y)\xe Z + e y e N e y = -2 \x \ j Obsérvese q u e /c N x Z + y g c Z + x N de modo que f ° g y g °/están defini­ das. Describir/° g y g °f. 0.4.17. Supongamos que A es un conjunto y que se define la relación IA = {(a ,á )\a e A] (a) Probar que ¡a es una función. (b) Probar que I,\ es una biyección. (c) Sea/: X —» Kuna función. Probar que f 0 Ix = h ° f - /• (d) S i/: X -» Y es una biyección, demostrar q u e / ° / -1 = Jy y que/ " ' °/ = /*. 0.4.18. Dadas las funciones/: A nes son ciertas: 0.5 B y g : B ^ C. Probar que las siguientes afirmacio­ (a) S i/y g son inyectivas, entonces g° f tambiénlo es. (b) S i/y g son sobreyectivas, entonces g °/también lo es. INDUCCIÓN Se dice que un subconjunto A de N es un conjunto inductivo si, para cada a e A, entonces a+ 1 también pertenece a A. Por ejemplo, el conjunto {5, 6, 7, ...} es inductivo, pero el conjunto {0. 2 .4 . 6. 8. 10. ...} no lo es. Para que un conjunto sea inductivo no puede tener un número finito de elementos. La mayoría de los conjuntos de números naturales que contienen el 0 no son inductivos. El hecho de que haya una única colección de números naturales que contenga el 0 y sea inductiva se conoce por el principio de la inducción matemática (PIM). A continuación se muestra una breve exposición del principio de inducción matemática. Dado A c N tal que satisface lo siguiente: 1. O e A, , 2. si n 6 A, entonces n + 1 e A, entonces A - N . El principio de inducción matemática es muy usado en matemáticas. Pro­ porciona un método apropiado para definir conjuntos de objetos en los cuales hay un primer objeto, un segundo objeto y así sucesivamente. En el mismo, se define el primer objeto y el n + 1 se define en términos del enésimo. www.FreeLibros.com 20 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Por ejemplo, el factorial de un número natural puede ser definido inductiva­ mente como 0! = 1 y (n + 1)! = (n + 1) • n!, para n> 0 El PIM también se usa para probar planteamientos acerca de proposiciones que en uno u otro nivel pueden estar indexados mediante N . En tal prueba se muestra que la colección de índices es inductiva y contiene el 0 y, que por consi­ guiente, es N . Por ejemplo, la proposición “n + 3 < 5 (n + 1) para todo número natural n” se puede demostrar como sigue: Sea A = { n e N |n + 3 < 5 (n + 1)}. Debemos probar que A es N . Ob­ sérvese que si n es 0 entonces se tiene que n + 3 = 3 y 5 (n + 1) es 5, de modo que la proposición se cumple. Por tanto se obtiene que 0 pertene­ ce a A. Ahora supongamos que n e A. Tenemos que probar que n + 1 también está en A. Obsérvese que ( n + l ) + 3 = « + 4 = (« + 3) + l. En­ tonces: 5 ((« + 1) + l) = 5 n + 10 = 5 (/? + 1) + 5 > (;? + 3) + 5 > (n + 3) + 1 = (n + l) + 3 Por tanto la proposición se cumple para n + 1 cuando se cumple para n, con lo que n + 1 e A cuando n e A. Por el PIM, se obtiene que A = N , así que la proposición se cumple para todos los números naturales. D Los pasos de una demostración en la que se usa el PIM son bastante fáciles de recordar. 1. Probar que la proposición se cumple para 0. .• 2. Suponer que la proposición se cumple para n y probar que esto implica que se cumpla para n + 1. 3. Deducir que la proposición se cumple para todos los elementos de N . La etapa 1 se conoce como etapa base o inicial. La suposición de que la proposición se cumple para n en laetapa 2 se conoce como hipótesis de induc­ ción. La etapa 2 se llama etapa de inducción. www.FreeLibros.com PRELIMINARES MATEMÁTICOS 21 Es conveniente usar el PIM para probar proposiciones sobre colecciones de números naturales que no contienen el 0. Por ejemplo, la proposición de la fór­ mula 1 + 2 + ... + (2« - 1) = n2 no tiene sentido (no es verdadera) para n - 0. Sin embargo, esta fórmula se cumple para todo n > 1. En este caso el conjunto de in­ ducción elegido es distinto. Obsérvese que la fórmula se cumple para n = 1. S ea^ S - { n e N | la fórmula se cumple para 1 + n] Fíjese en que 0 e S. Por tanto si n e S se tiene que 1 + 2 + ... + 2 (2 (1 + n) - 1) = (1 + n)2 'Con lo que se prueba que la fórmula se cumple para n + 1. Es decir, n + 1 e S siempre que n e S. Para n + 1 se suma un valor apropiado en cada lado de la igualdad y se obtiene 1 + 2 + . . . + (2 (1 +n) - 1) + (2 (1 + ( « + 1 ) ) - 1) = (1 + n f + (2 (1 + (n + 1)) - 1) = 1 + 2 (n + 1) + (1 + n)2 = (l+(«+l))2 Entonces, por medio de PIM, se tiene que S = N y por lo tanto la fórmula se cumple para todo n > 1. □ En la práctica, el conjunto 5 no se especifica. Si se expresa una propiedad como P (n) para todo n > k , la demostración se realiza de la siguiente manera: 1. (etapa base) Probar que P (k) se cumple. 2. (etapa de inducción) Probar que si P (n) es verdadera entonces P (n + 1) es verdad para todo n > k. 3. (conclusión) Por las etapas 1 y 2 y el PIM, P (n) es verdadera para todo n>k. Por tanto, la demostración del ejemplo precedente puede volver a reali­ zarse de esta forma: Sea n = 1. Entonces se tiene que 1 = l 2, con lo que la fórmula se cum­ ple. Ahora se supone que la fórmula se cumple para n > 1. Es decir, 1 + 2 + ... + (2(1 + n) - ! ) = (! + n)2 Entonces se obtiene que www.FreeLibros.com 22 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 1 + 2 4-. .. + ( 2 ( 1 + ií ) ~~ 1) + (2 (1 + (n + 1)) — 1) = (1 + «)* + ( 2 ( l + (n + 1 ) ) - 1 ) = 1 + 2 (n + 1) + (1 + n)2 = (\+(n+\))2 con lo que la fórmula se cumple para n + 1. Entonces, debido al PIM, la fórmula se cumple para todo n > 1. □ Ejercicios de la Sección 0.5 0.5.1. Probar que, para todo n e M, 2o + 21+ ... + 2" = 2" + 1—1 0.5.2. Probar que, para todo n > 1, 21+ 22 + ... + 2" = 2" + 1—2 CARDINALIDAD Para comparar los distintos tamaños de los conjuntos se usan funciones tre los mismos que son biyectivas, sobreyectivas o inyectivas. Dos conjuntos A y fí son equivalentes si existe una biyección entre ellos. Se emplea la notación A = B para denotarlo. Por tanto tenemos que { x, y, z} = { 1, 2, 3}, mientras que {x, y, z} 2 {1,2}. Ejemplo 0.6.1. Veamos un ejemplo trivial. Sea{ / 1/ : N —> {0, 1}} el conjunto de to­ das las funciones de N en {0,1}; entonces 7 —2N. Para probar esto se necesita una biyección H \ J - 2:\ Por tanto, se necesita una regla que asocie cada fun­ ción de 7 con algún subconjunto de N. Para g e J, sea H (g) = {x|g (x) = 1}. Obsérvese que todas las funciones de jF tienen una imagen bajo H. Ahora proba­ remos que H es inyectiva y sobreyectiva. Para ver que H es inyectiva, sean g\ y gi unas funciones que pertenecen a 7 y supongamos que H (gi) = H (gi). Sea x e N. Debemos obtener que x € H (gi) o x e H {g i). Si x s H (g¡) entonces, dado que H (gi) = H (gi), se ob­ tiene que gi (x) = g 2 (x) = 1. Por otro lado, si x £ H ( g i), entonces gi (x) = g 2 (x') = 0. Luego en ambos casos tenemos que gi (x) = g2 (x) para un x e N arbitrario, con lo que gt = g2. www.FreeLibros.com en­ PRELIMINARES MATEMÁTICOS 23 Para ver que H es sobreyticiiva, sea A e - ' un subconjunto arbitrario de Se define la función g: N --> {0, 1} como 0, si ' \ 1, si v t Obsérvese que g e J y que H(g) = A . Por ' uto paracualquier elemento A de 2n , sepuede encontrar una¡unción en J formaque represente a A. De esto se deduce que H es sobreyectiva. T eorem a 0.6.1. Supongamos que A = C y B ■D con A n 3 = 0 y C n D = 0. Entonces AuB=CuD. Demostración. Puesto que A = C y B = D existen iükis biyecciones g: A —> C y h: B -> D. D efinam os/: A ü />’ —-> 0 como /U si .v e A j ; ( v), si v s B Por el Ejercicio 0.4.15,/ e s b: guiente, A u B = C u D. □ Para cada número natural k > tos se usan como “estándar de tan tos. x ió n pues. ><:;ue g y h lo son. Por consi­ define con e! {1. 2.......£}. Dichos conjun­ ; se compararan otros conjun­ Un conjunto A es finito si: 1. A = 0, en cuyo caso A tier vardinalitkúf.O. 2. A = N*, en cuyo caso A ti , <ardiñal k. Un conjunto es infinito si no es í -:ío. Por ejemplo, A = {a, b, c, d, c es infinito. Para simplificar, si A e su cardinalidad. inito o dinalidad 5 mientras que N ito escril;Reinos \A \ - k para representar Supongamos que A es finito i:c¡¡ cardinal k y que x<£ A. Obsérvese que {x} = {k + 1} por lo que A u {x} Hén es y su cardinal es k+ 1. Este resultado se obtiene a partir del Teoiv : x 0.6.1. y se extiende a: T eorem a 0.6.2. Si A y B son conjuntos c' ' nito y | A u i ? | = \A\ + \B\. ios finios itoncesA u B es también fi­ www.FreeLibros.com 24 Demostración. TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Si A = 0, entonces A u B = B, con lo que |; 4 u s | = 0+ | B | = |fl| Si A & 0 y B 0, entonces sean / : A —> N m y g: B —> N „ las biyecciones a partir de las cuales se obtiene que \A \ = m y \B\ - n . Se define h\ N,¡ —> / / = {m + 1, m + 2 , m + n } como h (x) = m + x. Es obvio que h es una biyección y por tanto N „ = H. Obsérvese que N m u H - {1, 2, m + n) = A N m+n y la f u n c i ó n / : A u B - > N n + m definida como frx) - í f t o > sixeA | h ° g (x), si x e B es sobreyectiva e inyectiva. Por consiguiente, A u B es finito y l A u S l = m + n = | A | + |5 ¡ . □ Una propiedad muy utilizada para conjuntos finitos es el principio del palo­ mar. En esencia dice que si hay más palomas que agujeros se debe poner más de una paloma en el mismo agujero. Teorema 0.6.3. (Principio del palomar). Sean A y B conjuntos finitos con | / 4 | > | ¿ ? | > 0 y / : A —>B una función. Entonces / no es inyectiva. Demostración. La demostración se realiza por inducción sobre | B \ . Si |f i| = l y | A | > | Z? | , entonces A contiene al menos dos elementos distin­ tos a\ y « 2 - Pero entonces f { a \ ) - / { a i ) por lo q u e / n o es inyectiva. Por tanto el resultado se cumple para | B \ = 1. Ahora supongamos que el resultado se cumple para algún conjunto B tal que 0 < |B | <n. Entonces sea B un conjunto de forma que ¡B\ = n + 1. Fijado un elemento b e B, obsérvese que | B - {b} \ - n . Supongamos que A es un con­ junto tal que |A | > |¿?| y f : A - ^ B . Consideremos los dos casos siguientes para r 1 {by Caso 1: Supongamos que |/ “ ' (b) | > 2. En este caso habrá dos elementos ai y ü 2 de A , de forma que a\ y ü 2 están en / “ ' (b) o, lo que es lo mismo, («2 ) = b. En este caso / no es inyectiva. Caso 2: Supongamos que | / “* (¿>)| < 1. Obsérvese que \ A - f ~ l (¿)| > |/ i | - 1 > n = - {b} | . Se define la función g: A - f ~ l (b) —> B - {¿>} como g W = / ( 4 Obsérvese que, como | B - f ~ l (¿)| =n y \ A - f ~ \ b ) \ > | 5 - { ¿ > } | , se satisface la hipótesis de inducción. Por lo tanto g no es inyectiva con lo que www.FreeLibros.com PRELIMINARES MATEMÁTICOS 25 existirán a\ y ai en A - f ~ l (b) para los cuales a\ * <22 y g (a 1 ) = g (¿22). Por con­ siguiente, / ( a i ) = / ( a 2), de lo que se deduce que / tampoco es inyectiva. En ambos casos, si el resultado se cumple para cualquier conjunto B con n elementos, también se cumple para cualquier B con n + 1 elementos. Por tanto, y por el PIM, la proposición se cumple para todo conjunto finito B con j# | > 0. □ Hay muchos ejemplos en los que se aplica este principio. Si 11 zapatos son elegidos al azar de una caja que contiene 10 pares de zapatos, al menos se obtie­ ne un par completo. Si n ^ m , entonces N „ £ N w. Corolario 0.6.4. Si A es un conjunto finito y B es un subconjunto propio de A, entonces A i-B. Hay dos tamaños para los conjuntos infinitos, “grande” y “muy grande”. Un conjunto A es enumerable si A = N . En este caso, | A | = No (alef cero). Un con­ junto es numerable si es finito o enumerable. El conjunto Z es enumerable mediante la fu n ció n /: N —> Z definida por n si n es par 2 , s in es impar es una biyección, que transforma 0 en 0, 1 en -1 , 2 en 1, 3 en - 2 y así sucesiva­ mente. Teorema 0.6.5. Sea A un conjunto enumerable. Si f i e A es un conjunto infinito, en­ tonces B es enumerable* Demostración. Puesto que A es enumerable, existe una b iy ec c ió n /: N —>A. Supon­ gamos que tenemos que f ( n ) - a n por lo que A puede ser enumerado como A = {«o, «i, ••• }• Sea »o el menor subíndice para el cual a„0 e B. Sea n\ el menor subíndice para el cual £ B - {a„a}. Generalizando, sea nk el menor subíndice para el cual a„k € B - {a„0, ant, ...,a n4_,}. Puesto que B es infinito, B - {a„0, a „ ,,..., a„k_,} 0 para todo k, con lo que hemos construido una corres­ pondencia uno a uno entre N y B. Por tanto, B es enumerable. □ Puesto que los conjuntos finitos son numerables, se tiene que todo subcon­ junto de un conjunto numerable, es numerable. Obsérvese cada conjunto infinito contiene un subconjunto enumerable. Para probarlo, sea X infinito. Entonces X & 0, por lo cual se puede seleccionar un ele- www.FreeLibros.com 26 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES mentó de X, que llamaremos xo- Nuevamente, y puesto que X es infinito, tene­ mos que X - {xo} 5* 0 y se puede elegir x \ e X - {xo}. Una vez definidos cada uno de los elementos xo, *\> *k, se sabe que X - {xo, x \ , ..., xk] 0 con lo cual se puede seleccionar un xk + i e X - {x0, X], ...,xk} El conjunto {x¿ | k = 0, 1,2, ...} es un subconjunto enumerable de X . Terminaremos este capítulo mostrando un conjunto no numerable. Para ello usaremos una técnica de demostración muy eficaz llamada diagonalización. Teorema 0.6.6. El conjunto 2N no es numerable. Demostración. Supongamos que 2N es numerable. Dado que es un conjunto infinito, debe suponerse que 2>: es enumerable y que por lo tanto, puede ser enumerado de la forma 2N - {Ao, A \ , ...}. Sea D = {» e N, n £ A„ }. Obsérvese que D c N y, por tanto, D = Ak para algún k. Consideremos dicho k. Si k e Ak, entonces puesto que Ak = D, k no puede estar en Ak. Por otro lado, si k <s Ak, entonces k & D y por tanto k debe estar en Ak. Ambas posibilidades nos llevan a una contradicción. Por consiguiente, la suposición de que 2N es enumerable es inco­ rrecta. □ Sabemos, por el Ejemplo 0.6.1, que la colección J de funciones de N en {0. 1} es equivalente a 2"x . Ahora por el Teorema 0.6.6, sabemos que J no es numerable. La técnica de la diagonalización se usa para la refutación de muchas afirma­ ciones. En la demostración precedente no se ve claramente donde se usa dicha técnica. Un ejemplo clásico de diagonalización es la demostración de que el in­ tervalo abierto (0, 1) no es numerable. Supongamos que (0, 1) es numerable, pol­ lo que puede ser representado por el conjunto {ao, «i, Entonces cada a¡ será representado por su desarrollo decimal y por convención se usará la forma in­ completa tanto para los números de esa forma como para los de forma completa. Por tanto, 0,25 se representará como 0,24999... Bajo esta representación, dos números en (0, 1) son iguales si y sólo si los dígitos correspondientes son los mismos. Haremos una lista con los a¡ ao-0.doodo\do2--. ai = O.diodi \d\2-. ■ ük = 0.dkodk\dk2-■■dkk• www.FreeLibros.com PRELIMINARES MATEMÁTICOS 27 Para demostrar que (0, 1) no es numerable debemos encontrar un número z e (0, 1) tal que z ^ a¡ para cualquier /. Sea z = O.zqZi-- donde lk- 5, si akk* 5 2. si akk= 5 Obsérvese que z difiere de cada au en al menos una cifra decimal y que 0 < z < 1. Por tanto, hemos encontrado el z que buscábamos, con lo que a¡ no da cuenta de todos los números pertenecientes a (0, 1). Aquí la diagonalización resulta obvia. Ejercicios de la Sección 0.6 0.6.1. Dados los conjuntos A y B, si A es finito ¿A n B es finito? 0.6.2. Probar que si A c B y A es infinito, entonces B es infinito. 0.6.3. Dar, si es posible, un ejemplo de cada apartado: (a) Un subconjunto infinito de un conjunto finito. (b) Una familia {A¡\i e N ) de conjuntos finitos cuya unión sea finita. (c) Una familia {A¡| i s N ¡ de conjuntos finitos cuya unión no lo sea. (d) Una familia finita de conjuntos finitos cuya unión sea infinita. (e) Unos conjuntos finitos A y B tales que | A u B \ * \,41 + | B \ . 0.6.4. Probar que N x N es numerable usando la función / : X x N —>X definida comof{n, m) = 2" 3'" además del Teorema 0.6.5. 0.6.5. Mostrar que N* es enumerable para cualquier k = 1,2,... 0.6.6. Probar que R no es numerable. www.FreeLibros.com www.FreeLibros.com 1 Alfabetos y lenguajes ALFABETOS, PALABRAS Y LENGUAJES Todo lo descrito a continuación tiene al menos dos cosas en común: Programas escritos en algún lenguaje de programación como Pascal. Palabras inglesas. Secuencias de símbolos que se usan para representar un valor entero. Frases escritas en algún lenguaje natural como el inglés. Primero, cada uno está compuesto por secuencias de símbolos tomados de alguna colección finita. En el caso de las palabras inglesas, la colección finita es el conjunto de las letras del alfabeto junto con los símbolos que se usan para construir palabras en inglés (tales como el guión, el apostrofe y otros por el esti­ lo). De forma similar, la representación de enteros son secuencias de caracteres del conjunto de los dígitos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Los programas de ordena­ dor escritos en Pascal y las frases en inglés también están compuestos por sím­ bolos tomados de una colección finita. Sin embargo en estos, los conjuntos de símbolos son distintos. En el caso de los programas en Pascal, el conjunto de símbolos es una colección de identificadores legales de Pascal con una longitud menor o igual que una constante, palabras clave y palabras reservadas, símbolos especiales de Pascal y espacios en blanco tales como el retomo de carro, el ca­ rácter de salto de línea y el espacio manual. www.FreeLibros.com 30 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Segundo, en todos los casos vistos las secuencias de símbolos que constitu­ yen los elementos en cuestión tienen longitud finita, aunque no existen limita­ ciones en cuanto a la longitud de las mismas. La noción de secuencia finita de símbolos es el elemento principal a ser tra­ tado por este texto. Introduciremos la notación y los nombres a usar para dichas secuencias. Un conjunto no vacío y finito de símbolos se conoce como alfabeto. Por ejemplo, el alfabeto inglés está formado por 26 símbolos. En otro contexto se puede considerar como alfabeto a la colección de todas las palabras inglesas co­ rrectas o la colección de todos los símbolos legales de Pascal (los identificadores de Pascal, palabras claves y reservadas, caracteres especiales, y así sucesiva­ mente). Si E es un alfabeto, o e X denota que ü es un símbolo de E. Por tanto, si E = { 0 , 1,2, 3, 4, 5, 6, 7, 8,9} podemos decir que 0 e E. Obsérvese que, puesto que un alfabeto es simplemente un conjunto finito no vacío, dados Ei y E 2 alfabetos, se tiene que Si u E 2 también lo es. Es más, si Si n I 2 , Sj - Z 2 y Z 2 - Si son conjuntos no vacíos, también son alfabetos. Una secuencia finita de símbolos de un determinado alfabeto se conoce como palabra sobre dicho alfabeto^ Si el alfabeto es el alfabeto inglés, algunas palabras pueden ser PROGRAM, DIGIT, MOON y BLEAK. Es más, nuestra definición permite que BXW TEEMRE y JIPOQPY sean también palabras. Nuestra experiencia nos lleva a identificar el término palabra con las palabras de algún lenguaje natural. Por esta razón, a menudo se usa el término cadena en lu­ gar de palabra con el fin de evitar esta idea preconcebida. A lo largo del texto se usarán por igual los términos cadena y palabra. Obsérvese que si nuestro alfabeto base es el conjunto de todos los identifi­ cadores legales de Pascal cuya longitud es menor o igual que una constante, las palabras clave y reservadas, los símbolos especiales de Pascal, y así sucesiva­ mente, un programa en Pascal bien construido, es una cadena. De la misma for­ ma que basándonos en la definición se pueden formar palabras incorrectas a par­ tir del alfabeto inglés también se pueden formar programas incorrectos sobre el alfabeto anterior. Aparentemente, las cadenas que constituyen programas en Pascal bien construidos deben cumplir ciertas restricciones, al igual que las pala­ bras inglesas “legales” se construyen de una determinada manera sobre el alfa­ beto inglés. Cada símbolo de un alfabeto es una cadena sobre dicho alfabeto. La cadena vacía, la cual se denota por el símbolo £, es una palabra sobre cualquier alfabe­ to. La palabra vacía es una secuencia vacía de símbolos tomados de cualquiera www.FreeLibros.com ALFABETOS Y LENGUAJES 31 que sea el alfabeto en cuestión. La cadena vacía tiene ciertas propiedades que veremos más adelante, _ . . . !i / Un lenguaje es un conjunto de palabras. Por tanto el conjunto {1,12, 123, 1234, 12345, 123456} es un lenguaje sobre el alfabeto compuesto por dígitos. De forma similar, la colección de palabras inglesas “correctas” es un lenguaje sobre el alfabeto inglés. Obsérvese que si Z es un alfabeto, también es un len­ guaje — el formado por todas las cadenas con un único símbolo. Los lenguajes pueden ser bastantes grandes, como es el caso de todas las palabras inglesas “correctas” o el lenguaje {1, 11, 111, 1111, 11111, ...} forma­ do por todas las cadenas finitas de unos. Obsérvese que este lenguaje es infinito (aunque cada cadena del mismo tenga longitud finita). Cuando un lenguaje tiene un tamaño muy grande es difícil especificar que palabras le pertenecen. La espe­ cificación de las palabras de un lenguaje es uno de los temas principales de este libro, y le dedicaremos gran parte del tiempo. Dado que un lenguaje es un conjunto de cadenas, se puede tener el lenguaje compuesto por ninguna cadena —el lenguaje vacío. Este no es el mismo lengua­ je que el que consta de la cadena vacía {£}. El lenguaje vacío se denota de la misma forma que el conjunto vacío, 0. Supongamos que Z es un alfabeto y w es una cadena sobre Z. Si L es el len­ guaje formado por algunas de las cadenas sobre Z y si w está en L, entonces se tiene que w e L y se dice que w es un elemento de L, o w es un miembro de L. Por tanto, 121 e {1.12, 121, 1212, 12121} Es necesario tener en cuenta el lenguaje compuesto por tocias las cadenas sobre el alfabeto Z. Se conoce como cerradura de Z o lenguaje universal sobre Z y se denota por Z*. Por ejemplo, si se tiene el alfabeto Z = {1}, entonces Z*={£, 1, 11, 111, 1111,...} Para cualquier alfabeto, Z* es infinito (ya que los alfabetos son no vacíos). Ejercicios de la Sección 1.1 1.1.1. ¿De qué conjunto de símbolos se derivan las frases inglesas? 1.1.2. ¿Por qué el lenguaje vacío 0 no es el rnismo que fe}? www.FreeLibros.com 32 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES OPERACIONES CON CADENAS Si w es una cadena sobre cualquier alfabeto, su longitud se denota mediante el símbolo | w | . La longitud de w es el número de símbolos que tiene la cadena. Así que, si >v = 121 sobre el alfabeto £ = { 1 , 2 } , entonces |w | = 3 . La cadena vacía e, no tiene símbolos con lo que leí = 0 . Si w y z son cadenas, la concatenación de w con z es la cadena que se obtie­ ne al añadir a la cadena w la palabra z- Por ejemplo, si w = “banana” y Z = “rama”, la concatenación de w con z es la cadena “bananarama”. La con­ catenación de las palabras w y z se denota como wz o w - z . Obsérvese que se tie­ ne que | wz | = | w\ + |z | La concatenación de la palabra vacía e con cualquier otra palabra w, no mo­ difica a la palabra w. Por esta razón, £ se comporta como la identidad con res­ pecto a la operación de concatenación. Vamos a introducir la noción de potencia de una palabra sobre un alfabeto. Sea w una palabra; para n e N se define si n = 0 ww " ~ *, si n > 0 Por tanto, si w = 122 sobre el alfabeto £ = {1,2}, se tiene H’° = £ = 122 w2 = 122122 w3 = 122122122 y así sucesivamente. Se dice que w ' es la potencia i-ésima de w. Hasta ahora hemos usado el símbolo = de forma intuitiva, sin definirlo. Para ser más precisos, definiremos la igualdad de cadenas como sigue: si w y z son palabras, se dice que w es igual a z, si tienen la misma longitud y los mismos símbolos en la misma posición. Se denota mediante w = zLas nociones de sufijo y prefijo de cadenas sobre un alfabeto son análogas a las que se usan habitualmente. S i w y j t son palabras, se dice que x es prefijo de w, si para alguna cadena y se obtiene que w = xy. Por ejemplo, si w es la cadena 121, entonces la cadena x = 12 es un prefijo de w e y - 1. Si se considera >• = £, entonces para w = xy se tiene que w = x, con lo que toda palabra puede conside­ rarse prefijo de sí misma. Introduciremos el término prefijo propio para denotar aquellas cadenas que son prefijos de una palabra pero no iguales a la misma. Por www.FreeLibros.com ALFABETOS Y LENGUAJES 33 Tjéso x = 121 es un prefijo de la cadena w = 121, pero no es un prefijo propio de w. Finalmente hay que tener en cuenta que la palabra vacía e es prefijo de cual­ quier palabra"^ Una cadena w es una subcadena o subpalabra de otra cadena z si existen las cadenas x e y para las cuales z = xwy. La inversa o transpuesta de una palabra w es la imagen refleja de w. Por ejemplo, si w = “able” entonces su inversa es “elba”. Para denotar la inversa de w se usa w1. Una definición más precisa de la misma puede ser la siguiente: j _ {w, W a, si w = £ si w - ay por tanto a e l y y e E * Por ejemplo, supongamos que x = “able” . Si se sigue la definición anterior para calcular w 7 se tiene: x7= (able)7= (ble)7a = (le)7 ba = (e)7 Iba = (e)7 elba = zelba = elba Consideremos la concatenación de las palabras “ab” y “cd ” que forma “abcd” sobre el alfabeto inglés. Sabemos que (abcd)1= deba. Obsérvese que deba = (cd )7 {ab)1. Por lo tanto, si w e y son cadenas y si x = wy, entonces x7= (wy)l = y 1 wl. La inversa se “deshace” a sí misma. Obsérvese que ((abcd Y y = (deba)1 = abcd En general, (x7)7= x. Ejercicios de la Sección 1.2 1.2.1. Sea £ = {1}. ¿Se puede decir que para todo número natural n hay alguna pala­ bra w e E* para la cual | vvj = ni Si w es una cadena de Z* para la cual | w \ —n, ¿es única? ¿Qué ocurriría si Z = {1, ?}? www.FreeLibros.com 34 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 1.2.2. Para una palabra w, ¿se puede decir que Encontrar una expresión para | vi>'+-/ | en términos de i,j y | w |. 1.2.3. ¿La cadena vacía e es un prefijo propio de sí misma? 1.2.4. Definir las nociones de sufijo y sufijo propio de una cadena sobre un alfabeto. 1.2.5. Obtener todos los prefijos, sufijos y subpalabras de la palabra w = “bar” sobre el alfabeto inglés. 1.2.6. Probar formalmente que (wy)' = y' w'. 1.3 OPERACIONES CON LENGUAJES Las ideas de concatenación, potencia e inverso se pueden extender al len­ guaje en su totalidad. Sean A y B lenguajes sobre un alfabeto. Se define el len­ guaje concatenación de A y B como A ■B - {vv • x \w e A y x e B) Por tanto, A • B está formado por todas las cadenas que se forman concate­ nando cada cadena de A con todas las cadenas de B. Por ejemplo, si A = {casa} y B = {pájaro, perro), entonces A • B sería el lenguaje {casapájaro, casaperro). Obsérvese que para formar el lenguaje concatenación A • B no es necesario que A y B sean lenguajes sobre el mismo alfabeto. Si A es un lenguaje sobre Xi y B es un lenguaje sobre £ 2 , entonces A • B es un lenguaje sobre Z¡ u £ 2 - Se suele escribir AB en lugar de A ■B, cuando la expresión resulta ambigua. Dado que para toda palabra x, x ■e = x = £ • x, se obtiene que para cualquier lenguaje A, A • {£} = {£} A = A . Es decir, el lenguaje cuyo único elemento es la palabra vacía, se comporta como la identidad para la operación de concatenación de lenguajes. Al igual que para las cadenas, una vez que se ha definido la concatenación de lenguajes, se puede definir la potencia. Sea A un lenguaje sobre el alfabeto £. Definimos f \ |{£}, si n = 0 |A ■A"~ *, si n > 1 Por tanto, si A = {ab} sobre el alfabeto inglés, se obtiene que www.FreeLibros.com ALFABETOS Y LENGUAJES 35 A° = {e} A l =A = {ab) A 2 = A • A 1= {abab} A 3 = A - A 2 - {abcibab} Interesa tener en cuenta que de esta definición se obtiene que 0° = {£}. Puesto que un lenguaje es una colección o conjunto de cadenas, se puede definir para el mismo la unión, intersección y sublenguaje, al igual que se defi­ nen para los conjuntos en general. Si A y B son lenguajes sobre el alfabeto I , en­ tonces la unión de A y B se denota mediante A o B y está formada por todas las palabras que pertenecen al menos a uno de los dos lenguajes. Por tanto, A u 5 = {x | x e A o x e B} La intersección de los lenguajes A y B es el lenguaje A n B = {x|x e A y x e B simultáneamente} Luego, A n B está formado sólo por las palabras que pertenecen a los len­ guajes A y B a la vez. Veamos un ejemplo. Consideremos el alfabeto L = { 0 , 1} y los lenguajes A = {e, 0, 1, 10,11} y B = {£, 1,0110, 11010}. Entonces A u 5 = {£.0. 1. 10, 11,0110, 11010} y A n B = {£, 1} Antes de ver la relación que existe entre la concatenación y la intersección e unión de lenguajes, es conveniente definir formalmente sublenguaje y la igual­ dad de lenguajes. Si A y B son lenguajes sobre un alfabeto X y si todas las cade­ nas de A son también cadenas de B, entonces se dice que A es un sublenguaje de B. Dado que esto se corresponde exactamente con el concepto de subconjunto visto en la teoría de lenguajes, A c z B denota que A es un sublenguaje de B. Para los lenguajes A = {a, aci, aaa, aaaa, aaciaa} y B = {a" | n = 0, 1,2,...}, se tiene que A c B. Obsérvese que cualquier lenguaje L sobre el alfabeto £ es un sublenguaje de I*, es decir. L c Z*. Se dice que dos lenguajes A y B son iguales si contienen exactamente las mismas cadenas, es decir, son conjuntos iguales. Se denota con A - B . Los teore­ mas siguientes muestran la relación que existe entre sublenguajes e igualdad. www.FreeLibros.com 36 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES T eorem a 1.3.1. Sean A y B dos lenguajes sobre el alfabeto X. Entonces A - B si y sólo s i A Q B y B q A. Demostración. Supongamos en primer lugar que A = B. Tenemos que probar que A c f i y í c A . Supongamos que x e A. Puesto que A y B tienen exactamente las mismas cadenas, se obtiene que x e B, de lo que se deduce que A c í . Análoga­ mente, si x es una cadena que pertenece a B, entonces como A y B tienen exacta­ mente las mismas cadenas, se obtiene que x e A y por tanto B c A . Supongamos ahora que / I c f i y B c A . Esto significa que toda cadena de A está también en B y viceversa. Por tanto, A y B tienen exactamente las mismas cadenas, con lo que son iguales. □ El Teorema 1.3.1 proporciona una forma de determinar oportunamente si dos lenguajes son iguales. Lo usaremos para demostrar que la concatenación es distributiva con respecto a la unión. T eorem a 1.3.2. Dados los lenguajes A, B y C sobre un alfabeto L, se cumple que: i. A ( B u Q =A B u A C ii. (B u Q ■A = B ■A u C ■A Demostración, (i) Probaremos primero que A ■(B u C) c;A ■B u A ■C. Sea x e A ■(B u C). Entonces x = w ■y para las cadenas w e A e y e B u C. Puesto que y e B u C. entonces y e B o y e C. Si y e B, entonces w ■y e A ■B, y por tanto, w • y e A ■B u A ■C. Por otro lado, si y e C, entonces w ■y e A ■C, con lo que de nuevo tenemos que w ■y 6 A ■B u A ■C. En ambos casos se obtiene que A -(Bu Q q A B u A C Para probar que A B u A C c z A ( B u C ) , supongamos que x e A ■B u A ■C. Entonces x e A B o x e A C . S i x e A ■B, entonces x = u ■v para las ca­ denas u e A y v e B. Puesto que v e B entonces v e B u C y, por tanto, uv e A ■(B u C). Por otro lado, si x e A ■C, entonces x = w ■y para las cadenas w e A e y e C. En este caso y puesto que y e C, se tiene que y e B u C, y por tanto, w ■y e A - ( B u C). Luego A B u A - C c z A ( B u C ) . Luego por el Teo­ rema 1.3.1 se obtiene que A - ( B u C ) = A B u A - C . La prueba de la parte (ii) es similar y se deja como ejercicio. □ La relación que tiene la concatenación con la intersección no es tan buena como con la unión. Generalmente, la concatenación no es distributiva con res­ pecto a la intersección. Para verlo, supongamos que A = {a, e}, 5 = { e } y www.FreeLibros.com ALFABETOS Y LENGUAJES 37 C = { a } . Obsérvese que A B = { a , e } y A ■C - { a 2, a}, por lo tanto A - B n A - C = {a}. Por otro lado, B n C = 0, con lo que A ■(B n C) = 0. Si A es un lenguaje sobre algún alfabeto X, se define la cerradura de Kleene o cerradura de estrella de un lenguaje A como A* = ^ J “ = oA". Definiremos también la cerradura positiva de A como A + = I^J“ = i A n. Obsérvese que las ca­ denas de la cerradura de Kleene se forman ai realizar cero o más concatenacio­ nes de las cadenas del lenguaje, mientras que la cerradura positiva se forma al realizar una o más concatenaciones. Por ejemplo, supongamos que A = {a} sobre el alfabeto inglés. Entonces te­ nemos que A° = { e } , A 1 = {«}, A 2 = { a 2} y así sucesivamente. Por tanto A* = {e, a, a2, a3, ...}. Por otro lado, A+ = {a, a2, a 3, ...}. Obsérvese que si X es un alfabeto, entonces X* está formado por todas las concatenaciones de 0 o más símbolos de X. Precisamente, ésta será la colección de cadenas que constituyen el lenguaje universal, el cual también se denota por X*. Por tanto, nuestra notación es consistente. Además todo lenguaje sobre X es necesariamente un sublenguaje de X*. Es más, si A es un lenguaje sobre X, se ob­ tiene que A„ c X* para todo n = 0, 1, 2, . . . , y por tanto, A* c X ’ y A+ c X+. Ob­ sérvese también que puesto que A n c A* para todo n, se tiene que A+ c A*. Final­ mente, puesto que 0o = {e} y 0” = 0 para todo n > 1, entonces 0* = {e} y 0+ = 0. Ejemplo 1.3,1 Consideremos £ = {0, 1,2, 3, 4,5,6, 7, 8, 9} y definamos A como el len­ guaje formado por las cadenas que no contienen ninguno de los dígitos 2, 3,..., 9. Entonces 8 € A, 0 e A y l e A. También 000101001 e A. Obsérvese que si k> 1 y x e Ak entonces x = w\ ■w2 - ■■■ ■Wk donde las cadenas w¡ e A. Puesto que las cadenas w¿ no contienen los dígitos 2, 3,..., 9, la cadena x tampoco con­ tiene ninguno de esos dígitos. Por tanto x e A. Es decir, Ak c: A para k > 1. Por otro lado, si x e A, como e e A se puede poner que la cual es una cadena de Ak. De aquí que Ac A* para k > 1, y por tanto A = A k para k > 1. De esto se obtiene que oo ©o A+= U Ak = J J A=A k= 1 Jt=l Además dado que A° = {e} c A, se deduce que A* = A° u A+ = A° kj A =A. Por tanto en algunos casos A* y A+ son el mismo. www.FreeLibros.com 38 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Si A y B son lenguajes sobre £ , definiremos la diferencia como A - B = { x | x e A y x g B} la cual es exactamente la misma definición que se vio en la teoría de conjuntos. Ejemplo 1.3.2 Si A es como en el Ejemplo 1.3.1 y B es el lenguaje de todas las cadenas de ceros, entonces A - B es el lenguaje de todas las cadenas de ceros y unos que tienen al menos un 1. Definimos el complemento de un lenguaje A sobre el alfabeto £ como A = £* - A la cual es también una definición análoga a la dada para el complemento en la teoría de conjuntos. Nuevamente nos referiremos al Ejemplo 1.3.1 para obtener que A es el lenguaje de todas las cadenas que contienen al menos uno de los dí­ gitos 2, 3 ,..., 9. La concatenación y la diferencia de lenguajes son incompatibles de forma similar a como lo eran la concatenación y la intersección. En general, A (B-C)^AB-AC. En el siguiente teorema se muestra una igualdad que relaciona las cerradu­ ras A+ y A*. Aunque el resultado es obvio intuitivamente hablando, conviene ofrecer una demostración rigurosa de una parte del teorema puesto que es una buena forma de indicar cómo se demuestran tales igualdades. Teorema 1.3.3. A+ = A • A* - A* ■A. Demostración. xe Sea x e A +. De la definición de la cerradura positiva se obtiene que i A k, así que para algún £o > 1, se sigue que x e Akn. Puesto queA t(, = A - A*0-1, se obtiene q u e x e A • A k°~ *, y por tanto oo oo X e U (A • A'1) = A ■(_J A” = A • A* n=0 n=0 Esto prueba que A + c A • A*. www.FreeLibros.com 39 ALFABETOS Y LENGUAJES A la inversa, sea oo oo x e A ■A* = A ■U An = U (A ■A 1') j ,1=0 »= o Entonces, para algún j > 0, se deduce que oo x 6 A ■Aj = A;+ 1 c ( J Ak = A + k= 1 Por lo tanto A ■A* c A+. La demostración de A+ = A* ■A es similar y se deja para el lector. □ Consideremos el lenguaje A = {ab} sobre el alfabeto inglés.Tenemos que A+ = {(ab)11/ > 1} = {ab, abab, ababab, ...} Entonces podemos considerar el lenguaje (A+)' para distintos exponentes i. Por ejemplo, si i = 2, se tiene (A+)2 = A + ■A += {ab ■ab, ab ■abab, ab ■ababab, ..., abab ■ab, abab • abab, abab ■ababab, ...} Puesto que podemos obtener cada uno de los lenguajes (A+)', entonces tam­ bién se puede obtener (Apf. Es más, puesto que (A+)°= {e}, también se puede considerar que (A+)*. Luego parece que tiene sentido preguntarse cómo son los lenguajes que son cerraduras de cerraduras. Las repuestas son sorprendentemen­ te sencillas. Si x es una cadena de (A+)+, entonces, puesto que (A+)+ = i (A+)k, tene­ mos que para algún n > 1, x e (A+)", y por tanto x = x\ ■X2 • ■■■ ■x„, donde cada x¡ e A+. Dado que x¡ e A+ = i A', existe algún i¡ > 1 para el cual x¡ e A'1. Por tanto cada Xi = y¡,\ ■y i,2 • ■y¡,t, donde cada y,y e A. Por tanto se obtiene * = O’i.i y 1,2 ••• yi,/,) - 0 2 ,i yi.i ■■■ yi-t2) ■-■■■■ (y»,i y »,2 ■■■y,u„) Pero ésta es justamente una cadena perteneciente al lenguaje a ,|+,2 + -" + í". Es más, puesto que t¡ > 1 para cada i, se obtiene que t\ + t2 + ... + tn > 1 www.FreeLibros.com 40 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES por lo que es una cadena de A+. Por tanto (A+)+ c A+. Por otro lado, puesto que A+ = (A+)* c i (A+)k = (A+)+, se obtiene que A+ c (A+)+, de lo que se des­ prende que A+ = (A+)+. De forma similar se puede demostrar que (A*)* =A*. Estos resultados se pueden interpretar como que no se añaden nuevas cadenas a los lenguajes A* o A+, aunque se vuelva a realizar sobre ellos cualquier tipo de cerradura. Esto des­ vela intuitivamente lo que significa el término cerradura. También se puede desarrollar la idea de inverso o transpuesta de un lengua­ je. El inverso de un lenguaje A es A 1= {x' \x e A} Por ejemplo si A = {dog, bog}, entonces A1 = {god, gob}. Obsérvese que si se vuelve a realizar el inverso del inverso de todas las pa­ labras de un lenguaje, entonces se obtiene, de nuevo, el lenguaje original. Por tanto, (A1)1= A. El comportamiento del inverso es bueno para la mayoría de las operaciones sobre lenguajes, como se muestra en el Ejercicio 1.3.18. El inverso de la concatenación no sólo invierte las palabras concatenadas de los lenguajes sino que también cambia el orden de la concatenación de los len­ guajes, como se muestra en el siguiente teorema. Teorema 1.3.4. (A • B)1= B1 ■A 1. Demostración. Sea x e (AB)1. Entonces x ! e AB, con lo que xJ = yz para las cadenas y e A y z e B. Por tanto, x = (xJ )' = (yz)1= z1 • / . Pero dado que z e B, entonces z7 e B1. A dem ás y e A, con lo que y 1 e A 1, y por tanto se obtiene que x e B1A1, lo cual prueba que (A5)7 c Z?7 • A7. A la inversa, si x e B1A 1, entonces x = uw para alguna palabra u e B1 y w e A 1. Pero entonces x 1= v / ul e AB, con lo que x7 e AB y x e (AB)1. Por eso Bl A7 c (AB)1, y por tanto (AB)1 = B1A7. □ Ejercicios de ia Sección 1.3 1.3.1. Para todo lenguaje A, ¿Qué es A • 0? 1.3.2. Sean A = {the, my} y B - {horse, house, hose} lenguajes sobre el alfabeto in­ glés. Obtener A ■B, A ■A y A ■B ■B. 1.3.3. Se supone que A = {e, a). Obtener A" para n = 0, 1,2, 3. ¿Cuántos elementos tiene A" para un n arbitrario? ¿Cuáles son las cadenas de A" para un n arbi­ trario? 1.3.4. Se supone que A = {e}.'Obtener A" para un n arbitrario. www.FreeLibros.com ALFABETOS Y LENGUAJES 41 1.3.5. Sean A = {e, ab} y B = {c<r/}. ¿Cuántas cadenas hay en A" 5 para un n arbitra­ rio? 1.3.6. Sean A = {a} y B = {b}. Obtener A'1B,ABn y (AB)". 1.3.7. Sean A = {e}, B = [aa, ab, bb), C = {e, aa, ab} y D = 0 el lenguaje vacío. Obte­ ner A u B , A u C , A u D , B u D y A n B , B r\C , C n D, A n D. Suponer que F es un lenguaje cualquiera. Obtener F u D y F n £>. 1.3.8. Probar la parte ii del Teorema 1.3.2. 1.3.9. Si A y B¡ son lenguajes sobre £ para i = 1 ,2 ,3 ,..., probar que L U ;= i = U (A ■Bi) i —i 1.3.10. ¿Bajo qué condiciones A* = A+? 1.3.11. Obsérvese que para todo lenguaje A se tiene que £ 6 A*. ¿Cuándo £ 6 A+? 1.3.12. Probar que {e}” = {£} = {e}+. 1.3.13. En los Ejemplos 1.3.1 y 1.3.2 ¿por qué £ no está en los lenguajes A - B y A? 1.3.14. Antes se obtuvo que A* = A ° u A += {£} u A +. Cabría esperar que A+ = A" - {£}. Probar que, en general, la expresión no es cierta. ¿Cuándo se cumplirá que A+ = A* - {£}? 1.3.15. Sean A y B dos lenguajes sobre £. Probar que A n B = A u B y que A u B =A n B . 1.3.16. Obtener los lenguajes A, B y C tales que A (B - C ) ^ A B -A C . 1.3.17. Probar que (A*)* = A*, (A’)+ = A* y (A+)* = A*. 1.3.18. Demostrar que se cumplen las siguiente igualdades para los lenguajes A y i? so­ bre el alfabeto £: (a) ( A kj B)' =A,X ) B I (b) (A n B)' = A, n B l (c) (A)1= (A7) (d) (A+)'= (A ')+ (e) (A*)! = (A1)* www.FreeLibros.com 42 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES PROBLEMAS 1.1. Sea Z = [a, b ,..., z] el alfabeto inglés. Definir la relación < sobre Z \ de forma que x < y siempre que x preceda a y en orden alfabético (ordenación lexicográ­ fica). 1.2. Sea A un lenguaje sobre el alfabeto Z. ¿Cuándo se cumple A = A l 1.3. Sea Z = {a, b, c} y sea L = {c' xcJ\ i,j >0}, donde x se restringe a x = £, x = aw o x = wb para algún w e Z. ¿Se cumple que L = E*? ¿Es cierto que L2 = Z*? 1.4. Sea Z = {a, b}. Lo siguiente es una definición recursiva del lenguaje A: i. ii. iii. iv. £6/ 4. Si x e A, entonces axb y bxa pertenecen a A. Si x e y pertenecen a A, entonces xy pertenece a A. No hay nada más en A. (a) Probar que A = {w e Z* | w tiene el mismo número de aes que de bes} (b) Si b y £ están en A ¿qué más palabras hay en A l (c) Dar una definición recursiva para que A c [a, ¿>}* contenga todas las pala­ bras que tienen el doble de aes que bes. 1.5. Un pa lín d ro m o es una cadena que se lee igual hacia adelante que hacia atrás. Por ejemplo, la palabra“a” es un palíndromo, al igual que la cadena “radar”. Dar una definición recursiva de un palíndromo (obsérvese que £ es un palíndromo). 1.6. Probar que para los lenguajes A y B, (A u B f = (A* B*)*. 1.7. Desigualdad de McMillan. Aunque la definición de que un alfabeto es un con­ junto finito de símbolos es matemáticamente correcta, plantea problemas cuan­ do se trata de aplicarla. Por ejemplo, si Z = {1, 11}, entonces l i l e Z , pero no está claro si 111 = 1 1 1 ó 111 = 1 1 1 ó 111 = 11- 1. El problema es que, aunque desde un punto de vista teórico 11 es indivisible (es un único símbolo y no un par de unos), no tenemos forma de representarlo. Por tanto, aunque w\ —1 • 11 y 11 • 1 parecen iguales, no lo son. Según la igualdad de cade­ nas, se deben tener los mismos símbolos y en la misma posición. En este proble­ ma se puede imponer una condición a los alfabetos cuyos símbolos son cadenas sobre otros alfabetos. Esta condición garantiza que no se tenga el problema an­ terior con respecto a la igualdad de cadenas. Se conoce como la desigualdad de MacMillan y se enuncia como sigue: Desigualdad de McMillan: Sea Z un alfabeto formado por r símbolos. Sean a\, a2, ..., aq cadenas no vacías sobre Z. Si el conjunto {ai, a2, aq} es un alfabeto, entonces > www.FreeLibros.com ALFABETOS Y LENGUAJES 43 /= i La demostración de la desigualdad de McMillan no es difícil pero requiere una profundización en ciertas ideas sobre cadenas. 1. Obsérvese que para las cadenas w\ y w2, |wj| + ¡W'2 i = |m’i W2 I, ¿cómo ( <¡ \n será un término arbitrario de r"'0í' después de que se realice el pro- /= 1 2. ducto (pero antes de efectuar cualquier simplificación)? Sea h = (Oh k, ...,Q \k = k , | +. . . + |a ,„ |} Es decir, h es la colección de «-tupias de los índices de las a¡, que pueden ser usadas para formar cadenas de longitud k. Sea Mk = | /¿-|, que es el nú­ mero de cadenas de las a¡ que forman cadenas de longitud k. Probar que í= 1 3. k =n donde r = max {!« 1 !. | aj \,.... | a„ | ). Por la parte 2. puesto que < i* para todo k. se obtiene que < ‘i IH * ¡ < n (t - 1) < nt í=t Probar que si 4. se llega a una contradicción y por tanto se cumple la desigualdad de McMillan. La desigualdad de McMillan se usa para deducir un resultado más fuerte. Sean /|, /2, ..., lq, q números naturales y Z un alfabeto con r= | z l . Existi­ rán q cadenas a\, a2,..., aq en F de longitudes l\, h , l q, respectivamente, que formarán un alfabeto si y sólo si www.FreeLibros.com TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 1.8. Cadenas exentas de cuadrados y exentas de cubos. Sea E un alfabeto. Una cadena w e E* se dice que está exenta de cuadrados si w no es de la forma uv2 x para las subpalabras u,x y v, donde x e. La definición de cadena exenta de cu­ bos es similar. La cadena w está fuertemente exenta de cubos si no contiene nin­ guna subcadena de la forma x2 a, donde x &e y a es el primer símbolo de x. 1. 2. 3. 4. Probar que ninguna cadena de longitud mayor o igual que 4 sobre un alfa­ beto de cardinalidad 2 puede estar exenta de cuadrados. Sea w e E ' . Una cadena w' e E* para la cual | w| = | vv' | es una inter­ pretación de w si se satisface la siguiente condición: Sea 1 < i < | w\ y 1 <j < \ w \. Si los símbolos i-ésimo y y-ésimo de vv son distintos, entonces los símbolos i y j de W son también distintos. Por ejemplo, si vv = aaabab, entonces cdefgh y cdcece son interpreta­ ciones de w, sin embargo cdefgc no lo es. Probar que si w está exenta de cuadrados, exenta de cubos o estrictamente exenta de cubos, entonces toda interpretación de vv también lo está. Una ©-cadena (omega cadena) es una secuencia infinita de símbolos sobre un alfabeto. Es decir, oo-cadenas son cadenas de longitud infinita. Sea w, una co-cadena exenta de cuadrados, exenta de cubos o estrictamente exenta de cubos sobre E en la cual aparecen todos los símbolos de E. Su­ pongamos que E' es un alfabeto que contiene estrictamente a E (es decir, E c E'). Probar que se puede construir una co-cadena a partir de vv, que es­ tará también exenta de cuadrados, exenta de cubos o estrictamente exenta de cubos (como lo es vv) y que contendrá todos los símbolos de E'. Si una cadena u co-cadena w está exenta de cuadrados, se puede espe­ rar que u- contenga dos ocurrencias de la misma subcadena x, es decir, una subcadena de la forma xy = zx para la cual 1 < | j | = |¿| < | x | . Algunas pruebas sencillas sugieren que la construcción de dicha w es más difícil de lo que parece. De hecho, ¡no es posible! Probar que si vv es una cadena o co-cadena que contiene una subcadena xy de forma que xy = z x y 1 < |>'| = |z| < |x|, entonces vv no está exenta de cuadrados. www.FreeLibros.com 2 Lenguajes regulares 2.1 LENGUAJES SOBRE ALFABETOS No es una coincidencia el que la mayoría de los lenguajes considerados hasta ahora hayan sido bastante sencillos. Los procesos vistos hasta ahora para deter­ minar qué cadenas pertenecen a un lenguaje sobre algún alfabeto £ resultan pe­ sados y laboriosos excepto para £* y algún otro lenguaje sencillo. Nuestro obje­ tivo a partir de ahora será la definición de lenguajes — esto es, especificar exac­ tamente qué cadenas componen un lenguaje— . Ya que todos los lenguajes sobre £ son sublenguajes del lenguaje universal £*, tiene sentido determinar primero cuántos sublenguajes tiene £* para un alfabeto £ en particular. Comenzaremos estudiando el propio £*. Como ejemplo, consideremos el alfabeto £ = [a, b}. Para todo número na­ tural n, hay sólo un número finito de palabras sobre £ cuya longitud es n. (¿Cuántas hay?). Aún más, dichas cadenas se pueden ordenar lexicográficamen­ te. Por lexicográficamente, se entiende la forma en la que estarían ordenadas en el diccionario. Por conveniencia, numeraremos £ como 0, después numeraremos las palabras de longitud 1 y, en general, numeraremos las palabras de longitud n + 1 después de las de longitud n. Así tenemos www.FreeLibros.com 46 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES e 0 a 1 b 2 aa 3 ab 4 ba 5 bb 6 aaa 7 y así sucesivamente De manera más general, supongamos que tenemos un alfabeto arbitrario E. Puesto que todos los alfabetos son finitos, podemos asignar un orden arbitrario a los caracteres pertenecientes a E. Así, sin pérdida de generalidad, podemos es­ cribir E = {íü|, Cl2, ÍJ/i} Numeraremos las palabras de E* de la misma forma. e <31 a2 an a\a i 0 1 2 n n+ 1 a\ ü2 n + 2 y así sucesivamente Esta técnica de asignar números naturales a las cadenas de un lenguaje, se puede realizar de forma más precisa. Volviendo al ejemplo original, donde E = {a, b}, haremos que cada cadena sobre E sea representada por un número en binario, usando los dígitos 1 y 2 en vez de 0 y 1. Sea a el 1 y b el 2, entonces se obtiene 8 a b aa ab abaa 0 1 2 11=3 12 = 4 1211 = 19 De esta forma, cada palabra está representada por un entero único. Esto no ocurriría si hubiésemos usado el 0 para representar a a y el 1 a b, ya que a1 esta­ ría representada por 0, par^ todo i > 0. www.FreeLibros.com LENGUAJES REGULARES 47 O bsén c e que para todo número natural m, existe una única representación :1 m isr base n. Por eso podemos encontrar una cadena en Z* correspon­ diente a Si m > 0, entonces debemos obtener la representación de m en base 2 sando 1 utos 1 y 2 en vez de 0 y 1). Para ello, se concatenan los caracteres que corresponden a los dígitos que aparecen en la representación de m en base 2. Así, si ni 3 2 , primero se convierte m a 11112 y entonces se concatenan las aes ia bes ha.-aa obtener aaaab. Hemos \ isto una forma de relacionar las cadenas de Z* con los números nap rales, de na que cada cadena está representada por un único número natural y cada mime, o natural representa a una única cadena. Esto, esencialmente, defi­ ne una función de N a Z*, con lo que, de hecho, se ha esbozado la demostración del siguiente eorema: Teorem a 2.1.1. Para todo alfabeto X. X* es infinito numerable. □ Ahora ano ya sabemos el tamaño de Z*, se puede determinar cuántos sublenguajes dé Z* existen y, en consecuencia, cuántos lenguajes hay sobre el al­ fabeto Z. Teoí 1.1.2. El conjunto de todos los lenguajes sobre Z no es numerable. Demostrc ion. S. -ngam os que el conjunto de todos los lenguajes sobre Z es numeraLian. >s a dicho conjunto L . Puesto que L es numerable, puede ser enu:• erado de ;a ; >rma Ao, Ai, Az, ... Usaremos el método de la diagonalización para gar a una .: ntradicción. Sabe: 'v . que Z* es numerable y por tanto puede ser enumerado como »vo, .......S>.;; {vv,-1 vv/ £ A¡}. Luego B está formado por las palabras que no pertecen ; uaje que tiene el mismo índice que las mismas. Obsérvese que B (. un con/! ,; ! de cadenas sobre Z y que, por tanto, es un lenguaje. De aquí que . =Ak, para algún k. Obsérvese que si B. entonces Wk no está en A k - B . Por tanto, ir* está y no está en Ak, lo cual es una contradicción. Por otro lado, si a ; g B, entoaces, de la definición de B, se obtiene que es una cadena de = B y es;á :n B. Por tanto, Wf. está y no está en B, con lo que se llega a otra ntradic Dado que w* debe o estar en B o no estar en B, la suposición de qué el conjunto de todos los lenguajes sobre Z es numerable es falsa. Luego el conjunto no es numerable. □ El T< • na 2.1.2 proporciona una idea acerca de la magnitud del problema de espedirán- lenguajes: hay una cantidad innumerable de lenguajes que especiar sobre un alfabeto en particular. No existe ningún método de especificación i lenguajes que sea capaz de definir todos los lenguajes sobre un alfabeto. Esto nifica ado un método de representación de lenguajes, hay lenguajes que www.FreeLibros.com 48 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES no son representabas. Por otro lado, unos métodos tienen mayor fuerza expresi­ va que otros, es decir, unos definen más lenguajes que otros. Con el estudio de estos métodos de investigación podemos hacernos una idea de la naturaleza mis­ ma de la computación. Ejercicios de la Sección 2.1 2.1.1. Para el alfabeto Z = [a, b] y usando la aplicación E * - 4 N dada en este aparta­ do, ¿cuántas palabras de longitud 3 hay? ¿Y de longitud 5? ¿Y de longitud kl ¿Cuál es el último número asignado a las palabras de longitud 2? ¿Y a las de longitud 5? ¿Y a las de longitud kl 2.1.2. En el caso general de que haya n caracteres en el alfabeto Z ¿cuántas palabras de longitud k habrá? Si ordenamos las palabras de Z en orden lexicográfico y les asignamos números comenzando por el 0 para 8 ¿Cuál será el número asig­ nado a la última palabra de longitud k? 2.1.3. Usando los dígitos 1 y 2 en vez de 0 y 1, obtener la representación binaria del número decimal 22. ¿Cuál es la palabra perteneciente a Z* = (a, b}* correspon­ diente al número (en base decimal) 22? \ 2.1.4. Ampliaremos la idea precedente para Z = [a, b, c) usando una representación ternaria con los dígitos 1, 2, 3. Supongamos que a está asociado con 1, b con 2 y c con 3. ¿Cuál será el entero decimal que corresponde a la palabra abbacca de Z*? Encontrar la palabra de Z* correspondiente a 20. 2.2 LENGUAJES REGULARES Y EXPRESIONES REGULARES El primer método para especificar lenguajes que vamos a estudiar define el con­ junto de lenguajes llamado lenguajes regulares sobre un alfabeto. Los lenguajes regulares son interesantes desde el punto de vista práctico porque pueden ser usados para especificar la construcción de analizadores léxicos —programas que analizan un texto y extraen los lexemas (o unidades léxicas) que hay en el mis­ mo. Para un alfabeto Z dado, los lenguajes regulares sobre Z son interesantes desde el punto de vista teórico porque ellos constituyen el menor conjunto de lenguajes sobre Z que es cerrado con respecto a las operaciones de concatena­ ción, la cerradura de Kleene y la unión de lenguajes y además contiene el len­ guaje vacío 0 y los lenguajes unitarios {a} para a e Z. Definición 2.2.1. Sea Z un alfabeto. El conjunto de los lenguajes regulares sobre Z se define recursivamente como sigue: www.FreeLibros.com LENGUAJES REGULARES 49 (a) 0 es un lenguaje regular. (b) {£} es un lenguaje regular. (c) Para todo a e £, {a} es un lenguaje regular. (d) Si A y B son lenguajes regulares, entonces A u B, A ■B y A* son len­ guajes regulares. (e) Ningún otro lenguaje sobre Z es regular. Por tanto, el conjunto de los lenguajes regulares sobre E está formado por el lenguaje vacío, los lenguajes unitarios incluido {£} y todos los lenguajes obteni­ dos a partir de la concatenación, unión y cerradura de estrella de lenguajes. Ejemplo 2.2.1 Dado £ = {a, b}, las siguientes afirmaciones son ciertas: 0 y {£} son lenguajes regulares. {a} y {b} son lenguajes regulares. {a, b} es regular jorque es la unión de {a} y {&}. [ab] es regular. [a, ab, b] es regular. {a'|/ > 0} es regular. {a1b>\ i > 0 y j > 0} es regular. {(ab)‘| / > 0} es regular. ¿El lenguaje de todas las cadenas sobre [a, b, c} que no tienen ninguna sub­ cadena ac es un lenguaje regular? Para responder a esta pregunta, consideremos que A es ese lenguaje. Si A es regular, entonces puede ser escrito en la forma que se indica en la definición. Obsérvese que las unidades de construcción básica son los lenguajes {a}, {b}, { c } , 0 y {£}. Supongamos que w es una palabra per­ teneciente a A. Entonces vv comienza por 0 ó más ces. Si las suprimimos obtene­ mos una subcadena w que no empieza por ningún carácter c. Ésta subcadena es­ tará constituida por aes, bes y ces, donde cualquier bloque de ces sigue a las bes. Es más, no puede haber ningún bloque de ces al principio de vv'. Por eso se tiene w 'e ({a} u {¿>} {c}*)* y por tanto w e { c } * ( { a } u { b } {c}*)* de lo cual se obtiene Ac{c}*({a}u{fe}{c}T www.FreeLibros.com 50 TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES Para probar la otra inclusión, obsérvese que si u es una cadena que tiene una subcadena ac entonces u<£ {c}*({a} u {b } { c } T ya que no hay forma de que una c pueda seguir a una a. Por tanto { c } * ({ a } u { ¿ } { c } y < z A Podemos simplificar la especificación de un lenguaje regular introduciendo un especie de abreviatura llamada expresión regular. Convenimos en escribir a en lugar del lenguaje unitario {a}. Por tanto ab denota denota [a, b) {ab} a* denota a+ denota {«}*; {a}+ Además, se establece que el orden de precedencia de los operadores *, u y • es * primero, • el siguiente y u el último. Esto reduce la necesidad del uso de pa­ réntesis y hace que las expresiones sean más fáciles de leer. Por ejemplo, una expresión ({ a } * { ¿ } )u {c}, se reduce a la expresión regulara*/? u c. A continuación definiremos de forma recursiva lo que es una expresión re­ gular sobre el alfabeto X, usando la notación convenida: 1. 0 y e son expresiones regulares. 2. a es una expresión regular para todo a e X. 3. Si r y 5 son expresiones regulares, entonces r u s, r ■s y r* también lo son. 4. Ninguna otra secuencia de símbolos es una expresión regular. Comparando esta definición con la definición de lenguajes regulares se de­ duce que toda expresión regular sobre X denota un lenguaje regular sobre X. Por ejemplo, el lenguaje de todas las cadenas sobre {a, b, c) que no tiene ninguna subcadena ac se denota mediante la expresión regular c* (a u be*)*. Cuando sea necesario distinguir entre una expresión regular r y el lenguaje denotado por la misma, usaremos L (r) para denotar el lenguaje. En cualquier caso, si se afirma que w e r, ello equivale a decir que w e L (r). Si r y s son ex­ presiones regulares sobre el mismo alfabeto y si L (r) = L (s), entonces se dice que r y s son equivalentes. En el caso de que r y s sean equivalentes se puede es- www.FreeLibros.com LENGUAJES REGULARES 51 cribir r - s. También se puede usar r c 5 en el caso de que L ( r ) c L (s). Obsér­ vese que para obtener r - s se debe demostrar que r c j c r . / Fíjese que de la definición de cerradura de estrella para lenguajes se obtiene que 0* = {e}, y en términos de expresiones regulares se tiene que 0* = e. Por tan­ to, se podría omitir £ en la definición de expresiones regulares. No obstante, como £ es una forma de abreviar 0*, se incluirá £, más por conveniencia que por necesidad. Igualmente, abreviaremos la expresión rr por medio de r+. Obsérvese que hay muchas expresiones regulares que denotan el mismo lenguaje. Por ejemplo (ab)* y £ u ( í i u í ) f b denotan el mismo lenguaje: el len­ guaje de todas las cadenas con 0 ó más aes y bes, que son tanto la cadena vacía como las que tienen una b al final. Por tanto, (a*bY = £ u ( a u l ) ) ' b. Se pueden simplificar las expresiones regulares reemplazándolas por otras equivalentes pero menos complejas. Por ejemplo, la expresión ab u £ u (a u b)* b puede ser sustituida por ab u (a*b)*. Existen muchas equivalencias con respecto a expresiones regulares basadas en las correspondientes igualdades de lenguajes. Las resumimos en el siguiente teorema. Teorema 2,2.2. tonces: Sean r, ,v y t expresiones regulares sobre el mismo alfabeto Z. En- 1. r u í = juc. 2. r u 0 = r = 0 u r. 3. r u r= r. 4. ( r u i ) u í = r u (.v u t). 5. /■£ = £r = r. 6 i'0 = 0 r ~ 0 . . 7. (rs) t = r (st). 8. r ( s U í ) = rs u rt y ( r u s ) l ~ t 1 u st. 9. r* = /•*” = r V = (e U r)* ~ r* ( r u e ) = ( r u £) r = £ u r r . 10. (r u s)* - (r u s Y = (r s*)* = (r'sf r = r* (,sr*)*. 11. r (sr)' = (rs)* r. 12. (r*s)* = £ U ( r u s)a s. 13. (rs*)* = e u r (rus)*, 14. s (r U £)* (r u £) u s = sr*. 15. www.FreeLibros.com 52 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Muchas de estas igualdades se pueden demostrar mediante reasociación. Como muestra, consideremos la igualdad 11, r (.sr)* = (rs)* r. Si vv e r (sr)*, en­ tonces vv = ro (.si n ) ... (sn r„) para algún n > 0. Puesto que la concatenación es asociativa, se puede reasociar la última expresión, con lo que se obtiene w = (ro s i) (ri 52 ) • • • (rn - 1 sn) rn e (rs)* r. De aquí se obtiene que r (sr)* c (rs)* r [o L (r (sr)*) c L ((rs)* r)]. Igualmente se puede probar que ( r s ) * r c r (jr)* con lo que se demuestra la igualdad. Para probar igualdades también se puede hacer uso de las igualdades ya co­ nocidas. Por ejemplo, si r = s*t, entonces r = / í = ( e u 5+) t ya que s’ = e u j + = ( e u ss*) t = £í u ss*t por (8) = t u sr por (5) = iruí por(l) lo cual prueba que r = s*t, implica que r = í r u í . / Ejercicios de ia Sección 2.2 2.2.1. Verificar, aplicando la definición de lenguaje regular, que los siguientes son lenguajes regulares sobre Z = [a, b}: (a) {«'l» > 0). (b) {a11i > n } para un n > 0 fijado. (c) {vv e Z* | vv termina con a }. 2.2.2. Verificar que el lenguaje de todas las cadenas de unos y ceros que tienen al me­ nos dos ceros consecutivos, es un lenguaje regular. 2.2.3. Los identificadores de Pascal son cadenas de longitud arbitraria compuestas por caracteres alfabéticos y por dígitos. Los identificadores de Pascal deben empe­ zar por un carácter alfabético. ¿Es este lenguaje un lenguaje regular? 2.2.4. Obtener una expresión regular que represente el lenguaje de los identificadores de Pascal. 2.2.5. (a) (b) Probar que (r u £)* = r*. Probar que (b u aa*})) u (b u aab) (a u ba’b)* (a u bab) y a*b (a u ba'b)* son equivalentes. 2.2.6. Sobre [a,b,c) ¿son equivalentes las parejas de expresiones regulares de cada apartado? www.FreeLibros.com LENGUAJES REGULARES 53 (a) (a u b)* a* y ((a u b) a)*. (b) 0** y e. (c) ((a u b) c)* y (ac u be)*. (d) b (ab u ac) y (ba u ba) (b u c). 2.2.7. Simplificar: (a) 0 * u a * u l) ’ u ( a u 6)’(b) ((aV)* • (b*a*)*)*. (c) (a*b)* u (b*a)*. (d) (a u b)* a(a'U b)*. 2.2.8. Probar que (aa)* a = a (aa)*. 2.2.9. Simplificar las siguientes expresiones regulares: (a) (e u aa)*. (b) (£ u aa) (e u aa)*. (c) a (e u aa)* a \ j£ . (d) a (e u aa)* (£ u aa) u a. (e) (a u e) a*b. (f) (£ u aa)* (£ u aa) a v j a. (g) (£ u aa) (£ u aa)* (£ u aa) u (£ u aa). (h) (£ u aa) (£ u aa)* (ab u b) u (ab u b). (i) (■a u b) (£ u aa)* (£ u aa) u f o u b). (i) (aa)* a kj (aa)*. i \ (k) a*b ((a u b) a*b)* u a*b. (1) a*b ((a u b) a*b)* (a u b) (aa)* u a (aa)* u a*b ((a u b) a*b)*. AUTÓMATA FINITO DETERMINISTA Consideremos el lenguaje regular A representado por c* (a u be*)*. Si dada una cadena vv se nos pregunta si vv pertenece a A, debemos analizar no sólo los carac­ teres que aparecen en vv, sino también sus posiciones relativas. Por ejemplo, la cadena abc 5ciab está en A, sin embargo cabac’bc no lo está. Podemos construir un diagrama que nos ayude a determinar los distintos miembros del lenguaje. Tal diagrama tiene la forma de un grafo dirigido con información adicional aña­ dida, y se llama diagrama de transición. Los nodos del grafo se llaman estados y se usan para señalar, en ese momento, hasta qué lugar se ha analizado la cade- www.FreeLibros.com 54 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES na. Las aristas del grafo se etiquetan con caracteres del alfabeto y se llaman transiciones. Si el siguiente carácter a reconocer concuerda con la etiqueta de al­ guna transición que parta del estado actual, nos desplazamos al estado al que nos lleve la arista correspondiente. Naturalmente, nosotros debemos comenzar por un estado inicial, y cuando se hayan tratado todos los caracteres de la cadena co­ rrespondiente, necesitamos saber si la cadena es “legal”. Para ello se marcan ciertos estados como estados de aceptación o estados finales. Si cuando ha sido tratada la cadena en su totalidad terminamos en un estado de aceptación, enton­ ces la cadena es “legal”. Marcaremos el estado inicial con una flecha (—») y alre­ dedor de los estados de aceptación trazaremos un círculo. Por ejemplo, el diagrama de la Figura 2.1 acepta todas las cadenas que están formadas por 0 ó más aes seguidas por una única b. Obsérvese que para toda ca­ dena de la forma ak b, para k > 0, el recorrido del diagrama termina en un estado de aceptación. El recorrido del mismo con cualquier otra cadena de aes y bes (incluida la cadena vacía) termina en cualquier otro estado, pero éste no es de aceptación. a a, b cá ■- '4' 6 a, b Figura 2.1 Considérese el lenguaje A = {{ab)L\i > 1}, el cual está representado por la expresión regular (ab)+. Obsérvese que una cadena de este lenguaje ha de tener al menos una copia de ab. Por tanto, si se construye un diagrama de transición para este lenguaje, el estado inicial no puede ser también estado de aceptación. Es más, si estando en el estado inicial se encuentra el carácter b, esto indica que la cadena no puede ser aceptada. Por tanto, hay dos transiciones a partir del esta­ do inicial, una para a y otra para b. La transición correspondiente a , nos lleva a un estado en el que se espera encontrar como siguiente carácter de la cadena, una b. Si se obtiene b, entonces nos desplazaremos a un estado de aceptación. Luego, si no hay más caracteres a considerar, se habrá identificado una cadena legal. Si no se han agotado los caracteres de la cadena, tomaremos la transición apropiada que parta de dicho estado. El diagrama de transición para A es el que se muestra en la Figura 2.2. ~”7 Obsérvese que se tiene un único estado de aceptación. Si el análisis termina en cualquier otro estado, la cadena no está correctamente construida: Obsérvese, www.FreeLibros.com LENGUAJES REGULARES 55 a, b a. a Figura 2.2 también, que una vez que se identifica un prefijo incorrecto, se realiza un des­ plazamiento a un estado que no es de aceptación y se permanece en el mismo. Consideremos el lenguaje (ab)*. En este caso si se acepta la cadena vacía. Por tanto, el estado inicial también es de aceptación. El diagrama de transición correspondiente se muestra en la Figura 2.3. b a tr a, b Figura 2.3 Vamos a etiquetar los estados del último diagrama de transición con las le­ tras q¡, para i = 0, 1,2. Obtendremos la Figura 2.4. Podemos representar el diagrama de la Figura 2.4 por medio de una tabla que indica el siguiente estado al que desplazarse, desde un estado combinado con un símbolo de la entrada (Figura 2.5). b a a, b www.FreeLibros.com F ig u ra 2.4 56 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Obsérvese que la tabla para nuestro diagrama de transición tiene, para cada par estado actual-entrada, un único estado siguiente. Por tanto, para cada estado actual y símbolo de entrada, se puede determinar cuál será el estado siguiente. Se puede pensar que el diagrama representa la acción de alguna máquina. Esta máquina puede pasar por diferentes estados. El cambio de estado depende de la entrada y del estado en que se encuentre. Dicha máquina se llama autómata fin i­ to, una computadora ideal. El autómata finito se define en términos de sus esta­ dos, la entrada que acepta y su reacción ante la misma. Hay autómatas finitos de dos tipos, deterministas y no deterministas, dependiendo de cómo se defina la capacidad para cambiar de estado. El autómata que corresponde a la Figura 2.5 para (ab)* es determinista. EstadcAEntrada a b Ct\ 92 <?2 (lo <72 <72 Formalmente, un autómata finito determinista M es una colección de cinco elementos. 1. Un alfabeto de entrada Z. 2. Una colección finita de estados Q. 3. Un estado inicial 5. 4. Una colección F de estados finales o de aceptación. 5. Una función 5: Q x Z —» Q que determina el único estado siguiente para el par (g¡, o) correspondiente al estado actual y la entrada. Generalmente el término autómata finito determinista se abrevia como AFD. Usaremos M = (Q, Z, s\ F, 8) para indicar elconjunto deestados, el alfabe­ to, el estado inicial, el conjunto de estados finales y lafunción asociada con el AFD M. Por ejemplo, el AFD correspondiente al ejemplo anterior se representa me­ diante M - (Q, Z, s, F, 5), donde Q = {<70, qu <7 2 } Z —{a,b} s = qo F = {q o ) www.FreeLibros.com LENGUAJES REGULARES 57 8 se define mediante la tabla de la Figura 2.6. 6 a b ?o <71 <?2 <7i <¡2 qo (¡2 Q2 <12 Figura 2.6 La característica principal de un AFD es que 6 es una función. Por tanto, 8 se debe definir para todos los pares (q¡, o) de Q x I . Esto significa que sea cual sea el estado actual y el carácter de la entrada, siempre hay un estado siguiente y éste es único. Por tanto, para un par (q¡, a ) hay uno y sólo un valor de la función (estado siguiente), § (q¡, 0 ). En otras palabras, el estado siguiente está totalmente determinado por la información que proporciona el par (q¡, a). Se puede crear un diagrama de transición a partir de la definición de un AFD. Primero, creamos y etiquetamos un nodo para cada estado. Entonces, para cada celda q¡ de la fila correspondiente al estado q¡, trazamos una arista desde q¡ a qj, etiquetada con el carácter de entrada asociado a qj. Finalmente, se marca el nodo 5 con una flecha, y se trazan unos círculos en todos los nodos de F para in­ dicar' cuáles son los estados de aceptación. Por tanto, el diagrama de transición para el AFD M - {Q, £, .y, F, 8}, donde Q = {qo, <7 1 } E = {a, b } ^={<70} s = qo y 8 representada mediante la Figura 2.7 8 a <?0 <?o. 9i <?i b <?o Figura 2.7 se muestra en la Figura 2.8. a a -------> ®— F ig u r a 2.8 www.FreeLibros.com 58 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Consideremos otro ejemplo. El AFD M - {Q, X, s, F, 5} representado por Q = Wo, <?i, <?2, q 3 } Z = {a ,b } (*) J - 9 0 F = {<70 , <?i,<?2 } y 8 dada por la tabla de la Figura 2.9. 5 a b <?o <?o <?i <?i 9o <72 <?2 qo <73 <?3 <73 <?3 Figura 2.9 El diagrama de transición correspondiente se muestra en la Figura 2.10. a ------- »®----------£-------- >®---------- £-------->®---------£-----------b (J% <?2 q3 a Figura 2.10 "T Ejercicios de la Sección 2.3 c^ 2.3.1. Obtener la expresión regular que representa al lenguaje formado por todas la cadenas sobre {a, b} que tienen un número par de bes. Construir el diagrama de transición para este lenguaje. 2.3.2. Construir el diagrama de transición para el lenguaje dado por c* (a u be*)*. Convertir el diagrama en una tabla como la dada en la Figura 2.5, etiquetando los estados qo,q\, ... 2.3.3. Sea M= {Q, Z, s, F, 5} dado por Q = {<?0,<7l,<72,?3} £ = {0 ,1 } {^0 } ■5= <?0 y 8 dada por la tabla de la Figura 2.11. www.FreeLibros.com LENGUAJES REGULARES 5 0 1 Qo <72 <?1 <73 qa <73 <12 43 59 <7i <72 Figura 2.11 Construir el diagrama de transición. Obtener la secuencia de estados por los que se pasa para aceptar la cadena 1 1 0 1 0 1 (el carácter del extremo izquierdo es el primero en ser analizado). 2.3.4. ¿La Figura 2.12 es un diagrama de transición correspondiente a un AFD? ¿Por qué o por qué no? H>®- cr Figura 2.12 AFD Y LENGUAJES Para trabajar con los AFD es necesario usar ciertas definiciones y notaciones. Si M es un AFD, entonces el lenguaje aceptado por M es L (Ai) = {vv e L* | w es aceptada por M } Por tanto, L (M) es el conjunto de cadenas que hacen que M pase de su esta­ do inicial a un estado de aceptación. Por ejemplo, el lenguaje aceptado por el AFD (*), presentado en la última sección, es L (.M) = {vv e [a, b } | vv no contiene tres bes consecutivas} Merece la pena hacer hincapié en que L (M ) está formado por todas las ca­ denas aceptadas por M, y no que es un conjunto de cadenas que son todas acep­ tadas por M. Para cada (q¡, a) de Q x I . 5 (q¡, a ) es un estado perteneciente a Q, y él mis­ mo puede ser emparejado con la entrada. Este par se transforma mediante 8 en un nuevo estado de Q. En particular, si qo es el estado inicial de M y se tiene www.FreeLibros.com 60 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES como entrada la cadena C 1 G2 0 3 , el estado resultante se obtiene mediante la apli­ cación de 8 ( 8 (8 (qo, Ot), G2), 0 3 ). Por ejemplo, para el AFD (*) de la última sección, se tiene 8 ( 8 ( 8 ( 8 (qo, b), b), a), b) = q\ para la cadena bbab. Obsérvese la aplicación recursiva de M sobre la cadena. Adviértase, también, que escribir esta expresión es un proceso bastante laborioso. Nos pondremos de acuerdo en usar 8 (qo, bbab) para abreviar 8 ( 8 ( 8 ( 8 (qo, b), b), a), b). Para ser más precisos, si q¡ e Q y vv es una cadena de la forma a¡ w' para algún a¡ e E y una subcadena vv', definiremos 8 (q¡, w) como 8 (8 (q¡, a¡), w'). Diremos que dos AFD M\ y M i son equivalentes si L (M \) = L (Mi). Por ejemplo, sean M\ y M 2 sobre el alfabeto E = {a }, representados por los siguien­ tes diagramas de transiciones Mi: í) ® , M2: Ambos aceptan el lenguaje a+ y, por tanto, son equivalentes. Por otro lado, sea M 3 dado por el siguiente diagrama My. ® no es equivalente a Mi o Mz (¿por qué?). Obsérvese que M4 dado por el diagra­ ma de transición siguiente a í) Mi: ----- > ® es equivalente a M 3 y es más “sencillo" puesto que tiene menos estados. Los problemas del final del capítulo estudian las dificultades que existen para deter­ minar si dos AFD son equivalentes y para transformar un AFD en otro equiva­ lente que sea más sencillo. Ejercicios de la Sección 2.4 2.4.1. Sea M un AFD. ¿Cuándo pertenecerá £ a L (Ai)? 2.4.2. Construir los AFD que aceptan cada uno de estos lenguajes sobre [a, b}: (a) {vv| toda a de w está entre dos bes} (b) {w\w contiene la'subcadena abab} www.FreeLibros.com LENGUAJES REGULARES (c) 61 {iv| vv no contiene ninguna de las subcadenas aaobb) (d) {vv| vv tiene un número impar de aes y un número par de bes} (e) {w | w tiene ab y ba como subcadenas} 2.4.3. Sea S el conjunto de todos los AFD sobre el alfabeto £. Sea R c z S x S larela­ ción definida de manera que: (Mu M2) esté en i? si y sólo si M\ esequivalente a M2 (como autómatas finitos). Probar que R es una relación de equivalencia en S (y, por tanto, que la definición de equivalencia de AFD es consistente con el uso matemático habitual de los términos). AUTÓMATA FINITO NO DETERMINISTA Si se permite que desde un estado se realicen cero, una o más transiciones me­ diante el mismo símbolo de entrada, se dice que el autómata finito es no deter­ minista. A veces es más conveniente diseñar autómatas finitos no deterministas (AFN) en lugar de deterministas. Consideremos el lenguaje a*b u ab*. Las cade­ nas pertenecientes a este lenguaje están formadas por algunas aes seguidas de una b o por una a seguida de varias bes. El AFD que acepta A se representa por medio del diagrama de transición de la Figura 2.13. Figura 2.13 Aunque el lenguaje es relativamente sencillo, debemos detenem os en poder determinar si este diagrama de transición corresponde al AFD de A. Primero se debe comprobar que reconoce sólo las cadenas pertenecientes a A, y después, si representa a un AFD. Para ello, debemos comprobar que las reglas de transición constituyen una función, es decir, que de cada estado parte una y sólo una transi­ ción para cada símbolo del alfabeto. Consideremos ahora el diagrama de transición de la Figura 2.14. Obsérvese que este diagrama acepta sólo las cadenas pertenecientes a A. Fíjese también que las reglas de transición no son una función de "Q x £ en Q porque no asigna un estado siguiente a los pares estado-entrada (<74, a), (<73 , a), (43, b), (<72 , o) y (q2, b). Es más, existe_más de un estado siguiente correspondiente al par (qo, a). www.FreeLibros.com 62 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Figura 2.14 93 Este diagrama de transición representa a un AFN. Finalmente, obsérvese que en este diagrama es más fácil determinar qué lenguaje se acepta. Si tratamos de definir el término autómata finito no determinista, veremos / que la mayor parte de la definición se puede obtener a partir de la de AFD. Es decir, tendremos un conjunto finito de estados Q, un alfabeto de entrada E, un estado inicial o de partida s, un conjunto de estados de aceptación F y una regla de transición. La única diferencia que existe se encuentra en las reglas de transi­ ción. En un AFN, las reglas asocian pares (q, o) con cero o más estados. Se pue­ de decir qué las reglas relacionan pares (q, a ) con colecciones o conjuntos de es­ tados. Esto significa que la regla es una relación entre Q x E y <2. o sobre (Q x L) x Q. Por tanto, definiremos una autómata finito no determinista median­ te una colección de cinco objetos (Q, E, s, F, A), donde 1. Q es un conjunto finito de estados. 2. E es el alfabeto de entrada. 3. í es nno de los estados de Q designado como estado de partida. 4. F es una colección de estados de aceptación o finales. 5. A es una relación sobre (Q x E) x Q y se llama relación de transición. Obsérvese que, puesto que A es una relación para todo par (q, o) compuesto por el estado actual y el símbolo de la entrada, A (q, o) es una colección de cero o más estados fes decir, A (q, a ) c Q], Esto indica que, para todo estado q, se pueden tener cero o más alternativas a elegir como estado siguiente, todas para el mismo símbolo de entrada. Por ejemplo, el AFN descrito anteriormente para A = a b u ab* se repre­ senta por medio de Q = {qo, qí, <?2, <73, 94} F = { q z , 43, 94} s = qo E = { a ,¿ } www.FreeLibros.com LENGUAJES REGULARES 63 y A dada por la tabla de la Figura 2.15. A a b 9o !<?b<?4) (<?3) 9i Í9 i) 92 0 0 93 0 0 94 0 {94 } Figura 2.15 Obsérvese que en la tabla de la relación de transición las celdas son conjun­ tos. El hecho de que existan celdas con 0, indica que no existe ninguna transi­ ción desde el estado actual mediante la entrada correspondiente. Que para un par estado actual-entrada exista más de un posible estado siguiente indica que se puede elegir entre las distintas posibilidades. En el modelo no existe nada que determine la elección. Por esta razón, se dice que el comportamiento del autó­ mata es no determinista. Veamos otro ejemplo. Consideremos el AFN M = (Q .Z , s, F, A) dado por Q= {<70, <71, <72} 5 = qo F = k/o} y A dada por la tabla de la Figura 2.16. Este AFN tiene el correspondiente dia­ grama de transición que se muestra en la Figura 2.17. A a b <70 í<?i) 0 9i 0 Í9o, 92 ) 92 (9o) 0 Figura 2.16 Figura 2.17 Este AFN acepta el lenguaje (ab u aba)*. Obsérvese que cuando se está en el estado q\, mediante el símbolo de entrada /?,*se puede pasar a dos posibles es­ tados siguientes. Se puede elegir entre uno de estos estados. De nuevo, la elec­ ción de un estado no está determinada por el modelo. Si para el reconocimiento www.FreeLibros.com 64 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES de la cadena aba, se elige 4 2 como estado siguiente desde el par (q\,b) llegamos a un estado de aceptación; sin embargo, si elegimos #0 no llegamos a un estado ' final. El análisis de cadenas mediante los AFN parece que implica ciertas conje­ turas. Esta es una característica del no determinismo: cuando se debe realizar una elección y dicha elección no puede ser determinada por el modelo, debemos acertar la correcta. En un modelo de computación no determinista (del cual los AFN son una clase), asumimos que siempre se hace la elección correcta. Como con los AFD, si M es un AFN, definimos el lenguaje aceptado por M por medio de L (M) - {w\ w es una cadena aceptada por M) donde una cadena vv es aceptada por M, si M pasa de su estado inicial a un esta­ do de aceptación o final al recorrer w (vv es consumida en su totalidad). Para determinar si una cadena pertenece a L (M), se debe recorrer el diagra­ ma de transición correspondiente a M. Debemos encontrar un camino que termi­ ne en un estado de aceptación cuando haya sido consumida toda la cadena. Du­ rante el recorrido, debemos elegir de forma no determinista la transición de un estado a otro cuando existe más de una para el mismo símbolo. Para afirmar que la cadena no está en L (Ai), debemos agotar todos las formas posibles de recorrer el diagrama de transición para dicha cadena. Para diagramas de transición senci­ llos, esto puede ocasionar un problema de gasto de tiempo. El siguiente ejemplo proporciona una forma de abordar este problema de una manera distinta, evitan­ do la búsqueda exhaustiva por el diagrama. Ejemplo 2.5.1 .... s, El diagrama de transición de la Figura 2.18 corresponde a un AFN que acepta el lenguaje (a*b*)* (aa u bb) (a b*)* www.FreeLibros.com LENGUAJES REGULARES 65 La tabla para A viene dada por la Figura 2.19 \ A a 4o {<?0> <?3) {4o-9i) 4i 0 {4 2 } 92 {4 2 } {4 2 } 43 ( 44 } 0 <74 {94 ) {44 } b ' Figura 2.19 La naturaleza recursiva del análisis de cadenas que vimos para los AFD se manúene en los AFN si la notación se define con cuidado. Si X c Q, vamos a in­ terpretar A (X , a ) como el conjunto de estados { p \ q e X y p e A (q, a)}. Por tanto, A (X, o) es el conjunto de todos los estados siguientes a los que se puede llegar desde X con la entrada a. Obsérvese que A (X, a ) = { J 9 e x A (qr, a ) [re­ cuérdese que A (q, a ) es un conjunto para cualquier estado q\. Por eso, en el ejemplo precedente, A ({<70, qi, #3}, ¿0 = {?0, <7i} v {<72} U 0 = {<70, <71,42} Ahora obsérvese que para la cadena abaab, se obtiene que A (qo, a) = {4 0 , <7 3 }, con lo que A (qo, ab) = A (A (qo, a), b) = A({qo, qz},b) = {qo,q\} U 0 = {qo, q\) Por tanto, podemos extender la notación usada para los AFD a los AFN y escribir A (qo, abaab) para abreviar A (A (A (A (A (<70 , a), b), a), a), b). En el Ejemplo 2.5.1, se tiene que A (qo, abaab) = {qo, <71, q 4}. La colección A (qo, abaab) es el conjunto de todos los estados de M a los que se llega cuando se analiza la cadena abaab. Esta colección tienen en cuenta todos los posibles caminos o recorridos de M con esta cadena de entrada. A (qo, abaab) contiene al menos un estado de aceptación, ¿74, lo que indica que algún recorrido de este dia­ grama para la cadena abaab termina en un estado de aceptación. Por eso, abaab pertenece al lenguaje aceptado por este AFN. www.FreeLibros.com 66 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ejercicios de la Sección 2.5 2.5.1. Construir un AFD y el diagrama de transición asociado que acepte el lenguaje (ab u aba)*. Compararlo con el AFN del Ejemplo 2.5.1. 2.5.2. Obtener un AFN (que no sea AFD) que acepte el lenguaje ab* u alia. 2.5.3. Usar la técnica precedente para determinar si las cadenas babba y aabaaba son aceptadas por el AFN del Ejemplo 2.5.1. 2.5.4. Sea M el AFN dado por Q = [qo, q\}, 2 = {a, b}, s = qo, F= {gi} y A dada en la Figura 2.20. Determinar si a2b, ba y b2a están en L (M). Dibujar el diagrama de transición para M. A a b 9o (<7o> <?i) l<7i) 9i 0 lío .íi) Figura 2.20 EQUIVALENCIA DE AFN Y AFD Hemos definido la equivalencia para los AFD. Extenderemos esta definición para la clase de todos los autómatas finitos (AFD y AFN) de forma que un autó­ mata M es equivalente a un autómata' M' si L (M ) = L (M '). Ejemplo 2.6.1 Los autómatas representados en la Figura 2.21 son equivalentes. Obsérvese que uno es determinista y el otro no determinista. Sin embargo, ambos aceptan el mismo lenguaje, a f a u b)*. . ' P )a' k Figura 2.21 Ya que una función es un caso especial de relación (es decir, las funciones son relaciones que poseen requerimientos adicionales), las funciones de los AFD se consideran como relaciones en los AFN. En consecuencia, todo AFD es un AFN. La colección de lenguajes aceptados por los AFN incluye a todos los len­ guajes aceptados por los AFD. De esto resulta que los AFN sólo aceptan los len­ www.FreeLibros.com LENGUAJES REGULARES 67 guajes aceptados por los AFD. Por lo tanto, los AFN no son más potentes que los AFD con respecto a los lenguajes que aceptan. Para probar esto, necesitamos demostrar que todo lenguaje aceptado por un AFN también es aceptado por al­ gún AFD. Sea M = (Q, £, s, F, A) un AFN. En la sección anterior presentamos una for­ ma de recorrer M, de la cual se obtenía la colección de todos los estados accesi­ bles desde el estado inicial en cada una de las etapas de análisis de una cadena. Estas técnicas proporcionan la base para construir un AFD M' = (Q \ E', / , F \ 8) que acepte el mismo lenguaje que Ai. Esencialmente, lo que se pretende es hacer que cada estado de Q' se corresponda con un conjunto de estados de Q. Cuando se analiza una cadena con M, ésta se acepta cuando la colección final de estados contiene al menos un estado de aceptación perteneciente a F. Por tanto, haremos que F sea el conjunto de estados de Q' que se correspondan con los conjuntos de estados (de Q) que contienen un estado de F. Haremos corresponder a s' con el conjunto | .y}, £ ' = £, y definiremos 5 de forma que nos desplacemos de un conjunto de estados de M a otro, como hace A. Ejemplo 2.6.2 Consideremos el AFN M que acepta a u (ab)*, representado por el diagra­ ma de transición de la Figura 2.22. Para este AFN, tendremos A (qa, a) = {q\, q2) A(qo,b) = 0 A({qi,q2},a) = 0 A ({q \,q 2}.b) = {qi] A (0, a)=A (0, b) = 0 A (<?3, a)= {q2} A (<73, b) = 0 A (q2, a) = 0 A (q2, b) = {<y3} % a ->® 9i a a b Figura 2.22 Por tanto, el diagrama de transición correspondiente al AFD M' que es equivalente a M viene dado en la Figura 2.23. Obsérvese que cada estado de M' www.FreeLibros.com 68 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES • [q2 0 8 a, b Figura 2.23 corresponde a un conjunto de estados de M. Los estados de aceptación de Af se corresponden con los conjuntos de estados de M que contienen estados de acep­ tación. Se verifica fácilmente que la regla de transición es una función. Por tanto M' = (Q, i', F , 5) donde G '={0,{® }.{92}.í«3}.{9l.ft}} r =z í '= {<?o} f = { { ( ¡ 3 }, \q\, <72}} y 8 viene dada por la tabla de la Figura 2.24. § a b 0 0 0 (<7o) {<7i><72) 0 {<7 2 } 0 {<73 } (4 3 } i<?2) 0 f<?i> <?2¡ 0 {4 3 } Figura 2.24 Ahora demostraremos formalmente que todo lenguaje aceptado por un AFN es también aceptado por un AFD, con lo que probaremos que los lenguajes AFN y los lenguajes AFD están formados por la misma colección de lenguajes. T eorem a 2.6.1. Sea M = (Q, £, s, F, A) un AFN. Entonces existe un AFD M' = = (Q s ' , F, 5) que es equivalente a M. Demostración. Definamos M ' = (Q \ £ ' , F , 8) como sigue: sea s' = { 5 }, £ ' = £, Q = 2^ (que es la colección de todos los subconjuntos de Q) y F la colección de www.FreeLibros.com LENGUAJES REGULARES 69 todos los subconjuntos de Q' que contienen estados de F. Téngase en cuenta que hemos incluido en Q' y F algún objeto más que en el ejemplo anterior. Sin em­ bargo, esto no alterará la construcción de M'. Para cada conjunto \q¡v q¡2, q¡n} de Q' y cada símbolo de entrada o de 2, definiremos 8como 8 ({<?/,, qiv q¡„), o) = [pi,p 2 , - ,Pk} A ({<?(,, qiv q¡„}, o) = {pup 2 , - ,Pk} si y sólo si Obsérvese que 8, definida de esta forma, es una función de Q' x Z' en Q', puesto que está bien definida para todos los elementos de Q' x Para probar que L (M) —L (M'), debemos demostrar que para toda cadena w, 8 (/, vv) = {pup 2 , ...,pj } si y sólo si A (.y, w) = [p\,p% ...,pj }, con lo cual M' acepta vv si y sólo si M acepta vv. Probaremos esto por inducción sobre la longi­ tud de vv. Si la longitud de w es 0 (es decir, w= e), entonces A (5 , vv) = A (5 , e) = {.y} = 8 (.y', vv) Ahora supongamos que para toda cadena w de longitud menor o igual que m se tiene que A (s , vv) = 8 (/, vv). Supongamos que u es una cadena de longitud m + 1. Entonces, existirá algún oe Z, de forma que se obtiene que u = wo, don­ de w es una cadena de longitud m. En este caso, 8 (/, vvo) = 5(8 (s\ vv), o). Ahora, por la hipótesis de inducción, dado que vv tiene longitud m, 8 (/, w) = ÍP\,P2, -•,Pj} si y sólo si A (s, vv) = [p\,p 2 , •••,Pj }• Pero por la forma en la que hemos definido 8, tendremos que 8 ({pi,jp2, -;P j}, O) = {ru r2, ..., rk} si y sólo si A ({puP 2 , - ,Pj }, o) = {ru r2, ..., rk] Por lo que 8 (/, vva) = {rt, r2, n } si y sólo si A (s, wo) = {n, n, >'k}- Es decir, la igualdad se cumple para cadenas de longitud m + 1 si se cumple para cadenas de longitud m. Entonces por lo anterior tenemos que 8 (5', vv) es unesta­ do de F si y sólo si A (5 , vv) contiene algún estado de F. Por tanto, M' acepta vv si y sólo si M acepta w. □ Obsérvese que, en la demostración, el AFD M' correspondiente al AFN M contiene muchos estados que no son accesibles desde el estado inicial. En la práctica, es una buena idea empezar con s' y añadir estados sólo cuando son el resultado de una transición desde un estado previamente añadido. www.FreeLibros.com 70 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ejercicios de la Sección 2.6 2.6.1. Construir el AFD correspondiente al AFN dado en la Figura 2.25. ¿Qué lengua­ je es aceptado por dicho autómata? a t b — ------------ > ®'<P> _£>___________ | Figura 2.25 2.6.2. Encontrar un AFN que acepte (ab u aab u aba)*. Convertir este AFNen un AFD. 2.6.3. Encontrar un AFN para (a u b'faabab. Convertirlo en un AFD. 2.6.4. Supongamos que M es un AFN que ya es determinista. ¿Qué se obtendrá siapli­ camos a M la construcción dada en el Teorema 2.6.1 ? 8-TRANSICIONES Podemos ampliar la definición de autómata finito no determinista para incluir transiciones de un estado a otro que no dependan de ninguna entrada. Tales tran­ siciones se llaman 8-transiciones porque al realizarse no consumen ningún sím­ bolo de la entrada. Por ejemplo, los AFN de las Figuras 2.26 y 2.27 contienen etransiciones. En el AFN de la Figura 2.26, el autómata puede cambiar su estado de cjo a q\ sin consumir nada en la^entrada. Obsérvese que q\ es el único estado de acep­ tación de este AFN. Si w es cualquier cadena de 0 o más aes, este autómata cicla sobre qo hasta que consume las aes. Una vez que la cadena se vacía, se desplaza a q\ y lo acepta. Figura 2.26 El AFN de la Figura 2.27 puede moverse del estado q 2 al estado qo sin con­ sumir nada en la entrada. En ambos AFN, la decisión de elegir una e-transición se realiza de la misma forma que la de cualquier otra transición con elección múltiple que exista en un AFN — basándose en algo que no determina el mode­ lo. Por tanto, las e-transiciones son consistentes con el matiz no determinista de nuestra versión previa de AFN. www.FreeLibros.com LENGUAJES REGULARES 71 V Figura 2.27 Si un AFN tiene e-transiciones, la relación de transición A asocia pares de < 2 x ( E u { e})x (2 con subconjuntos de Q. Es decir, A es una relación sobre Q x (E u {e}) x Q. Se puede añadir una columna en la tabla de A para colocar los pares de la forma (q¡, e). jQuando hay e-transiciones en un AFN es conve­ niente suponer que cada estadoj tiene una 8-transición que cicla en ese estadoj Usaremos esto para sistematizar el cálculo de los AFN. Es decir, el AFN de la Figura 2.27 tendría la tabla de transición de la Figura 2.28. A a b e <?o í<7i) 0 0 <?i 0 i<?2Í 0 <72 {<7ol 0 í<?o) Figura 2.28 Para tratar de calcular el conjunto de los estados siguientes de un AFN que contiene e-transiciones, debemos tener en cuenta las e-transiciones “anteriores” y “posteriores” a la transición etiquetada con o. Por ejemplo, consideremos el AFN M dado en la Figura 2.29. % Figura 2.29 Como se ve en la Figura 2.29, el conjunto de estados siguientes al estado qo mediante la entrada a es el conjunto {q\,qn} debido a la 8-transición que hay después de la transición con a. Igualmente, el conjunto de estados siguientes siendo q\ el estado actual y b la entrada, es el conjunto [qo, q2, qs} debido a la etransición que existe antes de tomar la transición con b. Obsérvese que A (qo, ahubbb) - {qo, q s } con lo que ababbb es aceptada por M. www.FreeLibros.com 72 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Se puede sistematizar el proceso para calcular el conjunto de los estados si­ guientes en un AFN con £-transiciones. Para todo estado q e Q, definimos la ecerradura de q como e - c (q) = [p \p es accesible desde q sin consumir nada en la entrada} Ampliaremos está definición para todo el conjunto de estados de la siguiente manera 71 ({?/]»q¡2> •••>q¡„}) —i_J e—c iq¡k) k= 1 Por ejemplo, para el AFN de la Figura 2.30, se tiene que e -c f e ) = {4 3 } Figura 2.30 ya que cada estado es accesible desde sí mismo sin consumir ningún carácter de la entrada. También se obtiene e -c (qo) = {qo, q \ ,q 7 ) e -c (4 4 ) = {<7 1 , <72 , <74 } Para q e Q y o 6 X se define d (q, a ) = {p | hay una transición de q a p etiquetada con o} La colección d (q, a ) es la colección de estados que “siguen” directamente a q pasando por la transición etiquetada con a. Ampliaremos la definición de d a los conjuntos como sigue www.FreeLibros.com LENGUAJES REGULARES 73 d{{q¡v q¡2,.... q¡„}, C) 'J d(q¡k, a) k; - I Por tanto, en el ejemplo precedente se tiene que d O/o, a) = {(¡i] dUto,b) = 0 d({cjy, < } ,b ) = \qfí,qi) Obsérvese que e -c (d (q, o)) es el conjunto de todos los estados accesibles desde q, primero mediante una transición con es y después mediante una o más e-transiciones. Por otro lado, d i(q), o) el conjunto de todos los estados accesibles desde q tomando primero una o más e-transiciones y después una transición con i-. Finalmente, obsérvese que e -c id (e-c O/i a)) es el conjunto de todos los estados accesibles desde q tonua. . primero ;a o más e-transiciones, después una transición con a y, por último, una o más ¿-transiciones. Téngase en mente que permanecer en un estado es como ,o; ir una e-transición. Por tanto, e -c (d (e -c (q), a)) es el conjunto todos i nados siguientes al actual q me­ diante la entrada a . Esto sister el cál; ;e conjuntos de estados siguien­ tes. Primero se obtiene e -c (q). ; o se c; \ -i:, d (e-c (q), o) y después se ob­ tiene la e-cerradura del conjunto do estados : -.antes. Ejemplo 2.7.1 Considérese el AFN c, í-transicioncs dado en la Figura 2.31. Usando la fórmula anterior, obtendremos el conjunto ee los estados siguientes al estado q por medio del símbolo de la entrada a: F ig u ra 2.31 www.FreeLibros.com 74 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES £-c(<7o) = {<70, <71 } d (e-c (q0), a) = {q^, <74} e-c ({<73, <?4}) = {^i, <73,<74,<75} Así, mediante la entrada a, el conjunto de los estados siguientes es [quq-i, <74, qs)-Es decir, A (<70, a) = {<71 , <73, <74, 9 5 }A partir de un AFN M = (Q, E, 5 , F, A) que tiene e-transiciones, se puede construir un AFN sin e-transiciones que acepte el mismo lenguaje. Se define M' = (Q, E, s, F , A') como F = F u {q \& -c(q )n F * & ) y A' (q, a ) = e - c (d (e -c (q), a)), como antes. Obsérvese que el autómata transformado M' no contiene e-transiciones. Ejemplo 2.7.2 El AFN de la Figura 2.31 se transforma en el AFN de la Figura 2.32, cuan­ do todas las e-transiciones son eliminadas mediante el proceso anterior. b Entonces, se deduce que la colección de lenguajes aceptados por los AFN con e-transiciones es la misma que la aceptada por los AFN sin e-transiciones. Se ve fácilmente que la proposición inversa también es cierta. Por tanto, todos nuestros autómatas aceptan la misma colección de lenguajes. Para construir un autómata tendremos tres alternativas a elegir. Como veremos posteriormente, el uso de e-transiciones es conveniente para unir autómatas finitos. www.FreeLibros.com LENGUAJES REGULARES 75 Ejercicios de la Sección 2.7 2.7.1. Calcular A (qo, abb) y A (c/o, abcrb) para el AFN de la Figura 2.29. 2.7.2. Obtener £-c ({<7 1 , ¿74}) para el AFN de la Figura 2.30. 2.7.3. Obtener e-c (el (<73, /»)) en el AFN de la Figura 2.30. 2.7.4. Usar la técnica estudiada para calcular A Ui¡, b) en el Ejemplo 2.3. i . 2.7.5. Para el AFN dado en la Figura 2.33; (a) obtener la tabla de transición para A,(b) obtener la ¿-cerradura (q¡) para i - 0, 1,2, y (c) calcular A (qo, a), A (qo, b) y A (qo, c) para la Figura 2.33. a — b a p a q0 Q, e p a * » • ---------------- > • ---------------- >® q2 Figura 2.33 2.7.6. Para el AFN del Ejercicio 2.7.5, obtener el AFN que se obtiene al eliminar las e-transiciones. Dar la tabla para A'. AUTÓMATAS FINITOS Y EXPRESIONES REGULARES Hasta ahora, hemos tratado de la relación entre autómata finito y expresiones re­ gulares de una forma intuitiva. En esta sección, formalizaremos dicha relación por medio del teorema de Kleene (Teorema 2.8.4). De momento, vamos a ver al­ gunas propiedades de los lenguajes aceptados por autómatas finitos. Para un alfabeto I se pueden construir los AFN (y los AFD) que acepten palabras unitarias. Por ejemplo, el AFN de la Figura 2.34 acepta el lenguaje uni­ tario {«}. Para ello se puede construir, incluso, una AFN que acepte el lenguaje vacío 0. Dicho AFN se muestra en la Figura 2.35. Obsérvese que este autómata no acepta ninguna cadena. ------- --------------------- f----------------- >® Q, % Figura 2.34 ------ >. Figura 2.35 Supongamos que M\ - (Qj, I i , .vi, F¡, Ai) y M 2 = (Q 2, E 2 , i'2 ,'^ 2 , A2) son AFN. Podemos unir Mi y M i en un nuevo AFN que acepte L ( M í ) k j L ( M 2), añadiendo un nuevo estado inicial s y dos e-transiciones, una de s a íj y otra de s a s2. La construcción formal de este nuevo AFN M = (Q ,Z , s, F, A) viene dado por X = I i u £ 2, F = F\ u F i y Q = Qi u £>2 u {5 }, donde 5 es el nuevo estado www.FreeLibros.com 76 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES inicial y A se define de forma que se incluyan todas las transiciones de Ai, A2 y las dos nuevas e-transiciones de s a si y s2. Conviene considerar las relaciones de transición Ai y A2 como colecciones de ternas ordenadas á t Q \ X 'L y .Q \ y f t x l x Q2, donde (q, a, p) significa que existe una transición de q a p median­ te el carácter a (es decir, p e A, (q, a)). Usando esta notación se puede definir A = Ai u A 2 u {(i, 8 , ¿ 1 ), (s, e, 5 2)} Por ejemplo, los AFN de la Figura 2.36, los cuales aceptan ab* y (ab)*, res­ pectivamente, se pueden unir formando el autómata con e-transiciones de la Fi­ gura 2.37, el cual acepta ab* u (ab)*. ®■ qy -»• q-2' Figura 2.36 b Figura 2.37 Sean M\ = (Q\, I i , 5 j, F\, Ai) y = (Qi, I 2, s2, F2, A2) dos AFN. Podemos unirlos para formar un AFN que acepte L (M\) L (M2). Se necesita un AFN que reconozca una cadena de L (M¡) y después reconozca una de L (M2). Es decir, un recorrido hasta un estado de aceptación para admitir la cadena en su totalidad, primero debe pasar por un estado de aceptación de M\ y después pasar (y term i­ nar) en un estado de aceptación de M 2. Esto se realiza de forma no determinista www.FreeLibros.com LENGUAJES REGULARES 77 pasando del estado final de M\ al estado inicial de Mj_ por medio de una e-transición. Por ejemplo, los AFN de la Figura 2.38 aceptan los lenguajes {a} y {¿}, respectivamente. Uniéndolos como hemos dicho, se obtiene un AFN que acepta el lenguaje {ab} (véase la Figura 2.39). ----- » . ----------- ---------- » ® q; ----- > . ---------- - --------- > ® q; qy q? Figura 2.38 ® ay Qf Figura 2.39 Obsérvese que el autómata que se obtiene tiene como estado inicial el esta­ do inicial de M\ y como estado(s) final(es) el(los) estado(s) final(es) de M2. Por tanto, el AFN M = (Q, Z, s, F, A) que acepta L (M \) L (M2) viene dado por Q = Q\ u Qi S = S\ F = F2 A = Ai u A 2 u (F\ x {e} x {í2}) La relación de transición A incluye todas las transiciones presentes en los dos AFN junto con todas las ternas de la forma (q, £, ¿2 )* donde q es un estado de aceptación de M \ . Es decir, s2 e A (q, £) para todo q e F\, Se puede deducir un procedimiento para construir una AFN que acepte L (A/)* para el AFN M = (Q, £, s, F, A), como sigue. Primero, se añade un nuevo estado inicial / ; se hará que este estado sea además un estado de aceptación con el fin de que £ sea aceptada. Entonces, se permite una £-transición desde s a el antiguo estado inicial s. Por tanto, M comenzará una vez que M' se encuentre en s'. Se tendrá además, una £-transición desde todos los estados de aceptación has­ ta el estado inicial s'. Una vez que la cadena de-L(M) ha sido agotada, el análisis puede continuar a partir del estado inicial de Af o terminar en s'. El autómata re­ sultante será Af = (Q Z, s', F , A'), donde www.FreeLibros.com 78 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Q' = Q v { s ' } A' = A u { ( / , e ,.v ) } u ( F x {e} x {5'}) Obsérvese que en la definición de A' se incluyen las e-transiciones necesa­ rias además de las del AFN M original. De la discusión anterior se obtiene el siguiente teorema. Teorema 2.8.1. El conjunto de lenguajes aceptados por un autómata finito sobre el al­ fabeto Z contiene 0 y los lenguajes unitarios {fl} para todo a e Z. Este conjunto es cerrado con respecto a la unión, concatenación y la cerradura de estrella. Dada una expresión regular r para construir un AFN (con e-transiciones en todos los casos excepto para expresiones regulares triviales), podemos aplicar las técnicas precedentes a los términos de las expresiones regulares. Por tanto, todo lenguaje regular es aceptado por un autómata finito. Lo recíproco también es cierto, como veremos en el Lema 2.8.3. Es decir, todo lenguaje aceptado por una autómata finito es también un lenguaje regular. Por lo tanto, el conjunto de los lenguajes regulares es el mismo que el conjunto de los lenguajes aceptados por un autóm ata finito (Teorema 2.8.4). Consideremos el autómata finito M = (Q, Z, ,v, F, A) y supongamos que s = qo es el estado inicial. Para todo estado q¡, sea A¡ = {vt> e Z*| A (q\, vv) n F ^ 0} Es decir, A¡ es el conjunto de las cadenas sobre Z que hacen que M pase des­ de q¡ hasta un estado de aceptación. Se dice que A¡ es el conjunto de las cadenas aceptadas por el estado q¡. Obsérvese en que /Ao = L (M). Adviértase, también, que es posible que A¡ = 0. Si qt e F, entonces se obtiene que £ e A¡. Como ejemplo, consideremos el autómata finito de la Figura 2.40. En el mismo, se tiene que A5 = 0, A2- e A 4 = e, A i= b A¡ = a, Ao = a b u ba Supongamos que q¡ e A (q¡, a). Entonces A¡ contiene a oAj. De hecho, se tiene que A; = u {oAj\qj e A (q¡, o ) } www.FreeLibros.com LENGUAJES REGULARES 79 ->® ^4 Figura 2.40 Esto proporciona las técnicas recursivas básicas para obtener una expresión regular a partir de un autómata finito. Como muestra, consideremos el ejemplo anterior. Obsérvese que Ao = aA¡ u M 3 , A3 - Í 1A4 U M A 1 = bÁ 2 u C1A.5, A 4 = £ u aAs u bA$ A 2 = £ u aAf¡ u bA 5 , A5 = 0 5 Por tanto, se tiene un sistema de ecuaciones que se cumplen para L (Ai). Se puede resolver por sustitución obteniendo que L (M) = a b u ba. Considérese el autómata finito dado por la Figura 2.41. Del mismo modo se obtiene que Ao = «Ao u bA i A] = £ •> ® Figura 2.41 Resolviéndolo por sustitución, resulta que A q = üA q kj b y es imposible sim­ plificarlo más. El siguiente lema muestra cómo resolver esto para obtener Ao = a b (que es lo que se espera tras inspeccionar el diagrama de transición). Lema 2.8.2. (Lem a de A rden) Una ecuación de la forma X = A X u B, donde £ g A, tiene una solución única X = A*B. Demostración. Obsérvese que A~B = (A+ u £.) B = A +B U :B = Á (Á'B) u B. Por tanto, A*B está contenida en toda solución. Supongamos que X - Á fB u C e s una solu­ ción, donde C n Á B = 0. Si se sustituye la expresión anterior en la ecuación X = A X u B, se obtiene www.FreeLibros.com 80 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES A * 5 u C = A (A * B u C )u 5 = A +B u AC u £ = A+B u S u AC = (A+u e ) B u A C = A*B u AC Realizando en ambos lados la intersección con C se obtiene C = A C n C (los otros términos son 0). Por tanto, C c A C . Pero, como £ £ A, la cadena más corta de A C debe ser más larga que la cadena más corta de C. Esto contradice que C c / l C a menos que C = 0. Luego se debe tener que C = 0 y, por tanto, A*B es la única solución. □ Consideremos el autómata finito de la Figura 2.42. Aquí se tiene Ao = aA i A\ = aAi u bA$ A i —aA 3 u bAá, A3 = £U ClAj U ¿A4 Figura 2.42 Sustituyendo y aplicando el lema de Arden cuando sea necesario, se obtiene A4 = b* A3 = (7A3 u b+ u £ í: 7Íí =a b A 2 = a+b * u b+ A 1 = a (a+&* u ¿>+) u b+ —aa+b* u ab+ u b+ Ao = üA\ = a1 a+b* u a2 b+ u ab+ Entonces se deduce el siguiente lema. www.FreeLibros.com «■ LENGUAJES REGULARES 81 Lema 2.8.3. Sea M un autómata finito. Entonces existe una expresión regular r para la cual L (/•) = L (M). Del Lema 2.8.3 junto con las observaciones anteriores al Teorema 2.8.1, se obtiene el teorema de Kleene. Teorema 2.8.4. (Kleene) mata finito. Un lenguaje es regular si y sólo si es aceptado por un autó­ Ejercicios de la Sección 2.8 2.8.1. Obtener un AFN que acepte e. 2.8.2. Obtener un AFN que acepte {a}. Obtener otro AFN que acepte {/>}. Usar las técnicas vistas en esta sección para unir estos AFN en uno que acepte el lengua­ je [a, b}. 2.8.3. Obtener un AFN que acepte (a u b)* kj (abá)+■ 2.8.4. Obtener un AFN que acepte todas las cadenas de la forma bowwow, bowwowwow, bowwowwowwowwow,... Conseguir un AFN que acepte todas las cadenas de la forma ohmy, ohmyohmy, ohmyohmyohmy, ... Unir los dos AFN para que se acepte la unión de los dos lenguajes. Téngase en cuenta que los símbolos de un alfabeto no tienen por qué ser caracteres de longitud uno. 2.8.5. Sea M\ dado por la Figura 2.43 y M2 dado en la Figura 2.44. Obtener un AFN que acepte L (Mi) L (Mi). Obtener un AFN que acepte L (Mi) L (Mi). r ®q2 <7, -> ®q4 ^3® t Figura 2.43 Pa Figura 2.44 2.8.6. Sean M, = ({^j, q2, qi), {a, b}, [qi\, {#i}, Ai) y M 2 = ({p\,pi,pi,p4},{0, 1}, ÍPíK [p\,pi\, Ai), donde Ai y A2 vienen dados en las tablas de la Fi­ gura 2.45. Obtener un AFN que acepte L(M\) L(Mi). Obtener un AFN que www.FreeLibros.com 82 t e o r ía d e a u t ó m a t a s y l e n g u a j e s f o r m a l e s acepte L{Mi) L(M\) L{M\). Obtener finalmente, un AFN que acepte (L(M,))2u L (M ,). 0 1 A A a b P\ \Pl\ 0 <7i (42, <?3) 0 P2 0 [P)>P4} <72 0 {?i} P3 {P2} 0 <73 lí3l (<?3) P* Íí>3} 0 Figura 2.45 2.8.7. Obtener un AFN para (ab)* a partir de los AFN que aceptan {a} y {b}. 2.8.8. Obtener un AFN para (aa u b)* (bb u a)* a partir de los AFN que aceptan {a} y [b). 2.8.9. Obtener un AFN para ((a u b) (a u b))* u ((a u b) (a u b) {a u b))* a partir de los AFN para {a} y {£>}. 2.8.10. Si M = (Q,?,, s, F, 8) es un autómata finito determinista, entonces el comple­ mento de L (M) [es decir, £* - L (M)) es aceptado por el autómata M (<2, Z, s, Q - F, 8). [M' es un AFD o un AFN? Obtener un AFD que acepte ab*ab. Obtener un autómata finito que acepte {a, b}* - ah"ab. 2.8.11. Demostrar que A¡ = {aAj| q¡ e A (q¡, a)}. 2.8.12. Obtener una expresión regular para el lenguaje aceptado por el autómata finito de la Figura 2.46. -> Figura 2.46 www.FreeLibros.com 83 LENGUAJES REGULARES 2.8.13. Obtener una expresión regular para el AFD de la Figura 2.47. a -> ® 0 a, b Figura 2.47 2.8.14. Obtener una expresión regular para los lenguajes aceptados por cada uno de los autómatas de la Figura 2.48. a, b a. ) ® - ________I í_ a, b ft -» ® b. ) c. ) <?3 d. ) r o a' b a, b . -----—-----> ® í ^ ,Q4 <h a Figura 2.48 www.FreeLibros.com 84 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES PROPIEDADES DE LOS LENGUAJES REGULARES Los resultados de la última sección establecen la conexión entre autómata finito y expresión regular. Todo lo que es verdad para lenguajes regulares también es verdad para lenguajes aceptados por un autómata finito y viceversa. Así, por ejemplo, la colección de lenguajes regulares es cerrada con respecto a la conca­ tenación, unión y cerradura de estrella porque los lenguajes aceptados por un au­ tómata finito también lo son (Teorema 2.8.1). Es importante preguntarse si, dado un lenguaje L, ¿L es regular? Desde lue­ go, si L es finito, es regular y se podrá construir un autómata finito o una expre­ sión regular para ellos de forma sencilla. También, si L es especificado ya sea por medio de un autómata finito o por una expresión regular, la respuesta es ob­ via. Por desgracia, hay relativamente pocos lenguajes que sean regulares y, en el caso de un lenguaje infinito, la búsqueda exhaustiva de una expresión regular o un autómata finito puede resultar inútil. En este caso, se necesita obtener algunas propiedades que compartan todos los lenguajes regulares infinitos y que no estén presentes en los lenguajes no regulares. Supongamos que un lenguaje es regular y que, por tanto, es aceptado por un AFD M = (Q, Z, s, F, 5), donde Q contiene n estados. Si L (M) es infinito, podre­ mos encontrar cadenas cuya longitud sea mayor que n. Supongamos que w = o\ a 2 ... a,, + i es una de las cadenas de longitud n + 1 que pertenece a L (Ai). Si tuviéramos q\ = 8 (.?, a \) <72 = 8 (^ 1 , ai) y así sucesivamente, obtendríamos los n + 1 estados, q\, q i , ..., <?„+ j. Puesto que Q contiene sólo n estados, los q¡ no serán todos distintos. En consecuencia, para algunos índices j y k, con 1 < j < k < n + 1, se obtendrá que q j-q k - Por lo tanto, tendremos un ciclo en el camino que parte de s hasta un estado de aceptación, según se muestra en la figura 2.49. www.FreeLibros.com LENGUAJES REGULARES 85 Figura 2.49 Puesto que j < k, se tiene que la “parte central”, es decir, aj+ i ... tiene al menos longitud 1. Obsérvese además que la cadena w' = a i ... a¡ ci^ + i ... an+\ debe pertenecer también a L (M). Por esto, se puede dar vueltas en el ciclo tantas veces como se quiera, de forma que a\ ... aj(aj+ i ... cik)m cik+\ ... an+\ estará en L (M) para todo m > 0. Es decir, se puede “bombear” cero o más veces la par­ te central y seguir teniendo una cadena que sea aceptada por el autómata. For­ malizaremos esto en el siguiente lema, conocido como lema de bombeo. Lem a 2.9.1. Sea L un lenguaje regular infinito. Entonces hay una constante n de forma que, si w es un cadena de L cuya longitud es mayor o igual que n, se tiene que w = uvx, siendo uvl x e L para todo i > 0, con | v| > 1 y | uv\ <n. El lema de bombeo presenta una propiedad que debe tener todo lenguaje re­ gular y nos facilita una forma de determinar si un lenguaje no es regular. Para demostrar que un lenguaje no es regular, se mostrará que, para cualquier valor n lo bastante grande, se tendrá al menos una cadena de longitud n o mayor que fa­ lle al ser “bombeada”. Por ejemplo, considérese el lenguaje L = \ a ? \ i > 1} Toda cadena de L debe tener una longitud que sea un cuadrado perfecto. Su­ pongamos que L es regular y sea n la constante dada en el lema de bombeo. Ob­ sérvese que a'r e L y que, por el lema de bombeo, tenemos a" = uvx de forma que 1 < | v| < n y u v l x e L para todo i > 1. Entonces se obtiene que n2 - \uvx\ < I uv2x I » < n2 + n < (n + l) 2 www.FreeLibros.com 86 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Es decir, la longitud de uv2x se encuentra, estrictamente, entre cuadrados perfectos consecutivos y, por tanto, no es un cuadrado perfecto. Luego uv2x no puede pertenecer a L. Es decir, L no puede ser regular. Ejemplo 2.9.1 Consideraremos otro ejemplo. Sea el lenguaje L - {a"'bm\m >Q}. Se ve claramente que L es infinito y, si L es regular, podremos aplicar el lema de bom­ beo. Sea n la constante del lema y consideremos anbn, cuya longitud es mayor que n. Tendremos por tanto, que anbn = uvx para las cadenas u, v y x con | v| > 1 y \uv\ <n. Nos centraremos en v, teniendo en cuenta que \uv\ < n fuerza a que v esté formado sólo por aes. Supongamos que v = as para ,v> 1. Entonces, si u = ar, se tiene que x= an~< 'r+s)b". De lo que se deduce que u ^ x ara 2sa”~l'r+^bn = an+sbn. Dado que s> 1, la cadena no puede pertenecer a L. Por tanto, L no puede ser regular ya que no satisface el lema de bombeo. Que {anbn \ n > 0) no sea regular y, por tanto, no sea aceptado por un autómata finito saca a la luz las propiedades comunes a todos los lenguajes regulares. Du­ rante el análisis de una cadena por medio de un autómata finito, sólo tenemos a nuestra disposición, en cada paso, el estado y el símbolo actual. Cuando analiza­ mos las bes no tenemos información sobre cuántas aes han sido analizadas. Otra forma de decirlo es que la cantidad de memoria necesaria para aceptar o rechazar una cadena debe ser limitada. Si consideramos los estados como me­ moria, el hecho de que el conjunto de estados sea finito provoca dichas limita­ ciones. Podríamos construir un autómata de estados no finito, que aceptara dicho lenguaje. Podría estar formado por un estado inicial que también fuera estado de aceptación, con un camino para cada a”bn, para todo n > 0. Véase la Figura 2.50. Obsérvese que hay un número infinito de estados, por lo que la memoria en esta clase de autómatas no está limitada. www.FreeLibros.com LENGUAJES REGULARES 87 Además de ser una herramienta que determina si un lenguaje es regular, el lema de bombeo proporciona los medios necesarios para determinar si un autó­ mata finito acepta cualquier lenguaje no vacío y si el lenguaje aceptado es finito o infinito. Teorem a 2.9.2. Sea M un autómata finito con k estados. 1. L (M) 0 si y sólo si M acepta una cadena de longitud menor que k. 2. L (M) es infinito si y sólo si M acepta una cadena de longitud n, donde k < n < 2k. Demostración. 1. Si M acepta una cadena de longitud menor que k. entonces L (M) * 0 . A la inversa, supongamos que L (M) * 0. Entonces existirá algún w e L (M). Necesitamos probar que L (M) contiene una cadena de longitud me­ nor que k. Si | w\ <k, quedará probado. Sin embargo, supongamos que | w\ >k. Gracias a lo expuesto con anterioridad al Lema 2.9.1, sabemos que debería haber un ciclo en el camino que se recorre para aceptar w y por tanto, se puede poner que w —uvx para algunas cadenas u, v y x, donde u es la parte anterior al ciclo, v es la parte del ciclo y x es posterior al ciclo. Por tanto, | v¡ > 1 y se tiene que u v lx e L (M ) para todo ?>(). En particular, u x e L(M ). Si |mx| <k, quedaría probado. Apliquemos ahora el proceso anterior a u x Obsérvese que | mjc| < | iivx | , de modo que de aplicaciones repetidas del proceso precedente, eliminando cada vez la subpalabra “central”, siempre que la cadena siga pertene­ ciendo a L (M), podrá obtenerse una cadena de L (M) cuya longitud será menor que k. 2. Supongamos que w e L ( M ) con k < \ w \ <2k. En lo visto antes del Lema 2.9.1, se estableció que M debe tener un ciclo en el camino que acepta w y, por tanto, w - uvx para algunas cadenas u, v, x con | v j > 1. En consecuencia, uv'x e L (M) para todo i, con lo que L (M ) es infinito. Al contrario, supongamos que L (M) es infinito. Entonces no todas las cadenas pueden tener longitud me­ nor que k, y por tanto existirá alguna cadena w e L (M) cuya longitud sea al me­ nos k. Si | w | < 2k, quedaría probado. Si no, aplicando a w la construcción ante­ rior al Lema 2.9.1, se obtiene w - u v x , donde | vj > 1 y \uv\ <k, con lo que | v| <k. Ahora tenemos que |w¡ > 2 k y que | v | <k, lo que produce que \ux\ >k. Como en la parte 1, si \ux\ < 2 k, quedaría probado. De lo contrario, aplicaremos repetidamente este proceso a u x hasta encontrar unir cadena cuya longitud se encuentre entre k y 2 k - 1. □ v El Teorema 2.9.2 nos proporciona un procedimiento para decidir si L (M) es vacío y si L (M) es finito o infinito. Dado que los alfabetos son colecciones fini­ tas, podemos realizar dichos procedimientos en tiempo finito, con lo que pode- www.FreeLibros.com 88 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES mos afirmar que los mismos nos facilitan algoritmos para resolver dichos pro­ blemas. Sin embargo, dichos algoritmos no son particularmente eficientes. Para los AFD hay una forma más rápida de poderlo realizar, eliminando los estados que, para cualquier entrada, no sean alcanzables desde el estado inicial. L (M) no será vacío si queda algún estado final. Entonces, si se eliminan todos los estados no finales desde los cuales no pueda ser alcanzado ningún estado no final y com­ probamos los ciclos, se puede determinar si L (M) es finito o infinito. Los problemas del final del capítulo tratan otro problema de decisión, la equivalencia de lenguajes regulares. Una vez que hemos visto algunos ejemplos de lenguajes no regulares, hay otras técnicas para comprobar la regularidad además de usar el lema do bombeo. Supongamos que L y K son lenguajes sobre X. De las leyes de De Morgan para conjuntos se obtiene que (X* - L) u (X* - K) = X* - (L n K) Por tanto, se tiene que L n K = X* - (X* - ( L n K ) ) = r - ((X* - L ) \ j (I* - K)) Entonces, por el Ejercicio 2.8.10, sabemos que, si L y K son aceptados por un AFD, entonces X* - L y X - K también lo son. Por tanto, si L y K son regula­ res; entonces X* - L y X* - K también lo son. También sabemos que la unión de lenguajes regulares es regular, así que (X" - L) u (X* - K) es regular y su com­ plemento X* - ((X' - L) u (X* - K)) también es regular. Por tanto, L n K e s re­ gular cuando L y K lo son. La intersección es una técnica muy usada para determinar la regularidad de los lenguajes. Por ejemplo, sea X = {0. 1, 2, 3, 4, 5, 6, 7, 8, 9}. Entonces, el len­ guaje de los enteros no negativos viene dado por L ¡ = 0 u {1,2, ...,9} X*. El lenguaje de todas las cadenas de dígitos terminadas en 0, 2, 4, 6, u 8 viene dado por L 2 = X* {0, 2, 4, 6, 8}. Obsérvese que ambos son regulares. El lenguaje de todos los enteros no negativos divisibles por 2, vendrá dado por L = L\ n Lz y también será regular. Ejemplo 2.9.2 Sea £ = { « , b}. Usaremos la intersección para probar que el lenguaje L = {h’vv7Jir e X’} no es regular. Primero, fíjese que por el lema de bombeo L\ = {a"b2ka"\n, k>()} no es regular. Segundo, Li = {akb"am\k, n, m> 0} es re­ gular (se denota mediante la expresión regular ab*a). Finalmente, obsérvese www.FreeLibros.com LENGUAJES REGULARES 89 que Lo in L = L\. Si L fuera regular, entonces L\ sería regular. Por tanto, L no puede ser regular. Ejercicios de la Sección 2.9 2.9.1. Probar que {ap\p es primo) no es un lenguaje regular. 2.9.2. Probar que {a"bd"bam*" | n, m > 1} no es un lenguaje regular. 2.9.3. Determinar si los siguientes lenguajes son regulares y decir o probar por qué si o por qué no. (a) {cfb2i\i> 1} (b) {(<*)'|i a i} (c) {aln\n> {} (d) {a"b"‘a" + | ;¡, m > \ ] (e) {¿i2”| /z > 0} (0 {w\w = w' para w e {a,b}*} (g) {wxw'\w, r e [a, b}+] 2.9.4. Usar el procedimiento del Teorema 2.9.2 para decidir si L (M) es finito o infini­ to según el autómata de la Figura 2.51. b . -------i ------ > ¿. ----------- I£--------- > ® -------------- i ------ > .i ------- b------ > . T a t ] a i Figura 2.51 2.9.5. Usar las afirmaciones posteriores alTeorema2.9.2 paradeterminar si el AFD de la Figura 2.52 acepta un lenguaje no vacío. Siel lenguajeno es vacío, deter­ minar si'el lenguaje aceptado es finito o infinito. 2.9.6. Sea l = { a ,b ] . (a) Construir los AFD que acepten a 'b y ab'. (b) A partir de los AFD de la parte (a),construir los AFDque acepten X* - a b y 2* - ab*. (c) A partir de los AFD de la parte (b), construir un AFD que acepte la unión (£* - a b ) u (L* -ab*). (d) Usar el resultado de la parte (c) para construir un AFD que acepte el len­ guaje a*b n ab*. www.FreeLibros.com 90 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES a a, a, b b Figura 2.52 2.9.7. La construcción del Ejercicio 2.9.6, aunque efectiva, no es particularmente efi­ ciente. En la parte (c) se obtiene un AFN a partir de la unión y después se trans­ forma en un AFD para la intersección de lenguajes regulares sobre el mismo al­ fabeto haciendo uso del producto cartesiano. Sean M\ = (Q¡, Z, sj, 8 i) y M2 = (Q2, £, í 2 , F2, 62 ) dos AFD. Definir M = (Q¡ x Q2, I , (su s2), F\ x F2, 5), donde (sj, 52 ) denota los pares ordenados de estados. La función de transición 5 se define para todos los pares ordenados (q¡, p¡) 6 Q\ 'X Qi y para todo a e X, por medio de 8 ((<?,-, qj), a) = (81 (<7,, a), 82 (pj, a)) (a) Construir los AFD correspondientes a a b y ab* sobre Z = ¡a. /;}. (b) Usar esta técnica para construir directamente un AFD que acepte a b n ab*. 2.9.8. Usar el lema de bombeo para probar que no es regular el lenguaje L\ dado en el Ejemplo 2.9.2. 2.9.9. Probar que {ww\ w e {a,b)*\ no es regular. 2.10 APLICACIONES DE LAS EXPRESIONES REGULARES Y LOS AUTÓMATAS FINITOS Los autómatas finitos se usan frecuentemente en los problemas que implican el análisis de cadenas de caracteres. Tales problemas incluyen problemas de bús­ queda e identificación, tales como la búsqueda de la existencia de una cadena en un fichero o el reconocimiento de cadenas de entrada que satisfagan ciertos cri­ terios. Un autómata finito es, él mismo, un modelo de un procedimiento parareconocimiento de cadenas por medio de la expresión regular asociada. Por tanto, en la búsqueda de una cadena en un fichero, podemos aplicar el autómata finitc www.FreeLibros.com LENGUAJES REGULARES 91 de forma sistemática a las cadenas del fichero hasta que se acepta la cadena o se termina el fichero. Un problema común en la programación de computadoras es el de tener la seguridad de que los datos de entrada de un programa son correctos. Por ejem­ plo, si se espera un entero sin signo como dato de entrada y el usuario confunde uno de los dígitos con un carácter no numérico, se puede dar todo tipo de resul­ tados impropios, desde una terminación anormal hasta el cálculo de resultados incorrectos (basura dentro, basura fuera). La programación cuidadosa pretende construir un programa a “prueba de balas”, incluyendo unas rutinas de entrada que analicen la información introducida por el usuario y, de alguna forma, pre­ venir que se aplique información incorrecta al programa. Si pudiéramos cons­ truir un autómata finito que aceptara solamente las cadenas que representan in­ formación correcta, entonces tendríamos un modelo para dicha rutinr. de entrada. Puesto que los autómatas finitos se corresponden con las expresiones regulares, el problema se reduce a especificar la información correcta por medio de expre­ siones regulares. En el caso de que la entrada esté formada por enteros sin signo, el lenguaje vendrá dado por / = {1, 2, 3 ,4 , 5, 6, 7, 8, 9} ■{0, 1, 2, 3 ,4 , 5, 6, 7, 8,9}*. Es fá­ cil construir un autómata finito que acepte / (véase Figura 2.53). 1, 2, 9 a Cualquier carácter Figura 2.53 También es sencillo traducir el autómata finito a un código en un lenguaje de programación; sólo se necesita seguir el rastro de la posición actual en la ca­ dena y del estado actual. A la vez que se recorre la cadena, se cambia de estado según corresponda y, cuando se acaba la cadena, se comprueba a qué estado se ha llegado y, según eso, se acepta o se rechazadla cadena. Las expresiones regulares se pueden usar para especificar las unidades léxi­ cas presentes en un lenguaje de programación. Los autómatas finitos asociados www.FreeLibros.com 92 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES se usan para reconocer dichas unidades (llamadas componentes léxicos). Dicho análisis es una etapa importante en la compilación de programas de ordenador. Por ejemplo, sea S el conjunto de caracteres de algún lenguaje de programación, es decir, todos los caracteres que debe reconocer un compilador para dicho len/ guaje. Sea L c E el subconjunto de todas las letras y D c Z el subconjunto de to­ dos los dígitos. Supongamos que un comentario en dicho lenguaje comienza pol­ los caracteres y termina con el símbolo de final de línea, el cual se denota mediante eol. Entonces una expresión regular para el componente léxico conoci­ do como comentario es - -(L-eol)*eol. Los identificadores del lenguaje pueden estar compuestos por letras, dígitos y subrayados, deben empezar con una letra y deben terminar con una letra o un dígito. Una expresión regular para estos componentes léxicos vendrá dada por L ( ¿ u D u J * (L u D). Se puede construir un autómata fin io que reconozca este lenguaje regular y, por tanto, escribir un código apropiado para el reconoci­ miento de identificadores. En la etapa de análisis léxico de un compilador, hay un aspecto que'no estaba presente en el ejem plo de los enteros como entrada y es el hecho de que al tratar de reconocer un lexema se tienen distintas posibilidades. Por ejem plo, si la cadena actual fracasa como comentario, nos gustaría com pro­ bar si puede ser un identificador y, si fracasa tam bién aquí, si puede ser cual­ quier otro com ponente léxico. Generalmente, en un compilador, el autómata finito que reconoce todos los componentes léxicos está ordenado de alguna manera y, sistem áticam ente, se aplica a la cadena hasta que se tiene éxito o falla en todo. Si falla, la cadena no puede formar parte de un programa cons­ truido correctam ente. Ejercicios de la Sección 2.10 2.10.1. Escriba un código, en su lenguaje de programación favorito, para implementar el autómata finito de la Figura 2.53. 2.10.2. Escriba un programa, en su lenguaje de programación favorito, para implemen­ tar e! autómata finito que acepta enteros con signo y sin signo. 2.10.3. Escriba una rutina, en su lenguaje de programación favorito, que identifique nú­ meros reales con y sin signo (para simplificar, suponemos que los números re­ ales no vienen representados en notación exponencial, es decir, 1.23e-9). 2.10.4. Escriba una rutina, en su lenguaje de programación favorito, que identifique una cadena como un entero con y sin signo, un numero real con y sin sigho, un comentario o un identificador (mire el ejemplo que precede a los ejer­ cicios). www.FreeLibros.com LENGUAJES REGULARES 93 PROBLEMAS 2.1. El algoritmo de Moore. Sabemos que si L\ y Z,2 son lenguajes regulares sobre X, entonces X* - L\ y 2T - L2 son lenguajes regulares y por consiguiente L\ n (Z‘ - La) y ¿ 2 í" 1 (X* - L\) también lo son. Sea L - {L\ n (X* - LO) u (¿ 2 ^ (X* - ¿ 1)) y obsérvese que, puesto que L es regular, es aceptado por una autómata M. Por el Teorema 2.9.2, podemos de­ terminar si M acepta alguna cadena (es decir, si L = 0 o no). Pero obsérvese que, si M acepta una cadena, entonces L contiene una cadena y, por tanto, L\ n (X* - ¿ 2) y ¿ 2 ^ (2* - L\) no pueden ser ambos vacíos. Supongamos que tenemos L\ n (X* - ¿ 2) s*0- Entonces existirá alguna ca­ dena que esté en L\ y no en ¿ 2, y por tanto L\ * Li. Igualmente, si ¿ 2 n (X* - L\) * 0 , también llegaremos a que L\ ■£¿ 2 - Por otro lado, si M no acepta nin­ guna cadena, entonces L = 0 y, por tanto, L\ n (X* - Li) y Li n (X* - L\) serán ambos vacíos. Es decir, no hay ninguna cadena en L\ que no lo esté en ¿ 2, y vi­ ceversa, y así L| = La. Hemos probado que hay un algoritmo para determinar si dos lenguajes re­ gulares son el mismo. Sin embargo, nuestro algoritmo no es particularmente efi­ ciente, ya que primero tenemos que construir el lenguaje L, obtener un AFD para él y después determinar si dicho AFD acepta alguna cadena. A continua­ ción veremos un algoritmo mucho menos complejo que el de Moore. Supongamos que M y M' son dos AFD sobre el alfabeto X. Para que la pre­ sentación sea lo más sencilla posible, supondremos que X= {a, b}. Primero re­ nombraremos los estados de M y M' para que todos los estados sean distintos. Supongamos que q\ y q{ son los estados iniciales de M y M \ respectivamente. Construiremos una tabla de comparación que (en este caso) consta de tres columnas. Las entradas de cada columna son pares de estados (q, q'), uno de M y otro de M’. La entrada de la columna 1 indica el par de estados que será trata­ do en la fila correspondiente. La entrada de la columna 2 es el par de estados que sigue a los de la columna 1 mediante una transición con a. Del mismo modo, la entrada de la columna 3 es el estado siguiente por medio de una transi­ ción con b. Por tanto, si (q, q ) están en una entrada de la columna 1 y (p, //) y (r, r) son las entradas de la columna 2 y la columna 3 para la misma fda, entonces 8 (q, a) = p, 8' (q a ) = p', 8 (q, b) = r y 8' (q\ b) = r son las transiciones de M y M'. Construiremos la tabla fila por fila empezando por {q\, q f) como entrada de la columna 1 y primera fila. En general, si (<7 , q ) está en la columna I de cual­ quier fila, rellenaremos la columna 2 y la columna 3 de fornp apropiada. Si cualquiera de las entradas de la columna 1 y la columna 2 no están ya en la co­ lumna 1 se añadirán antes de seguir con la fila siguiente. Siempre que en la tabla (y para cualquier columna) encontremos un par (j), p') en el cual p es un estado final de M, pero p no es un estado final de M’ (o viceversa), se parará el proceso ya que habremos llegado a la conclusión de que www.FreeLibros.com TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES M y M' no son equivalentes. De otro modo, el proceso parará cuando no quede ninguna fila por completar. En este caso, M y M' son equivalentes. Por ejemplo, los AFD de la Figura 2.54 no son equivalentes porque su ta­ bla es (parcialmente) como sigue: Columna 1 transición a columna 2 transición b columna 3 (<7 i.<7 i') (quqi') {qi,qí) (<?2 , q i ) (<73. <?/) (<7 1 . 93 ') a a —>® • \<k q3 Figura 2.54 Aunque la tabla no se ha completado, el proceso termina porque q\ es un estado final del primer AFD, pero <73' no es un estado final del segundo. Por tan­ to, dichos AFD no son equivalentes. El algoritmo de Moore se puede ampliar apropiadamente para cualquier al­ fabeto £. Simplemente se incluirá una columna para cada símbolo de X. 1. ¿Son equivalentes los AFD de la Figura 2.55 de la página 95? 2. ¿Son equivalentes los AFD de la Figura 2.56 de la página 95? :.2. Considérese el AFD dado en la Figura 2.57 de la página 96. Obsérvese que cier­ tos estados se comportan de la misma forma para toda cadena de entrada. Por ejemplo, si estamos en el estado q2 o q%y analizamos cualquier cadena de entra­ da no vacía, llegamos al mismo estado. De alguna forma la presencia de <72 y q% es redundante. www.FreeLibros.com LENGUAJES REGULARES a ® a 3 - » ® i— 95 ~— ü / i b a[ • <- la (J Figura 2.55 -» • -> ® (7 a, fc>, c Figura 2.56 Conviene obtener un AFD para un lenguaje que sea el AFD mínimo, en el sentido de que tenga un número mínimo de estados. Esencialmente, lo que hare­ mos será eliminar todos los estados redundantes (según vimos anteriormente). Sea M = (Q, 2, s, F, 8) un AFD. Los estados p y q son distinguibles si para alguna cadena x de £*, se tiene que 8 (p, x) e F y 8 (q, x) & F, o viceversa. Si todos los pares de estados son distinguibles, M no tiene estados redundantes y, por tanto, ya es un AFD mínimo. Por otro lado, si M contiene uno o más con­ juntos de estados no distinguibles, se puede eliminar la redundancia reempla­ zando cada conjunto por un único estado. www.FreeLibros.com 96 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Figura 2.57 Los pares de estados equivalentes (no distinguibles) se pueden encontrar por medio de una tabla en la cual cada fila y columna corresponden a un estado. Inicialmente, se marcan como distinguibles las entradas correspondientes a un estado final y a un estado no final. Entonces, para cada par de estados que no se conocen como distinguibles, se considera p(¡ = 8 (p, a) y qa = 8 {q, a) para todo a e E. Si pa y qa son distinguibles por medio de la cadena x, entonces p y q son distinguibles por medio de la cadena ax. Así, si la celda correspondiente a p¡, y q„ está marcada para alguna a, mar­ caremos la celda para p y q. Si para todo a e X, no está marcada la celda corres­ pondiente a /?„ y q„. introduciremos (/;. q) en una lista asociada con (p„, qa) para todo a. Si posteriormente se obtiene que p„ y q„ son distinguibles, se marcarán también p y q. Puesto que las celdas simétricas con respecto a la diagonal co­ rresponden a los mismos pares de estados, necesitamos menos de la mitad de la tabla. Es más, las celdas correspondientes a la diagonal son no distinguibles. La tabla siguiente corresponde al AFD del ejemplo precedente. <72 A' <73 X X <74 X X X X X <75 X <76 X X X <77 X X X X X X <78 X X X X X X <?3 <74 <?5 í/6 <77 q\ <72 X www.FreeLibros.com LENGUAJES REGULARES 97 Las colecciones de estados no distinguibles son {q\, q¡}, {q2, <?«}. {<y4, q6), { } y {<77}. En el AFD reducido que obtenemos reemplazaremos cada colec­ ción de estados no distinguibles por un único estado. Por tanto, el AFD reducido para nuestro ejemplo es el de la Figura 2.58. 1. 3. Obtener los AFD mínimos que correspondan a los AFD de la Figura 2.59. Sea E = {(a, b, c) | a, b, c e {0, 1}} el alfabeto formado por todas las 3-tuplas de ceros y unos. Trataremos cada 3-tupla como un vector columna, es decir, Entonces, una suma binaria tal como 0011 + 0101 1000 se puede interpretar como la cadena 1. 2. 1 0 v0 sobre X. V/ \ Probar que el lenguaje L\ sobre Z, compuesto por todas las cadenas que representan sumas binarias “correctas”, es un lenguaje regular. Usar el lema de bombeo (Lema 2.9.1) para probar que el lenguaje L¿ for­ mado por todas las cadenas que representan productos binarios correctos no es un lenguaje regular. Hay muchas formas de tratar la adición. Cuando realizamos una suma, generalmente sumamos los pares de dígitos correspondientes y un valor previo para obtener un dígito resultante y un resto. Consideremos la suma binaria donde el valor de entrada es un 0 ó un 1. Si el valor previo es un 0, entonces se obtiene un resto sólo si el par de dígitos son dos unos. Si www.FreeLibros.com 98 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Figura 2.59 el valor previo es un 1, entonces la única forma de que un resto no sea un 1 es que el par de dígitos a sumar sean dos ceros. Vamos a usar la notación (x, y)/z para denotar el par de dígitos (x, y) que representan a los sumandos y z para indicar el dígito que resulta al su­ mar x + y + (valor existente). Entonces, la suma binaria puede ser repre­ sentada mediante el diagrama de la Figura 2.60. Obsérvese que este diagra­ ma es muy semejante a un diagrama de transición de un autómata finito. De hecho, tendremos dos estados distintos que corresponden a los valores previos, y unas transiciones entre los estados que dependen de los dígitos a sumar (entrada), así como de los valores actuales (estado), y de un estado www.FreeLibros.com LENGUAJES REGULARES 99 inicial (el valor es inicialmente 0). La única diferencia entre este diagrama y el diagrama de transición de un autómata finito es que en éste la salida se representa como el resultado de una suma. ( 1, 0)/0 (0,1 )/1 (0, 1)/0 (1 ,1)/1 ( 0 , 0)/0 (1,0)/1 ____ _______________________ (1.D /0 estado = 0 t ______________________(0, 0)/1 Q -> • __ l estado = 0 Figura 2.60 Un transductor de estados finito determinista (autómata que produce una salida) es una 6-tupla M - (Q, Z, F, s, 8, x), donde Q es un conjunto fi­ nito de estados que contiene un estado inicial distinguible i ; E y F son alfa­ betos, siendo Z el alfabeto de entrada y F el alfabeto de salida; 8 es la fun­ ción de transición, donde 8: Q X X —> Q\ y x es la función de salida, donde t ! ¡2 x e —^ r. Obsérvese que, al igual que en los autómatas finitos vistos en este ca­ pítulo, 8 depende del estado actual y del símbolo de entrada actual, x tam­ bién depende del estado y la entrada actual y proporciona una salida. Es importante notar que no hay ningún conjunto de estados finales. Los transductores no se ocupan de aceptar la entrada, sino de transformarla • en una salida. En este sentido, los transductores transforman cadenas de entrada en cadenas de salida. Es decir, computan una función de Z” en F'. 3. Considérese una máquina expendedora de latas de soda. Por sencillez, su­ ponemos que hay un botón de selección y que la soda cuesta 0.30 dólares. También suponemos que, una vez que se han introducido 0.30 dólares en la máquina, cualquier moneda que se introduzca posteriormente será de­ vuelta. Crear un transductor de estados finito determinista que modele el comportamiento de la máquina expendedora. 4. ¿Cómo se debería construir el transductor de estados finito determinista para que acepte un lenguaje? 2.4. Caracterización de los lenguajes regulares. L c cí. En la Sección 2.9 y en sus ejercicios, vimos lenguajes no regulares de la forma {a' | i satisface alguna condición} Por otro lado, muchos lenguajes que son de esta forma son regulares, por ejemplo, los lenguajes Li = {«A+' | i > 0} pafó k = 0 ,1 ,... Es razonable pregun­ tarse bajo qué condiciones es regular un lenguaje de estas características. En este problema obtendremos un resultado que responderá a dicha pregunta. www.FreeLibros.com 100 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Una progresión aritmética es una secuencia de números naturales igual­ mente espaciados. Por ejemplo. {4,7,10,...} es una progresión aritmética. Toda progresión aritmética tiene dos parámetros que la determinan completa­ mente: el punto de partida p y la diferencia común q. Se puede definir una pro­ gresión aritmética en términos de esos dos parámetros: Ap(/ = {x|x = p + nq para algún n e N} Obsérvese que, según esta definición, un conjunto que contenga un único número natural es una progresión aritmética con q - 0. Así, por ejemplo, {3} es la progresión aritmética A30. 1. Sea Ap(¡ una progresión aritmética. Probar que el lenguaje L dado a conti­ nuación es regular. L= {a'\i e Apq} Un conjunto X de números naturales es finalmente periódico si X es finito o si hay dos números naturales «<j > 0 y t > 1 para los cuales, si x > n 0, entonces x e X si y sólo si x + t e X. Por ejemplo, el conjunto {2, 3, 7, 14, 103. 109. 115, 121, ...} es finalmente periódico con n0 = 103 y t = 6 . Fíjese en que cualquier progresión aritmética Al>tl es finalmente perió­ dica ya que, si .v > p, entonces x e A,,(¡ si y sólo si x = p + nq para algún n, si y sólo si x + q = p + (n + 1) q e Apq. Es decir, se puede tomar no - p y t —<?• 2. Probar que la unión de dos progresiones aritméticas es un conjunto final­ mente periódico. 3. Probar que la unión de un conjunto X finalmente periódico con una progre­ sión aritmética Ai>t, es un conjunto finalmente periódico. Obsérvese que los Ejercicios 2 y 3 implican que la unión finita de pro­ gresiones aritméticas es un conjunto finalmente periódico. 4. Probar que todo conjunto finalmente periódico es la unión finita de progre­ siones aritméticas. Indicaciones: Obviamente, si X es finito queda probado. Supongamos que X es infinito. El conjunto {*|,v < no) es finito. ¿Qué rela­ ción existe entre el conjunto finito {.v|no¿A'<«o + í! y el conjunto {*|. í > « o + M? El resultado de los Ejercicios 3 y 4 es que un conjunto X es finalmente periódico si y sólo si es unión finita de progresiones aritméticas. 5. Probar que si L e a * y {/Ifl'e L) es finalmente periódico, entonces L es regular. 6. Probar que si L c a* es regular, entonces {/1a' e L] es finalmente periódi­ co. Indicación: Aplicar el Ejercicio 4 y el lema de bombeo. 7. Usar los Ejercicios 5 y 6 para probar que el lenguaje www.FreeLibros.com LENGUAJES REGULARES 101 L = {a"2|/i> 1) no es regular. Indicación: Considere el conjunto X= [n2\n > 1 } ¿Es finalmente periódico? 8. Aplicar los Ejercicios 5 y 6 para probar que los siguientes lenguajes no son regulares: (a) {ar \ n > \} (b) {ap\p es un primo} (c) [an'\n > 1 } 2.5. Homomortismos y sustitución. El Teorema 2.8.1 demuestra algunas propieda­ des de cierre de lenguajes regulares: el conjunto de lenguajes regulares es cerra­ do respecto a la unión, concatenación y cerradura de estrella. En este problema estudiaremos otras dos propiedades de esta clase de lenguajes. Sean los alfabetos Ej y £ 2 . Una sustitución asocia cada símbolo a e I | con un lenguaje SeX $. Formalmente, definiremos una sustitución como una fun­ ción / : Li —> 2Zi tal quef(a¡) =S¡, donde a¡ e £| y S¡ e 1%. Extender la sustitu­ ción a cadenas y lenguajes sobre £¡ dé forma que /(£ ) = £ f(w a )= f(w )f(a ) donde w e Z’í y a s Zi. Por ejemplo, sea I i = {a, b] y Z2 = {0, 1}. Se definen f(á ) = {011 }* y f(b) = {1001, 01101}. Entonces fia ba) = {011 }* {1001, 01101) {011 }* <X> f(ab*) = |J ;=o QO O O f{atí) = \ J f ( a ) f ( b ') = (J 1=0 = {011}4 U 1=0 {011 }* {1001, 01101 }¡ {1001,01101}* = {011}'' {1001,01101}* 1=0 1. Sean los alfabetos X | y £2 y /u n a sustitución, donde, para todo a e Z 1, f(a ) —R„ c Li es un lenguaje regular. Sean a y b elementos de £). (a) Probar q u c/(a u b) =f(a) <Jf{b). (b) Probar que / (a") = / (a)*. www.FreeLibros.com TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES (c) Sea /? c £| un lenguaje regular. Probar que f(R ) es un lenguaje regu­ lar. Indicación: Aplique inducción sobre el número de operadores en una expresión regular para R. Supongamos que/es una sustitución en la cual, para todo a e Zj,/(« ) contiene sólo una cadena. Dicha sustitución se llama homomorfismo. Si L c £ 1 , se dice que f (L) es la imagen homomórfica del lenguaje L. Si L e Z 2, se dice que/ “' (L) es la imagen homomórfica inversa del len­ guaje L. Por ejemplo, sea / : {a, b, c) —> {a, b}* definida como f ( a ) - a , f{b) = ba y f(c ) = a. Entonces, si L\ = a* {b kj c)*, se obtiene que / (L]) = a*\ba u a)*. Si L2 = (aba u a)*, entonces la imagen inversa es / “' (L2) = {(a u c) a u (a u c))*. [Obsérvese que/(a) = /(c ) = a por lo que / ”’ (a) = a u c.] En este caso, L2 es un lenguaje regular y / - 1 (¿ 2) también lo es. Esto, como se verá en el Ejercicio 2, no es una coincidencia. 2. Probar que, si L es un lenguaje regular y / e s un homomorfismo, entonces /~ ' (L) es un lenguaje regular. La afirmación anterior se puede generalizar. Si / es una sustitución, entonces/ “' (L) es regular si L es regular. Uniendo los ejercicios 1 y 2, se tiene que la clase de lenguajes regulares es cerrada con respecto a la ima­ gen homomórfica y la imagen homomórfica inversa. Puesto que los homomorfismos y sus inversas “preservan” la regulari­ dad, se pueden usar para determinar si un lenguaje es regular o no. La idea es tomar un lenguaje que no se sabe si es regular y tratar de transformarlo por medio de homomorfismos en un lenguaje regular o no regular cono­ cido. Por ejemplo, se sabe que el lenguaje {anbn\n > 1} no es regular. Con­ sidere el lenguaje L = {a"ba" | n > 1}. Aunque el lema de bombeo se puede aplicar para deducir que L no es regular, por medio de homomorfismos lle­ garemos a la misma conclusión. Supongamos que L es regular. Sea / : [a, b, c} —» {a, b}* el homomorfismo definido previamente y considere­ mos L\ = / " ' (L) = /~ ' ({anba"\n > 1}). Ya que/ “* (a) = a kj c, se obtiene que / - ' (a"ban) = {a'daVba'c'a'c"\i+j + k + l = n y r + s-f-f+M +l=/z} Por tanto / -l (L) = {a'dakclba’csa 'c "\ i+ j + k + l = r + s + t + u + 1} Entonces / “' (L) n a”be" = {a"bcn~ 11n > 1} Ya que a’bc* es, claramente, regular y ya que suponemos que L es re­ gular y que / - 1 (L) es regular, debemos obtener que (anbc>'~ 1 1 n > 1 } tam- www.FreeLibros.com LENGUAJES REGULARES 103 bién es regular. Ahora sea g: {a ,b ,c J -¥ {a, b}* el homomorfismo defini­ do mediante g (a) - a y g (b) = g (c) = b. Entonces se tiene g ( / " ' (L) n abe*) = g ({d'bc" ~ 11n > 1}) = {a"b" ¡n > 1} Puesto que g es un homomorfismo, tendremos que {a"b"\n> 1} es regular, lo que es una contradicción. Por tanto, no puede ser que {a"ban\ n > 1} sea regular. Probar que {a'b’c11i > /> 1} no es regular. Probar que {a'ba' \ i ¿ j e i,j > 1} no es regular. www.FreeLibros.com Lenguajes independientes del contexto GRAMÁTICAS REGULARES Las expresiones regulares y los autómatas finitos nos proporcionan dos medios para especificar o definir lenguajes. Las expresiones regulares nos proporcionan una plantilla o patrón para las cadenas del lenguaje. Todas las cadenas se corres­ ponden con un patrón en particular y dichas cadenas serán las únicas que forma­ rán dicho lenguaje. Igualmente, un autómata finito especifica un lenguaje como el conjunto de todas las cadenas que lo hacen pasar del estado inicial a uno de sus estados de aceptación. También se podría intexpretar un autómata como un generador de cadenas del lenguaje, según se plantea a continuación. Un símbolo se genera al recorrer el camino etiquetado con dicho símbolo y que parte del es­ tado actual al siguiente. Se empieza con la cadena vacía y se obtiene una cadena del lenguaje cuando el recorrido llega a un estado de aceptación. Por ejemplo, se considera el autómata finito dado por el diagrama de tran­ sición de la Figura 3.1. Este autómata finito acepta el lenguaje regular a (a u bv) b. Imaginemos que se comienza en el estado inicial y se atraviesa el diagrama de alguna forma. Cuando un camino va de un estado a otro, la “salida" es el símbolo que etiqueta dicho camino. Por tanto se podría obtener la cadena de salida aa2b pasando por los estados c¡\ - <72 - 1/3 - (¡3 - qj - <75 . Se ve fácilmente que las cadenas generadas de esta forma serán aceptadas por este autómata fini­ to. Es más, cualquier cadena aceptada por este autómata puede ser generada por este método. www.FreeLibros.com 106 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES a n a b Figura 3.1 Obsérvese que todas las cadenas del lenguaje precedente estarán formadas por una a seguida de alguna “parte final” . Si hacemos que E represente la parte final, lo dicho se puede representar simbólicamente mediante S —>aE. La flecha —> se puede interpretar como “puede ser” o “se compone de”. La parte final de una cadena estará formada por una de las dos listas de aes o bes. Por tanto, para indicar las múltiples posibilidades que hay para E podemos escribir E —»A y E —> B. Las dos listas de aes y bes se pueden expresar como A —» aA junto con A —>b para indicar que una cadena de aes va seguida de una b o como B ~ ^b B junto con B —>b, para indicar que una cadena de bes va seguida de otra b. En resumen, tendremos las siguientes expresiones S —^ aE E -^A E ^B A -> b A —> aA B ^b B -^bB Estas expresiones pueden ser consideradas como reglas de sustitución para la generación de cadenas. El símbolo que se encuentra a la izquierda de la flecha se puede sustituir por la cadena de la derecha. Por ejemplo, podemos generar aab empezando por S, sustituyéndola por aE, sustituyendo la E por aA y finalmente sustituyendo la A por b. Tendremos una secuencia de cadenas comenzando por S y terminando con aab. En cada paso, las letras mayúsculas (S, E y A) representan la parte de la cadena final que* toda­ vía no se ha generado. Bajo estas circunstancias tiene sentido interpretar la fle­ cha en las expresiones precedentes como “es sustituido por". www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 107 Finalmente, introduciremos el símbolo | que será interpretado como “o”. Si se usa este símbolo, las dos reglas E —>A y £ —>B, se pueden unir en E —>A \B. La colección precedente de reglas para generar cadenas puede volverse a escri­ bir como sigue: 1. S —» aE 2. E -* A \B 3. A —> ciA | B 4. B -$ b B \b La cadena cr’b se puede generar a partir de 5 aplicando primero la regla 1 para obtener aE. Entonces, aplicando la reglí1 2 se obtiene aA y aplicando la re­ gla 3 se obtiene aaA y aaaA\ finalmente, se puede aplicar la segunda parte de la regla 3 para obtener aaab. Podremos escribir una descripción del proceso de ge­ neración como S => aE => aA => aaA => aaaA => aaab donde la doble flecha => se interpreta como “deriva”, “produce” o “genera”. Usaremos la notación E ^ > w para indicar que la cadena w se deriva a partir de 5 en 0 o más etapas. Obsérvese que en este modelo hemos introducido una colección de nuevos símbolos para representar las porciones de cadena que no han sido generadas. Cuando las cadenas han sido completamente generadas, estarán formadas en su totalidad por símbolos del alfabeto £, pero antes de llegar a esto se obtendrán ca­ denas formadas por símbolos del alfabeto y por nuevos símbolos. Los nuevos símbolos se llaman no terminales, para indicar que deben ser sustituidos por símbolos del alfabeto antes de que la cadena haya sido totalmente generada. Por otro lado, los símbolos del alfabeto £ se llaman terminales, para indicar que no es posible que sean sustituidos. Obsérvese, también, que el símbolo usado para representar a una cadena que no ha comenzado a generarse, debe ser necesaria­ mente un no terminal. Finalmente, observemos que hemos generado las cadenas del lenguaje de izquierda a derecha — en las cadenas de las etapas intermedias por las que se pasa al aplicar las reglas, los no terminales deben aparecer sola­ mente en el extremo derecho. Esto refleja la forma en la que un autómata finito reconocería una cadena del lenguaje. Daremos la siguiente definición: Definición 3.1.1. Una gramática regular G es una 4-tupla G = (£, N, S, P). donde £ es un alfabeto, N es una colección de símbolos no terminales, S es un no terminal llamado símbolo inicial, y P es una colección de reglas de sustitución, llamadas www.FreeLibros.com 108 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES producciones, y que son de la forma A —>w, donde A e N y w es una cadena so­ bre l u N que satisface lo siguiente: 1. w contiene un no terminal como máximo. 2. Si w contiene un no terminal, entonces es el símbolo que está en el ex­ tremo derecho de w. El lenguaje generado por la gramática regular G se denota por L (G). Por ejemplo, considérese la gramática regular G = (Z, N, S, P), donde 1 = {a, b} N = { S ,A } P :S ^b A A —^ aaA | b 18 Obsérvese que L (G) contendrá todas las cadenas de la forma ba2nb y ba2". Es decir, L (G) = b (a2)* (b u e). Se puede demostrar, por inducción sobre n, que todas las cadenas de la forma ba2"b o ba2" están en L (G) y, por inducción sobre la longitud de una derivación, se demuestra que L (G) está contenido en b {a2)* (b u £). (La etaba base es para una derivación de longitud 2). De la definición se deduce que el lado derecho de una producción es una cadena de I ’ ( N u £). Obsérvese que £ puede ser el lado derecho de una pro­ ducción. En el ejemplo precedente, la producción A —> £ acaba con la generación de una cadena (al igual que la producción A -> b) ya que se “borra” el no ter­ minal A. Dado que las producciones emparejan no terminales de N con cadenas de I (/V u £), conviene representarlas como pares ordenados de iVx X* (N u £). Por tanto, el par (x, y) de N x I* (N u £) representa a la producción x —>y. Las producciones de P del ejemplo anterior se podrían representar mediante P = { ( S ,b A ) ,( A ,a a A ) ,( A ,b ) ,( A ,e ) } Si se llega al acuerdo de escribir los no terminales con letras mayúsculas y los terminales con letras minúsculas y además se conviene que S se use como símbolo inicial, entonces una gramática regular puede ser completamente espe­ cificada por medio de sus producciones. Por ejemplo, S —> a 5 | b especifica com­ pletamente la gramática regular que genera el lenguaje a b. www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 109 Ejercicios de la Sección 3.1 3.1.1. Usar las reglas de la Figura 3.1 para derivar ab, ab3, aa b. ¿Es posible derivar ababl 3.1.2. Supongamos que tenemos las reglas S —>aS\bT y 7" —>aa. Dar una derivación para abaa, aabaa y aaabaa. Probar como se deriva akba2 para k > \ . ¿Es posible derivar las cadenas baa, b o aal 3.1.3. Obtener una gramática regular para los siguientes lenguajes: (a) a*b u a (b) a*b\jb*a (c) (a*bUb*a)’ 3.1.4. La gramática regular dada por (. S —^ bA | flfíle A —»abaS B —>babS genera un lenguaje regular. Obtener una expresión regular para este lenguaje. 3.1.5. En nuestra definición de gramáticas regulares se dijo que si en el lado derecho de una producción hay un no terminal, éste debe estar situado en el extremo de­ recho. Esto corresponde a la generación de cadenas de izquierda a derecha. Por esta razón, una gramática regular también puede llamarse gramática regular por la derecha. Una gramática regular por la izquierda es aquella cuyas cade­ nas son generadas por la derecha, es decir, las producciones son pares de iV x (N u E ) X*. (a) Obtener una gramática regular por la izquierda para el lenguaje {anbaa | n > 0). (b) Obtener las gramáticas regulares por la derecha y por la izquierda para {w e {a,b, c}* | iv termina en b y toda c va seguida por una a] (c) Para toda gramática G = (X, N, S, P) que sea regular (por la izquierda o pol­ la derecha), se puede definir la inversa de G como G1 = (X, N, S. P'), donde P '= { (A ,x ') \( A ,x ) e P] Por tanto, s i A - ^ a B es una producción de G, entonces A —í>Ba es una pro­ ducción de G1. Supongamos que G es una gramática regular por la derecha. www.FreeLibros.com 110 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES i. Probar que G1 es una gramática regular por la izquierda. ii. Probar que w e L (G) si y sólo si w1 e L (G1) por inducción sobre el número de producciones usadas para obtener w. Se puede deducir de la parte (c) que la clase de los lenguajes genera­ dos por gramáticas regulares por la izquierda es la misma que la clase de los lenguajes generados por gramáticas regulares por la derecha. Por eso habitualmente, el término gramática regular se aplica para referirse a cual­ quier gramática ya sea regular por la izquierda o regular por la derecha. 3.2 GRAMÁTICAS REGULARES Y LENGUAJES REGULARES Supongamos que L es un lenguaje regular. Se puede obtener una gramática regu­ lar que genere L por medio de un AFD M = (Q, £, s, F, 8) para el cual L - L (M). Definimos G = (N, X, S, P) por N-Q I =Z S =s P = {(q, ap)\§ (q, a) p} u {{q, e)|<?e F] Es decir, q —> ap siempre que 8 (q, a ) - p y q —^> zú q es un estado de acep­ tación del AFD. Por ejemplo, el AFD dado en la Figura 3.2 acepta el lenguaje a*b. La gra­ mática regular correspondiente tiene las producciones q\ ~ ^ a q \\b q 2 q 2 -> aq 3 \ bq 3 1 8 qi aq?, | bq-i En esta gramática los q¡ son no terminales (una ruptura con la notación usual, la cual puede ser restablecida sólo con renombrar los q¡ y cj\ como símbo­ lo inicial). Obsérvese que w e L (M) para w = a i 02 ... o„ significa que 8 (s, c?i 02 ••• —p a a a. b Q2 t ) a, b Figura 3.2 www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 111 para algún p e F. Si escribimos q¡ + 1 = 8 (q,, o¡) con q\ = s, entonces se obtiene 8 (s, Oí 02 ... 0„) = b (q i,O i 02 ... o„) = 8 (<?2> 02 ... On) = 8 (#3, 03 ... 0„) = 8 (<7», 0/j) = /? e F Ahora, puesto que q¡+ i = 8 (<?,•, 0 ;), se obtiene que q¡ -» G y, por tanto, (ya que = <yi) 0 / g,+ i pertenece a 5 = q\ => 0 | q 2 => 0 l 0 2 q 3 => 0] 02 ... On p => 01 02 ... On Así que w e L (M) implica que w es generada por G; es decir, ¿ (M )c L (G ). A la inversa, si w es generada por G, mediante la derivación siguiente q\ => 0i qi => 0i 02 <73 => 0 1 02 ... 0« p => 01 02 ... 0« entonces en M tendremos 8(5, 01 02 ... 0„) = 8(qi,0i 02 ... o„) - 8 (<72, 02 •• • 0,i) = 8(q3, 03 ... On) = 8 (<7h, 0») -p g F \ (ya que 5 = q i). Asi, que w e L (G) implica que w e L (M ), con lo que se tiene que L (G) c L (M). Entonces se deduce que L (G) = L (M). www.FreeLibros.com 112 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES También es posible partir de una gramática regular G y construir un AFN M de forma que L (G) = L (M). Sea G = (N, X, S, P) una gramática regular; se defi­ ne M - (Q, X, .y, F, A) mediante Q = N u {/}, donde/ es un símbolo nuevo s-S F = \f} y A se construye como se indica a continuación, a partir de las producciones de P: 1. Si A —» a i ... a n B es una producción de P con A y fí como no termina­ les, entonces se añadirán a Q los nuevos estados q i, <72 , <?«- 1 y las transformaciones siguientes A (A, 2. ai ... a„) = A(<?i,a2 ... a„) = ... =A(^,;_i,a„) = B Si A —>a i ... c„ es una producción de P, entonces se añadirán a Q los nuevos estados q\, <72, qn- 1 y a A, las transiciones siguientes A (A, a i ... a„) = A (¡yi, a2 ... a,;) —... —A (q„ _ 1 , a(í) —f La construcción de A se puede concebir a partir de cómo estén etiquetadas las aristas del diagrama de transición correspondiente a M y entonces se añadi­ rán los estados necesarios para cada uno de los símbolos de la cadena. Por tanto, si A —> a i ... a„ S, primero podríamos etiquetar las aristas entre A y B con a i ... G„ y después añadir n - 1 estados nuevos, en la arista resultante: Q] 02 O,, 9 ------------ > • ------------ > O 9 • * ------------ > • A B Por ejemplo, la gramática regular S —> aB | bA | e A —> abaS B —> babS daría como resultado el AFN cuyo diagrama de'transición se muestra en la Fi­ gura 3.3. » Si G es una gramática regular y w e L (G) con vv = a i ... a,„ entonces para los no terminales Aj, A2, ..., A , 1 , se tiene la derivación www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 113 S =» a i A\ => ... => 01 ... Gn- l A n - l => 01 ... 0,¡ y entonces en el AFN resultante de esta construcción se tendrá A (s, 01 ... G„) = A (Ai, 0 2 ••• 0 n) = = A(A„_ i, 0„) = / Por lo tanto, w e L ( M ) . A la inversa, si A (s, 0 i ... 0„) = /, entonces 5 => 0 1 ... 0,„ con lo que w e L (G). Luego L (G) = L (M). Aunque hemos demostrado las técnicas de construcción más usuales, en re­ alidad hemos demostrado mucho más: Figura 3.3 T eorem a 3.2,1. L es regular si y sólo si es generado por una gramática regular. Por tanto, tenemos tres métodos generales de especificación de lenguajes: las expresiones regulares, los autómatas finitos y las gramáticas regulares. Ejercicios de la Sección 3.2. 3.2.1. Construir una gramática regular para el lenguaje regular aceptado por el autó­ mata finito de la Figura 3.4. 3.2.2. Construir un AFN para la gramática regular S-> aS\bB\b B —^ cC C —^ üS www.FreeLibros.com 114 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 3.2.3. Construir un autómata finito para la gramática regular S —>abA | B | baB \ e A -> b S \b B —^ ciS 3.2.4. Obtener una gramática regular para el lenguaje L= jiv e {a, &¡* | w no contiene la subcadena cía i 3.2.5. Obtener una gramática regular para L = {a"b" \ n > 0}. 3.2.6. Una producción regular por la izquierda es una producción de la forma A —>Bw, donde A y B son no terminales y w es una cadena de terminales. Una producción regular por la derecha es una producción de la forma A —> wB. Por tanto, las gramáticas regulares por la izquierda (véase Ejercicio 3.1.5) y las gra­ máticas regulares por la derecha contienen solamente producciones regulares por la izquierda y producciones regulares por la derecha, respectivamente. Pro­ bar que una gramática regular no puede contener ambos tipos de producciones. GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO Recordaremos que en nuestra definición de gramáticas regulares se requiere que el lado derecho de todas las producciones contenga al menos un no terminal. Es más, cuando un no terminal está presente, debe aparecer al final de la cadena (final izquierdo o final derecho, dependiendo de sr es una gramática regular por la izquierda o por la derecha). Para expresar esto formalmente, se requiere que las producciones satisfagan P c W x I 4 (N u e) (o, en el caso de la regularidad por la izquierda, P c /V x (N u e) X*). Este requerimiento restringe en gran me- www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 115 dida la manera en la que se pueden formar las producciones y, en consecuencia, restringe las clases de lenguajes que se pueden especificar. Supongamos que se permite que P q N x ( N kj Z)*, de forma que las pro­ ducciones puedan tener cero, uno o más no terminales que aparezcan en cual­ quier lugar del lado derecho de las mismas. Por ejemplo, la gramática dada por 5 —> afi | M A H> a\aS\bA A B —> b \b S \a B B es una gramática de este tipo. Observe que, en definitiva, esta gramática no es una gramática regular. Por otro lado, todas las gramáticas regulares satisfacen este nuevo requerimiento en lo que respecta a la forma en la que se construyen las producciones y, por tanto, son gramáticas de este tipo. De esta forma, tendre­ mos más de un tipo general de gramáticas. Definición 3.3.1. Una gramática independiente del contexto (GIC) es una 4-tupla G ^ÍK X ^P l donde N es una colección finita de no terminales, £ es un alfabeto (también co­ nocido como conjunto de terminales), 5 es un no terminal determinado que se llama símbolo inicial y P c A 'x (N u X)* es un conjunto de producciones. >El lenguaje generado por la GIC G se denota por L (G) y se llama lenguaje independiente del contexto (LIC). Por ejemplo, puesto que toda gramática regular es una GIC, se tiene que todo lenguaje regular es un LIC.jy Al igual que una gramática regular, una GIC es una forma de probar cómo se generan cadenas en un lenguaje. Como con las gramáticas regulares, usare­ mos la notación => para indicar el acto de generar como opuesto a — el cual es parte de una regla de producción. Cuando derivamos una cadena, los no termina­ les representan la parte de la cadena que todavía no se ha generado. En el caso de las gramáticas regulares, la parte de la cadena no generada siempre aparece al final. En las GIC que no son gramáticas regulares, puede haber más de un trozo no generado y pueden aparecer en cualquier lugar de la cadena. Cuando la deri­ vación se completa, todos los trozos no generados habrán sido sustituidos por cadenas (posiblemente vacías) de símbolos terminales. Consideremos la GIC dada por * www.FreeLibros.com 116 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES La inducción sobre n prueba que esta gramática independiente del contex­ to genera el lenguaje independiente del contexto {a"bn\ n > 0 } . Por el Capítulo 2 sabemos que este lenguaje no es regular. Por tanto, hay lenguajes inde­ pendientes del contexto que no son lenguajes regulares. Es decir, el conjunto de los lenguajes independientes del contexto contiene al conjunto de los lenguajes regulares. Dedicaremos bastante tiempo al estudio de las gramáticas independientes del contexto y los lenguajes independientes del contexto. Sin embargo, antes de continuar, debemos mencionar otras formas de expresar las gramáticas regula­ res. Al generalizar, las gramáticas independientes del contexto, debemos elimi­ nar todas las restricciones con respecto al lado derecho de las producciones, per­ mitiendo que el mismo pueda estar formado por cualquier cadena sobre N u~ L . Lo único que debemos tener en cuenta en la generalización es la parte izquierda de las reglas de producción. Una gramática de estructura de frase es aquella en la que los lados izquierdos de las reglas de producción pueden estar formados por cualquier cadena no vacía sobre i V u ! , las cuales contienen algún no termi­ nal. Por tanto, para una gramática de estructura de frase, la colección de reglas de producción P satisface P c ( A f u 1)*N (N u 2)* x(Wu I)* Las gramáticas de estructura de frase se conocen como de tipo 0 o gramáti­ cas no restringidas. El término independiente del contexto, cuando se aplica a gramáticas, su­ giere que debería haber gramáticas que dependieran del contexto. Las gramáti­ cas dependientes del contexto son gramáticas de estructura de frase, en las cua­ les las producciones se restringen a a —> P, tal que I a l < I f}|. Hay una forma normal para estas gramáticas, en la cual toda producción es de la forma « i A (X2 —> a i (3 a i con (3 ^ e . Tales producciones permiten que el no terminal A sea reemplazado por la cadena P, sólo cuando A aparezca en el “contexto” de a , y a 2. Las gramáticas dependientes del contexto no pueden generar tantos lengua­ jes como las gramáticas de estructura de frase, aunque permiten que las deriva­ ciones se realicen de forma predecible. Sin embargo, obsérvese que, puesto que |S | = 1 y leí = 0 , es imposible derivar la cadena vacía en una gramática que sea verdaderamente dependiente del contexto. A menudo, los lenguajes de progra­ mación se crean para ser dependientes del contexto con el fin de simplificar el proceso de la compilación. www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 117 Ejercicios de la Sección 3.3 3.3.1. Dada la siguiente gramática independiente del contexto S^A A A -» AAA \a\bA\Ab (a) Obtener una derivación para la cadena b2aba2ba. (b) Probar cómo puede obtenerse una derivación para bm' ab"'2a ... b'"2" ab'”2"* para todo n > 0 y m¡, m2..... m2n+ 1 > 0 . 3.3.2. La gramática G independiente del contexto dada por S —>aSb| aSa| bSa\bSb 16 no es una gramática regular, aunque L (G) es un lenguaje regular! Obtener una gramática regular G' tal que L (G') = L (G). 3.3.3. Obtener una gramática independiente del contexto para cada uno de los siguien­ tes lenguajes independientes de contexto: (a) {a"’b" | m > n } (b) {w c {a, b }*| w tiene el doble de aes que de bes} (c) {ánbn\n < m < 2n} (d) {a!"b"cpd q\m +n> p + q) ÁRBOLES DE DERIVACIÓN O DE ANÁLISIS Y AMBIGÜEDAD Cuando una cadena se deriva mediante una gramática independiente del contex­ to, el símbolo inicial es sustituido por alguna cadena. Los no terminales de esta cadena son sustituidos uno tras otro por otra cadena, y así sucesivamente, hasta que se llega a una cadena formada sólo por símbolos terminales. No se puede re­ alizar ninguna sustitución más, puesto que no hay no terminales que puedan ser sustituidos. A veces, es útil realizar un gráfico de la derivación, que indique de qué manera ha contribuido cada no terminal a formar la cadena final de símbo­ los terminales. Tal gráfico tiene forma de árbol y se llama árbol de derivación (o árbol de análisis). Un árbol de derivación para una derivación dada se construye creando un nodo raíz que se etiquetó con el símbolo inicial. El nodo raíz tiene unos nodos hijos para cada símbolo que aparezca en el lado derecho de la producción usada para reemplazar el símbolo inicial. Todo nodo etiquetado con un no terminal también tiene unos nodos hijos etiquetados con los símbolos del lado derecho de www.FreeLibros.com 118 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES la producción usada para sustituir ese no terminal. Los nodos que no tienen hijos deben ser etiquetados con símbolos terminales. Consideremos la gramática independiente del contexto S-> A B A a A \ a B -> b B \b La cadena aabbb puede ser derivada mediante S => A B => AbB=> AbbB => Abbb=> aAbbb => aabbb En la Figura 3.5 se presenta un árbol de derivación para esta derivación. Co­ menzamos en la raíz S y generamos los hijos A y B. A y B son raíz del subárbol correspondiente a la parte de la cadena final que ellos generan. Obsérvese que todos los nodos hoja están etiquetados con símbolos terminales. Si se leen las hojas de izquierda a derecha, se obtiene la cadena aabbb. Figura 3.5 b Finalmente, obsérvese que hay muchas derivaciones posibles para la cadena aabbb, las cuales también tienen el árbol de derivación anterior. Por ejemplo, S =$ A B => aAB=> aaB => aabB => aabbB => aabbb y S => A B => aAB=$ aAbB => a A bbB => aAbbb => aabbb Para esta cadena y esta gramática, todas las derivaciones de aabbb tienen el mismo árbol de derivación. Sin embargo, no tiene porque cumplirse siempre. Para verlo, considérese esta gramática * S->SbS\ScS\a Podemos derivar la cadena abaca de dos formas distintas como sigue: www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 1. S=> SbS=> SbScS => SbSca => Sbaca => abaca 2. S => S c S => SbScS => abScS => abacS => abaca 119 El árbol de derivación para la derivación 1 es I a mientras que el árbol para la derivación a 2 ( a es a Obsérvese que los dos árboles son distintos, aunque las cadenas producidas son la misma. (La cadena derivada corresponde a los nodos hoja y se llama pro­ ducto del árbol de derivación). Una gramática se dice que es ambigua si hay dos o más árboles de deri­ vación distintos para la misma cadena. Una gramática en la cual, para toda cade­ na w, todas las derivaciones de w tienen el mismo árbol de derivación, es no am­ bigua. La ambigüedad puede ser un problema para ciertos lenguajes en los que su significado depende, en parte, de su estructura, como ocurre con los lenguajes naturales y los lenguajes de programación. Si la estructura de un lenguaje tiene más de una descomposición y si la construcción parcial determina su significa­ do, entonces el significado es ambiguo. Consideremos la sentencia “Juan vio a un hombre con un telescopio”. El significado de esta sentenciares ambiguo debi­ do a que “con un telescopio” puede describir al hombre que vio Juan o a la téc­ nica que Juan empleó para ver al hombre. * Consideremos otro ejemplo de ambigüedad que obscurece el significado de las expresiones. Sea la siguiente gramática de asignaciones de expresiones: www.FreeLibros.com 120 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES A ^I]= E Ia _ \b \c e -* e ± e \e * e \W _ \i Los símbolos terminales han sido subrayados. La cadena a := b + c * a es una cadena de este lenguaje de sentencias de asignación. Hay dos árboles de derivación distintos para ella (véase Figura 3.6) A A b I c I a I I b e a Figura 3.6 Si pretendemos determinar cómo se calcula el valor de la derecha del opera­ dor de asignación (el símbolo :=), se obtienen dos resultados posibles, b + (c * a) o (b + c) * a. En general, estos resultados no son iguales. En algunos casos, si la gramática es ambigua, se puede encontrar otra gra­ mática que produzca el mismo lenguaje pero que no sea ambigua. Por ejemplo, la gramática S ^ A \B A —^ a B —^ ci es ambigua porque tiene dos árboles de derivación para la cadena a. Una gramá­ tica equivalente que no es ambigua es S —^ ci Si todas las gramáticas independientes del contexto para un lenguaje son ambiguas, se dice que el lenguaje es un lenguaje independiente del contexto in­ herentemente ambiguo. El lenguaje ' L - {alb->ck | i - j o j = k} www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 121 es inherentemente ambiguo. Intuitivamente, una gramática para L debe tener una clase de árbol de derivación para generar las cadenas para las cuales i = j y otro para las cadenas en las cuales j = k. Si una cadena tiene i = j - k, tendrá dos deri­ vaciones. Vimos anteriormente que una* cadena dada no puede tener más de una deri­ vación igual en una gramática independiente del contexto no ambigua. Las deri­ vaciones distintas corresponden a la elección de distintos no terminales a expan­ dir. Por convención, dos formas de generar una cadena tienen una única salida. En una derivación por la izquierda el no terminal que se expande es, siempre, el del extremo izquierdo. Por tanto para la gramática S —>SbS\ScS\ a una derivación por la izquierda de abaca será S => ScS=> SbScS => abScS => abacS => abaca Una derivación por la derecha es aquella en la cual el no terminal que se expande es el del extremo derecho. Por tanto S => ScS=> Sea => SbScá => Sbaca => abaca es una derivación por la derecha de la cadena dada. Obsérvese que las dos deri­ vaciones tienen el mismo árbol de derivación: a a Este árbol de derivación también es compartido por otras derivaciones. En esta gramática S => S b S => abS => abScS => abacS => abaca ■* es una derivación por la izquierda distinta de la precedente. La presencia de dos derivaciones por la izquierda distintas se corresponde con la existencia de dos árboles de derivación distintos. Por tanto, una gramática ambigua se caracteriza por tener dos (o más) derivaciones por la izquierda para la misma cadena. www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 123 Nos gustaría establecer las restricciones necesarias para que las produccio­ nes se formen de manera que el árbol de derivación resultante no sea necesaria­ mente complejo o inútilmente sencillo. A la vez, no se pretende constreñir la formación de producciones hasta el punto de que no se pueda generar ningún lenguaje independiente del contexto a partir de los conjuntos de producciones que cumplan las restricciones. Pretendemos encontrar un modelo formal están­ dar (o una forma normal) para las producciones. Como primer paso en el desarrollo del modelo, necesitamos limpiar las gra­ máticas para eliminar las producciones y símbolos inútiles. Consideremos la gramática independiente del contexto del ejemplo siguiente: Ejemplo 3.5.1 S ^A a \B \D B -> b A —» aA\bA\B C —>abel Obsérvese que C nunca formará parte de una derivación que parta del sím­ bolo inicial, es decir, no existe S => aC(3 para toda cadena a y p de (WuZ)*. Por consiguiente, el símbolo C y la producción C ¡U abd son inútiles en el sentido de que nunca podrán contribuir a la generación de una cadena de L (G). El símbolo D se obtiene a partir de S pero nunca deriva una ca­ dena de símbolos terminales y, por tanto, nunca formará parte de una derivación de una cadena de terminales. Por tanto, D también es inútil, aunque por distinta razón. Por otro lado, el símbolo B es, en cierto modo, redundante, ya que deriva únicamente un símbolo terminal; por tanto, las derivaciones S => B => b y A B ==>b podrían ser reducidas de forma que S => b y A => b, y eliminándose B. Finalmente, obsérvese que si se elimina la producción C -» abd, el símbolo terminal d no puede aparecer en ninguna cadena de terminales generada me­ diante la gramática resultante. Por tanto, hemos identificado muchos aspectos en los que las gramáticas in­ dependientes del contexto pueden ser depuradas. Cualquiera de e,sos problemas pueden ser eliminados sin afectar a la capacidad de generación de la gramática. Primero se eliminarán los no terminales que no deriven cadenas de terminales, tales como D en el Ejemplo 3.5.1. Sea G = (N, Z, S, P) una gramática independiente del contexto. Transforma­ remos G en G' = ( N \ Z, S, P') de forma que L (G) = L (G') y, para todo A e N ', www.FreeLibros.com 124 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES se obtenga que A ==> w para algún w e 2T. Para realizarlo, construiremos iterati­ vamente el nuevo conjunto de no terminales N ' y el nuevo conjunto de produc­ ciones P' como sigue: Algoritmo 3.5.1. 1. Inicializar N ' con todos los no terminales A para los que A —> w, es una producción de G, con w e X*. 2. Inicializar P' con todas las producciones A —> vv para las cuales A e N ' y w e 1 *. 3. Repetir Añadir a N ' todos los no terminales A para los cuales A —» vv, para algún vv e (/V' u £)* que sea una producción de P y añadirla a P'. hasta que no se puedan añadir más no terminales a N '. Obsérvese que el bucle del paso 3 termina, ya que N y P son finitos. Esen­ cialmente, lo que estamos haciendo es recorrer hacia arriba todos los posibles ár­ boles de análisis a partir de las cadenas de terminales, anotando los no termina­ les (y las producciones) que se encuentren. Todo no terminal (y producción) que no aparezca en N ', no contribuirá a formar una subcadena de cualquier cadena “final’" de terminales que sea generada por la gramática. Por tanto, su elimina­ ción no altera el lenguaje generado. Por ejemplo, en la gramática del Ejemplo 3.5.1, esperábamos eliminar el no terminal D. Después de aplicar el Algoritmo 3.5.1 a esta gramática, obtendremos la siguiente: iS —^ Aci ¡B A ^ a A \b A \B B —>b C —> abd • Las gramáticas independientes del contexto se han definido de forma que se permite que existan producciones que tengan e en el lado derecho. El Algorit­ mo 3.5.1 trata e como una cadena de un terminal. Por tanto, al transformar la gramática ... •. . . ■• ■ •• f .' S —^ üA I£ * A -> aA | bB | £ B -^bB www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 125 se obtendrá la gramática S —> ciA | £ A -> aA 18 Las producciones de la forma A —>e se llaman producciones e. A veces son necesarias, pero otras no son ni necesarias ni deseables. Podremos eliminarlas cuando no sean necesarias. A menudo, tras la transformación de una gramática, nos quedan produccio­ nes como C —>abd que no se usan. La razón por la cual dicha producción se en­ cuentra en la gramática transformada es que, de la aplicación de dicha produc­ ción, se obtiene una cadena de terminales. Sin embargo, su presencia no es de­ seable ya que nunca se podrá derivar una cadena a partir del símbolo S que contenga el no terminal C. Es más, puesto que el símbolo terminal d sólo apare­ ce en una cadena que se obtenga a partir de dicha producción, puede ser elimina­ do del alfabeto sin que el lenguaje generado sea alterado. El siguiente algoritmo elimina aquellos terminales y no terminales que no aparezcan en las cadenas que se deriven a partir de S. La gramática transformada resultante garantiza que un símbolo X será un terminal o no terminal de dicha gramática si y sólo si S => C/.X P para algunas cadenas a y (3 sobre (N u Z)*. Sea G = (N , Z, S, P) una gramática independiente del contexto. Transforma­ remos G en la gramática G' = (N ', Z', S, P') de forma que L (G) = L (G') y para todo X e i V ' n l ' , se tenga que S => a X P para las cadenas a y p de (N ' n Z ')'. Para realizarlo, se construirán iterativamente los conjuntos de terminales, no ter­ minales y producciones de la manera siguiente: Algoritmo 3.5.2. 1. Inicializar N ' de forma que contenga el símbolo inicial S, e inicializar P' y l ' a 0. 2. Repetir Para A e N ', si A —> w es una producción de P, entonces: 1. 2. 3. Introducir A —» w en P'. Para todo no terminal B de w, introducir B en N'. Para todo no terminal 0 de w, introducir a en Z'. hasta que no se puedan añadir nuevas producciones. Obsérvese que, puesto que P, N y Z son finitos, el bucle de la etapa 2 siem­ pre termina. El algoritmo ha sido diseñado para tener en cuenta todos los termi­ nales y no terminales que sean accesibles desde S. Si un terminal o un no termi­ nal no puede ser conseguido a partir de S, nunca será incluido en N ' o Z'. Si un www.FreeLibros.com 126 TEORÍA DÉ AUTÓMATAS Y LENGUAJES FORMALES no terminal no es accesible, entonces todas las producciones que lo tengan en su lado izquierdo serán también excluidas. Consideremos la gramática del Ejemplo 3.5.1 que fue transformada median­ te el Algoritmo 3.5.1 en S -* A a \B B -*b A ^ a A \b A \B C —» abd La gramática obtenida al aplicar el Algoritmo 3.5.2 es S -> A a \B ' A —> a A | bA | B B -> b Obsérvese que la producción C —>abd ha sido eliminada, junto con el no terminal C y el terminal d. Hay que tener en cuenta que es importante el orden en el que los dos algo­ ritmos precedentes son aplicados a una gramática. Consideremos la gramática S —>AB | a A —^ £7 Si aplicamos el Algoritmo 3.5.1 antes que el Algoritmo 3.5.2 obtendremos un resultado distinto al que obtendríamos si aplicamos primero el Algoritmo 3.5.2 y después el Algoritmo 3.5.1. S —^ AB j ci A —^ a Alg. 3.5.1 S AB | (2 | A —>a j Alg. 3.5.2. Alg. 3.5.2 5 —> AB | Cl A —>a j Alg. 3.5.1 S —) Cl A ^a Ahora dirigiremos nuestra atención a las producciones s. Dichas prodicio­ nes son de la forma A —» £. Indudablemente, si £ e L (G), no podremos eliminar tales producciones para que e pueda ser generado por la gramática. De esto se deduce que, si £ no está en L (G), todas las producciones £ pueden ser elim i­ nadas. Se dice que un no terminal A es anulable si A =^> £. Para la eliminación de las producciones £, es crucial identificar los no terminales anulables. El siguien- www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 127 te algoritmo identifica el conjunto 5\£, de todos los no terminales anulables en una gramática independiente del contexto G = (N, Z, S, P). Algoritmo 3.5.3. 1. Inicializar con todos los no terminales A para los cuales existe una producción e, A —» e. 2. Repetir: Si B —> w para algún w e ( J V u I ) " y todos los símbolos de w están en íAÍ, añadir B a hasta que no se añadan más no terminales a . Por ahora, sólo nos ocuparemos de las gramáticas independientes del con­ texto G = (N , Z, S, P), para las que L (G) no contiene a e. Una vez que han sido identificados los no terminales anulables, se modifican las reglas de producción con el fin de poder eliminar las producciones e. Esto se realiza sustituyendo pro­ ducciones de la forma B ^ > X \ X 2 ... X„ por las producciones que se formen al eliminar los subconjuntos de X¡ que son anulables. Se debe tener cuidado en no incluir B -» e, incluso si todos los X¡ son anulables. Se crea el nuevo conjunto de producciones P' como sigue: Si B —>X\ X 2 ■■■ X,¡ es una producción de P, entonces en P' introducire­ mos todas las producciones de la forma B -» Y\ Y2 ... Y„, donde las Y¡ satisfagan: Y¡ = X¡ si X, no es anulable. Y¡ = X¡ o 8 si X¡ es anulable. Y¡ no es e para todo i (es decir, no se introduce en P' ninguna producción de la forma B —»e) Es importante señalar que a partir de una producción B —> X\ X 2 ... X„ de P, se pueden conseguir nuevas producciones en P'. Por ejemplo, si B —»X¡ X 2 y tanto X\ como Xj son anulables, se podrían obtener las producciones B ^ > X x\X 2 \X x X 2 Consideremos la gramática G: * S —> aA A —> aA I e www.FreeLibros.com * 128 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Obsérvese que A es el único no terminal anulable (y que e £ L (G)). Si con­ sideramos la producción S —> aA, tendremos que X\ = a y X 2 =A. Por tanto, aña­ diremos a la nueva colección las producciones S —>a\aA. La gramática que re­ sulta, tras considerar todas las producciones originales, será 5 —» aA | a A aA | a Obsérvese que se ha eliminado la producción e, A —> £. En una gramática independiente del contexto, si L (G) contiene e, se pueden eliminar todas las producciones £ de G menos una. Primero, se eliminan todas las producciones £ de G. Esto transformará la gramática G en G' para la cual L (G') = L (G) - {£}. Después se añade la producción S —>£, la cual restituirá £ al lenguaje generado. Las producciones de la forma A —» B, donde A y B son no terminales, se lla­ man producciones unitarias o no generativas. La presencia de producciones uni­ tarias no indica, necesariamente, que un símbolo es inútil. Sin embargo, las pro­ ducciones unitarias hacen que la gramática independiente del contexto sea inne­ cesariamente compleja. Por ejemplo, la aplicación de una producción de la forma A —>B simple­ mente renombra un no terminal y añade un paso más a la derivación. Cualquier cadena que sea derivable a partir de B también lo será a partir de A. Por tanto, se puede eliminar ese paso extra saltando por encima de B. Por ejemplo, si las pro­ ducciones de A y B son A -^B B —^ wj ¡ C donde C e N y w\ e (/V u L ) \ podemos eliminar la producción A —> B e incluir la producción A —» vvi | C. Obsérvese que, al eliminar la producción unitaria A —>B, se introduce la producción unitaria A —>C. Se podría repetir este proce­ so hasta que no existiera ninguna producción unitaria en la gramática, pero se podría realizar otro planteamiento con el fin de eliminar la circularidad de este proceso. Obsérvese que, en el proceso precedente, la producción unitaria A —» C se obtiene como resultado de las producciones A —»B y B -» C de la gramática ori­ ginal. Si conocemos todos los no terminales X tales que A =?> X, solamente me­ diante producciones unitarias, se podría entonces evitar introducirlas repetida­ mente e ir eliminando dichas producciones unitarias una a una. Para ver cómo se puede realizar este proceso, supongamos que tenemos las producciones www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO A 129 B B —> C \ w\ C D D —> W'2 Entonces se tiene que A => B => C => D. Obsérvese que las producciones A —>vv1 1W2 permiten que de A se deriven las mismas cadenas que se derivaban con las cinco producciones originales. Las nuevas producciones se obtienen a partir de las producciones no unitarias del conjunto de producciones original, creando una producción A —» y para toda producción no unitaria X —» y, donde X e { B ,C ,D } . A continuación presentaremos esta técnica de una forma más precisa. Primero, para A e N se define Unitario (A) = {B e /V| A =^> B usando solamente producciones unitarias} (Obsérvese que A e Unitario (A) puesto que A =^> A mediante 0 produccio­ nes). Sea G = (N, E, 5, P) una gramática independiente del contexto que no ten­ ga producciones e. Construiremos una gramática independiente del contexto equivalente G' = (N, Z, S, P') en la que P' no contenga producciones unitarias, como se describe a continuación: 1. Inicializar P' de forma que contenga todos los elementos de P. 2. Para cada A e N, obtener el conjunto Unitario (A). 3. Para cada A para el cual Unitario (A) ^ {A} Para cada B e Unitario (A) Para cada producción no unitaria B —> w de P añadir A - ) w a P /. 4. Eliminar todas las producciones unitarias que haya en P'. Por ejemplo, en la gramática S —» A | A a A -+ B B * C \b C —^ D | cib D ^b tenemos www.FreeLibros.com 130 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Unitario (S)= {S,A, B, C, D} Unitario (A) = {A, B, C, D} Unitario (B) = {B, C, D} Unitario (C) = {C, D] Unitario (£>) = {D} El algoritmo introduce primero las producciones S —> b|ab A -^b \a b B —>ab\b C -* b \a b y entonces se eliminan las producciones S —>A, A — gramática resultante es B —> C y C -» D. La 5 —> b \a b \A a A b\ab B —> ab\b C —> b | ab D -*b Esta gramática puede simplificarse más, por medio de las otras técnicas. En lo visto anteriormente, hemos realizado la eliminación de producciones en gramáticas independientes del contexto de una forma bastante incómoda. Como última etapa en la simplificación de gramáticas independientes del con­ texto, presentaremos un modelo o forma normal para las producciones. Se dice que una gramática independiente del contexto está en forma normal de Chomsky si no contiene producciones e y si todas las producciones son de la forma A —» a, para a e Z, o de la forma A —» BC, donde B y C son no terminales. Es decir, en la forma normal de Chomsky el lado derecho de cada producción contiene un único símbolo terminal o una par de no terminales. Obsérvese que, para una gra­ mática en forma normal de Chomsky, el árbol de derivación para cualquier deri­ vación está bastante bien construido ya que, excepto en las hojas, ¡el árbol es bi­ nario! Si G es una gramática independiente del contexto y 8 (G), G puede ser transformada en una gramática en forma normal de Chomsky. Para ello, primero se eliminan todas las producciones 8 , los símbolos inútiles y las producciones unitarias de G. Obsérvese que, una vez que se ha realizado lo anterior, si A —> w es una producción de G, se puede asegurar que | w\ > 1. Es más, si | vr| - ], en­ tonces w es un símbolo terminal de Z, puesto que no hay producciones unitarias. www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 131 Por otro lado, si |h>| > 1, entonces w puede contener tanto terminales como no terminales. Ahora transformaremos G convirtiendo tales w en cadenas que con­ tengan sólo no terminales. Supongamos que tenemos una producción de la forma A —> w, donde w = X\ X 2 ... Xn. Si X¡ es un símbolo terminal, llamado a , sustituiremos X¡ por un nuevo no terminal C0 y añadiremos la producción C„ —» a. Una vez que se aplica a G está conversión, todas las producciones son de la forma A —> w, don­ de vv es un símbolo terminal o una cadena formada sólo por no terminales. La última etapa para la transformación de G en forma normal de Chomsky, consiste en eliminar las cadenas con más de dos no terminales que se encuentren en el lado derecho de una producción. Para ello, si A —> B\ B 2 ... Bn es una pro­ ducción con n > 2 , la reemplazaremos por n - 1 producciones A -> B\ D\ D\ —>B 2 D 2 D„~ 2 —> Bn - 1 Bn En ellas, los D¡ serán nuevos no terminales. En la gramática transformada resultante, el lado derecho de cada producción está compuesto por un único ter­ minal o por una cadena de dos no terminales. Por lo tanto, todo lenguaje inde­ pendiente del contexto que no contenga £ puede ser generado mediante una gra­ mática independiente del contexto en forma normal de Chomsky. Por ejemplo, consideremos la GIC S - > b A \ aB A —^ bAA j ciS \ a B ^ > a B B \b S \b Obsérvese que esta gramática no contiene producciones £, producciones unitarias ni símbolos inútiles. Después de la primera transformación, la gramáti­ ca se convierte en S - > C bA \ C a B A -» Ch A A \C a S \a B -> Ca B B \C h S \b Ca —^ o, Cb —> b www.FreeLibros.com 132 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES En esta versión, el lado derecho de todas las producciones está formado por un único símbolo terminal o por una cadena de dos o más no terminales. Des­ pués de la última conversión, la forma normal de Chomsky de la gramática será S - > C hA \ C aA A —> Cfr D l | Ca 5 1Cl D \-* A A B —> Ce, D'i | C¡) S | b D2 —> BB Si L es un lenguaje independiente del contexto que contiene 6 , se puede ob­ tener un gramática independiente del conter.to en forma normal de Chomsky para L - {£} y después añadir a la misma, la producción S —> e. La gramática re­ sultante estará en forma normal de Chomsky exceptuando la producción e. Ejercicios de la Sección 3.5 3.5.1. Aplicar el Algoritmo 3.5.1 a las siguientes gramáticas: (a) S aAb\cEB\CE A —> clBE\eeC B ^ ff\D C —) gFB | ae D -^h (b) S -> aB /I ->bcCCC\dA B —» e C —>fA D —» Dgh 3.5.2. Aplicar el Algoritmo 3.5.1 a la siguiente gramática: S —^ ci | oA | B j C A■ —>ciB!£ ». B —>Aci C —» bCD D -» ccc www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 133 3.5.3. Aplicar el Algoritmo 3.5.2 a la siguiente gramática independiente del contexto: 5 —»aAb A —» ccC B —> dd\D C —^ cíe O —» / 3.5.4. Aplicar el Algoritmo 3.5.2 a la siguiente gramática independiente del contexto: S a\aA\B A aB\e B —»Aa D —» ¿Wd 3.5.5. Eliminar los símbolos inútiles de la siguiente gramática por medio de los Algo­ ritmos 3.5.1 y 3.5.2: S->A\AA\AAA A —> A5a| ACa | a B ABa\Ab\z C —» Cab | CC £) —» C£>| C<¿| CEa E -> b 3.5.6. Obtener la colección de no terminales anulables que pertenecen a la siguiente gramática: S -» aA | bA | a A -» aA | bAb 18 3.5.7. Obtener, para la siguiente gramática, el número de no terminales anulables: S —>ABaC A AB B —>b ¡£* C-H>Z?|e n ^d www.FreeLibros.com 134 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES 3.5.8. Eliminar las producciones E de la gramática: S -» aA [bA | a A -» aA | bAb I£ 3.5.9. Eliminar de la siguiente gramática las producciones £: S —>AB A aA IabB \ aCa B^>bA\BB\z C —> £ D -^dB \B C B \ 3.5.10. Eliminar de la siguiente gramática las producciones e: S —^ ü | ciA | B A —>üB I£ B —^ Aci 3.5.11. Eliminar las producciones £ de la gramática siguiente: S -> C /i —^ AZ? fí -» ¿le C -> Z)le D -> d 3.5.12. Simplificar la siguiente gramática tanto como sea posible S —>atí\aaB A -» £ B —> bA B —> e 3.5.13. El lenguaje asociado con la siguiente gramática independiente del contexto con­ tiene e. Eliminar las producciones e excepto S £. S —^ AB \ aB Ie A —>BBB | aB | a Ie B —^ a | úA t £ % 3.5.14. Realizar una algoritmo para construir Unitario (A) siendo A un no terminal de una GIC. www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 135 3.5.15. Eliminar todas las producciones unitarias de la siguiente gramática inde­ pendiente del contexto: CBa\D 5 /I bbC B Se |ddd C e A \f\C D E\SABC E —»gh 3.5.16. Eliminar todas las producciones unitarias de la siguiente gramática inde­ pendiente del contexto: S —>Aa|Ba | B A -> Afile B -* a A \B B \z [Obsérvese que e e L (G)]. 3.5.17. Convertir las siguientes gramáticas a forma normal de Chomsky: (a) S->AB\CA A -> a B —> BC\AB C —^ ciB | b (b) S->aAb\cHB\CH A —» dBH\eeC B -* ff\D C —» gFB | ah D —> i E —*jF F —> dcGGG \ cF G ^kF H —> Hlm 3.5.18. Probar que, al realizar la conversión a forma normal de Chomsky, se puede ele­ var al cuadrado el número de las producciones de una gramática independiente del contexto. www.FreeLibros.com 136 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES PROPIEDADES DE LOS LENGUAJES INDEPENDIENTES DEL CONTEXTO Las gramáticas en forma normal de Chomsky nos permiten obtener la relación que existe entre la longitud de una cadena y el número de pasos de su deriva­ ción. Si se deriva £, se obtiene a partir de una única producción S —> £. Se puede probar, mediante inducción, que si se puede derivar w y | w\ > 0 , entonces la de­ rivación tiene exactamente 2\w \ etapas. Por etapa, entendemos una sustitución. Escribir el símbolo inicial es una etapa, así como lo es sustituir a él o a cualquier otro terminal por el lado derecho de una producción. Supongamos que G es una gramática independiente del contexto en forma normal de Chomsky y consideremos el árbol de derivación para una cadena cualquiera de L (G). Si un nodo tiene dos hijos, entonces los nodos hijos serán etiquetados con un no terminal y podremos tener al menos dos hijos más del mismo. (Esto es debido a que G está en forma normal de Chomsky). Es decir, el nodo raíz puede tener dos hijos, cada uno de sus hijos puede tener dos hijos y así sucesivamente. En cada nivel se pueden duplicar el número de nodos con res­ pecto al anterior. Por tanto, en el nivel k podremos tener 2k nodos. (El nivel 0 es el nivel del nodo raíz). Por otro lado, si un nodo tiene un único hijo, entonces dicho nodo hijo será etiquetado mediante un terminal, debido nuevamente, a que la gramática está en forma normal de Chomsky. Por tanto, todo símbolo terminal que etiquete a un nodo hoja corresponde a dos nodos, la hoja y su padre. Supongamos que el camino más largo desde la raíz a las hojas consta de m + 2 nodos (y m + 1 arcos). Entonces, el árbol de derivación tiene m + 2 niveles (es decir, los niveles 0 , 1 ,..., m + 1 ) y los nodos del último nivel (las hojas) son hijos únicos de sus nodos padre. En el nivel m hay, como máximo, 2'" nodos pa­ dre. Por tanto, si el camino más largo de un árbol de derivación consta de m + 2 nodos, entonces 2"' es la longitud máxima de la cadena derivada. Otra forma de decirlo es que, si la cadena derivada tiene longitud mayor que 2 '", entonces el ca­ mino más largo debe contener más de m + 2 nodos. Ahora, cada nodo del árbol de derivación de una cadena se corresponde con la aplicación de una producción. Por lo tanto, la relación que existe entre el nú­ mero de producciones que comprende cada etapa y la longitud de la cadena de terminales resultante sugiere que una gramática independiente del contexto en forma normal de Chomsky, genera un promedio de un terminal por cada dos producciones. El conocimiento de la relación existente entre la longitud de la cadena y su derivación en una gramática independiente del contexto, nos permite demostrar el siguiente lema de bombeo para los lenguajes independientes del contexto. www.FreeLibros.com LENGUAJES. INDEPENDIENTES DEL CONTEXTO 137 Lem a 3.6.1. Sea L un lenguaje independiente del contexto que no contiene e. Entonces existe un entero k para el cual, si z e L y | z | >k, entonces z se puede volver a escribir como z = uvw xy con las propiedades siguientes: 1 . | vwx | <k. 2. Al menos o v o x no es 8 . 3. uv'wx'y e L para todo i > 0. Demostración. Supongamos que G = {N,Y,,S,P) es una gramática independiente del contexto en forma normal de Chomsky con L = L (G ). Sea n el número de no terminales de N y sea k = 2n. Supongamos que z e L con | z | > k. Vamos a considerar el camino más largo del árbol de derivación correspon­ diente a z■Puesto que |z | > 2”, este camino debe contener más de n + 2 nodos. De los n + 2 últimos nodos del camino, el último corresponderá a un terminal. Por tanto n + 1 de dichos nodos están etiquetados con no terminales. Puesto que sólo hay n no terminales en N, alguno se repetirá. Supongamos que A está repeti­ do en el camino. Entonces se tiene que S => uvAxy => u v w x y - z para algunas subcadenas u, v ,i v ,x e y. Puesto que sólo hemos considerado los n + 2 últimos nodos de este camino, el camino de A a vwx puede tener como má­ ximo n + 2 nodos. Por tanto | vwx | < 2" según las observaciones previas a este teorema. Además, puesto que A ==>vAx, debemos obtener que A => v 'A jí para algún i > 0. Por tanto, S => uv 'wx'y para todo i > 0. Finalmente, obsérvese que, puesto que A =>v/bc y puesto que G está en for­ ma normal de Chomsky, se debe tener que A => 6 C=> vAx=$ vwx para algunos no terminales B y C. Entonces B =4 v y C=^> A x o si no B vA y C => x. Ya que v y x son cadenas de terminales y no hay producciones 8 , en el primer caso se tiene que | v| > 1 con lo que v ^ 8 y, en el segundo c§so, |x | > 1 con lo que x ^ 8 . En cualquier caso al menos uno de ellos no es 8 . □ Al igual que el lema de bombeo para lenguajes regulares, el lema de bom­ beo para lenguajes independientes del contexto nos proporciona la posibilidad de probar si ciertos lenguajes no son independientes del contexto. Para ello, usa- www.FreeLibros.com 138 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES remos esencialmente el mismo planteamiento que en el caso de los lenguajes re­ gulares. Por ejemplo, el lenguaje L = {albJ \j = i2} no es independiente del contexto. Supongamos que L es independiente del contexto. Probaremos que es imposible. Si L es independiente del contexto, entonces se puede aplicar el lema de bombeo y por tanto habrá un k que satisfaga las condiciones del Lema 3.6.1. Conside­ remos z = akbk . Desde luego, z e L y \z\ > k. Por tanto, z se puede descompo­ ner en z = uvwxy y se puede asegurar que uv'wx'y e L para todo / > 0 , tal que | vx | > 1 y | vwx | < k. Obsérvese que, si v = arbs para algún r y s, entonces V = (arbs)‘ y, por tanto, u v lw ¿y tiene bes antes de aes con lo que no puede pertenecer a L. Defor­ ma similar, si x = arbs, tampoco pueden ser bombeados. Por lo que debemos ob­ tener que v-a r y x~as v = br y x-b 5 v = a' y x-b s o o también para algún valor de r y s. En el primer caso se tiene u v 2wx2y = ak +r+sbk~ En el segundo caso tenemos u v 2wx2y = akbk~+r+s En ambos casos, cuando al menos uno de los dos r o s son mayores o igua­ les a 1 (como se requiere en el lema de bombeo), la cadena resultante no puede pertenecer a L. En el tercer caso, se obtendrá u v iwxiy = cik+{i- x)rbkl +{i- {)s el cual no pertenece a L para toda i a excepción de un número finito. Por tanto, L no puede ser independiente del contexto puesto que para él no se cumple el lema de bombeo. El lema de bombeo tiene otros usos además de demostrar que un lenguaje no es independiente del contexto. Primero vamos a considerar el siguiente pro­ blema: para una GIC G arbitraria, ¿L (G) es finito? www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 139 Supongamos que G = (N, X, S, P) es una GIC arbitraria que está en forma normal de Chomsky. Se supone que N tiene n elementos. Entonces, de la demos­ tración del Lema 3.6.1, se sabe que, si una cadena de L (G) tiene una longitud mayor que 2" ~ ', entonces L (G) es infinito. A la inversa, puesto que la colección de terminales de G es finita, si L (G) es infinita, entonces alguna cadena de L (G) contiene más de 2 n ~ 1 símbolos. Supongamos ahora que z e L (G ) es la cadena más corta de L (G) con la propiedad de que | z | > 2" ~ 1. Pediremos que 2”- 1 < \z | < 2 " - ‘ + 2 " Para verlo, supongamos que |z | > 2 "- 1 + 2". Entonces, de la demostración del Lema 3.6.1, se deduce que 2 = uvw xy y u w y e L (G), para las subcadenas u, v, w, x, e y apropiadas. Entonces, puesto que | uwx\ < 2", se obtiene que | uwy\ > \z\ - 2 '1> 2 " - 1. Por otro lado, | uwy\ < \ uvwxy \ = | z | . Pero se había supuesto que z era la cadena más corta de longitud mayor que 2 '' ~ 1 y, por tanto, se llega a una contra­ dicción. Por consiguiente, 2« - i < j-j <2»- > + 2 '¡ En consecuencia, L (G) es infinito si y sólo si existe un z e L (G) para el cual 2 " ~ ' < |s | < 2 " ~ ] + 2 " Hay un número finito de cadenas sobre y, si es necesario, podremos comprobar si pertenecen a L (G). De aquí que tengamos un algoritmo para com­ probar si un lenguaje independiente del contexto es finito o no. Obsérvese que, en la eliminación de estados inútiles, proporcionamos de forma inadvertida un algoritmo que responde a otras cuestiones sobre un lengua­ je especificado por una gramática independiente del contexto. L (G) es no vacío si y sólo si su símbolo inicial genera una cadena de terminales. Tenemos un al­ goritmo para eliminar los no terminales que no generan cadenas de terminales. Por tanto, L (G) - 0 si el símbolo inicial no pertenece a la colección de no termi­ nales de la gramática transformada. Otra cuestión a tratar sobre los lenguajes independientes del contexto, hace referencia a sus miembros: Dado un lenguaje independiente del contexto L sobre el alfabeto X y una cadena w e X*, ¿vv e L o no? L em a 3.6.2. Sea G - (N . X, 5, P) una gramática independiente del contexto que no tie­ ne producciones £ y que está en forma normal dé Chomsky. Sea x una cadena de X*. Se puede determinar, para cada A e N y para cada subcadena w de x, si A => vv. www.FreeLibros.com 140 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Demostración. Sea n = \x | . Puesto que hay muchas subcadenas de x, las nombraremos mediante su posición inicial y su longitud. Sea w¡j la subcadena que comienza en la posición i y tiene una longitud j. Probaremos que el lema se cumple para todo w¡j. Lo realizaremos por inducción sobre la longitud de la subcadena, es decir, sobre j. Supongamos que / = 1. Entonces | w¡j\ = 1 y, por tanto, wy es un símbolo terminal. Como la gramática está en forma normal de Chomsky, para algún no w¡j si y sólo si existe una producción A —> w¡j en P. terminal A se tiene que A Es posible determinarlo, ya que P es finito. Ahora supongamos que j > 1 y que la afirmación se cumple para toda subca­ dena de longitud menor que j. Obsérvese que A w¡j si y sólo si A —>BC para algún par B y C de no terminales para los cuales B => w¡k y C=> w¡ +k ,j-k para algún k entre 1 y j - 1. Entonces tanto w¡k como w¡ +k j - k tienen longitud menor * £ que j y, por la hipótesis de inducción, es posible determinar si B ==> w¡k y si C =5> Wj +k j- k - Además podemos determinar si A =4 w¡j para cada i entre 1 y n y cada j entre 1 y n - i + 1 . □ En la demostración anterior se observa que si j = n entonces se puede deter­ minar si S ==> w\j —w\n —x Es decir, se puede determinar si x 6 L (G) para cada x e I “. Se cumple que .v s L (G) si y sólo si S => x y, por el Lema 3.6.2, sabemos que es posible determinar si S => .v. Naturalmente, no es lo mismo saber que algo es posible, que hacerlo. Se conocen varios algoritmos para determinar si x e L (G). Vamos a presentar uno llamado algoritmo de CYK y que se debe a Cocke, Younger y Kasami. El algoritmo de CYK simplemente construye con­ juntos N¡j de no terminales que generan las subcadenas w¡j de x. Una vez hecho, si S e N\„, entoncesx e L (G) (donde |jc[ = n). Obsérvese que se elimina mucho trabajo por el hecho de que no pueden existir subcadenas de longitud mayor que n - i + 1 que empiecen en la posición i. El algoritmo de CYK, se enuncia como sigue: 1 . Para cada i = 1 , 2 ,..., n, sea Mi = {A \A —>w¡\} » ♦ Es decir, N¡\ es el conjunto de todos los no terminales que producen el /-ésimo símbolo de x www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 2. 141 Para j = 2, 3,..., n, hacer lo siguiente: Para i = 1, 2 , n - j + 1, hacer lo siguiente: a. Inicializar N ¡j = 0. b. Para k = 1, 2, 1, añadir a N¡j todos los no terminales A para los cuales A —» BC, con B e Nik y C e N¡+k,j-k- 3. Si S e N \n, entoncesx e L (G). Obsérvese en que el algoritmo de CYK requiere que se tenga una gramática independiente del contexto en forma normal de Chomsky. El algoritmo para la construcción de los conjuntos de no terminales N ¡j sigue la idea de la demostra­ ción del Lema 3.6.2. En la etapa 2b, que es en la que se construyen los N¡¡, se emparejan los no terminales de N¡k con los de N¡+k,j-k, y se trata de encontrar­ los en el lado derecho de las producciones. Cuando se obtienen tales lados dere­ chos, se añade a N¡j el no terminal que está en el lado izquierdo de la producción dada. Ejemplo 3.6.1 Consideremos la gramática independiente del contexto A —^ 3 A jci B CC| b C ^A B \a Para la cadena x= bbab, se tiene la siguiente tabla donde cada casilla rep­ resenta al conjunto N¡j: j~ 1 7= 2 7=3 /= 4 s ,c b j= 1 B 0 A b j -2 B A, S S, C a 7 A, C s,c =3 •V II B Ya que S está en N i4, x se genera a partir del símbolo inicial 5. Por tanto, x está en el lenguaje generado por esta gramática. - www.FreeLibros.com 142 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Supongamos que Gy = (Ni, Xj, Si, P\) y G 2 = (iV2 , 1 2 , S2 , P 2) son dos gra­ máticas independientes del contexto para las cuales N\ y N 2 son disjuntos. Defi­ niremos la gramática independiente del contexto G = (N , X, S, P), donde N = N i u N 2 u {S} Z = Zi u l 2 /> = />, u /> 2 u { ( S ,S ,) , (S, S2) } siendo S un nuevo símbolo. Es decir, P contiene las producciones de P\ y P 2, además de dos nuevas producciones S —> Si | S2. Se ve fácilmente que L (G) '= L (G i) u L (G2). Primero, si w e L (Gi), entonces se tiene que Si =4 w, con lo que S => Si => w y, por tanto, se tiene que w e L (G). De forma similar, si w g L (G2), entonces se tiene que w e L (G ) y, por tanto, L (Gi) u L (G2) c L (G). Por otro lado, si w e L (G), entonces S => w. Pero S —>S 1 1S2 son las úni­ cas producciones que tienen en su lado izquierdo el símbolo S. Entonces o bien S => Si =$ vv o S =$ S2 ==> w Ahora bien, como Ni n N 2 = 0, sólo se pueden usar en Si => w, con lo que si S => Si w, se deduce que w e similar, si S => S 2 w, se obtiene que w e L (G2). L (Gi) u L (G 2 ). Con lo que hemos demostrado el siguiente producciones de P\ L (G \). De un modo Por tanto, L (G) c teorema: Teorema 3.6.3. Si L\ y L 2 son lenguajes independientes del contexto, entonces L\ u es un lenguaje independiente del contexto. ¿2 Es decir, el conjunto de los lenguajes independientes del contexto es cerra­ do con respecto a la unión. Este conjunto también es cerrado con respecto a la cerradura de estrella. Teorema 3.6.4. lo es. Si L es un lenguaje independiente del contexto, entonces Ü también Demostración. Sea L - L (G) para G = (N, X, S, P). Constituiremos una gramática inde­ pendiente del contexto G' = (N \ I , S', P') que genere L*, de forma que N' - N u ¡S', T), donde S' y T son nuevos símbolos, y añadiremos las produc­ ciones S' —» S T I e y T —> S T I e. Obsérvese que si w¡, W2, ..., wn e L (G), se tiene www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 143 S '= * S T = * S S T =4S . . . S T ( h térm in o s) => S ... S e ==> W l W 2 . . . w n Por tanto, L * c L (G'). □ Teorema 3.6.5. La concatenación de lenguajes independientes del contexto es inde­ pendiente del contexto. Demostración. Véase el Ejercicio 3.6.5. □ En los Teoremas 3.6.3, 3.6.4 y 3.6.5 hemos enunciado tres propiedades de cierre de los lenguajes independientes del contexto. Desgraciadamente, los len­ guajes independientes del contexto no son cerrados con respecto a la intersec­ ción. El lenguaje L - {í/7?'c'|í >0} no es independiente del contexto, como se demostró en la aplicación del lema de bombeo (Lema 3.6.1). Obsérvese que L\ = {a‘b ^ c ^ \i,j> 0 } es generado por la gramática independiente del contexto A -» aAI £ C —^ bCc I£ y el lenguaje Lo = {a‘b'cJ \ i, j > 0 } es generado por S^A C A —>aAb\e C —^ cCl £ y, por tanto, son lenguajes independientes del contexto. Pero se tiene que L - L \ n L 2 , y con lo que, la intersección de lenguajes independientes del con­ texto no es necesariamente un lenguaje independiente del contexto.” Además, los lenguajes independientes del contexto no son cerrados con res­ pecto a la complementación. Si denotamos Z* - L¡ mediante L. entonces L\C\L2- (¿i u Li) www.FreeLibros.com 144 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ya que la unión de lenguajes independientes del contexto produce un len­ guaje independiente del contexto, obsérvese que, si al complementar lenguajes independientes del contexto siempre se obtuvieran lenguajes independientes del contexto, la intersección anterior debería haber sido independiente del contexto. Ejercicios de la Sección 3.6 3.6.1. Probar que cada uno de los siguientes lenguajes no son independientes del con­ texto. (a) {a‘b'c'\ i > 1} (b) {a‘b'cj \j> i} (c) {a‘b^ck\ i < j < k ] (d) {a'| / es primo} (e) {w e [a, ¿>, c}*| w tiene el mismo número de aes que de bes y ces } (f) {a"b"c'"\n < m < 2n) (g) {ww| w e {a, b }*}. 3.6.2. Determinar si el lenguaje generado por S —>ciciA ¡B BaA\b A —> ríS 16 1£ es finito o infinito. 3.6.3. Determinar si bba, bab y babba están en L (G) correspondiente a la gramática G del Ejemplo 3.6.1, usando el algoritmo de CYK. 3.6.4. Sea G = (N, X, S, P) una G1C. Al igual que en la demostración del Teorema 3.6.4,construir G’ - (Ar . X. S, P'). Demostrar que L (G’) c V\ 3.6.5. Demostrar el Teorema 3.6.5. AUTÓMATA DE PILA Hemos visto que las gramáticas independientes del contexto amplían la capaci­ dad para especificar lenguajes al incluir algunos lenguajes que no son reconoci­ dos por un autómata finito. En esta sección consideraremos un autómata que será capaz de reconocer todo lenguaje independiente del contexto. Intuitivamente, el problema que se plantea con los autómatas finitos es que sólo tienen capacidad para una “memoria” finita. Lenguajes independientes del contexto tan sencillos como {anb"\n > 0} necesitan guardar gran cantidad de in- www.FreeLibros.com LENGUAJES INDEPENDIENTES DEL CONTEXTO 145 formación; se debe verificar no solamente que todas las aes preceden a las bes, sino que además se tienen que contar las aes. Puesto que el número de aes es arbi­ trario, necesitamos establecer una limitación sobre el número de aes que se pueden contar. El lenguaje independiente del contexto {wcw'^we { a ,b ,c } } necesita algo mas que una capacidad sin límites para contar los símbolos. Además se deben guar­ dar los símbolos de la cadena w para compararlos con los símbolos de la cadena w'. En esta sección definiremos un autómata que cuenta con un mecanismo que permite almacenamiento ilimitado y opera como una pila. Este autómata se lla­ ma autómata de pTícL)En la siguiente sección, se estudiará la conexión que existe entre los autómatas ée pila y los lenguajes independientes del contexto. <Qin autómata de pila se comporta de forma similar a como lo hacen los autó­ matas finitós/del Capítulo 2. En todo momento se encuentran en un estado y el cambio de estado depende del estado actual y de una información adicional. En el caso de los autómatas finitos del Capítulo 2, la “información adicional” con­ siste en el símbolo de entrada actual. En el caso de los autómatas de pila, se in­ cluyen el símbolo de entrada actual y el símbolo que está en ese momento en la cima de la pila. Además de cambiar de estado, el autómata de pila cambia, tam­ bién, la cima de la pila. Definición 3.7.1. Un autómata de pila no determinista (ADPND) es una 7-tupla, M - (£>, Z, T, A, s, F, z) donde Q es un conjunto finito de estados Z es un alfabeto de entrada r es un alfabeto llamado alfabeto de la pila A es una regla de transición se. Q es el estado inicial o de partida z e r es el símbolo inicial de la pila F c Q es el conjunto de estados finales o de aceptación. De nuestra descripción anterior se deduce que una regla de transición, para obtener el siguiente estado y la acción a realizar sobre la pila, debe conocer el estado actual, el símbolo de entrada actual y la cima actual de la pila. Por consi­ guiente, A se define por medio de ternas de la forma (q, a , y), donde q es un es­ tado de Q, a es un símbolo de E u {£} y y e T. El resultado de aplicar A a dicha terna es una colección de pares (p, w), donde "p e Q es el estado siguiente y >v e T * es la cadena que se introducirá (o apilará) en la pila en lugar del símbolo Yque estaba antes allí. Por tanto, se puede definir la relación A como www.FreeLibros.com 146 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES AC 2 X (E U {£}) X T X <2 X r* Ya que estamos definiendo un autómata de pila no determinista, cabe espe­ rar que A no tiene por qué ser una función. Por tanto, si aplicamos A a la terna (<7 i, a, b) se obtiene el conjunto {(<72 , cd), {qi, dcé), (9 3 , efe)}, del cual se elige de forma no determinista uno de los pares, de manera que el autómata de pila cam ­ bia para reflejar dicha elección. Obsérvese que, puesto que los pares resultantes pertenecen a g x T y y a que £ e P , se puede tener que de A (q, a, b) se obtenga (p, £). Esto indica que el estado siguiente es p y que el símbolo b se elimina (o se desapila) de la cim a de la pila. Al definir A c Q x (E u {£}) x T x Q x T*, se fuerza a que A deba conside­ rar un símbolo de la pila en todos sus movimientos. Es decir, no es posible nin­ gún movimiento si la pila está vacía. Por esta razón, se supone que inicialmente la pila contiene algún símbolo z, que es el símbolo inicial de la pila. Por otro lado, un movimiento tal como A (q, £, a) = {(pf aa)} indica que el ADPND puede cambiar a un estado p y apilar una a en la pila sin consumir ningún símbolo de la entrada. Finalmente, obsérvese que si A (q, 0 , y) = 0 , no es posible ningún movimiento desde el estado q con el símbo­ lo de entrada <3 y con el símbolo de la pila y. En este caso, el ADPND parará su ejecución. Consideremos el autómata de pila no determinista definido por Q = {q\,qi, 23, <?4} I = { a ,b } r= { A ,B } Z= A F = {q,} s = q\ y A dado por la siguiente tabla: A {a, A ) q\ {(q2, BA), (q4,A )} <?2 <73 ib, A ) (a,B) 0b ,B ) f e BB)} {(<?3,£)} (£ ,A ) {(?4, £)} i (£, B) * {(<74, ¿)} www.FreeLibros.com {(<73, £)} *