Teoría de Lenguajes Clase Teórica 1 Gramáticas y Jerarquía de Chomsky Primer cuartimestre 2016 Material compilado por Julio Jacobo a lo largo de distintas ediciones de la materia Teoría de Lenguajes en el Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires, y recientemente revisado por Verónica Becher. Bibliografía: Capítulo 1. An Introduction to Formal Language Theory, Michael Harrison, Addison Wesley, 1978. Capítulo 1, Introduction to Automata Theory, Languages and Computation, J. Hopcroft, R. Motwani, J. Ullman, Second Edition, Addison Wesley, 2001. Capítulo 1, The Theory of Parsing, Translating and Compiling, Volume 1: Parsing, Aho, J. Ullman, Prentice-Hall, 1971. Alfabeto Es un conjunto finito, no vacío, de elementos o caracteres. Cadena Es una secuencia finita de elementos (cero o más) de un alfabeto. Ejemplo Dado el alfabeto: Σ “ ta, j, ru, tenemos como cadenas posibles: aaj, rja, raja, jarra, etc. Cadena nula λ No tiene símbolos. Lenguaje sobre un alfabeto Σ: conjunto de cadenas sobre un alfabeto Σ. Ejemplo: φ es un lenguaje tλu es un lenguaje (notar que es distinto de φ) Dado Σ “ t0, 1u, t0, 01, 011, 0111, 01111, . . . . . .u, es un lenguaje sobre Σ. Concatenación ˝ Es una operación entre un símbolo del alfabeto Σ y una cadena sobre dicho alfabeto ˝ : Σ ˆ tcadenas sobre Σu Ñ tcadenas sobre Σu . Ejemplo Si el alfabeto es Σ “ ta, b, cu, α “ ab es una cadena, y entonces a ˝ ab “ aab es también una cadena. Cadena nula λ Es el neutro de la concatenación: @a P Σ, a ˝ λ “ a 1 Concatenación de cadenas Definimos la operación de concatenación de dos cadenas ˝. Supongamos cadenas x, y donde x tiene n símbolos a1 a2 . . . an . Entonces,. x ˝ y “ x1 ˝ px2 ˝ . . . pxn ˝ yq . . .q Para facilitar la notación, en adelante no escribiremos el símbolo ˝. Concatenación de lenguajes Sea L1 un lenguaje definido sobre el alfabeto Σ1 , y sea L2 un lenguaje definido sobre el alfabeto Σ2 . Definimos la concatenacion de L1 y L2 como el lenguaje L1 L2 “ txy : x P L1 ^ y P L2 u , definido sobre el alfabeto Σ1 Y Σ2 . Clausura de Kleene de un alfabeto Σ: el lenguaje Σ˚ λ P Σ˚ Si pa P Σ y α P Σ˚ q entonces aα P Σ˚ Clausura positiva de un alfabeto Σ: el lenguaje Σ` Si (a P Σ y α P Σ˚ ) entonces aα P Σ` . Ejemplo Sea Σ “ ta, j, ru, entonces arj P Σ˚ porque jλ “ j P Σ˚ , rj “ rj P Σ˚ , y arj “ arj P Σ˚ . Clausura de Kleene de un lenguaje L: el lenguaje L˚ Se define por: L0 “ tλu Ln “ LLn´1 para n ě 1 Ť n L˚ “ L . ně0 Clausura positiva de un lenguaje L: el lenguaje L` Se define por: Ť n L` “ L . ně1 De lo anterior se ve que L` “ LL˚ “ L˚ L, y que L˚ “ L` Y tλu. Y si L es un lenguaje definido sobre Σ, entonces, L Ď Σ˚ . Relaciones Definición. Dados los conjuntos A y B, se llama relación de A en B a cualquier subconjunto de A ˆ B. Notación Si R es una relación de A en B, o sea, R Ă A ˆ B, podemos escribir R : A Ñ B. Si B “ A se dice que R es una relación sobre A. a R b denota que el par pa, bq pertenece a la relación R, esto es, pa, bq P R. 2 Figura 1: a) relación R “ tpa, bq , pa, dq , pb, cqu, b) clausura reflexiva, c) clausura simétrica, d) clausura transitiva. Propiedades de una relación R sobre A Reflexividad Una relación R Ď A ˆ A es reflexiva cuando todo elemento de A está relacionado consigo mismo, o sea, cuando @a P A, pa, aq P R. Ejemplo R: "ď"sobre N. Simetría Una relación R Ď A ˆ A es simétrica cuando el hecho de que el par pa, bq pertenece a la relación R implica que el par pb, aq también pertenece a dicha relación, o sea, cuando ´ ¯ @a, b P A, pa, bq P R ñ pb, aq P R . Ejemplo R: "‰"sobre N. Transitividad Una relación R Ď A ˆ A es transitiva cuando el hecho de que los pares pa, bq y pb, cq pertenecen a la relación R implica que el par pa, cq también pertenece a dicha relación, o sea, cuando ´ ¯ @a, b, c P A, pa, bq P R ^ pb, cq P R ñ pa, cq P R . Ejemplo R: "a paralela a b", en el conjunto de rectas del plano. Relación de equivalencia Una relación es de equivalencia, cuando es reflexiva, simétrica y transitiva. Propiedad: Una relación de equivalencia sobre un conjunto A particiona al mismo en subconjuntos disjuntos a los cuales se los llama clases de equivalencia. 3 Composición de relaciones: Sean A, B y C tres conjuntos, y sean R y G dos relaciones tales que R Ď AˆB y G Ď B ˆC. La relación de composición G ˝ R Ď A ˆ C se define como G ˝ R “ tpa, cq , a P A, c P C : Db P B tal que aRb ^ bGcu . Relación de identidad: Una relación R definida sobre A es de identidad (idA ) si se cumple que @a, b P A, a idA b si y solo si a “ b. Propiedad: La relación de identidad es el elemento neutro de la composición. Dada una relación R Ď A ˆ B es cierto que idB ˝ R “ R ˝ idA “ R Relación potencia: Dada una relación R Ď A ˆ A, y dado n se define Rn Ď A ˆ A como: " idA si n “ 0 n R “ R ˝ Rn´1 si n ą 0 con R “ R1 . Aclaración: Notar que Rn es una relación (o sea, un conjunto de pares), cualquiera sea el valor de n. Clausura transitiva Dada una relación R sobre A, se define clausura transitiva R` como: R` “ 8 ď k“1 Propiedades: Una clausura transitiva cumple que 1. R Ď R` 2. R` es transitiva 4 Rk , 3. para toda relación G sobre A si R Ď G ^ G transitiva entonces R` Ď G. Demostración: R` es transitiva Queremos probar que si aR` b y bR` c enonces aR` c. Si aR` b, entonces existe una secuencia de elementos d1 , . . . , dn tal que d1 Rd2 , . . . , dn´1 Rdn , donde d1 “ a y dn “ b. Por lo tanto, aRn b. Análogamente, como bR` c entonces existe una secuencia de elementos e1 , . . . , em tal que e1 Re2 , . . . , em´1 Rem , donde e1 “ b y em “ c. Por lo tanto bRm c. Concluimos que aRn`m c, lo que a su vez implica que aR` c. Demostración: Si R Ď G ^ G transitiva entonces R` Ď G si aR` b entonces existe una secuencia de elementos c1 , . . . , cn tal que c1 Rc2 , . . . , cn´1 Rcn , donde c1 “ a y cn “ b. Como R Ď G tenemos que c1 Gc2 , . . . , cn´1 Gcn , y como G es transitiva entonces, la aplicación repetida de la transitividad nos lleva a que c1 Gcn , o sea aGb. Clausura transitiva reflexiva: R˚ R˚ “ R` Y id “ 8 ď Ri . i“0 Gramáticas Definición Una gramática es una 4-upla G “ xVN , VT , P, Sy donde VN es un conjunto de símbolos llamados no-terminales (también, variables o categorías sintácticas) VT es un conjunto de símbolos terminales (tal como lo era Σ en los ejemplos anteriores) P es el conjunto de ”producciones”, que es un conjunto finito de ˚ ˚ ˚ pVN Y VT q VN pVN Y VT q ˆ pVN Y VT q , estas producciones son entonces pares ordenados pα, βq, que usualmente son notados como α Ñ β. S P VN es el símbolo distinguido de VN . Forma sentencial de una gramática G “ xVN , VT , P, Sy S es una forma sentencial de G. Si αβγ es una forma sentencial de G, y pβ Ñ δq P P , entonces αδγ es también una forma sentencial de G. Derivación directa en G ˚ Si αβγ P pVN Y VT q y pβ Ñ δq P P , se dice que αδγ se deriva directamente en G de αβγ y se denota como αβγ Ñ αδγ. G ˚ Entonces, Ñ es una relación sobre pVN Y VT q , es decir, G ˚ ˚ ÑĎ pVN Y VT q ˆ pVN Y VT q . G Podemos componer la relación Ñ consigo misma, 0 o más veces... G 5 Clausura de Kleene de la relación de derivación Ñ G ¯0 ´ Ñ G ¯k ´ Si n ą 0, Ñ G “ idpVN YVT q˚ ´ ¯k´1 “ Ñ ˝Ñ G Ñ k“1 ¯˚ ´ Ñ G ¯k Ñ “ G G 8 ´ ď ¯` ´ ¯` ´ “ G Ñ G Y idpVn YVT q˚ Definición k Denotaremos con Ñ a la potencia k de la relación Ñ. G G Definición ` ˚ Denotaremos con Ñ y con Ñ a las clausura transitiva y a la clausura transitiva y reflexiva de Ñ respectivamente. G G G Definición Lenguaje generado por una gramática G “ xVN , VT , P, Sy, el cual se denotará como L pGq, ! ) ` L pGq “ α P VT˚ : S Ñ α G Clasificación de gramáticas (Chomsky) 3 (las más simples), 2, 1, 0 (las más sofisticadas) Clasificación de gramáticas (Chomsky) Gramáticas regulares (tipo 3) Las producciones son de la forma A Ñ xB o A Ñ x, donde A, B P VN y x P VT˚ . La gramática es llamada regular ”lineal a derecha”. Las producciones son de la forma A Ñ Bx o A Ñ x, donde A, B P VN y x P VT˚ . La gramática es llamada regular ”lineal a izquierda”. Ambos tipos de gramática son llamados regulares. Clasificación de gramáticas (Chomsky) Gramáticas independientes del contexto (tipo 2) (también llamadas libres de contexto) ˚ Cada producción es de la forma A Ñ α, donde A P VN y α P pVN Y VT q . Clasificación de gramáticas (Chomsky) Gramáticas Dependientes del contexto (tipo 1) (también llamada sensitiva al contexto) Cada producción es de la forma SÑλ o de la forma αAγ Ñ αβγ donde A P VN ; α, γ P pVY VT q˚ ; β P pVN Y VT q` . (Notar que esta segunda forma impide la generación de la cadena nula λ) 6 Clasificación de gramáticas (Chomsky) Sin restricciones (tipo 0) No poseen ninguna restricción. Lenguaje generado por una gramática Un lenguaje generado por una gramática tipo t es llamado ”lenguaje t”. Ejemplo de gramática tipo 3 (regular) G “ xtS, A, B, Cu , ta, b, cu , S, P y, donde P está dado por S Ñ aA A Ñ aB A Ñ aA B Ñ bB B Ñ bC C Ñ cC CÑc Derivación de aabbbbccc S Ñ aA Ñ aabbB Ñ aabbbbcC Ñ aaB Ñ aabbbB Ñ aabbbbccC Ñ aabB Ñ aabbbbC Ñ aabbbbccc ( G genera el lenguaje an bm ck : m ě 2; n, k ě 1 . Ejemplo de gramática tipo 2 (independiente del contexto) G “ xtE, T, F u , ta, `, ˚, p, qu , E, P y donde P está dado por E ÑE`T EÑT T ÑT ˚F T ÑF F Ñ pEq F Ña Derivación de a ˚ pa ` aq donde E ÑT ÑT ˚F Ñ T ˚ pEq Ñ F ˚ pEq Ñ a ˚ pEq Ñ a ˚ pE ` T q Ñ a ˚ pT ` T q Ñ a ˚ pF ` T q Ñ a ˚ pa ` T q Ñ a ˚ pa ` F q Ñ a ˚ pa ` aq Ejemplo de gramática tipo 1 (dependiente del contexto): Gamática G “ xtS, B, Cu , ta, b, cu , S, P y, donde P está dado por S Ñ aSBC S Ñ abC CB Ñ BC 7 bB Ñ bb bC Ñ bc cC Ñ cc Derivación de aaabbbccc: SÑ Ñ aSBC Ñ aaabBCCBC Ñ aaabbBCCC Ñ aaabbbccC Ñ aaSBCBC Ñ aaabBCBCC Ñ aaabbbCCC Ñ aaabbbccc Ñ aaabCBCBC Ñ aaabBBCCC Ñ aaabbbcCC Ejemplo de gramática tipo 0 (sin restricciones): ˚( Gramática para generar ww : w P ta, bu G “ ptS, A, B, C, Du , ta, bu , S, P q, donde P está dado por S Ñ CD C Ñ aCA C Ñ bCB AD Ñ aD BD Ñ bD Aa Ñ aA Ab Ñ bA Ba Ñ aB Bb Ñ bB CÑλ DÑλ derivación de abaaabaa S Ñ CD Ñ abaCABAD Ñ abaaAABaD Ñ abaaaAABD Ñ abaaabAAD Ñ abaaabaaD Ñ aCAD Ñ abaaCAABAD Ñ abaaAAaBD Ñ abaaaAAbD Ñ abaaabAaD Ñ abaaabaa 8 Ñ abCBAD Ñ abaaAABAD Ñ abaaAaABD Ñ abaaaAbAD Ñ abaaabaAD