Máquinas Secuenciales, Autómatas y Lenguajes Formales Tema 2: Gramáticas Regulares Holger Billhardt [email protected] Lenguajes Regulares (Motivación) n Hay distintas formas de de representación de lenguajes regulares, equivalentes entre sí (se puede realizar transformaciones entre ellos). Gramáticas regulares Gramática Lineal por la izquierda Gramática Lineal por la Derecha Autómatas Finitos Autómatas Finitos Deterministas Autómatas Finitos NO Deterministas Expresiones regulares Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 2 1 Sumario Tema 2: Gramáticas Regulares . n 1. Equivalencia de Gramáticas Regulares 1. 2. Lema Teorema de Equivalencia Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 3 Sumario Tema 4: Gramáticas Regulares . n 1. Equivalencia de Gramáticas Regulares 1. 2. Lema Teorema de Equivalencia Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 4 2 Equivalencia de Gramáticas Regulares Lema: n q Para toda gramática lineal derecha G=(∑N,∑T,S,P) existe otra gramática lineal derecha equivalente G’, que no contiene reglas de la forma A::=aS Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 5 Equivalencia de Gramáticas Regulares q q Idea de demostración: Se genera una nueva gramática G’ como sigue: n 1. 2. Se pueden considerar dos casos: G no contiene reglas de la forma A::=aS. En este caso, G’=G. G sí las contiene. En este caso, G’=(∑N∪{B},∑T,S,P’), siendo B un nuevo símbolo no terminal, y P’ el siguiente conjunto de reglas de producción: P’ = P - {A::=aS ∈ P} ∪ {A::=aB | A::=aS ∈ P} ∪ {A::=a | A::=aS ∈ P y S::=λ ∈ P} ∪ {B::=x | S::=x ∈ P y x≠aS y x∈∑+} ∪ {B::=aB | S::=aS ∈ P} ∪ {B::=a | S::=aS ∈ P y S::=λ ∈ P} Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 6 3 Equivalencia de Gramáticas Regulares q Evidentemente, G’ no contiene reglas de la forma A::=aS. Por otra parte, L(G’)=L(G), ya que las derivaciones en las que aparece algún símbolo A dan lugar a las mismas palabras en ambos casos Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 7 Equivalencia de Gramáticas Regulares q Ejemplos: Sea la gramática G=({S,A},{a,b},S,{S::=bA, A::=aS|a}) ⇒La gramática G’ equivalente, sin la producción A::=aS es la siguiente: G’=({S,A,B},{a,b},S,{S::=bA, A::=aB|a, B::=bA}) Se cumple que L(G)=L(G’)= {(ba)i| i≥1}. n Sea la gramática G=({S,A},{a,b},S,{S::=bA|λ, A::=aS}) ⇒La gramática G’ equivalente, sin la producción A::=aS es la siguiente: G’=({S,A,B},{a,b},S,{S::=bA|λ, A::=aB|a, B::=bA}) Se cumple que L(G)=L(G’)= {(ba)i| i≥1}. ¿Qué pasaría si no se añade la regla A::=a? n Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 8 4 Equivalencia de Gramáticas Regulares q Ejemplos: Situación con S::=aS ∈ P: añadir B::=aS no valdría ⇒ hay que añadir B::=aB Sea la gramática G=({S,A},{0,1},S,{S::=0S|1A|λ, A::=0S|0}) ¿Cómo será la gramática equivalente sin reglas A::=aS? Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 9 Equivalencia de Gramáticas Regulares n Teorema de equivalencia: q Para toda gramática lineal por la derecha GD= (∑N,∑T,S,PD) existe una gramática lineal por la izquierda GI, tal que L(GD)=L(GI). Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 10 5 Equivalencia de Gramáticas Regulares q Idea de Demostración: Considérese la gramática construida mediante los siguientes pasos: 1. Obtener la gramática G’D=(∑’N,∑T,S,P’D) equivalente a GD sin reglas de la forma A::=aS (mediante el resultado del lema anterior). 2. Construir un grafo dirigido, que denominaremos directo, asociado a G’D, de la siguiente forma: § El conjunto de nodos coincide con ∑’N ∪{λ} § Si A::=aB ∈ P’D, incluir un arco de A a B etiquetado con a § Si A::=a ∈ P’D, incluir un arco de A a λ etiquetado con a § Si S::= λ ∈ P’D, incluir un arco de S a λ sin etiquetar Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 11 Equivalencia de Gramáticas Regulares 3. 4. A partir del grafo directo, construir su grafo inverso asociado, de la siguiente forma: § Intercambiar los nodos S y λ § Invertir el sentido de las flechas de todos los arcos La gramática GI=(∑’N,∑T,S,PI) se obtiene a partir del grafo inverso de la siguiente forma: § Si existe arco desde A hasta B etiquetado con a, incluir A::=Ba en PI § Si existe arco desde A hasta λ etiquetado con a, incluir A::=a en PI § Si existe arco desde S hasta λ, incluir S::=λ en PI Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 12 6 Equivalencia de Gramáticas Regulares n Se puede observar que: q Existe una correspondencia directa entre las palabras generadas por la gramática G’D/GI y todos los caminos posibles desde el nodo S al nodo λ en el grafo directo/inverso: a1a2…an∈L(G’D): sii S→a1A1→a1a2A2→…→a1a2…An-1→ a1a2…an (en G’D) n sii a1a2…an es un camino del grafo diretco desde S hasta λ n sii an…a2a1 es un camino del grafo inverso desde S hasta λ n sii S→An-1an→…→A1…an→a1a2…an (en GI) n sii a1a2…an∈L(GI) (“sii” = sí y sólo si) n n Lo que demuestra la equivalencia entre G’D y GI Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 13 Equivalencia de Gramáticas Regulares n Teorema de Equivalencia: q q Para toda gramática lineal por la izquierda GI= (∑N,∑T,S,Pi) existe una gramática lineal por la derecha GD, tal que L(GD)=L(GI). Demostración: n Similar al teorema anterior. Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 14 7 Equivalencia de Gramáticas Regulares Ejemplos: n q Sea la gramática: GD=({S,B},{0,1},S,{S::=1B|1, B::=0S}) Obtener una gramática lineal por la izquierda equivalente siguiendo los pasos anteriores: 1. Gramática sin producciones A::=aS G’D=({S,B,A},{0,1},S,{S::=1B|1, B::=0A, A::=1B|1}) S→1B→10A→101B→1010A→…→101…010A→1(01)n Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 15 Equivalencia de Gramáticas Regulares 2. Grafo Directo: 1 S λ 1 1 0 B A 1 3. Grafo Inverso: 1 S λ 1 1 0 B A 1 Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 16 8 Equivalencia de Gramáticas Regulares 4. Lectura del grafo: GI=({S,B,A},{0,1},S,{S::=A1|1, B::=A1|1, A::=B0}) S→A1→B01→A101→B0101→…→B(01)n→1(01)n ¿Que pasaría si no se tuviera en cuenta el paso 1? Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 17 Equivalencia de Gramáticas Regulares Ejemplo: n q Sea la gramática lineal por la derecha: G=({S,A}, {0,1},S,{S::=0S | 1A |λ, A::=0S|0}). Obtener una gramática lineal por la izquierda equivalente Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 18 9 Equivalencia de Gramáticas Regulares n Gramáticas que generan lenguajes regulares q Sea G una gramática que NO es regular. ¿Es posible que el lenguaje L(G) sea regular? ⇒ SI. Un lenguaje es regular si existe una gramática lineal por la izquierda (o lineal por la derecha) que lo genere. q Para saber si el lenguaje L descrito por una gramática no regular G es regular podemos intentar transformar la gramática G en una gramática equivalente que sea regular. Máquinas Secuenciales, Autómatas y Lenguajes Formales Universidad Rey Juan Carlos 19 Equivalencia de Gramáticas Regulares n Ejemplos: q G=({A,S,C},{a,b,c},S,{S::=aS|bA, A::=bA|b|Cc, C::=b}) q analizamos: n n de C sólo se puede derivar b Por tanto, podemos sustituir cualquier C en el cuerpo de una regla de la gramática en una b y eliminar la regla C::=b. Se obtiene: G =({A,S},{a,b,c},S,{S::=aS|bA, A::=bA|b|bc}) Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 20 10 Equivalencia de Gramáticas Regulares q Ahora podemos sustituir la regla A::=bc por las reglas A::=bD y D::=c (D tiene que ser una nueva variable). Se obtiene la gramática lineal por la derecha: G =({A,S,D},{a,b,c},S,{S::=aS|bA,A::=bA|b|bD,D::=c}) Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 21 Equivalencia de Gramáticas Regulares n Ejemplos: G=({A,S,C},{a,b},S,{S::=aS|bAaC, bA::=bA|b, C::=Cb|b}) Obtener una gramática lineal por la derecha equivalente. Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 22 11 Equivalencia de Gramáticas Regulares n Ejemplos: G=({A,S},{a,b,c},S,{S::=bA, A::=bAa|a}) ¿Puede construirse una gramática lineal por la derecha equivalente? Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 23 Equivalencia de Gramáticas Regulares n Ejemplos: G=({A,S},{a,b},S,{S::=bA | aS | bS | λ, A::=bAa | a}) ¿Puede construirse una gramática lineal por la derecha equivalente? Universidad Rey Juan Carlos Máquinas Secuenciales, Autómatas y Lenguajes Formales 24 12