Professional Documents
Culture Documents
LENGUAJES, GRAMTICAS Y AUTMATAS. Segunda Edicin Juan Manuel Cueva Lovelle. Oviedo (Espaa), 2001.
Reservados todos los derechos. De conformidad con lo dispuesto en el art. 534-bis del Cdigo Penal vigente, podrn ser castigados con penas de multa y privacin de libertad quienes reprodujeren o plagiaren, en todo o en parte, una obra literaria, artstica o cientfica fijada en cualquier tipo de soporte sin la preceptiva autorizacin.
TABLA DE CONTENIDOS
CAPTULO 1: INTRODUCCIN ............................................................................................. 1 CAPTULO 2: DEFINICIONES PREVIAS ............................................................................. 2.1 Smbolo .................................................................................................................................... 2.1.1 Ejemplos ........................................................................................................................... 2.2 Vocabulario o alfabeto ............................................................................................................. Ejemplos 2.2.1 ........................................................................................................................... 2.3 Cadena ..................................................................................................................................... Ejemplos 2.3.1 ........................................................................................................................... 2.4 Longitud de cadena .................................................................................................................. Ejemplos 2.4.1 ........................................................................................................................... 2.5 Cadena vaca ............................................................................................................................ 2.6 Concatenacin de cadenas ....................................................................................................... 2.7 Universo del discurso ............................................................................................................... Ejemplo 2.7.1 ............................................................................................................................. 2.8 Lenguaje ................................................................................................................................... Ejemplo 2.8.1 ............................................................................................................................. 2.9 Lenguaje vacio ......................................................................................................................... 2.10 Gramtica ............................................................................................................................... 2.11 Autmata ................................................................................................................................ CAPTULO 3: DEFINICIN FORMAL DE GRAMTICA ................................................. Ejemplo 3.1 .................................................................................................................................... Ejemplo 3.2 .................................................................................................................................... Ejemplo 3.3 .................................................................................................................................... Ejemplo 3.4 .................................................................................................................................... 3.5 Notacin ................................................................................................................................... 3.5.1 Vocabulario terminal ........................................................................................................ 3.5.2 Vocabulario no terminal ................................................................................................... 3.5.3 Vocabulario ...................................................................................................................... 3.5.4 Cadenas terminales ........................................................................................................... 3.5.5 Cadenas ............................................................................................................................. CAPTULO 4: RELACIONES ENTRE CADENAS ............................................................... 4.1 Relacion de derivacin directa ................................................................................................. Ejemplo 4.1.1 ............................................................................................................................ 4.2 Relacion de derivacin ............................................................................................................. Ejemplo 4.2.1 ............................................................................................................................ 3 3 3 3 3 3 4 4 4 4 4 5 5 5 5 6 6 6 7 8 8 8 8 9 9 9 9 10 10 11 11 11 11 12
CAPTULO 5: SENTENCIAS O INSTRUCCIONES ............................................................. 13 Ejemplo 5.1 .................................................................................................................................... 13 Ejemplo 5.2 .................................................................................................................................... 13 CAPTULO 6: DEFINICIN FORMAL DE LENGUAJE .................................................... 6.1 Propiedad ................................................................................................................................. Ejemplo 6.2 .................................................................................................................................... Ejemplo 6.3 .................................................................................................................................... Ejemplo 6.4 .................................................................................................................................... Ejemplo 6.5 .................................................................................................................................... Ejemplo 6.6 .................................................................................................................................... Ejemplo 6.7 .................................................................................................................................... Ejemplo 6.8 .................................................................................................................................... CAPTULO 7: JERARQUA DE LAS GRAMTICAS ......................................................... 7.1 Gramticas de tipo 0 ................................................................................................................ 7.1.1 Ejemplos ........................................................................................................................... 7.2 Gramticas de tipo 1 ................................................................................................................ 7.2.1 Ejemplos de gramticas de tipo 1 ..................................................................................... Ejemplo 7.2.1.1 ..................................................................................................................... Ejemplo 7.2.1.2 ..................................................................................................................... Ejemplo 7.2.1.3 ..................................................................................................................... 7.2.2 Ejemplos de gramticas que No son de tipo 1 ..................................................................
- IV -
14 14 14 14 15 15 15 16 17 18 18 18 18 18 19 19 19 19
Ejemplo 7.2.2.1 ..................................................................................................................... Ejemplo 7.2.2.2 ..................................................................................................................... 7.2.3 Propiedades de las gramticas de tipo 1 ........................................................................... 7.2.3.1 Propiedad de no decrecimiento ................................................................................. 7.2.3.2 Propiedad de sensibilidad al contexto ....................................................................... Ejemplo 7.2.3.3 ..................................................................................................................... 7.3 Gramticas de tipo 2 ................................................................................................................ Ejemplo 7.3.1 ............................................................................................................................. Ejemplo 7.3.2 ............................................................................................................................. Ejemplo 7.3.3 ............................................................................................................................. 7.4 Gramticas de tipo 3 ................................................................................................................ Ejemplo 7.4.1 ............................................................................................................................. 7.5 Lenguajes con la cadena vacia ................................................................................................. Teorema 7.5.1 ............................................................................................................................ Corolario 7.5.2 ........................................................................................................................... Corolario 7.5.3 ........................................................................................................................... 7.6 Relacin de inclusin ...............................................................................................................
19 20 20 20 21 21 22 22 22 22 23 23 23 24 24 24 24
CAPTULO 8: CORRESPONDENCIA ENTRE GRAMTICAS Y LENGUAJES ........... 26 CAPTULO 9: EXPRESIONES REGULARES ....................................................................... 9.1 Operaciones con los lenguajes regulares ................................................................................. 9.2 Operaciones con las expresiones regulares .............................................................................. 9.3 Precedencia de las operaciones ................................................................................................ 9.4 Teorema ................................................................................................................................... 9.5 Propiedades .............................................................................................................................. Ejemplo 9.6 .................................................................................................................................... Ejemplo 9.7 .................................................................................................................................... Ejemplo 9.8 .................................................................................................................................... Ejemplo 9.9 .................................................................................................................................... Ejemplo 9.10 .................................................................................................................................. Ejemplo 9.11 .................................................................................................................................. Ejemplo 9.12 .................................................................................................................................. Ejemplo 9.13 .................................................................................................................................. Ejemplo 9.14 .................................................................................................................................. Ejemplo 9.15 .................................................................................................................................. Ejemplo 9.16 .................................................................................................................................. Ejemplo 9.17 .................................................................................................................................. CAPTULO 10: AUTMATAS ................................................................................................. 10.1 Definicin formal de autmata .............................................................................................. 10.2 Representacin de autmatas ................................................................................................. 10.2.1 Tabla de transiciones ...................................................................................................... 10.2.2 Diagramas de Moore ...................................................................................................... 10.3 Mquinas de Moore y Mealy ................................................................................................. Ejemplo 10.3.1 ........................................................................................................................... 10.4 Estados accesibles de un autmata ........................................................................................ 10.5 Autmatas conexos ................................................................................................................ 10.6 Autmatas deterministas y no deterministas ......................................................................... 28 28 29 30 30 30 31 31 31 31 32 32 32 32 33 33 33 33 34 35 35 35 36 37 39 40 40 40
CAPTULO 11: JERARQUA DE LOS AUTMATAS ......................................................... 41 CAPTULO 12: MQUINAS DE TURING ............................................................................. 12.1 Teorema ................................................................................................................................. 12.2 Teorema ................................................................................................................................. 12.3 Corolario ................................................................................................................................ Ejemplo 12.4 .................................................................................................................................. CAPTULO 13: AUTMATAS LINEALES ACOTADOS .................................................... 13.1 Teorema ................................................................................................................................. 13.2 Teorema ................................................................................................................................. 13.3 Corolario ................................................................................................................................ 43 44 44 45 45 47 48 48 48
CAPTULO 14: AUTMATAS DE PILA ................................................................................ 49 14.1 Lenguaje reconocido por un autmata de pila ....................................................................... 52
-V-
14.1.1 Teorema .......................................................................................................................... 14.1.2 Teorema .......................................................................................................................... 14.1.3 Corolario ......................................................................................................................... Ejemplo 14.1.4 ........................................................................................................................... 14.2 Algoritmo de transformacin de una gramtica de tipo 2 en un autmata de pila ................ Ejemplo 14.2.1 ........................................................................................................................... Ejercicio 14.2.2 .......................................................................................................................... CAPTULO 15: AUTMATAS FINITOS ................................................................................ 15.1 Definicin formal de autmata finito ..................................................................................... 15.2 Lenguaje reconocido por un autmata finito ......................................................................... 15.2.1 Teorema .......................................................................................................................... 15.2.2 Teorema .......................................................................................................................... 15.2.3 Corolario ......................................................................................................................... Ejemplo 15.2.4 ........................................................................................................................... Ejemplo 15.2.5 ........................................................................................................................... Ejemplo 15.2.6 ........................................................................................................................... Ejemplo 15.2.7 ........................................................................................................................... Ejemplo 15.2.8 ........................................................................................................................... 15.3 Clasificacin de los autmatas finitos ................................................................................... 15.3.1 Autmatas finitos no deterministas ................................................................................ Ejemplo 15.3.1.1 ................................................................................................................... 15.3.2 Autmatas finitos deterministas ..................................................................................... 15.3.3 Teorema sobre la transformacin de AFND en AFD ..................................................... Ejemplo 15.3.3.1 ................................................................................................................... 15.4 Algoritmo de transformacin de una gramtica de tipo 3 en un autmata finito .................. Ejemplo 15.4.1 ........................................................................................................................... 15.5 Transformacin de una expresin regular en un autmata finito .......................................... 15.5.1 Equivalencia entre expresiones regulares bsicas y autmatas finitos ........................... 15.5.1.1 Expresin regular ................................................................................................. 15.5.1.2 Expresin regular a ................................................................................................. 15.5.1.3 Expresin regular a* ................................................................................................ 15.5.1.4 Expresin regular a+ ................................................................................................ 15.5.1.5 Expresin regular a|b ............................................................................................... 15.5.1.6 Expresin regular (a|b)* .......................................................................................... 15.5.1.7 Expresin regular (ac|b)* ........................................................................................ 15.5.1.8 Expresin regular (acd|b)* ...................................................................................... 15.5.2 Construccin de Thompson ............................................................................................ Ejemplo 15.5.2.1 .................................................................................................................. 15.6 Minimizacin de estados de un AFD ..................................................................................... Algoritmo 15.6.1 ........................................................................................................................ Ejemplo 15.6.2 ........................................................................................................................... CAPTULO 16: EJERCICIOS RESUELTOS .......................................................................... Ejercicio 16.1 ................................................................................................................................. Ejercicio 16.2 ................................................................................................................................. Ejercicio 16.3 ................................................................................................................................. Ejercicio 16.4 ................................................................................................................................. Ejercicio 16.5 ................................................................................................................................. Ejercicio 16.6 ................................................................................................................................. CAPTULO 17: EJERCICIOS PROPUESTOS ....................................................................... Ejercicio 17.1 ................................................................................................................................. Ejercicio 17.2 ................................................................................................................................. Ejercicio 17.3 ................................................................................................................................. Ejercicio 17.4 ................................................................................................................................. Ejercicio 17.5 ................................................................................................................................. Ejercicio 17.6 ................................................................................................................................. Ejercicio 17.7 ................................................................................................................................. Ejercicio 17.8 ................................................................................................................................. Ejercicio 17.9 ................................................................................................................................. Ejercicio 17.10 ...............................................................................................................................
53 53 53 53 54 56 58 59 59 60 60 60 60 61 63 64 65 65 66 67 67 68 68 70 73 74 76 77 77 77 77 78 78 78 79 79 79 80 81 81 83 86 86 86 87 88 88 90 93 93 93 93 93 93 93 94 94 94 94
Ejercicio 18.1 Ejercicio 18.2 Ejercicio 18.3 Ejercicio 18.4 Ejercicio 18.5 Ejercicio 18.6
95 95 95 95 95 95
BIBLIOGRAFA ......................................................................................................................... 96
- VII -
TABLA DE FIGURAS
Fig. 1 : Relacin de inclusin entre gramticas ............................................................................ Fig. 2 : Correspondencia entre gramticas y lenguajes ................................................................. Fig. 3 : Diagrama de Moore ........................................................................................................... Fig. 4 : Ejemplo de diagrama de Moore ........................................................................................ Fig. 5 : Ejemplo de mquina de Moore ......................................................................................... Fig. 6 : Correpondencia entre gramticas, leng. y autmatas ........................................................ Fig. 7 : Esquema de mquina de Turing ........................................................................................ Fig. 8 : Esquema de autmata lineal acotado ................................................................................. Fig. 9 : Esquema de autmata de pila ............................................................................................ Fig. 10 : Transicin en un autmata de pila ................................................................................... Fig. 11 : Transicin en un autmata de pila ................................................................................... Fig. 12 : Esquema intuitivo de un autmata finito ......................................................................... Fig. 13 : Transicin entre dos estados ............................................................................................ Fig. 14 : Diagrama de Moore del ejemplo 15.2.4 .......................................................................... Fig. 15 : Diagrama de Moore del ejemplo 15.2.5. ......................................................................... Fig. 16 : Diagrama de Moore del ejemplo 15.2.6. ......................................................................... Fig. 17 : Diagrama de Moore del ejemplo 15.2.7. ......................................................................... Fig. 18 : Diagrama de Moore del ejemplo 15.2.8. ......................................................................... Fig. 19 : Diagrama de Moore del ejemplo 15.3.1.1. ...................................................................... Fig. 20 : Diagrama de Moore del ejemplo 15.3.3.1. ...................................................................... Fig. 21 : Diagrama de Moore para f(A,a)=B ................................................................................. Fig. 22 : Diagrama de Moore para f(A,a)=qf ................................................................................. Fig. 23 : Diagrama de Moore del ejemplo 15.4.1 .......................................................................... Fig. 24 : Diagrama de Moore AFD del ejemplo 15.4.1 ................................................................. Fig. 25 : Diagrama de Moore para la expresin regular vacia ....................................................... Fig. 26 : Diagrama de Moore para la expresin regular a ............................................................. Fig. 27 : Diagrama de Moore para la expresin regular a* ........................................................... Fig. 28 : Diagrama de Moore para la expresin regular a+ ........................................................... Fig. 29 : Diagrama de Moore para la expresin regular a|b ........................................................... Fig. 30 : Diagrama de Moore para la expresin regular a|b ........................................................... Fig. 31 : Diagrama de Moore para la expresin regular (a|b)* ...................................................... Fig. 32 : Diagrama de Moore para (ac|b)* ..................................................................................... Fig. 33 : Diagrama de Moore (acd|b)* ........................................................................................... Fig. 34 : Construccin de Thompson para N(s|t) ........................................................................... Fig. 35 : Construccin de Thompson para st ................................................................................. Fig. 36 : Construccin de Thompson para s* ................................................................................ Fig. 37 : Descomposicin sintactica de la expresin regular ......................................................... Fig. 38 : Construccin de Thompson para r7 ................................................................................. Fig. 39 : Construccin de Thompson para la expresin regular .................................................... Fig. 40 : Solucin del ejercicio 16.2 .............................................................................................. 25 27 36 37 40 42 43 47 50 51 52 59 61 62 63 64 65 66 68 72 73 73 74 76 77 77 77 78 78 78 78 79 79 79 80 80 80 81 81 87
- VIII -
CAPTULO 1: INTRODUCCIN
El objetivo de este libro de texto es introducir los conceptos tericos necesarios sobre Teora de Lenguajes Formales, Gramticas y Autmatas para un curso universitario de Traductores, Procesadores, Compiladores e Intrpretes de lenguajes de programacin. En este texto se presenta la Teora de Gramticas y Lenguajes Formales, como una herramienta matemtica que permite abordar con rigor el diseo de lenguajes de programacin. Adems se desarrollan los conceptos necesarios para la construccin de Autmatas para el reconocimiento de lenguajes de programacin. La Teora de los Lenguajes Formales tiene su origen en un campo aparentemente bastante alejado de la Informtica: la Lingistica. Los lingistas de la llamada escuela estructuralista americana haban elaborado por los aos 50 algunas ideas informales acerca de la gramtica universal. Se entiende por gramtica universal, una gramtica que caracteriza las propiedades generales de cualquier lenguaje humano. El primer trabajo que desarroll teoras formales sobre gramticas y lenguajes fue obra de Avram Noam Chomsky (1928-), quien es sin duda la figura ms destacada de la lingistica moderna, tanto por desarrollar sus fundamentos matemticos, como por sus teoras sobre el origen y la naturaleza de los lenguajes naturales, aunque stas ltimas son ms discutidas (Chomsky, 1956; 1959; 1962; y 1963). En el campo de la Informtica, poco despus de las primeras publicaciones de Chomsky, el concepto de Gramtica Formal adquiri gran importancia para la especificacin de lenguajes de programacin; concretamente, se defini con sus teoras la sintaxis del lenguaje ALGOL 60 (con ligeras modificaciones sobre su versin primitiva), usndose una gramtica libre de contexto. Ello condujo rpidamente al diseo riguroso de algoritmos de traduccin y compilacin. Finalmente, y enlazando con el campo de la lingistica, la Teora de Lenguajes Formales es de gran utilidad para el trabajo en otros campos de la Informtica por ejemplo en Informtica Terica, Inteligencia Artificial, Procesamiento de lenguajes naturales (comprensin, generacin, y traduccin) y Reconocimiento del Habla. La Teora de los Lenguajes y Gramticas Formales tiene una relacin directa con la Teora de Autmatas, siendo posible establecer entre ambas una correspondencia denominada en Algebra isomorfismo.
-1-
La Teora de los Autmatas proviene del campo de la Ingeniera Elctrica. El cientfico estadounidense Claude Elwood Shannon (1916-2001), public varios trabajos, donde mostraba las bases para la aplicacin de la Lgica Matemtica a los circuitos combinatorios y secuenciales. A lo largo de las dcadas siguientes, las ideas de Shannon se desarrollaron considerablemente, dando lugar a la Teora de Autmatas (Shannon 1949; 1954 y 1956). Los autmatas son sistemas que reciben informacin, la transforman y producen otra informacin que se transmite al entorno. La Teora de Autmatas tiene aplicacin en campos muy diversos : - Lgica de los Circuitos Secuenciales - Teora de Control de Sistemas - Teora de la Comunicacin - Arquitectura de Ordenadores - Redes Conmutadoras y Codificadoras - Teora de los Sistemas Evolutivos y Auto-reproductivos - Reconocimiento de patrones - Redes Neuronales - Reconocimiento y procesado de lenguajes de programacin - Traduccin de lenguajes - Teora de Lenguajes Formales En este texto la Teora de Autmatas se aplicar principalmente los tres ltimos campos enumerados. Dentro del campo de los Traductores, Procesadores, Compiladores e Intrpretes se aplicarn los lenguajes, gramticas y autmatas de tipo 3 para la construccin de analizadores lxicos, y los de tipo 2 para la construccin de analizadores sintcticos.
-2-
DEFINICIONES PREVIAS
-3-
Ejemplos 2.3.1 Se utilizan los vocabularios de los ejemplos del epgrafe 2.2.1. abcb es una cadena del alfabeto V2 a+2*b es una cadena del alfabeto V2 000111 es una cadena del alfabeto V3 if a>b then b=a; es una cadena del alfabeto V4 2.4 Longitud de cadena La longitud de una cadena es el nmero de smbolos que contiene. La notacin empleada es la que se indica en los siguientes ejemplos. Ejemplos 2.4.1 Se utilizan las cadenas de los ejemplos del epgrafe 2.3.1. | abcb | 4 | a + 2*b | 5 | 000111 | 6 | if a > b then a = b ; | 9 2.5 Cadena vaca Existe una cadena denominada cadena vaca, que no tiene smbolos y se denota con , entonces su longitud es : | | 0 2.6 Concatenacin de cadenas Sean y dos cadenas cualesquiera, se denomina concatenacin de y a una nueva cadena constituida por los smbolos de la cadena seguidos por los de la cadena . El elemento neutro de la concatenacin es : = =
-4-
DEFINICIONES PREVIAS
2.7 Universo del discurso El conjunto de todas las cadenas que se pueden formar con los smbolos de un alfabeto V se denomina universo del discurso de V y se representa por W(V). Evidentemente W(V) es un conjunto infinito. La cadena vacia pertenece a W(V). Ejemplo 2.7.1 Sea un alfabeto con una sola letra V = { a }, entonces el universo del discurso es : W(V) = { , a, aa, aaa, aaaa, . . . } que contiene infinitas cadenas. 2.8 Lenguaje Se denomina lenguaje sobre un alfabeto V a un subconjunto del universo del discurso. Tambin se puede definir como un conjunto de palabras de un determinado alfabeto. Alguien puede pensar que los lenguajes se pueden definir porenumeracin de las cadenas que pertenecen a dicho lenguaje, pero este mtodo adems de ineficiente, es en muchos casos imposible (habitualmente un lenguaje tiene infinitas cadenas). As los lenguajes se defienen por las propiedades que cumplen las cadenas del lenguaje. Ejemplo 2.8.1 El conjunto de palndromos (cadenas que se leen igual hacia adelante, que hacia atrs) sobre el alfabeto {0,1}. Evidentemente este lenguaje tiene infinitas cadenas. Algunas cadenas de este lenguaje son: 0 1 00 11 010 0110 000000 101101 111111
-5-
100001 001100 1101011 0010100 2.9 Lenguaje vacio Existe un lenguaje denominado el lenguaje vaco, que es un conjunto vaco y que se denota por {}. El lenguaje vaco no debe confundirse con un lenguaje que contenga una sola cadena, y que sta sea la cadena vacia, es decir {}, ya que el nmero de elementos (cardinalidad) de estos dos conjuntos es diferente. Cardinal ({}) = 0 Cardinal ({}) = 1 2.10 Gramtica La gramtica es un ente formal para especificar, de una manera finita, el conjunto de cadenas de smbolos que constituyen un lenguaje. 2.11 Autmata Un autmata es una construccin lgica que recibe una entrada y produce una salida en funcin de todo lo recibido hasta ese instante. En el caso de los Procesadores de Lenguaje un autmata es una construccin lgica que recibe como entrada una cadena de smbolos y produce una salida indicando si dicha cadena pertenece o no a un determinado lenguaje.
-6-
-7-
Las producciones P son las reglas que se aplican desde el smbolo inicial para obtener las cadenas del lenguaje. El conjunto de producciones P se define por medio de la enumeracin de las distintas producciones, en forma de reglas o por medio de un metalenguaje por ejemplo BNF (Backus Naur Form) o EBNF (Extended Backus Naur Form). Ejemplo 3.1 Sea la gramtica : G = ( VT, VN, S, P) donde VT = {a, b}, VN = {S}, y el conjunto de producciones es : S ab S aSb Ejemplo 3.2 Sea la gramtica G = ( {a, b, c, d} , {S, A, B} , S, P) donde P son las producciones : S ASB A b aaA aaBB S d A aA B dcd Ejemplo 3.3 Sea la gramtica G = (VN, VT, S, P) donde : VN = { <nmero> , <dgito> } VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } S = <nmero> Las reglas de produccin P son : <nmero> ::= <dgito> <nmero> <nmero> ::= <dgito> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Ejemplo 3.4 Sea la gramtica G = (VN, VT, S, P) donde :
-8-
VN = { <dgito> , <otroDgito> , <Base2>, <vacio>} VT = { 0, 1 } S = <Base2> Las reglas de produccin P son : <Base2> ::= <dgito> <otroDgito> <otroDgito> ::= <dgito> <otroDgito> | <vacio> <dgito> ::= 0 | 1 <vacio> ::= 3.5 Notacin Se usar la que se describe a continuacin, por ser la ms extendida en la bibliografa Aho y Ullman (1973a, 1973b), Hopcroft y Ullman (1979), Aho et al. (1986), Sanchs y Morales (1986), Alfonseca et al. (1987), y Snchez y Valverde (1989). 3.5.1 Vocabulario terminal Los elementos del vocabulario terminal se representan por : - letras minsculas de comienzo del abecedario : a, b, c, . . . , g. - operadores tales como : + , - , * , / , . . . - caracteres especiales : # , @ , ( , ) , . , ; , . . . - los dgitos : 0, 1, . . . , 9 - las palabras reservadas de lenguajes de programacin con letras minsculas y en negrita : if, then, else, . . . 3.5.2 Vocabulario no terminal Los elementos del vocabulario no terminal se representan por : - letras maysculas de comienzo del abecedario : A, B, . . . , G. La nica excepcin suele ser el smbolo inicial que se representa con S. - nombres en minscula, pero encerrados entre parntesis angulares : <expresin>, <operador>, . . . 3.5.3 Vocabulario Los elementos indiferenciados del vocabulario terminal y no terminal se denotan con :
-9-
- las letras maysculas del final del abecedario : U, V, W, X, Y, Z. 3.5.4 Cadenas terminales Las cadenas compuestas totalmente por smbolos terminales se representan como : - las letras minsculas del final del abecedario : t, u, v, x, y, z. 3.5.5 Cadenas Las cadenas que contienen smbolos terminales y no terminales indiferenciados se representan por : - letras minsculas griegas : , , , , , . . .
- 10 -
- 11 -
1 2 2 3 3 4 ... (m 1) m se escribir entonces: 1 m dicindose que m deriva de 1 , o que 1 produce m . Ejemplo 4.2.1 Sea la gramtica G = ({S, A, B}, {a, b, c, d}, S, P) donde P son las siguientes reglas de produccin, que en este caso se numeran para su posterior identificacin cuando se usen. (1) (2) (3) (4) (5) (6) S ASB A b aaA aaBB S d A aA B dcd
Por aplicacin de derivaciones inmediatas a partir del smbolo inicial se obtiene la derivacin : S abddcd Las derivaciones inmediatas necesarias para llegar a la derivacin anterior se muestran a continuacin, indicndose en cada paso el nmero de la regla aplicada. S ASB aASB abSB abdB abddcd
(1) (5) (2) (4) (6)
- 12 -
SENTENCIAS O INSTRUCCIONES
- 13 -
- 14 -
Ejemplo 6.4 Sea la gramtica G4 = ({S}, {a,b}, S, P) donde P={(S aSb), (S ab)}. Determinar el lenguaje que genera. Solucin : Aplicando la primera produccin n-1 veces, seguida por la aplicacin de la segunda produccin, se tiene que : S aSb aaSbb a 3Sb 3 a (n 1)Sb (n 1) a n b n El lenguaje generado : L(G4)={an bn/n 1} Ejemplo 6.5 Dada la gramtica G5 = ({S,A}, {a,b}, S, P) donde P={(S abAS), (abA baab), (S a), (A b)}. Determinar el lenguaje que genera. Solucin : Se generan sentencias del lenguaje aplicando las reglas hasta que se pueda ver la forma general del lenguaje. S abAS baabS baaba S a S abAS abbS abba S abAS abAabAS (abA)n S (abb)n a S abAS abAabAS (abA)n S (baab)n a S abAS abAabAS abbbaaba S abAS abAabAS baababba S abAS abAabAS abAabAabAS baababbbaaba L(G5) = {cadenas que contienen abb y baab intercambindose y reproducindose cualquier nmero de veces, y terminando siempre con el smbolo a} Se puede observar que la forma de expresar este lenguaje no es simple, y surge la necesidad de tener una herramienta que permita describir los lenguajes de otra forma. Ejemplo 6.6 Sea la gramtica G6 = ({S,A,B}, {a,b}, S, P) donde las producciones P son :
- 15 -
A B B B
bAA b bS aBB
Solucin : Se generan algunas instrucciones. S S S S S es : L(G6) = {cadenas que tienen igual n de a que de b} La demostracin no es inmediata. Ejemplo 6.7 Sea la gramtica G7 = (VN, VT, S, P) donde : VN = { <nmero> , <dgito> } VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } S = <nmero> Las reglas de produccin P son : <nmero> ::= <dgito> <nmero> <nmero> ::= <dgito> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Determinar el lenguaje que genera. Solucin : A continuacin se muestran algunas sentencias del lenguaje generado por esta gramtica. aB bA aB bA aB ab ba abS abbA abba bbAA bbaa abS abaB ababS ababaB ababab
Se puede demostrar (Hopcroft y Ullman (1979), pp. 81-82) que el lenguaje generado
- 16 -
< nmero >< dgito >< nmero > 7 < nmero > 72 < nmero >< dgito > 7 < nmero >< dgito > 0 < nmero >< dgito >< nmero >< dgito >< dgito >< nmero > 235 L(G7) = {conjunto de los nmeros naturales en base diez}. Ejemplo 6.8 Sea la gramtica G8 = ({A,S}, {a,b}, S, P) donde las reglas de produccin son : S aS S aA A bA A b Determinar el lenguaje que genera esta gramtica. Solucin : Se muestran algunas sentencias del lenguaje generado por la gramtica. S aS aaA aab S aA ab S aS aaS aaaS a n S a n aA a n + 1b S aA abA abbA abbbA ab n A ab n + 1 El lenguaje generado se puede definir con la siguiente expresin regular, cuya definicin se estudiar en el captulo 9. L(G8) = a a* b b*
- 17 -
- 18 -
Ejemplo 7.2.1.1 La gramtica G = ({S,A,B}, {a,b}, S, P) cuyas producciones P se muestran a continuacin es de tipo 1. S aB S bA A a A aS Ejemplo 7.2.1.2 La gramtica G = (VN, VT, S, P) donde VN = { <nmero> , <dgito> }; VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <nmero> y las reglas de produccin P que se muestran a continuacin es de tipo 1. <nmero> ::= <dgito> <nmero> <nmero> ::= <dgito> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Ejemplo 7.2.1.3 La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran a continuacin es de tipo 1. S aS S aA A bA A b 7.2.2 Ejemplos de gramticas que No son de tipo 1 A continuacin se muestran algunos ejemplos de gramticas que no son de tipo 1, y que pueden ilustrar mejor la definicin de estas gramticas. Ejemplo 7.2.2.1 La gramtica definida como G = ({S}, {a,b}, S, P) donde P son las siguientes producciones : A B B B bAA b bS aBB
- 19 -
S aaaaSbbbb aSb ab La produccin aSb ab no es del tipo 1, pues se sustituye S por vaco en el contexto a...b. Sin embargo si se esta produccin fuera S ab o aSb abb , entonces sera de tipo 1. Ejemplo 7.2.2.2 La gramtica G = ({S,A}, {a,b}, S, P) con las producciones P siguientes : S abAS abA baab S a A b No es del tipo 1, ya que la produccin abA baab no es sensible al contexto. Lo sera si fuese abA abab . 7.2.3 Propiedades de las gramticas de tipo 1 A continuacin se presenta la propiedad de no decrecimiento de las gramticas de tipo 1, que se presenta en forma directa e inversa, lo cual permite intercambiar dicha propiedad con la definicin dada anteriormente. 7.2.3.1 Propiedad de no decrecimiento Las cadenas que se obtienen en cualquier derivacin de una gramtica de tipo 1 son de longitud no decreciente, es decir : | || | y que se puede enunciar como la longitud de la parte derecha de la produccin es mayor o igual a la de la parte izquierda. La demostracin es inmediata. Si se define una produccin de un lenguaje tipo 1 como : A
- 20 -
siendo (VN VT)+, es decir nunca puede ser la cadena vacia, lo que implica que | | 1 y como | A | como mnimo vale 1, queda demostrada la propiedad : |A | ||
7.2.3.2 Propiedad de sensibilidad al contexto Tambin se puede demostrar (Fernndez y Sez Vacas, 1987, pg. 442) que si todas las reglas de una gramtica cumplen la condicin de no decrecimiento, se puede hallar una gramtica equivalente con las producciones sensibles al contexto. Esta segunda propiedad combinada con la primera hace que se pueda intercambiar la caracterstica de no decrecimiento con la definicin. Ejemplo 7.2.3.3 Sea la gramtica G = ({S,B,C}, {a,b,c}, S, P) donde P son las producciones : S aSBC S aBC CB BC bB bb bC bc cC cc aB ab La gramtica anterior no es de tipo 1 segn la definicin dada, ya que la regla CB BC no respeta el contexto. Sin embargo puede apreciarse que todas las reglas de esta gramtica son no decrecientes, por lo tanto es posible encontrar una gramtica equivalente que genere el mismo lenguaje. Se puede sustituir la regla CB BC por : CB XB XB XY XY BY BY BC Puede observarse que ambas gramticas son equivalentes y que generan el lenguaje : L(G) = { an bn cn / n 1 }
- 21 -
7.3 Gramticas de tipo 2 Las gramticas de tipo 2 tambin se denominan gramticas de contexto libre o libres de contexto (en ingls context free). Sus reglas de produccin tan slo admiten tener un smbolo no terminal en su parte izquierda, es decir son de la forma : A siendo A VN y (VN VT)+ . Si cada regla se representa como un par ordenado (A, ), el conjunto P es un subconjunto del conjunto producto cartesiano VN ({VN VT})+, es decir : P {N ({VN} {VT})+} La denominacin contexto libre se debe a que se puede cambiar A por , independientemente del contexto en que aparezca A. Ejemplo 7.3.1 La gramtica G = ({S,A,B}, {a,b}, S, P) cuyas producciones P se muestran a continuacin es de tipo 2. S aB S bA A a A aS Ejemplo 7.3.2 La gramtica G = (VN, VT, S, P) donde VN = { <nmero> , <dgito> }; VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <nmero> y las reglas de produccin P que se muestran a continuacin es de tipo 2. <nmero> ::= <dgito> <nmero> <nmero> ::= <dgito> <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Ejemplo 7.3.3 La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran a continuacin es de tipo 2.
- 22 -
A B B B
bAA b bS aBB
S aS S aA A bA A b 7.4 Gramticas de tipo 3 Las gramticas de tipo 3 tambien denominadas regulares o gramticas lineales a la derecha comienzan sus reglas de produccin por un smbolo terminal, que puede ser seguido o no por un smbolo no terminal, es decir son de la forma : A aB A a donde A,B VN y VT. Ejemplo 7.4.1 La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran a continuacin es de tipo 3. S aS S aA A bA A b 7.5 Lenguajes con la cadena vacia Segn las definiciones anteriores la cadena vacia no puede aparecer en ningn lenguaje de tipo 1, 2 o 3. Supongamos que deseamos aadir la cadena vacia a un lenguaje. Se pretende crear un nuevo lenguaje L, a partir del lenguaje L de tal forma que: L = L {} Bastar aadir de algn modo a la descripcin del lenguaje L. Una forma de hacer esto es aadir la siguiente regla de produccin S a las reglas de la gramtica que describe L. Pero se haba impuesto a las reglas de las gramticas de
- 23 -
tipo 1 A , con la condicin de , para cumplir la propiedad de no decrecimiento. Si se aade S ser necesario imponer la condicin de que no aparezca en la parte derecha S, tal y como se ver en el teorema 7.5.1 Teorema 7.5.1 Si G es una gramtica de tipo 1, 2, o 3 puede encontrarse una gramtica equivalente G de tipo 1, 2 o 3 respectivamente, tal que L(G)=L(G) y adems su smbolo inicial S, no aparece en el segundo trmino de ninguna regla de G. Es decir si G=(VT,VN,P,S) se puede encontrar G=(VT,VN*,P,S) donde P=P{S /(S ) P} . La demostracin se puede encontrar en las pginas 437-438 del libro Fundamentos de Informtica, Fernndez G. y Sez Vacas F.). Corolario 7.5.2 Si L es un lenguaje de tipo 1, 2 o 3 entonces L {} y L {} son lenguajes de tipo 1, 2, o 3 respectivamente. Corolario 7.5.3 Dada una gramtica G cualquiera de tipo 1, 2 o 3 se puede obtener otra G, con S de forma que L(G) = L(G) {} . 7.6 Relacin de inclusin Los cuatro tipos de gramticas estudiados anteriormente (tipo 0, tipo 1, tipo 2, y tipo 3), cada una de ellas tiene restricciones ms fuertes que las anteriores. Las gramticas de tipo 0, contienen a todas las dems. Las de tipo 1 contienen a las de tipo 2 y tipo 3. Y por ltimo las de tipo 2 contienen a las de tipo 3. Es decir una gramtica de tipo 3 es de tipo 2, tipo 1 y tipo 0. Por lo tanto se define una jerarqua de gramticas respecto de la relacin de inclusin, que se puede representar grficamente mediante el diagrama de la figura 1.
- 24 -
TIPO 0
TIPO 1
TIPO 2
TIPO 3
- 25 -
- 26 -
GRAMATICAS
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 0
TIPO 1
TIPO 2
TIPO 3
LENGUAJES
- 27 -
e) Cierre positivo : La operacin cierre positivo de un lenguaje L es otro lenguaje L obtenido uniendo el lenguaje L con todas sus potencias posibles, excepto L0. Formalmente se puede expresar como :
+
- 28 -
EXPRESIONES REGULARES
9.2 Operaciones con las expresiones regulares Si es una expresion regular, entonces {} es el conjunto descrito por la expresin regular . Tambin se puede decir que denota el lenguaje de la cadena . Las expresiones regulares describen los lenguajes regulares, luego sus operaciones corresponderan a las indicadas para los lenguajes regulares. a) Unin o alternativa : Si y son expresiones regulares, | es una expresion regular tal que : { | } = {} {}
es decir puede aparecer o indistintamente. b) Concatenacin : Si y son expresiones regulares, es una expresin regular tal que { } = {} {} c) Cierre u operacin estrella : Si es una expresin regular, entonces * es una expresin regular que denota { }*. Es decir denota las cadenas : d) Cierre positivo : Si es una expresin regular, entonces + es una expresin regular que denota { }+. Es decir denota las cadenas :
- 29 -
9.3 Precedencia de las operaciones Se permite el uso de parntesis para indicar la precedencia de las operaciones, pero cuando no se utilizan parntesis para evaluar una expresin regular, hay que tener en cuenta el siguiente orden de precedencia : 1.- Uso de parntesis 2.- Operacin cierre y cierre positivo 3.- Operacin concatenacin 4.- Alternativa 9.4 Teorema Dos expresiones regulares son iguales, si designan al mismo conjunto regular. 9.5 Propiedades A partir del teorema anterior se pueden enunciar las siguientes propiedades : a) Asociatividad de la operacin concatenacin ()=() b) Distributividad de la operacin alternativa respecto de la concatenacin | = ( | ) c) es el elemento neutro de la concatenacin, es decir = = d) Propiedades de la operacin cierre
- 30 -
EXPRESIONES REGULARES
d.1) ( | )*
= (* | *)
= (**)
d.2) ( | )* = (* | ) = * d.3) * | = * d.4) * = Ejemplo 9.6 Sea el vocabulario {a,b} y la expresin regular aa *bb * . Indicar el lenguaje que denota, y algunas cadenas de dicho lenguaje. Solucin : Algunas cadenas son: ab aab aaaab abbbb abb aaaab El lenguaje que se describe es L={cadenas que comienzan por una a y continuan con varias o ninguna a, y siguen con una b y continuan con varias o ninguna b} Ejemplo 9.7 Sea el vocabulario {0,1}, la expresin regular 1(01)*denota el conjunto de cadenas que empiezan por 1 y van seguidas por (01) cualquier n de veces o ninguna. Ejemplo 9.8 Sea el vocabulario {0,1}, la expresin regular (0 | 1)+denota el conjunto de nmeros en base 2. Ejemplo 9.9 Sea el vocabulario {0, 1, 2}, la expresin regular (0 | 1 | 2)+denota el conjunto de nmeros en base 3.
- 31 -
Ejemplo 9.10 Dada la expresin regular (a | b)* , el lenguaje que denota es el que se puede formar con todas las cadenas compuestas por a y b incluida la cadena vacia. Algunos ejemplos de sentencias de este lenguaje son : aaa bbb aba abaaa abbaa Ejemplo 9.11 Sea el vocabulario {1,2,3}, la expresin regular (1 | 2)* 3 indica el conjunto de todas las cadenas formadas con los smbolos 1 y 2, sucedindose cualquier n de veces (y en cualquier orden), y siempre terminando la cadena en el smbolo 3. Ejemplos de sentencias : 3 13 123 11113 221113 Ejemplo 9.12 Sea el vocabulario {a,b,c}, la expresin regular a | bc denota el lenguaje formado por las sentencias a y bc. Ejemplo 9.13 Sea el vocabulario {a,b}, la expresin regular ((a | b) (a | b))* denota el lenguaje compuesto por todas las cadenas cuya longitud es cero o un n par, y estn compuestas solamente por el smbolo a, el smbolo b, o por smbolos a y b. 23 223 113 121211223 111212213
- 32 -
EXPRESIONES REGULARES
Ejemplo 9.14 Sea el vocabulario {a,b}, la expresin regular (a | b)(a | b) denota el lenguaje compuesto por todas las cadenas de longitud dos formadas con los smbolos a y b. Se pueden definir por enumeracin {aa, ab, ba, bb}. Ejemplo 9.15 Dar una expresin regular para identificador: <letra> (<letra> | <dgito>)* Tambin se puede definir identificador como: (a | b | c | | z) (a | b | c | d | | z | 0 | 1 | | 9)* Ejemplo 9.16 Dar una expresin regular para los nmeros reales sin exponente del lenguaje Pascal estndar. Solucin : ( | + | ) (< dgito >< dgito >* < dgito >*< dgito >) Ejemplo 9.17 La expresin regular a *b * denota el lenguaje {a m b n /m 0 y n 0} .
- 33 -
AUTMATAS
cuando reciba a su entrada una determinada cadena de smbolos indica si dicha cadena pertenece o no al lenguaje. Tambin se mostrar como existe un tipo de autmata para reconocer cada uno de los tipos de lenguajes generados por las correspondientes gramticas. 10.1 Definicin formal de autmata Un autmata es una quntupla A = ( E, S, Q, f, g ) donde : E = {conjunto de entradas o vocabulario de entrada} S = {conjunto de salidas o vocabulario de salida} Q = {conjunto de estados} f:EQQ g:EQ S E es un conjunto finito, y sus elementos se llaman entradas o smbolos de entrada. S es un conjunto finito, y sus elementos se llaman salidas o smbolos de salida. Q es el conjunto de estados posibles, puede ser finito o infinito. f es la funcin de transicin o funcin del estado siguiente, y para un par del conjunto E Q devuelve un estado perteneciente al conjunto Q. E Q es el conjunto producto cartesiano de E por Q. g es la funcin de salida, y para un par del conjunto E Q, devuelve un smbolo de salida del conjunto S. 10.2 Representacin de autmatas Los autmatas se pueden representar mediante : - Tabla de transiciones - Diagrama de Moore 10.2.1 Tabla de transiciones Las funciones f y g pueden representarse mediante una tabla, con tantas filas como estados y tantas columnas como entradas. As por ejemplo se puede representar el autmata A = ( E, S, Q, f, g ) donde E = {a,b}, S = {0,1}, Q = {q1, q2, q3} y las funciones f y g se pueden representar por :
- 35 -
f q1 q2 q3
a q1 q3 q3
b q2 q2 q1
g q1 q2 q3
a 0 0 1
b 1 0 0
As se tiene que f(a , q1) = q1 ; g(a, q1) = 0 ; o tambin f(a, q2) = q3 ; y g(a, q3) = 1 . Ambas funciones tambin se pueden representar en una misma tabla de la siguiente forma : f/g q1 q2 q3 10.2.2 Diagramas de Moore Los diagramas de Moore son otra forma de representar las funciones de transicin y salida de un autmata. El diagrama de Moore es un grafo orientado en el que cada nodo corresponde a un estado; y si f( , qi) = qj y g( , qi) = s existe un arco dirigido del nodo qi al correspondiente qj, sobre el que se pone la etiqueta / s, tal y como se muestra en la figura 3.
/s
As continuando con el ejemplo del apartado 10.2.1, el autmata se representa con el diagrama de Moore de la figura 4.
- 36 -
AUTMATAS
a/0
q 1 b/1 b/0
a/0
a/1
b/0
10.3 Mquinas de Moore y Mealy El modelo general de autmata que se ha definido se llama mquina de Mealy. Se puede plantear el siguiente problema : si se considera que adems de los elementos del vocabulario de entrada E, un elemento vacio , que fsicamente indica que no hay entrada, se han de ampliar los dominios de las definiciones de la siguiente forma : f : {E {}} Q Q g : {E {}} Q S La ampliacin del dominio f no plantea ningn problema, pues se puede convenir que f( ,q)=q, es decir si no hay entrada, no se cambia de estado. No ocurre lo mismo con la ampliacin del dominio de g, ya que g( ,q), produce una salida indeterminada, pues depende del estado anterior al q. As por ejemplo en el autmata del apartado 10.2.1, se observa que : g( ,q2)=1, si el estado anterior es q1. g( ,q2)=0, si el estado anterior es q2.
- 37 -
ya que si se llega a q2 desde q1 la salida es 1, mientras que si se alcanza desde el propio q2 la salida es 0. Entonces slo se puede ampliar el dominio de g, si a cada estado q se le puede asociar una salida y slo una. Cuando esto ocurre para todo q Q, se puede definir una aplicacin inyectiva : h:QS tal que g se obtiene como composicin de h por f : g=hf es decir g(e,q) = h(f(e,q)), donde e {E {}} y q Q. En este caso, se puede decir,
que la salida slo depende del estado, y el autmata se llama mquina de Moore. En una mquina de Mealy las salidas estn asociadas a las transiciones, mientras que en una mquina de Moore las salidas estn asociadas a los estados, o, lo que es lo mismo, todas las transiciones que conducen a un mismo estado tienen asociada la misma salida. Tambin se puede decir que una mquina de Mealy, en el instante de efectuar una transicin necesita conocer una entrada e E, ya que en general g( ,q) no est definida. Sin embargo en las mquinas de Moore la entrada puede ser . Puesto que por definicin toda mquina de Moore es una mquina de Mealy que cumple la condicin de que a cada estado se le puede asociar una salida y slo una, parece en principio que las mquinas de Moore son un subconjunto de las mquinasde Mealy. Sin embargo, se va a demostrar que, dada una mquina de Mealy, siempre se puede encontrar una mquina de Moore equivalente, normalmente, a costa de aumentar el nmero de estados. En efecto sea la mquina de Mealy A = (E, S, Q, f, g) siempre se puede definir un nuevo autmata : f, A = (E,S,Q, g) en el que Q se obtiene escindiendo q Q en tantos estados qs como salidas s pueden asociarse a q, es decir Q = {qs / (q Q y e E) tales que f(e, q) = q y g(e, q) = s }
AUTMATAS
(e, qs) = [f(e,q)]g(e,q) f g (e, qs) = g(e,q) De este modo, a cada qs Q se le puede asociar una sola salida s, y as tendra una funcin de salida : h:QS f tal que g (e, qs) = h ( (e, qs)), por lo tanto A es una mquina de Moore. En lo sucesivo siempre que slo se tratarn autmatas que son mquinas de Moore. Ejemplo 10.3.1 Construir una mquina de Moore equivalente a la mostrada en el ejemplo del apartado 10.2.1. Solucin : Se construye la siguiente tabla de transiciones combinada. g=hf q10 q20 q21 q30 q31 a q10 q30 q30 q31 q31 b q21 q20 q20 q10 q10
Se observa que al estado q1 siempre se le asocia la salida 0; sin embargo q2 puede tener la salida 0 1, se crean entonces los estados q20 y q21; de la misma forma q30 y q31. Esta mquina de Moore se puede representar por el diagrama de la figura 5. Las salidas estn indicadas en los nodos como superndices de los estados.
- 39 -
a a
q1 3 b
q0 3 a
0 2
b q 0 1 b q1 2 b
10.4 Estados accesibles de un autmata Sea un autmata A=(E,S,Q,f,g), se dice que un estado qj es accesible desde otro estado qi, si existe una entrada e E* tal que f(qi,e)=qj. Evidentemente todo estado es accesible desde s mismo, puesto que f(qi,)=qi. 10.5 Autmatas conexos Sea un autmata A=(E,S,Q,f,g), se dice que es conexo si todos los estados de Q son accesibles desde el estado inicial q0. Dado un autmata no conexo se puede encontrar otro equivalente y conexo eliminando los estados inaccesibles. Es evidente que los dos autmatas aceptarn el mismo lenguaje. 10.6 Autmatas deterministas y no deterministas Se denomina autmata determinista cuando la funcin de cambio de estado f es determinista. En caso contrario se dice no determinista.
- 40 -
- 41 -
GRAMATICAS
AUTOMATAS
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 0
TIPO 1
TIPO 2
TIPO 3
LENGUAJES
- 42 -
MQUINAS DE TURING
CELDA
CINTA
1 1 0 0 0 0 1 1 1 1 1 1 0 1 1
MOVIMIENTO A IZQUIERDA
MOVIMIENTO A DERECHA
donde :
- 43 -
- Q = {conjunto de estados} - = {conjunto de smbolos permitidos en la cinta} - B es el smbolo blanco. - es el subconjunto de smbolos de entrada no incluyendo el blanco. - : Q Q {I, D, S} donde es la funcin del siguiente movimiento, I significa movimiento a izquierda, D significa movimiento a derecha, y S parada (stop). - q0 Q es el estado inicial. - F Q es el subconjunto de estados finales El lenguaje aceptado o reconocido por una mquina de Turing, que denotaremos por L(MT), es el conjunto de palabras formadas con el alfabeto * , que hace que la mquina de Turing se pare al alcanzar un estado final. En un principio la cabeza de la mquina de Turing est situada a la izquierda de la cadena a reconocer, y su estado es el estado inicial q0. Formalmente, el lenguaje MT = (Q, , , , q0, B, F) es : L(MT) = {W/W * y aceptado por una mquina de Turing
q0W 1p2
p F, 1,2 *}
Una mquina de Turing reconoce un lenguaje L si es capaz de reconocer todas las sentencias de dicho lenguaje. Si una sentencia de L es aceptada, la maquina se para, es decir alcanza un estado final. Pero si no se acepta la sentencia, la mquina de Turing no se parar nunca. 12.1 Teorema Para toda gramtica de tipo 0, existe una mquina de Turing que reconoce el lenguaje generado por dicha gramtica. 12.2 Teorema Para toda mquina de Turing, existe una gramtica de tipo 0 que genera un lenguaje igual al reconocido por la mquina de Turing.
- 44 -
MQUINAS DE TURING
12.3 Corolario Existe una correspondencia entre gramticas, lenguajes y autmatas de tipo 0, tal y como se mostr en el diagrama de la figura 6. Ejemplo 12.4 Disear una mquina de Turing que acepte el lenguaje L = {0n 1n /n 1} . Solucin : Inicialmente la cinta contendr 0n 1n , sequido por ambos lados por un nmero infinito de blancos. El algoritmo de reconocimiento es el siguiente : la cabeza de lectura/escritura se coloca en el 0 ms a la izquierda y lo reemplaza por una X, se mueve a la derecha hasta encontrar el 1 ms a la izquierda, reemplazndolo por una Y, despus se mueve a la izquierda hasta encontrar la X ms a la derecha, entonces se mueve una celda a la derecha, y repite el ciclo. La mquina de Turing que reconoce el lenguaje L es MT = (Q, , , , q0, B, F) donde : Q={q0, q1, q2, q3, q4} ={0,1} ={0,1,X,Y,B} F={q4} q0 es el estado inicial La funcin viene dada por la tabla siguiente.
q0 q1 q2 q3 q4
1 q2,Y,I S
X -
Y q3,Y,D q1,Y,D
B -
q0,X,D q2,Y,I S
q3,Y,D q4,B,D S S
- 45 -
Los guiones (-) en la tabla significan estados imposibles. La mquina primero escribe, luego cambia de estado y por ltimo se mueve. Utilizando la mquina anterior se puede reconocer la cadena 0011 : q00011 Xq1011 X0q111 Xq20Y1 q2X0Y1 Xq00Y1 XXq1Y1 XXYq11 XXq2YY Xq2XYY XXq0YY XXYq3Y XXYYq3 XXYYBq4 S
- 46 -
CINTA
# 1 1 0 0 0 0 1 1 1
0 1 1 $
MOVIMIENTO A IZQUIERDA
MOVIMIENTO A DERECHA
Un autmata lineal acotado se puede definir formalmente como una mquina de Turing con dos smbolos lmite de la cinta. ALA = (Q, , , , q0, #, $, F} donde Q, , , , q0, y F significan lo mismo que en la mquina de Turing; # y $ son smbolos de , correspondientes a la marca izquierda y derecha de la cinta. El lenguaje aceptado por un autmata lineal acotado, es : L(ALA) = { W / W { - {#,$}}* y q0#W$ q para algn q F}
- 47 -
Ntese que las marcas fin de cinta y comienzo de cinta no son consideradas como parte de la sentencia a reconocer. Un autmata lineal acotado no puede moverse fuera de la cadena de entrada. 13.1 Teorema Para toda gramtica sensible al contexto G1 existe un autmata reconocedor lineal acotado RALA, tal que el lenguaje generado por la gramtica L(G1), es reconocido por el autmata RALA. L(G1)=L(RALA) 13.2 Teorema Si L(RALA) es el lenguaje reconocido por un autmata lineal acotado, existe una gramtica sensible al contexto G1, tal que el lenguaje reconocido por el autmata es igual al generado por la gramtica. L(RALA)=L(G1) 13.3 Corolario De los dos teoremas anteriores se deduce que existe una correspondencia entre las gramticas de tipo 1, los lenguajes de tipo 1, y los autmatas lineales acotados.
- 48 -
AUTMATAS DE PILA
- 49 -
CINTA
MOVIMIENTO DE LA CINTA
1 1 0 0 0 0 1
Q Z
Un autmata de pila se puede definir formalmente como una sptupla : AP = (Q, , , , q0, Z0, F) donde : - Q es el conjunto finito de estados. - es el alfabeto de entrada, es finito. - es el alfabeto de pila. - es la funcin de transicin, y es una aplicacin de la forma : : Q { {}} Q * - q0 es el estado inicial, y cumple q0 Q. - Z0 es el smbolo inicial que contine la pila antes de comenzar, evidentemente Z0 . - F es el conjunto de estados finales, evidentemente F Q. Tal y como ha sido definida la funcin de transicin , el autmata es en general no determinista. Se entiende por no determinista, cuando el resultado de la funcin no est determinado, es decir pueden resultar dos o ms valores, sin que la funcin precise cual va a tomar de ellos.
- 50 -
AUTMATAS DE PILA
Se define configuracin de un autmata de pila a su situacin en un instante, que se puede expresar formalmente mediante el terceto : (q, W, ) donde : - q representa el estado actual del autmata, y evidentemente q Q . - W es la cadena de entrada que resta por analizar, siendo W * ; si W = , se asume que toda la cadena de entrada ya ha sido leda. - es el contenido de la pila, en el instante considerado, y = indica que la pila est vacia. Por supuesto * . Se entiende por movimiento de un autmata a una transicin entre configuraciones, y se representa por el operador binario . As por ejemplo sea el siguiente movimiento : (q, aW, z ) (q, W, ) donde la funcin de transicin para esta entrada toma el valor (q,aW,Z) (q, ) , siendo q Q , a {} , W * , Z , y * . Es decir que el autmata se encuentra en el estado q, que la cabeza de lectura de la cinta se encuentra sobre el smbolo a, y que la pila contiene determinados smbolos representados por la concatenacin de Z y , siendo el situado ms a la izquierda Z el que se encuentra en cabeza de la pila (fig. 10).
MOVIMIENTO DE LA CINTA
CINTA
q Z
- 51 -
El autmata pasa de la configuracin (q, aW, z) a la configuracin (q, W, ) , es decir pasa a un estado q, avanzando la cabeza de lectura al siguiente smbolo y procediendo a realizar determinadas sustituciones en la cabeza de la pila (fig. 11).
MOVIMIENTO DE LA CINTA
CINTA a
14.1 Lenguaje reconocido por un autmata de pila Se puede definir de dos formas : a ) El autmata reconoce una cadena de entrada, cuando alcanza el estado final, es decir el lenguaje reconocido por un autmata de pila se puede expresar de la siguiente forma : L(AP) = {W/W * y (q0,W, Z0) (q f , , )}
b ) El autmata reconoce la cadena cuando la pila queda vacia, independientemente del estado al que se llegue, entonces el lenguaje reconocido por el autmata es : L(AP) = {W/W * y (q0,W, Z0) (q , , )}
Se puede demostrar que ambas definiciones de L(AP), son equivalentes, en el sentido de que la clase de lenguajes aceptados por los autmatas de pila es la misma en ambos casos.
- 52 -
AUTMATAS DE PILA
14.1.1 Teorema Para toda gramtica libre de contexto G2, existe un reconocedor constituido por un autmata de pila RAP, tal que el lenguaje generado por la gramtica L(G2) es reconocido por el autmata RAP. L(G2)=L(RAP) 14.1.2 Teorema Para todo reconocedor constituido por un autmata de pila RAP, existe una gramtica libre de contexto G2, tal que el lenguaje reconocido por el autmata es igual al generado por la gramtica. L(RAP)=L(G2) 14.1.3 Corolario De los dos teoremas anteriores se deduce que el conjunto de lenguajes reconocidos por los autmatas de pila, son los lenguajes de tipo 2 y que todo lenguaje de tipo 2 se puede reconocer por un autmata de pila. Tambin se puede deducir que existe una correspondencia entre las gramticas, los lenguajes y los autmatas de tipo 2. Ejemplo 14.1.4 Construir un autmata de pila que reconozca el lenguaje L = {0n 1n /n 0} . Solucin : Se puede definir un autmata de pila, P, de la forma: P = ({q0, q1, q2}, {0,1}, {Z,0}, , q0, Z, {q0}) donde se define : (q0, 0, Z) (q1, 0Z) (q1, 0, 0) (q1, 0, 0) (q1, 1, 0) (q2, ) (q2, 1, 0) (q2, )
- 53 -
(q2, , Z) (q0, ) (q0, , Z) (q0, ) El autmata va copiando todos los 0 de la cinta en la pila, y cuando va encontrando los 1, va sacando los ceros de la pila. Puede observarse que la cadena vacia tambin pertenece al lenguaje. Tambin se puede definir por la tabla, donde los guiones (-) representan estados imposibles. q0,Z q1,0 q2,0 q2,Z 0 q1,0Z q1,00 1 q2, q2, q0, q0,
Por ejemplo para reconocer la sentencia 0011 del lenguaje, se realizan las siguientes transiciones : (q0,0011,Z) (q1,011,0Z) (q1,11,00Z) (q2,1,0Z) (q2,,Z) (q0,,) En el caso general de i1, las transiciones son las siguientes : (q0,00i11i,Z) (q1,0i11i,0Z) (q1,11i,00iZ) (q2,1i,0iZ) (q2,,Z) (q0,,) y para i=0 la transicin es : (q0,00i11i,Z) (q0,,) 14.2 Algoritmo de transformacin de una gramtica de tipo 2 en un autmata de pila Dada una gramtica de tipo 2 se puede construir un autmata de pila (por lo general no determinista) que reconozca el mismo lenguaje que genera la gramtica.
i i
- 54 -
AUTMATAS DE PILA
Sea la gramtica G=(VN,VT,S,P) se desea construir el autmata de pila AP=(Q,, , , q0, z0, F) que reconozca el mismo lenguaje generado por G. As se puede obtener el autmata AP de la siguiente forma: = VT El vocabulario o alfabeto de entrada del autmata coincide con el vocabulario terminal VT de la gramtica. = VN VT El alfabeto de la pila coincide con la union de los vocabularios terminal y no terminal de la gramtica. z0 = S El smbolo inicial que contiene la pila es el smbolo inicial de la gramtica Q = {q} El conjunto de estados del autmata tiene un estado nico q F = {} El conjunto de estados finales del autmata de pila est vacio. El autmata slo se parar si se vacia la pila. La funcin de transicin se construye de la siguiente forma: a) Para todo smbolo terminal x se construye la siguiente relacin (q, x, x) (q, ) que se puede interpretar como: Saca x de la pila Avanza el smbolo x de la cinta No escribe nada en la pila No cambia de estado b) Para toda regla de produccin A perteneciente a P se construye la siguiente relacin (q , , A) (q , ) que se puede interpretar como: No avanza la cinta Saca A de la pila Mete en la pila No cambia de estado
- 55 -
Ejemplo 14.2.1 Sea la gramtica G=(VN,VT,S,P) que representa el manejo de expresiones aritmticas, siendo VN={E,T,F} donde E es la abreviatura de expresin, T la de trmino y F la de factor. VT={a,+,*,(,)} donde a representa a los identificadores. El smbolo inicial S=E. Las reglas de produccin son las siguientes: E E +T |T T T*F | F F (E) | a Construir un autmata de pila que reconozca el mismo lenguaje generado por la gramtica G. Solucin: AP=(Q,, , , q0, z0, F) donde Q = {q} = {a , +, *, (, )} = {a, +, *, (, ), E, T, F} q0 = q z0 = E F = {} a) Smbolos terminales (1) (2) (3) (4) (5) (q , a, a) (q, ) (q, +, +) (q , ) (q, *, *) (q , ) (q, (, ( ) (q, ) (q , ), ) ) (q, ) b) Reglas de produccin (6) (7) (8) (9) (q , , E) (q, T) (q, , E) (q, E + T) (q, , T) (q , F) (q , , T) (q, T*F)
- 56 -
AUTMATAS DE PILA
(10) (11)
Se puede observar que si se desea reconocer una cadena por ejemplo a+a se producen retrocesos, debido a que el autmata no es determinista. As se pone la cadena a reconocer a+a en la cinta, el autmata en el estado inicial q, y la pila con su valor inicial E. Las reglas de transicin entre configuraciones estn numeradas y el autmata aplica en primer lugar la regla con nmero ms bajo. (q , a + a , E) (q, a + a, T) (a, a + a , F) (a , a + a , (E) ) Aqu se alcanza una configuracin imposible. El smbolo terminal en la cima de la pila no coincide con el smbolo terminal de la cinta. Se debe retroceder hasta donde se eligi la ltima regla alternativa que fue la (10). Se observa que hay otra regla la (11). (q , a + a , F) (q, a + a, a ) (q, +a, ) Se alcanza una configuracin imposible la pila est vacia pero queda una parte de la cadena en la cinta. Se tiene que retroceder hasta aplicar otra regla alternativa. Se retrocede hasta donde se aplic la regla (8) y ahora se utiliza la regla (9). (q , a + a, T) (q, a + a, T*F) (q, a + a, F*F) (q , a + a, (E)*F) Se alcanza una configuracin imposible. Se retrocede y se aplica la regla (11) en vez de la (10). (q , a + a, F*F) (q, a + a, a*F) (q, +a, *F) Se alcanza una configuracin imposible. Se retrocede hasta donde se aplic la regla (6) y ahora se utiliza la regla (7). Estamos otra vez en la configuracin inicial.
(q , a + a , E) (q , a + a , E + T) (q , a + a , T + T) (q , a + a , F + T) (q , a + a , (E) + T)
(7) (6) (8) (10)
(6)
(8)
(10)
(11)
(1)
(9)
(8)
(10)
(11)
(1)
Se alcanza una configuracin imposible y se retrocede hasta donde se aplic la regla (10) y ahora se usa la (11).
(q , a + a , F + T) (q , a + a , a + T) (q , +a , +T) (q , a , T) (q , a , F) (q , a , (E))
(11) (1) (2) (8) (10)
Se alcanza una configuracin imposible y se retrocede hasta donde se aplic la regla (10) y ahora se usa la (11).
- 57 -
(q , a , F) (q, a , a) (q, , ) La cadena a+a ha sido reconocida por el autmata. Ejercicio 14.2.2 Sea la gramtica G=(VN,VT,S,P) que representa el manejo de expresiones tipo Lisp, siendo VN={S,R} y VT={x,(,), , }. Las reglas de produccin son las siguientes: S x S (SR R , SR R ) Determinar el lenguaje que genera y construir el autmata que lo reconoce. Poner un ejemplo de reconocimiento de una cadena del lenguaje.
(11)
(1)
- 58 -
AUTMATAS FINITOS
MOVIMIENTO A IZQUIERDA
CINTA
1 1 0 0 0 0 1 1 1 1 1 1 0 1 1
CONTROL DE ESTADOS
Fig. 12 : Esquema intuitivo de un autmata finito.
La cinta de entrada, slo contiene smbolos de un determinado alfabeto, y se mueve en una sla direccin. El control de estados, determina el funcionamiento del autmata. Una sentencia de un lenguaje determinado, colocada en la cinta, y leda por el autmata finito, es reconocida por ste, si el control de estados llega a un estado final. 15.1 Definicin formal de autmata finito Se puede definir como una quntupla AF = (E, Q, f, q1, F) donde : E = {conjunto finito de smbolos de entrada, que constituye el vocabulario} Q = {conjunto finito de estados} f:E * Q Q es la funcin de transicin q1 Q , es el estado inicial F Q es el conjunto de estados finales
- 59 -
Se entiende por configuracin de un autmata finito, a un par de la forma (q, W) donde q, es el estado actual, y W la cadena que queda por leer en ese instante. Segn la definicin anterior, se puede afirmar que la configuracin inicial de un autmata finito es el par (q1, t) siendo t la sentencia o cadena de entrada a reconocer. La configuracin final se representa por el par (qi, ) donde qi F, y indica que no queda nada por entrar de la cinta. Un movimiento de un autmata finito, puede definirse como el trnsito entre dos configuraciones, y se representa por (q, aW) (q,W) y se debe de cumplir que f(q,a)=q. 15.2 Lenguaje reconocido por un autmata finito Cuando un autmata transita a una configuracin final partiendo de la configuracin inicial, en varios movimientos, se dice que se ha producido aceptacin o reconocimiento de la cadena de entrada. Es decir que dicha cadena, pertenece al lenguaje reconocido por el autmata. Por el contrario, cuando el autmata finito no es capaz de llegar a un estado final, se dice que el autmata no reconoce dicha cadena y que por tanto no pertenece al lenguaje. El lenguaje reconocido por un autmata finito, es: L(AF) = {t/t E *, (q1,t) (qi , ), qi F} 15.2.1 Teorema Para toda gramtica regular, G3, existe un autmata finito, AF, tal que el lenguaje reconocido por el autmata finito es igual al lenguaje generado por la gramtica. L(AF) = L(G3) 15.2.2 Teorema Para todo autmata finito, AF, existe una gramtica regular, G3, tal que el lenguaje generado por la gramtica es igual al lenguaje reconocido por el autmata finito L(G3) = L(AF) 15.2.3 Corolario Segn el teorema 15.2.1, se tiene que {L(G3)} {L(AF)} y por el teorema 15.2.2, {L(AF) {L(G3)} , luego {Lregulares} = {L(AF)} = {L(G3)}
- 60 -
AUTMATAS FINITOS
La forma habitual de representar los autmatas finitos es mediante un grafo o diagrama de estados (fig. 13), donde los nodos son los estados y las ramas estn marcadas con los smbolos del alfabeto de entrada. Las ramas se construyen segn la funcin de transicin, as debe de cumplir f(q1, a) q2.
Los nodos que representan los estados finales, suelen marcarse con un doble crculo, y el estado inicial tambin se marca con una flecha, encima de la cual se coloca la palabra INICIO. Ejemplo 15.2.4 Sea el autmata finito A1 = (E, Q, f, q1, F) donde E = {a, b} {} ; Q = {q1, q2, q3, q4} y la funcin f viene dada por la tabla siguiente y el conjunto de estados finales es F={q3} f q1 q2 q3 q4 a q2 q2 q4 q4 b q4 q3 q3 q4
Determinar el lenguaje que reconoce, representar el diagrama de Moore, e indicar la expresin regular que representa al lenguaje.
- 61 -
Solucin : Se construye el diagrama de Moore, colocando en primer lugar todos los estados dentro de crculos, marcando con doble crculo el estado final. El estado inicial se indica con una flecha que lo seala con la palabra INICIO encima. Para construir las ramas, nos situamos en el primer estado de la tabla de transiciones y se observa que f(q1,a)=q2, entonces se traza una flecha entre q1 y q2, apuntando a q2, y se coloca encima de la flecha el smbolo del vocabulario de entrada a. De igual forma se recorre la tabla de transiciones para cada estado y entrada completndose el diagrama de Moore.
INICIO
a 1
q2
q a,b
q
Fig. 14 : Diagrama de Moore del ejemplo 15.2.4
El lenguaje generado se obtiene partiendo del estado inicial y recorriendo todos los caminos posibles para alcanzar el estado final. As se obtiene que este autmata reconoce el lenguaje : L(A1) = {ab , aab, , abbb, , aabb, } L(A1) = {a n b m /n 1m 1} La expresin regular que denota el lenguaje es a+b+ o tambin aa*bb*.
- 62 -
AUTMATAS FINITOS
Ejemplo 15.2.5 Sea el autmata finito A2 = (E, Q, f, q1, F) donde E = {0,1} , Q = {q1, q2, q3, q4} y f se define por la tabla siguiente, y F={q2}. f q1 q2 q3 q4 0 q4 q3 q4 q4 1 q2 q4 q2 q4
Construir el diagrama de Moore, y determinar el lenguaje que reconoce, denotndolo con su expresin regular. Solucin : Se construye el diagrama de Moore de forma anloga al ejemplo anterior (fig. 15). El lenguaje generado es el siguiente : L(A2) = {1,101,10101,} = {1(01)n /n 0} La expresin regular 1(01)*.
0 INICIO q 1 1 q 2 1 1 0 q 0 4 q 3
0,1
- 63 -
Ejemplo 15.2.6 Sea el autmata finito A3 = ( E, Q, f, q1, F) donde E = {a,b,c}, Q = {q1, q2, q3, q4, q5}, f se representa por la tabla siguiente y F={q2, q4}. Representar el diagrama de Moore, determinar el lenguaje que reconoce, y denotarlo con una expresin regular. f q1 q2 q3 q4 q5 a q2 q5 q5 q5 q5 b q3 q5 q5 q5 q5 c q5 q5 q4 q5 q5
Solucin : El diagrama de Moore se construye al igual que en los ejemplos anteriores (fig. 16). El lenguaje generado es L(A3)={a,bc}, se puede denotar con la expresin regular a | bc.
a INICIO q 1 b
q2
a,b,c a,b,c
a,b a,b,c q 3 c q4
- 64 -
AUTMATAS FINITOS
Ejemplo 15.2.7 Sea el autmata A4 = (E = {1,2,3}, Q = {q1, q2, q3}, f, q1, F = {q2}), donde f viene dada por la tabla siguiente. f q1 q2 q3 1 q1 q3 q3 2 q1 q3 q3 3 q2 q3 q3
Determinar el diagrama de Moore, el lenguaje que genera y la expresin regular que lo describe. Solucin : El diagrama de Moore se construye al igual que en los ejemplos anteriores (fig. 17). El lenguaje reconocido es el siguiente : L(A4) = {3,13,113,1113, ,123,12223, ,213,21113, } L(A4) = 1 1 2 2 1 3 2 4 3/n1, n2, 0
(n ) (n ) (n ) (n )
1,2
1,2,3
INICIO q 1
q2
1,2,3
La expresin regular es (1 | 2)*3. Ejemplo 15.2.8 Construir un autmata finito que reconozca un identificador de un lenguaje de programacin, definido en EBNF de la forma :
- 65 -
<identificador> ::= <letra> {<letra>|<dgito>} <letra> ::= a|b|...|z <dgito> ::= 0|1|2|...|9 Solucin : Este ejemplo es inverso a los anteriores, pues se da un lenguaje y se pide el autmata que lo reconoce. En primer lugar se construye un diagrama de Moore, de tal forma que a partir del estado inicial, despus de leer una letra, acepte letras o dgitos de forma variable, y cuando encuentre un carcter diferente de letra o dgito alcance el estado final. El diagrama de Moore es el que se muestra en la figura 18.
letra, dgito
INICIO
letra 0
$ representa a todos los caracteres diferentes de letra o dgito. El autmata finito se deduce del diagrama de Moore y es el siguiente : AF = (E = {a , b , , z,0,1, 9,$}, Q = {q0, q1, q2}, f, q0, F = {q2}) donde f se define por : f q0 q1 q2 <letra> q1 q1 <dgito> q1 $ q2 -
15.3 Clasificacin de los autmatas finitos Cuando se defini autmata finito, la funcin f:E * Q Q , es en general no determinista. As en funcin de f, se hablar de autmatas finitos deterministas AFD y autmatas finitos no deterministas AFND.
- 66 -
AUTMATAS FINITOS
Un autmata finito no determinista AFND se caracteriza por la posibilidad de que dada una entrada e en un estado qi, se pueda pasar a un estado qj, qk,...,qn sin saber a ciencia cierta, a cual de esos estados pasar. Existiendo la misma probabilidad de que pase a cualquiera de dichos estados. 15.3.1 Autmatas finitos no deterministas La definicin de autmata finito no determinista AFND coincide con la de autmata finito : AFND = (E, Q, f, q1,F) con la salvedad de que f:E *xQ Q es no determinista. Ejemplo 15.3.1.1 Sea el autmata finito no determinista AFND = (E, Q, f, q1,F) donde E={a,b}, Q = {q1, q2, q3, q4} , F = {q4} y la funcin f viene dada por la siguiente tabla : f q1 q2 q3 q4 a {q2,q3} q3 q4 b {q2,q4} q4
Determinar el lenguaje que reconoce, y dar su expresin regular. Solucin : El diagrama de Moore se construye al igual que en los ejemplos anteriores de autmatas finitos, con la salvedad de que para una entrada a un estado puede salir ms de una flecha de un determinado estado (fig. 19). El lenguaje reconocido es el siguiente : a(b *b | a *b)a * o tambin a(b * | a *)ba *
- 67 -
q a
2 b
b INICIO q q4 b a q 3 a
Fig. 19 : Diagrama de Moore del ejemplo 15.3.1.1.
15.3.2 Autmatas finitos deterministas Un autmata finito determinista AFD es un caso particular de los autmatas finitos, en el que la funcin de transicin no presenta ningna ambigedad en las transiciones de estados para una entrada dada. Un autmata finito determinista es una quntupla AFD=(E, Q, f, q1, F) donde la funcin f:E * Q Q es determinista. 15.3.3 Teorema sobre la transformacin de AFND en AFD El teorema dice as : "Para todo autmata finito no determinista AFND=(E, Q, f, q1, F) se puede construir un autmata finito determinista AFD=(E, Q, f, q1, F) tal que el lenguaje reconocido por el autmata finito determinista AFD coincida con el lenguaje reconocido por el autmata finito no determinista AFND, es decir L(AFD) = L(AFND)". Demostracin : Se determina en primer lugar Q que es el conjunto de las partes del conjunto de estados Q. Q = P(Q) = { conjunto de las partes de Q }
- 68 -
AUTMATAS FINITOS
El cardinal de Q o nmero de estados del conjunto Q es : cardinal (Q)= 2 cardinal(Q) Al estado de Q que corresponde a {qa,qb,...ql} se denotar por [qa,qb,...ql] es decir que se define f de la forma : f(e,[qa,qb,...ql])=[qm,qn,...qk] si y slo si f(e,{qa,qb,...ql})={qm,qn,...qk} Es decir se calcula f(e,q) aplicando f a cada estado q de los que figuran en q y haciendo la unin de todos los resultantes. q1=[q1] F={q Q/q f q y q f F } Es decir, para que q sea estado final basta que uno o ms de los estados de Q que lo componen sea final. Con esto se ha construido un autmata finito determinista, ahora hace falta demostrar que reconocen el mismo lenguaje, para ello bastar comprobar que, para todo x E *, f(x,q1) F si y solo si f(x,q1) contiene un estado (o varios) qf F, y teniendo en cuenta la definicin de F esto ser evidentemente cierto si se demuestra que : f(x,q1)=[qa,...,ql] si y slo si f(x,q1)={qa,...,ql} Tal demostracin puede hacerse por induccin sobre la longitud de x : para longitud de x nula, x = , es inmediato puesto que f(,q1)=q1=[q1], y f(,q1)={q1}. Supngase que es cierto para longitud de x <= 1; entonces para e E se tiene que f(xe,q1)=f(x,q1) Pero por hiptesis de induccin : f(x,q1)=[qa,...,ql] si y slo si f(x,q1)={qa,...,ql} y por definicin de f f(e,[qa,...,ql])= [qm,qn,...qk] si y slo si f(e,{qa,...,ql})={qm,qn,...qk} Por tanto f(x,q1)=[qm,...,qk] si y slo si f(xe,q1)={qm,...,qk} con lo que queda demostrado.
- 69 -
Ejemplo 15.3.3.1 Sea el autmata finito no determinista del ejemplo 15.3.1.1, determinar un autmata finito determinista equivalente. Solucin : Siguiendo la construccin del teorema 15.3.3, el AFD tendr en un principio 24 estados, es decir Q conjunto de las partes de Q tiene en un principio 16 estados. Tambin se define el estado inicial y el conjunto de estados finales F. Q={,[q1],[q2],[q3],[q4],[q1q2],...,[q1q2q3q4]} q1=[q1] F={[q4],[q1q4],[q2q4],[q3q4],[q1q2q4],...,[q1q2q3q4]} y f se construye a partir de f resultando la siguiente tabla :
f
[q1]
[q2q3]
[q2q4] [q4]
[q3] [q4] [q2q3] [q2q3] [q2q3q4] [q3] [q4] [q3q4] [q2q3] [q2q3q4] [q2q3q4] [q3q4] [q2q3q4]
[q2q4] [q4]
Ahora bien, en un AF los estados que no son accesibles desde el inicial pueden eliminarse, as se eliminan los marcados en la tabla con flechas: [q2], [q1q2], [q1q3], [q1q4], [q1q2q3], [q1q2q4], [q1q3q4], y [q1q2q3q4] por no aparecer dentro de la tabla.
- 70 -
AUTMATAS FINITOS
[q2q3q4] por no aparecer en la tabla como transicin de un estado eliminado anteriormente. [q3q4] por aparecer en la tabla como transicin de un estado eliminado anteriormente, y tambin en su propio estado, no es accesible por no aparecer en otro estado. Evidentemente [q1] nunca puede eliminarse como estado, por ser el estado inicial. Entonces f puede resumirse segn la tabla : f [q1] [q3] [q4] [q2q3] [q2q4] a [q2q3] [q3] [q4] [q3] [q4] b [q4] [q2q4] [q2q4]
El estado vacio [] no puede eliminarse en este caso, pues es accesible desde [q1] y [q4]. De los 16 estados posibles slo han quedado 6, con los que se construye el diagrama de Moore de la figura 20.
- 71 -
[q q ] 2 3 a a b
INICIO [q ] 1 b
[q q ] 2 4
[q ] 3
a b a a,b b [q ] 4 b
Se puede comprobar que el lenguaje reconocido por el AFD es el mismo que el reconocido por el AFND del ejemplo 15.3.1.1. As el lenguaje reconocido por el AFD es : abb * | abb *aa * | aaa *ba * = abb *( | aa *) | aaa *b a * = abb *a * | aaa *ba * = ab *ba * | aaa *ba * = a (b * | aa *)ba * = a (b * | a *)ba * La ltima igualdad se ha obtenido teniendo en cuenta que: b * | aa * = b * | | aa * = b * | a *
- 72 -
AUTMATAS FINITOS
15.4 Algoritmo de transformacin de una gramtica de tipo 3 en un autmata finito Sea una gramtica de tipo 3 o regular G=(VT,VN,S,P) y se desea obtener un autmata finito AF=(E,Q,f,q1,F) que reconozca el lenguaje generado por la gramtica. El autmata obtenido, en general ser no determinista. Solucin: Se determinan los distintos elementos del autmata de la siguiente forma: E=VT Q=VN {q f} A cada smbolo no terminal de la gramtica se le asocia un estado del autmata. Adems se introduce un nuevo estado, denominado qf, que ser el nico estado final del autmata. q1=S F={qf} La funcin de transicin f se determina a partir de la forma de las reglas de produccin P, de la manera siguiente: a) Para reglas de la forma A a B se obtiene f(A,a)=B siendo A y B los estados correspondientes a los no terminales A y B.
a
- 73 -
Ejemplo 15.4.1 Sea la gramtica de tipo 3 siguiente : G = (VN={A,S}, VT={a,b}, S, P) donde P son las reglas : S aS S aA A bA A b Obtener un AFND y otro AFD que reconozcan el mismo lenguaje que esta gramtica genera. Solucin : Se define el AFND a partir de la gramtica como AFND = (E, Q, f, q1, F) donde E={a,b}, Q={A,S,X}, q1=S, F={X}, y f viene dada por la tabla siguiente : f S A X a {S,A} b {A,X} -
INICIO
El lenguaje que reconoce : a *a b *b = aa *bb * = a +b + El AFD se define como AFD=(E, Q,f, q1, F) donde f viene dado por la tabla :
- 74 -
AUTMATAS FINITOS
Se eliminan de la tabla los estados inaccesibles desde el estado inicial [S], y se representa el diagrama de Moore de la figura 24. El lenguaje que reconoce es : aa *bb * = a +b +
- 75 -
[S,A] a b
[S,A] a b
a
Fig. 24 : Diagrama de Moore AFD del ejemplo 15.4.1
15.5 Transformacin de una expresin regular en un autmata finito Dada una expresin regular existe un autmata finito capaz de reconocer el lenguaje que sta define. Recprocamente, dado un autmata finito, se puede expresar mediante una expresin regular el lenguaje que reconoce. Para la transformacin de una expresin regular en un autmata finito, se definirn en un principio las equivalencias entre las expresiones regulares bsicas y sus autmatas finitos. Posteriormente se mostrar la construccin de Thompson que genera automticamente un autmata finito a partir de una o varias expresiones regulares de cualquier complejidad.
- 76 -
AUTMATAS FINITOS
15.5.1 Equivalencia entre expresiones regulares bsicas y autmatas finitos Se muestran equivalencias entre expresiones regulares simples y autmatas finitos expresados mediante un diagrama de Moore 15.5.1.1 Expresin regular
INICIO q
INICIO q
INICIO q f
- 77 -
INICIO q
q a
INICIO q
a ,b
INICIO q
INICIO q f
a,b
- 78 -
AUTMATAS FINITOS
INICIO
INICIO
q1
15.5.2 Construccin de Thompson La construccin de Thompson construye un AFND a partir de cualquier expresin regular. La herramienta lex utiliza esta construccin para obtener en sucesivos pasos un AFD (Aho et al., 1986, captulo 3). Supongamos que N(s) y N(t) son AFND para las expresiones regulares s y t. a) Para la expresin regular s|t se construye el AFND N(s|t) que se muestra en la figura 34.
qj INICIO q
N(s)
qk
qf
ql
N(t)
qm
b) Para la expresin regular st se construye el AFND N(st) que se muestra en la figura 35.
- 79 -
INICIO
q1
N(s)
q2
N(t)
q3
c) Para la expresin regular s* se construye el AFND N(s*) que se muestra en la figura 36.
INICIO
q1
q2
N(s)
q3
qf
d) Para la expresin regular (s) se utiliza directamente N(s) Ejemplo 15.5.2.1 Utilizando la construccin de Thompson construir un autmata finito AF que reconozca la expresin regular (0|1)* 0 (0|1) (0|1) Solucin: Se descompone la expresin regular en subexpresiones, siguiendo la precedencia de operadores, tal y como se muestra en la figura 37.
r17 r12 r11
r16 ( r15 )
r7 r5 r4 ( r1 0 r3 | ) r2 1 * r6
r10
r13
r14
Comenzando por r1, r2,... r7 se llega que el AFND de la expresin r7 es el representado en la figura 38.
- 80 -
AUTMATAS FINITOS
2 INICIO 0 1 4
3 6 7 0 8
Continuando se puede observar que para la expresin r17 el AFND es el que se presenta en la figura 39.
2 INICIO 0 1 4
3
9
0
10 13 14 15 18
6 1 5
11
12
16
17
15.6 Minimizacin de estados de un AFD Se defini anteriormente que dos AF son equivalentes si reconocen el mismo lenguaje. En este apartado se trata de encontrar un AF equivalente en forma mnima. Es importante poder saber si un AF est en forma mnima, y si no lo est hallar un AF equivalente en forma mnima. Se puede demostrar que siempre existe una forma mnima de un AF (Hopcroft y Ullman, 1979, pp. 67-68). Para determinar el AF en forma mnima no es preciso realizar infinitos ensayos con cadenas de entrada. Existen algoritmos para minimizar AF, es decir, hallar otro AF en forma mnima equivalente. Algoritmo 15.6.1 Entrada. Un autmata finito determinista A=(E,Q,f,q0,F). Salida. Un autmata finito determinista A=(E,Q,f,q0,F) que acepta el mismo lenguaje que A, y que tiene el menor nmero de estados posible.
- 81 -
Metodo. El algoritmo para minimizar el nmero de estados de un AFD funciona encontrando todos los grupos de estados que pueden ser diferenciados por una cadena de entrada. Cada grupo de estados que no puede diferenciarse se fusiona entonces en un nico estado. El algoritmo opera manteniendo y refinando una particin del conjunto de estados. Cada grupo de estados dentro de la particin est formado por estados que an no han sido distinguidos unos de otros, y todos los pares de estados escogidos de entre grupos diferentes han sido considerados distinguibles por una entrada. 1. Se construye una particin inicial del conjunto de estados Q en dos grupos : los estados finales F y los estados no finales Q-F. 2. Se determina una nueva particin nueva a partir de la particin anterior , con el siguiente procedimiento : FOR cada grupo G de DO BEGIN Particin de G en subgrupos tales que dos estados qi y qj de G estn en el mismo subgrupo si, y slo si, para todos los smbolos de entrada e, los estados qi y qj tienen transiciones en e hacia estados del mismo grupo de ; /* en el peor caso, un estado estar slo en un subgrupo */ sustituir G en nueva por el conjunto de todos los subgrupos formados; END 3. Se realizan las siguientes comprobaciones. IF nueva= THEN BEGIN final:=; GOTO 4; /* Ir al paso 4 */ END ELSE
- 82 -
AUTMATAS FINITOS
BEGIN :=nueva; GOTO 2; /* Volver al paso 2 */ END 4. Se escoge un estado en cada grupo de la particin final como representante de este grupo. Los representantes seran los estados reducidos Q de A. Sea un estado qi representante, y sea una entrada a que produce una transicin de qi a qj en A. Sea qk el representante del grupo de qj (qk puede ser qj). Entonces A tiene una transicin desde qi a qk con la entrada a. Sea el estado inicial q0 de A el representante del grupo que contiene al estado inicial q0 de A, y sean los estados finales F de A los representantes que estn en F. Se puede observar que cada grupo de final consta nicamente de estados en F o no tiene ningn estado en F. 5. Se eliminan los estados pasivos qp de Q, es decir estados que no son finales, y que tienen transiciones hacia ellos, pero no desde ellos hacia otros. Todas las transiciones a qp desde otros estados se convierten en indefinidas. Tambin se eliminan los estados inaccesibles de Q, es decir todos los estados que no se pueden alcanzar desde el estado inicial. Se obtiene Q y la funcin f. Ejemplo 15.6.2 Sea el autmata finito determinista A=(E,Q,f,q1,F), Q={q1,q2,q3,q4,q5}, F={q5}, y f viene dada por la tabla : f q1 q2 q3 q4 q5 a q2 q2 q2 q2 q2 b q3 q4 q3 q5 q3 donde E={a,b},
(1).La particin inicial consta de dos grupos : (q5) conjunto de estados finales, y (q1q2q3q4) los estados no finales. (2). Se aplica el procedimiento de particin a cada grupo. El grupo (q5) consta de un slo estado, y no se puede dividir ms, se coloca directamente en nueva. El otro grupo (q1q2q3q4), con la entrada a tiene una transicin a q2, as que todos podran permanecer en un mismo grupo en lo que a la entrada a se refiere. Sin embargo, con la entrada b, q1, q2, y q3 van a miembros del grupo (q1q2q3q4) de mientras que q4 va al grupo (q5). Por lo tanto nueva, tiene tres grupos :(q1q2q3), (q4) y (q5). (3). Como nueva no es igual a , se repite el paso (2) con :=nueva. (2). Se aplica el procedimiento de particin a los grupos de que constan de ms de un estado. Para una entrada a en el grupo (q1q2q3), no hay divisin, sin embargo para la entrada b se produce una divisin en (q1q3) y (q2), puesto que (q1q3) tienen una transicin a q3, mientras que q2 tiene una transicin a q4, que es miembro de un grupo distinto de (q1q2q3). Por lo tanto nueva, tiene cuatro grupos :(q1q3), (q2), (q4) y (q5). (3). Como nueva no es igual a , se repite el paso (2) con :=nueva. (2). Se aplica el procedimiento de particin a los grupos de que constan de ms de un estado. La nica posibilidad es intentar dividir (q1q3). Sin embargo, q1 y q3 van al mismo estado q2 para la entrada a, y al mismo estado q3 para la entrada b. Por lo tanto nueva, tiene cuatro grupos :(q1q3), (q2), (q4) y (q5). (3). Como nueva es igual a , se va al paso (4) con final:=. (4). Se escoge q1 como representante del grupo (q1q3), y q2, q4 y q5 como representantes de los grupos de un slo estado. (5). El automata con un nmero de estados mnimo A=(E,Q,f,q1,F), donde E={a,b}, Q={q1,q2,q4,q5}, F={q5}, y f viene dada por la tabla : f q1 q2 q4 q5 a q2 q2 q2 q2 b q1 q4 q5 q1
- 84 -
AUTMATAS FINITOS
En el autmata reducido A, el estado q5 tiene una transicin al estado q1 con la entrada b, puesto que q1 es el representante del grupo (q1q3) y hay una transicin de q5 a q3 con la entrada b en el autmata original. Una modificacin similar se realiza para el estado q1 y la entrada b. Todas las dems transiciones estn tomadas de f. No hay ningn estado pasivo, y todos los estados son accesibles desde el estado inicial q1. Se puede observar que el lenguaje reconocido por los autmatas A y A es (a|b)*abb.
- 85 -
- 86 -
EJERCICIOS RESUELTOS
<racional> <signo><cadena dgitos>.<cadena dgitos> <cadena dgitos> <dgito><cadena dgitos> <cadena dgitos> <dgito> <dgito> 0|1|2|3|4|5|6|7|8|9 <signo> +|-|<vacio> <vacio>
q <dgito> 1 <dgito> q <dgito> 0 . <dgito> q 2 q 3 q4
+,INICIO
<dgito>
Fig. 40 : Solucin del ejercicio 16.2
Ejercicio 16.3 Definir una gramtica que permita generar identificadores, es decir secuencias de letras y dgitos que empiezan siempre por una letra. Solucin : Sea la gramtica G=(VN={<identificador>,<letra>,<resto identificador>, <dgito>, <vacio>}, VT={a,b,...,A,...,Z,0,1,...,9}, S=<identificador>, P), donde P son las producciones : <identificador> <letra><resto identificador> <letra> a | b | c | ... | z | A | B | C | ... |Z <resto identificador> <dgito> <resto identificador> <resto identificador> <letra> <resto identificador> <resto identificador> <letra> <resto identificador> <dgito> <resto identificador> <vacio> <dgito > 0 | 1 | 2 | 3 | ... |9 <vacio>
- 87 -
Ejercicio 16.4 Escribir una gramtica que defina el lenguaje L = {ab n a/n 0} . Solucin : Sea G=(VN={S,B}, VT={a,b}, S, P) y las producciones P de la gramtica son : S aB B bB Ba Ejercicio 16.5 Escribir una gramtica libre de contexto para un nmero real del lenguaje C++, y escribir las derivaciones, para las siguientes sentencias: (a) 251. (b) -61. (c) -75.25 (d) 1.73 Solucin : <Tipo REAL> <signo> <nmero> <exp> <Tipo REAL> <signo> <nmero> <exponente> <Tipo REAL> <signo> <fraccin> <exponente> <Tipo REAL> <signo> <nmero> <fraccin> <exponente> <signo> +|-|<vacio > <nmero> <dgito><nmero>|<dgito> <fraccin> .< nmero > <exp> E <signo> <nmero> <exponente> <exp> | <vacio> <dgito> 0|1|2|3|4|5|6|7|8|9 <vacio> b) -61. < Tipo REAL > <signo> <num> . <exponente> - < num > . < exponente > - < dgito > < num > . < exponente > - < dgito > < num >.
- 88 -
EJERCICIOS RESUELTOS
- 6 < num >. - 6 < dgito >. - 61. c) -72.25 < Tipo REAL > < signo > < num > < fraccin > < exponente > < signo > < num > < fraccin > - < num > < fraccin > - < dgito > < num > < fraccin > - 7 < num > <fraccin > - 7 < dgito > < fraccin > - 72 < fraccin > - 72. < num > - 72. < dgito > < num > - 72.2 < num > - 72.2 < dgito > - 72.25 e) 14.25E+02 < Tipo REAL > < signo > < num > < fraccin > < exponente > < num > < fraccin > < exponente > < dgito > < num > < fraccin > < exponente > < num > < fraccin > < exponente > 1 < dgito > < fraccin > < exponente > < fraccin > < exponente > 14. < num > < exponente > 14. < dgito > < num > < exponente > 14.2 < num > < exponente > 14.25 < exponente > 14.25 < exp > 14.25E < signo > < num > 14.25E+ < num > 14.25E+ < dgito > < num > 14.25E+0 < num > 14.25E+0 < dgito > 14.25E+02
- 89 -
f) -25.2E-23 < Tipo REAL > < signo > < num > < fraccin > < exponente > - < num > < fraccin > < exponente > - < dgito > < num > < fraccin > < exponente > -2 < num > < fraccin > < exponente > -2 < dgito > < fraccin > < exponente > -25 < fraccin > < exponente > -25. < num > < exponente > -25. < dgito > < exponente > -25.2 < exponente > -25.2 < exp > -25.2E < signo > < num > -25.2E- < num > -25.2E- < dgito > < num > -25.2E-2 < num > -25.2E-2 < dgito > -25.2E-23 Ejercicio 16.6 Escribir una gramtica libre de contexto para la sentencia de FORTRAN FORMAT. Supongase que no se admiten constantes definidas con H (Hollerith). Dar las derivaciones de las sentencias. (a) (b) (c) (d) (e) 10 200 99015 40 50 FORMAT (I7, F5.1) FORMAT (E12.5) FORMAT (I5/F7.1) FORMAT (1X,I4,3X,F7.2) FORMAT (I3,2(F7.2))
Solucin : < sentencia FORMAT > < etiqueta > < blanco > {< blanco >} FORMAT {<blanco>} ({< blanco >} < argumento > {< blanco >}) < etiqueta > < dgito > < nmero1 > < nmero1 > < dgito > < nmero2 > | < vacio > < nmero2 > < dgito > < nmero3 > | < vacio >
- 90 -
EJERCICIOS RESUELTOS
< nmero3 > < dgito > < nmero4 > | < vacio > < nmero4 > < dgito > | < vacio > < dgito > 0 | 1 | 2 | .. | 9 < blanco > b < argumentos > < especificacin > < resto argumentos > < resto argumentos > , < especificacin > < resto argumentos > < resto argumentos > <diagonal> <especificacin> <resto argumentos> < resto argumentos > < vacio > < diagonal > / < otra diagonal > < otra diagonal > < diagonal > < otra diagonal > < vacio > < especificacin > < nmero > (< argumentos >) < especificacin > < formato > < formato > I < nmero real > < formato > I < nmero > < formato > Q < formato > A < nmero > < formato > A < formato > R < nmero > < formato > L < nmero > < formato > K < nmero > < formato > F < nmero real > < formato > Z < nmero > < formato > E < nmero real > < formato > E < nmero real > E. < formato > D < nmero real > < formato > D < nmero real > E. < formato > G < nmero real > < formato > G < nmero real > E. < formato > T < nmero > < formato > TL < nmero > < formato > TR < nmero > < formato > < nmero > X < formato > < nmero > P < formato > S
- 91 -
< formato > SP < formato > SS < formato > BN < formato > BZ < nmero real > < nmero > . < nmero > < nmero > < dgito > < nmero > < nmero > < vacio > < vacio >
- 92 -
EJERCICIOS PROPUESTOS
- 93 -
Ejercicio 17.7 Escribir un ejemplo de lenguaje, gramtica y autmata de tipo 2, pero que no sea de tipo 3. No incluido en este texto. Ejercicio 17.8 Escribir un ejemplo de lenguaje, gramtica y autmata de tipo 3. No incluido en este texto. Ejercicio 17.9 Escribir un autmata que reconozca si un nmero es un real vlido en Pascal estndar o no. Ejercicio 17.10 Disear una gramtica que genere el lenguaje formado por las expresiones con o sin parntesis, debiendo estar siempre los parntesis emparejados. Los smbolos terminales son VT={(,e,)}. Ejemplos de instrucciones del lenguaje : e, ee, (e)(e), (((e))), ((e)(e)), y (eee). Construir un autmata que reconozca dicho lenguaje.
- 94 -
EJERCICIOS DE PROGRAMACIN
BIBLIOGRAFA
(1) Aho A.V. y Ullman J.D. (1973b). The Theory of Parsing, Translation and Compiling. Vol I: Parsing. Prentice-Hall. Aho A.V. y Ullman J.D. (1973a). The Theory of Parsing, Translation and Compiling. Vol II: Compiling. Prentice-Hall. Aho A.V., Sethi R. y Ullman J.D (1986). Compilers : Principles, Techniques, and Tools. Addison-Wesley. Edicin en Castellano (1990) Compiladores : Principios, Tcnicas y Herramientas. Addison-Wesley Iberoamericana. Alfonseca M., Sancho J. y Martnez Orga M. (1987). Teora de lenguajes, gramticas y autmatas. Ediciones Universidad y Cultura. Alvarez-Ura Alvarez, E. (1974). Algoritmos de Markov y lenguajes de programacin. Dto. de Matemticas. Escuela Tcnica Superior de Ingenieros de Minas. Universidad de Oviedo. Barber F., Botti V.J. y Prez T.A. (1986). Introduccin a los traductores, compiladores e intrpretes. Dto. de Sistemas Informticos y Computacin. Universidad Politcnica de Valencia. Chomsky N. (1956). Three models for the description of language. IRE Trans. on Information Theory 2:3, pp 113-124. Chomsky N. (1959). On certain formal properties of grammars. Information and Control 2:2, pp. 137-167. Chomsky N. (1962). Context-free grammars and pushdown storage. Quaterly Prog. Rept. No. 65, pp. 187-194, MIT REs. Lab. Elect., Cambridge, Mass. Chomsky N. (1963). Formal properties of grammars. Handbook of Math. Psych., Vol. 2, pp. 323-418, John Wiley and Sons. Chomsky N, y Miller G.A. (1958). Finite state languages. Information and Control 1:2, pp 91-112. Chomsky N., y M.P. Schutzenberger (1963). The algebraic theory of context free languages. Computer Programming and Formal Systems, pp. 118-161, North Holland.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
- 96 -
BIBLIOGRAFA
(13)
Conde Snchez C. (1969). Mquinas de Turing y computabilidad. Discurso inagural del ao acadmico 1969-70 en la Universidad de Oviedo. Dto. de Matemticas. Escuela Tcnica Superior de Ingenieros de Minas. Universidad de Oviedo. Cueva Lovelle J.M. (1998). Conceptos bsicos de Procesadores de Lenguaje. Cuaderno Didctico de Ingeniera Informtica n10. SERVITEC. Fernndez G. y Sez Vacas F. (1987). Fundamentos de informtica. Alianza. Hopcroft J.E. y Ullman J.D. (1979). Introduction to automata theory, languages and computation. Addison-Wesley. Hopcroft J.E. (1984). Mquinas de Turing. Investigacin y Ciencia n 94, pp 8-19, Julio 1984. Isasi P., Martnez P., Borrajo D. Lenguajes, Gramticas y Autmatas. Un enfoque prctico. Addison-Wesley (1997) Katrib Mora M. (1988). Lenguajes de programacin y tcnicas de compilacin. Editorial Pueblo y Educacin (Cuba). Minsky M.L. (1967). Computation: Finite and Infinite Machines. Prentice Hall, Englewood Cliffs. Snchez Dueas G. y Valverde Andreu J.A. (2 Edicin, 1989). Compiladores e intrpretes. Un enfoque pragmtico. Ed. Daz de Santos. Sanchs Llorca F.J. y Galn Pascual C. (1986). Compiladores. Teora y construccin. Paraninfo. Shannon C.E. (1949). The synthesis of two-terminal switching circuits. Bell System Tech. J., vol. 28, pp. 59-98. Shannon C.E. (1954). A symbolic analysis of relay and switching circuits. Van Nostrand. Shannon C.E. (1956). A universal Turing machine with two internal states. Automata Studies, pp. 129-153, Princeton Univ. Press. Turing A.M. (1936). On computable numbers with an application to the Entscheidungs-problem. Proc. London Math. Soc. . 2:42, pp 230-265. Una correccin ibid, 43, pp- 544-546.
(14)
(15) (16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
- 97 -
ndice
AFD autmata finito determinista, 66 transformacin AFND en AFD, 68 AFND, 67 autmata finito no determinista, 67, 79 Alfabeto, 3 Autmata, 6, 34 Configuracin, 34 de pila, 49 Estado, 34 finito, 59 lineal acotado, 47 Reconocedor de lenguaje, 34 tipo 0, 43 tipo 1, 47 tipo 2, 49 tipo 3, 59 Transicin, 34 BNF, 8 C++, 88 Cadena, 3, 10 concatenacin, 4 vacia, 4 Chomsky, 1, 18 Construccin de Thompson, 79, 80 Derivacin relacin de, 11 Diagrama de Moore, 62 EBNF, 8 Expresin regular construccin de Thompson, 79 transformacin en AFND, 76 Expresiones regulares, 28 Operadores, 29 Gramtica, 6, 7 transformacin gramticas tipo 3 en AFND, 73 Gramticas con estructura de frase, 18 contexto libre, 22 lineales a la derecha, 23 no restringidas, 18 regulares, 23 sensibles al contexto, 18 tipo 0, 18 tipo 1, 18 tipo 2, 22
- 98 -
tipo 3, 23 Instruccin, 13 Lenguaje, 5, 14 vacio, 6 lex, 79 Mquina de Mealy, 37 Mquina de Moore, 39 Mquina de Turing, 43 Metalenguaje, 28 Minimizacin de estados AF en forma mnima, 81 Moore diagrama, 62 Palndromos, 5 Procesadores de lenguaje, 6 Producciones, 8 Sentencia, 13 Shannon, 2 Smbolo, 3 inicial, 7 Thompson construccin de Thompson, 79 Turing, 43 Universo del discurso, 5 Vocabulario, 3, 7 no terminal, 7, 9 terminal, 7, 9