Autómatas y Lenguajes - Año 2007

´ Teor´a 4: Lenguajes Libres del Contexto - Gramaticas Libres del Contexto ı ´ Automatas Push-Down

´ Departamento de Informatica ´ Facultad de Cs. Fco. Matematicas y Naturales

Universidad Nacional de San Luis San Luis - Argentina

´ ˜ Automatas y Lenguajes - Ano 2007– p.1/32

Lenguajes Tipo 2 o Independientes del contexto
La principal característica de este tipo de lenguajes es la de generar cadenas en modalidad espejo, aunque también engloba las características Tipo 3 (L3 ⊂ L2 ). Su importancia radica en que permiten describir los aspectos sintácticos de los lenguajes de programación. Es decir, como debe escribirse correctamente un programa, por lo tanto tienen un rol central en el contexto de compiladores. Sin embargo tienen sus limitaciones desde el punto de vista semántico (declaración y uso de identificadores en Pascal) Ejemplos: Uso de paréntesis en expresiones aritméticas: (3 × x) + (z/(x + y)) Delimitación de bloques a través de begin y end en lenguajes estructurados a bloque (Pascal).

´ ˜ Automatas y Lenguajes - Ano 2007– p.2/32

con A ∈ N y α ∈ (N ∪ Σ)∗ .Ano 2007– p. pero que comienzan con letra: ´ ˜ Automatas y Lenguajes . Σ y S somo se definieron en el contexto general de gramáticas. Σ.4/32 . Ejemplo: Analicemos como construir una GLC para generar expresiones aritméticas que incluyan los símbolos + y ∗ y los identificadores que pueden estar formados por las letras a y b y los números 0 y 1. P. Reconocedores: Autómatas Push-Down (a pila). si sus producciones en P tienen la siguiente forma: A → α. Con N . El nombre “libre de contexto” se debe a que cada una de las producciones pueden ser aplicadas independientemente del contexto en donde aparezca un no terminal en una forma sentencial. Generadores: Gramáticas Libres de Contexto (GLC). ´ ˜ Automatas y Lenguajes .3/32 Gramáticas Libres de Contexto (GLC) Definición: Una gramática G = (N.Dispositivos descriptores asociados a los lenguajes tipo 2. S) es libre de contexto.Ano 2007– p.

que es una aproximación convencional y las más comúnmente usada denominada derivación. Como ya vimos.Ano 2007– p. recordemos: Sean α. ´ ˜ Automatas y Lenguajes . definimos la relación deriva (⇒) sobre (Σ ∪ N )∗ como sigue: αAβ ⇒ αγβ sii existe A → γ ∈ P Esto significa que αγβ es obtenida a partir de αAβ por la aplicación de la regla o producción A → γ ∈ P. γ ∈ (Σ ∪ N )∗ y A ∈ N .P : E→I E →E+E E →E∗E E → (E) I →a I →b I → Ia I → Ib I → I0 I → I1 ´ ˜ Automatas y Lenguajes . que es con la que trabajaremos en la materia. Hay dos aproximaciones para esta inferencia: inferencia recursiva. el proceso de derivar cadenas requiere de la definición de la relación deriva ⇒. β.5/32 Derivaciones en una GLC Las producciones de una gramática se utilizan para inferir que ciertas cadenas están en el lenguaje generado por dicha gramática.6/32 .Ano 2007– p.

Elegir siempre el no terminal de más a la derecha. la función de transición de un AF a δ ∗ . Tales criterios son: Elegir siempre el no terminal de más a la izquierda.7/32 Derivaciones de más a la izquierda y más a la derecha La forma de aplicar las producciones en una secuencia de derivación puede ser arbitraria. en el sentido que cualquier símbolo no terminal de una forma sentencial puede ser escogido para reemplazarlo por su parte derecha. es posible establecer algún criterio de selección del no terminal a expandir. decimos que α ⇒ α. y se usan las relaciones ⇒rm ⇒rm . entonces α ⇒ γ. y se usan las relaciones ⇒lm ⇒lm . tal como extendimos δ. lo hacemos de la siguiente manera: Base: para cualquier cadena α de terminales y no terminales. Tal derivación se denomina derivación de más a la derecha. usando la gramática de las expresiones aritméticas: E ⇒ E ∗ E ⇒ I ∗ E ⇒ b ∗ E ⇒ b ∗ (E) ⇒ b ∗ (E + E) ⇒ b ∗ (I + E) ⇒ b ∗ (b + E) ⇒ b ∗ (b + I) ⇒ b ∗ (b + I0) ⇒ b ∗ (b + I00) ⇒ b ∗ (b + a00) ∗ ∗ ∗ ∗ ´ ˜ Automatas y Lenguajes .Podemos extender la relación ⇒ (como ya vimos) para representar cero. Induccción: si α ⇒ β y β ⇒ γ. Ejemplo: Apliquemos esta definición para derivar la cadena b ∗ (b + a00). Sin embargo. con la idea de restringir el número de elecciones que se tienen para derivar una cadena.8/32 . Tal derivación se denomina derivación de más a la izquierda. una o más derivaciones (⇒). ∗ ∗ ´ ˜ Automatas y Lenguajes .Ano 2007– p.Ano 2007– p.

. Este es un concepto muy importante en el contexto de análisis sintáctico (etapa importante en el proceso de compilación) de lenguajes de programación. . luego A ∈ N .Ejemplo: E ⇒lm E ∗ E ⇒lm I ∗ E ⇒lm b ∗ E ⇒lm b ∗ (E) ⇒lm b ∗ (E + E) ⇒ b ∗ (I + E)lm ⇒lm b ∗ (b + E) ⇒lm b ∗ (b + I) ⇒lm b ∗ (b + I0) ⇒lm b ∗ (b + I00) ⇒lm b ∗ (b + a00) Inferir la misma cadena utilizando derivaciones de más a la derecha. . 4. 3.9/32 Árbol de derivación o de parser Es un recurso alternativo para mostrar derivaciones en una gramática Tipo 2. luego A → X1 X2 . luego n es una hoja y es el único descendiente de su padre. Si un vértice es un nodo interior con rótulo A... Lenguaje generado por una GLC El lenguaje generado por una gramática G (denotado L(G)) es: L(G) = {w ∈ Σ∗ /S ⇒ w}. luego un árbol es un Árbol de Derivación para G si: 1. Cada vértice está rotulado por un símbolo de (N ∪ Σ) ∪ {λ}. Xk respectivamente.. n2 . ∗ ´ ˜ Automatas y Lenguajes .Ano 2007– p. El rótulo de la raíz del árbol es S. S) una GLC..Xk ∈ P 5. X2 ... Σ. (Para las producciones del tipo A → λ). Si n tiene rótulo A y los vértices n1 .. ´ ˜ Automatas y Lenguajes . 2.Ano 2007– p.10/32 . Definición: Sea G = (N. P. Si el vértice n tiene rótulo λ. el símbolo distinguido. nk son los descendientes de n. con rótulos X1 . de izquierda a derecha.

Dado un Árbol de Derivación para una gramática G. para el árbol previamente mostrado. La cadena formada por la concatenación de tales rótulos es denominada frontera del árbol. Por ejemplo. tenemos una forma sentencial.Ano 2007– p.12/32 . ´ ˜ Automatas y Lenguajes .Ejemplo: A partir de la gramática que genera expresiones aritméticas dada previamente y la cadena w = b ∗ (b + a00) obtenemos el siguiente Árbol de Derivación: E E I b * ( E I b I a I 0 E E + ) E I 0 ´ ˜ Automatas y Lenguajes .11/32 ´ ´ Frontera de un Arbol de Derivacion. la frontera es w = b ∗ (b + a00).Ano 2007– p. Si los rótulos de las hojas del árbol son leídos de izquierda a derecha.

Ambigüedad.Ano 2007– p. ´ ˜ Automatas y Lenguajes . dado que es ambigüa la correspondencia de la parte “else” de la sentencia. implementar un reconocedor determinístico. S) y la cadena w ∈ Σ. ´ ˜ Automatas y Lenguajes .Ano 2007– p. Puede comprobarse que para ella existen dos árboles de derivación distintos. Es decir. P. libre de contexto es ambigüa si existe al menos una cadena w en L(G) para la cual existe más de un Árbol de Derivación con frontera w.14/32 . impediría en principio. Teorema 1: para cada gramática G = (N.13/32 sentencia → if( expresion ) sentencia expresion ) sentencia else sentencia if( otrasentencia Consideremos la cadena “if ( expr1 ) if ( expr2 ) f() else g()”. La existencia de esta condición. Σ. Ejemplo: conjunto de producciones que generan la construcción if-the-else al estilo del lenguaje ’C’: Introducimos la notación especial para los no terminales usando corchetes angulares para diferenciarlos de los terminales (BNF). ¿cierra el primer “if” o el segundo?. w tiene dos árboles de parser distintos sí y sólo sí tiene dos derivaciones de más a la izquierda distintas. Definición: Una gramática G. partiendo de S.

Ano 2007– p. Sin embargo. el hecho es que no hay un algoritmo para determinar si una gramática es ambigüa y que a veces resulta imposible eliminar la ambigüedad (gramáticas inherentemente ambigüas). Cinta Cabeza Lectora (mov. Es decir. no xiste un algoritmo práctico que permita eliminar la ambigüedad en una gramática. ¿Cómo podríamos extender el AF para que pueda reconocer lenguajes en modalidad espejo?. Agregamos una Memoria Auxiliar (pila).16/32 .Ano 2007– p.Removiendo ambigüedad de las gramáticas Así como es posible eliminar estados inaccesibles desde un AF. ... a derecha implicito) UC Pila Autómata Push-Down (APD) ´ ˜ Automatas y Lenguajes . ´ ˜ Automatas y Lenguajes . sería útil poder eliminar la ambigüedad en una gramática de manera algorítmica.15/32 Reconocimiento de lenguajes Tipo 2.

Pila. F ). ´ Definicion: Un APD es una 7-upla P = (Q.Ano 2007– p. δ : Q × (Σ ∪ {λ}) × Γ → 2Q×Γ . se mueve a derecha (movimiento implícito).Características del APD: Cinta de entrada de sólo lectura.17/32 Autómata Push-Down. Σ. Cabeza lectora. El APD es esencialmente un AFND-ǫ con el agregado de una pila. δ. F : Conjunto de estados finales (puede ser vacío). acepta lectura y escritura (pop y push). Z0 : símbolo inicial de la pila. analicemos el dominio y el rango de esta función: ∗ ´ ˜ Automatas y Lenguajes . donde: Q : es el conjunto de estados. Γ. q0 . Γ : Alfabeto de la Memoria Auxiliar (pila). ´ ˜ Automatas y Lenguajes .Ano 2007– p. Σ : Alfabeto de entrada.18/32 . La función de transición es. Z0 . q0 : el estado inicial.

(pn .. X). . γ2 ).20/32 .. Si γ = X.. . Z) = {(p1 . n.. pi ∈ Q. 3. (p2 . Movimiento Dependiente de la entrada Tiene en cuenta el símbolo corriente en la cinta de entrada. γi ∈ Γ∗ con i = 1. Luego. γ1 ). si γ = λ entonces se hace pop en la pila. Es decir que el rango de δ es un conjunto del tipo: {(q. a. Z ∈ Γ es el tope de la pila y finalmente. Si γ = Y Z.. γ)|q ∈ Q ∧ γ ∈ Γ∗ }. Rango: Conjunto de posibles estados (no determinismo) con el correspondiente cambio del símbolo en el tope de la pila.Ano 2007– p. O sea que δ toma como argumento una triupla: δ(q.Dominio: 1. Aquí. a ∈ Σ es el símbolo de la entrada. Observe que el tope (un símbolo) puede ser reemplazado por una cadena. a. incluyendo a la cadena de longitud nula o λ.. λ significa movimiento independiente de la entrada (explicado más adelante). γn )} donde q ∈ Q. (Σ ∪ {λ}): símbolo corriente en la entrada. 2. entonces la pila no se modifica.Ano 2007– p. ´ ˜ Automatas y Lenguajes . Q: estado actual. entonces X es reemplazado por Z e Y es puesto en la pila. Antes de ver un ejemplo. ¿Cómo se interpreta? ´ ˜ Automatas y Lenguajes .19/32 Un APD es por definición no determinístico. 2. una transición de este tipo tendría la siguiente forma: δ(q. Γ: representa el símbolo corriente en el tope de la pila. veamos en detalle los tipos de movimientos que un APD puede realizar.

podemos representar gráficamente cada una de las transiciones y estados del APD.Movimiento Independiente de la entrada No se tiene en cuenta el símbolo corriente en la entrada. Z) = {(p1 .. Esto vale para cualquier tipo de movimiento. tal que L(P ) = {0n 12n |n > 1}. δ(q.Ano 2007– p. 0) = {(q2 . λ)} δ(q2 . δ(q0 .Ano 2007– p..22/32 . es decir se realiza la operación pop sobre la pila. como lo hacíamos con un AF. 00Z0 )} δ(q1 . γ2 ). 0. γ1 ). 0) = {(q1 . λ. 1. λ)} Sin embargo.En este caso se reemplaza el tope de la pila por la cadena de longitud nula. Z0 ) = {(q1 .21/32 Ejemplo: Construir un APD P . (p2 . (pn . 1.. Un APD puede ser caracterizado por la especificación completa de la función de transición. . 0. λ)} δ(q2 . 0) = {(q2 . ¿Qué pasa cuando γ = λ? . 000)} δ(q1 . λ. ´ ˜ Automatas y Lenguajes . Z0 ) = {(q3 . ´ ˜ Automatas y Lenguajes . γn )} Interpretación: igual a la anterior. excepto que no miramos el símbolo de la entrada para tomar una decisión.

un movimiento de un APD se representa relacionando dos configuraciones de la siguiente manera: (q.24/32 .0 000 0. aw. γ) ∈ Q × Σ∗ × Γ∗ donde: q es el estado actual.23/32 Lenguaje reconocido por un APD. Zα) ⊢ (p. w. ´ ˜ Automatas y Lenguajes . ´ Configuracion: es una notación especial para describir el estado actual del autómata (una descripción instantánea).Ano 2007– p. Z) contiene a (p. Z 0 q3 ´ ˜ Automatas y Lenguajes . a. luego. w es la cadena remanente en la entrada (aun no analizada).Ano 2007– p. reemplazamos Z por γ y se mueve al estado p.0. Una configuración de un APD es una triupla (q. 0 q0 q1 q2 λ.0 1. w. γα) si δ(q. γ) Estando en el estado q.Z 00Z0 0 1. γ es el contenido de la pila. consumiendo a (el cual puede ser λ) de la entrada.

Z0 ) ⊢ (q. λ. definimos: ⊢: movimiento en i pasos. Z0 ) ⊢ (p. Γ. llegamos a una configuración final.En forma similar a la relación deriva. partiendo de una configuración inicial y con la aplicación de sucesivos movimientos legales. Z0 . w. es por pila vacía. δ. si (q0 . w. λ. yw. Σ. Z0 ) ⊢ (p. A continuación definimos cada una de ellas: Lenguaje aceptado por estado final. w. α) y q ∈ F .25/32 ∗ Teorema 2: Si P = (Q. Configuraciones especiales: Configuración Inicial: (q0 . y (q. con q ∈ F y α ∈ Γ∗ . w. es también verdad que: ∗ (q. F ) es un APD. Configuración Final: (q. entonces para cualquier cadena w ∈ Σ∗ y γ ∈ Γ∗ . λ). β.26/32 . ∗ Una cadena w ∈ Σ∗ es aceptada por un APD P . ∗ ⊢: movimiento en cero o más pasos (clausura reflexo. + i ⊢: movimiento en uno o más pasos (clausura transitiva). β).transitiva). Una es por estado final (forma clásica de un autómata) y la otra. ∗ L(P ) = {w ∈ Σ∗ |(q0 . p ∈ Q} ´ ˜ Automatas y Lenguajes . q0 . λ. Es decir. α). y.Ano 2007– p. α) ⊢ (p. ´ ˜ Automatas y Lenguajes . relacionada con un APD. p ∈ F y α ∈ Γ∗ } Lenguaje aceptado por pila vacía. γ) Lenguaje aceptado por un APD. x. λ. αγ) ⊢ (p. xw. α). Z0 ) con w ∈ Σ∗ . ∗ N (P ) = {w ∈ Σ∗ |(q0 . Existen dos maneras de aceptar un lenguaje.Ano 2007– p.

δf .X 0 / λ También necesitamos un nuevo símbolo de comienzo p0 . Γ. el cual es el estado final de PF . Además necesiat un estado más. X0 .X 0 /Z 0 X 0 0 p q0 λ . hasta que la pila de PN está vacía.Ano 2007– p. lo cual PF lo detecta porque ve X0 en el tope.27/32 λ . Demostración: usamos un nuevo símbolo X0 .28/32 . Z0 ).X 0 / λ p f λ .X 0 / λ λ . Es decir que. Γ. δN . mostraremos como a partir de un APD PN que acepta el lenguaje L por pila vacía construímos un APD PF que acepta L por estado final. en la próxima página. p0 . q0 . Σ. Entonces PF simula PN . {pf }) donde δf se define así: ´ ˜ Automatas y Lenguajes . cual es la idea de la prueba de este teorema: ´ ˜ Automatas y Lenguajes . Σ. pf }. Pila vacía a estado final Mostramos que las clases de lenguajes que son L(P ) para algún APD P es lo mismo que la clase de lenguajes que son N (P ) para algún APD P . entonces hay un APD PF tal que L = L(PF ). Teorema 3: si L = N (PN ) para algún APD PN = (Q.Ano 2007– p. pf . Podemos observar en la figura.Se puede demostrar que los lenguajes aceptados por APDs por pila vacía son exactamente los mismos que los aceptados por APDs por estado final. La especificación de PF es como sigue: PF = (Q ∪ {p0 . que cumple la función de símbolo de comienzo de PF y de marcador sobre el fin de la pila cuando PN llega a pila vacía.X 0 / λ λ .

Ver demostración en la bibliografía (página 235). Γ.30/32 . X0 ). Z0 . PF tiene todos los movimientos de PN . Z0 X0 ) ⊢PF (q. w. las entradas a ∈ Σ o a = λ.29/32 (Sólo Sí) Basta observar las transiciones adicionales de las reglas 1. X0 ) ⊢PF (pf . X0 ) contiene (pf . w. lambda) (3.. λ. λ. w. Si ponemos todo junto. se puede construir otro APD PN que acepta L por pila vacía. Para todo estado q ∈ Q.. ∗ (Sí) Tenemos que (q0 . entonces hay un APD PN tal que L = N (PN ). ´ ˜ Automatas y Lenguajes . desde la regal 1. Ahora debemos probar que w ∈ L(PF ) sí y sólo sí w ∈ N (PN ). λ) para todo estado q ∈ Q. Z0 X0 ) ⊢PF (q. Por lo tanto w ∈ N (PN ). δF . Excepto por el primer y último paso PF no puede usar otras transiciones que no sean también transiciones de PN . w. λ.. a. Z0 X0 ) ⊢PN (q. Z0 . ´ ˜ Automatas y Lenguajes . concluímos que (q0 . X0 ) = {(q0 . a. δf (p0 . X0 ).1) Por lo tanto PF acepta w por estado final. λ. a 3. Además de la regla 2. ∗ Por la regla 2. q0 . Y ) contiene todos los pares en δN (q.Ano 2007– p. Σ. δ(q. λ).1. tenemos: ∗ (p0 . Y ). λ. y los símbolos de la pila Y ∈ Γ. a la 3. X0 )} 2. ∗ Por teorema 2 podemos insertar X0 y concluímos que (q0 . Estado final a pila vacía Se puede también demostrar que dado un APD PF que acepta un lenguaje L por estado final. Cualquier computación de PF que acepta w debe ser como (3. w. δF (q.Ano 2007– p. F ).1). Z0 ) ⊢PN (q. X0 ) ⊢PF (q0 . λ. 3. λ. Teorema 4: sea L = L(PF ) para algún APD PF = (Q.

si la función de transición satisface las siguientes restricciones: ∀q ∈ Q ∧ Z ∈ Γ siempre que δ(q.Autómata Push-Down Determinístico ´ Definicion: Un APD P = (Q. Γ.Ano 2007– p. ¿Es esto posible de realizar? (Ejercicio) ´ ˜ Automatas y Lenguajes . Z) no contiene más de un elemento. b}∗ }. Z0 . a. Z) está indefinida ∀a ∈ Σ. δ(q. Z) esté definida. δ. Para ningún q ∈ Q. ´ ˜ Automatas y Lenguajes . la familia de lenguajes reconocidos por APDs no determinísticos (LAP D−nodet ) no es equivalente a la reconocida por los APD Determinísticos (LAP D−det ). q0 . No permite simultáneamente movimientos independientes y dependientes de la entrada para un mismo q y Z. luego δ(q. F ) es determinístico. La cardinalidad del conjunto de posibles acciones puede ser uno o cero.32/32 . a ∈ (Σ ∪ {λ}). Σ. a.Ano 2007– p. λ. En particular se cumple que LAP D−det ⊂ LAP D−nodet . Z ∈ Γ.31/32 Sin embargo. Veamos esto planteando el siguiente problema: Diseñar un APD Determin´stico que reconozca el lenguaje ı L = {xxt |x ∈ {a.

Sign up to vote on this title
UsefulNot useful