Está en la página 1de 41

Autómatas, gramáticas

y lenguajes
Conferencia 4
Orden del día
A
LENGUAJES INDEPENDIENTES DEL CONTEXTO

Los lenguajes independientes del contexto que también se conocen con el nombre de
gramáticas de contexto libre son un método recursivo sencillo de especificación de reglas
gramaticales con las que se pueden generar cadenas de un lenguaje.

Es factible producir de esta manera todos los lenguajes regulares, además de que existen
ejemplos sencillos de gramáticas de contexto libre que generan lenguajes no regulares

Las reglas gramaticales de este tipo permiten que la sintaxis tenga variedad y
refinamientos mayores que los realizados con lenguajes regulares, en gran medida
sirven para especificar la sintaxis de lenguajes de alto nivel y otros lenguajes
formales.
Hasta ahora, se han visto dos formas de definir lenguajes: a través de autómatas finitos, y
por medio de expresiones regulares. Ahora veremos otra forma, usando el concepto de
gramáticas.
Basamos el estudio siguiente en el concepto básico de gramática formal como un conjunto de
reglas para formar correctamente las frases de un lenguaje (ejemplo la gramática del español,
inglés, francés, etc).
Reglas Gramaticales

Son específicamente, reglas de reemplazo. Una regla es un expresión de la forma 


 en donde tanto  como  son cadenas de símbolos en donde pueden aparecer
tanto elementos del alfabeto Σ como unos nuevos símbolos, llamados variables.

Los símbolos que no son variables son constantes. Por ejemplo una regla gramatical es
dada como:

X → aX . Otro ejemplo: Aplicar la regla   a la palabra  da como resultado


(operación de reemplazo)  .

Otro ejemplo: Si se tienen los símbolos bbXa y se le aplica la regla X → aX da como


resultado la nueva cadena bbaXa.
GRAMÁTICAS REGULARES
Los lenguajes generados por estas gramáticas se llaman "Lenguajes Regulares", y el conjunto de todos
estos lenguajes es la clase 3, que es la clase más pequeña, e incluye a los lenguajes más simples. Un
ejemplo de lenguaje regular es el conjunto de todos los números pares enteros positivos.

Estas gramáticas regulares pueden ser a su vez de dos tipos:

Lineales por la derecha


A⟶bC
A⟶b En donde A y C son las variables
que pertenecen a V y b es un
Lineales por la izquierda carácter terminal o
A⟶Cb constante que pertenece a Σ.
A⟶b
A⟶λ
Definimos o caracterizamos una gramática regular como:

Un cuádruplo (V, Σ, R, S) en donde:

V = Es el alfabeto de variables
Σ = Es el alfabeto de constantes
R = Es el conjunto de reglas, es un subconjunto finito de V x (ΣV U Σ )
S= Es el símbolo inicial y es un elemento de V
Se pueden derivar muchas otras palabras como bababa L(G) y que pertenecen también
al lenguaje generado por la gramática. Formalmente esta gramática se representaría
como:

({S, A,B}, {a, b}, {(S, aA), (S, bA), (A, aB), (A, bB), (A, a), (B, aA), (B, bA)}, S)

AUTÓMATAS FINITOS Y GRAMÁTICAS REGULAR


Si L es un lenguaje generado por una gramática regular, entonces existe un
autómata finito determinístico que lo reconoce.

La clase de los lenguajes generados por alguna gramática regular es


exactamente la de los lenguajes regulares.
OBTENCIÓN DE UN AUTÓMATA FINITO A PARTIR DE UNA GRAMÁTICA DADA:

Consiste en asociar a los símbolos no terminales de la gramática (las


variables) los estados de un autómata. Así, para cada regla A → bC en la gramática
tenemos una transición (A, b,C) en el autómata.

Para el caso de las reglas A → b, se tienen transiciones (A, b,Z), donde Z es un nuevo
estado para el que no hay un no terminal asociado; Z es el ´único estado final del
autómata.
Ejemplo:

Obtener un autómata finito para la gramática regular G1 siguiente: (V, Σ, R, S).


Se denota la gramática en un formato comprimido: (en fila):

S → aA │ S → bA │ A → aB │ A → bB │A → a │ B → aA │ B →bA

Es lo mismo que:

S → aA │ bA │, A → aB │ bB │ a │ , B → aA │ bA
haciendo uso del simulador JFLAP8
, que dentro de sus opciones nos
permite introducir una gramática y
generar el AF, se muestra el
resultado de la conversión
automática de G → AF (de
Gramática a Autómata Finito).
Ejemplo:
Dado el Lenguaje L generado por la gramática G2 = (V, Σ, R,S) (definida lineal por la derecha
para el ejemplo) así: S → 0A │ A → 10A │ A →  se desea construir un autómata finito no
determinístico AFND que acepte el lenguaje L
OBTENCIÓN DE LA GRAMÁTICA A PARTIR DE UN
AUTÓMATA FINITO
A partir de un AFD M = (Σ, K,  , s, F) obtener la gramática regular correspondiente. El
procedimiento sigue la siguiente secuencia:

• Para cada transición de la forma (( , ), q) habrá en la gramática una regla q X X   , donde
Xi es la variable en la gramática que corresponde al estado i del AFD.

1. La forma  X   permite terminar una derivación.


2. La aplicación de este tipo de reglas debe corresponder al consumo del ultimo carácter de una palabra
aceptada en el AFD.
3. Al terminar una palabra aceptada en un AFD, necesariamente nos encontraremos
en un estado final o de aceptación “halt”.
4. Hay que incorporar a la gramática, por cada transición (( , ),q) donde q  F una regla adicional
 X   además de la regla X   X 
Gramáticas y lenguajes libres de contexto

Los Lenguajes Libres de Contexto (abreviado LLC) forman una clase de lenguajes más amplia
que los Lenguajes Regulares, de acuerdo con la Jerarquía de Chomsky. Estos LLC relacionan
las Gramáticas libres de contexto (GLC) con los Autómatas de Pila.

Las GLC tienen reglas menos rígidas que las gramáticas regulares. Así toda gramática
regular es GLC pero no viceversa

ARBOLES DE DERIVACIÓN

Las GLC tienen la propiedad de que las derivaciones pueden ser representadas en forma
de árbol ramificado o arboles de derivación, o también arboles de compilación por usarse
extensivamente en los compiladores y son de vital importancia para la teoría de los
compiladores de los lenguajes de programación.
La definición formal de estos árboles de derivación está dada por:

Definición: Sea: G = (V, Σ, R, S) una GLC. Entonces el árbol de derivación cumple las
siguientes propiedades:

1. Cada nodo tiene una etiqueta.


2. La raíz tiene etiqueta S.
3. La etiqueta de los nodos que no son hojas debe estar en V, y las de las hojas en: Σ U 
4. Si un nodo n tiene etiqueta A, y los nodos n1, …., nm son sus hijos (de izquierda a
derecha), con etiquetas respectivamente A1, .., Am, entonces A → A1, …., Am  R.
Ejemplo: Para la siguiente gramática: S → aAS, S → a, A → SbA , A → SS, A → ba

Analizamos la cadena o palabra  = aabbaa que genera un árbol y que puede provenir
de varias cadenas de derivaciones distintas así:

• Derivación por la izquierda: Cuando en cada paso siempre se sustituye primero la


primera
variable (más a la izquierda) de la palabra que tenemos.

• Derivación por la derecha. Cuando en cada paso siempre se sustituye primero la


última
variable (más a la derecha) de la palabra que tenemos
AUTÓMATAS DE PILA
Un Autómata de pila (AP) ó PushDown Automata (PDA) no es más que un AF con
un poder adicional de cálculo (memoria). Dado que los AF no son tan poderosos
para ciertas operaciones ni para aceptar los LLC, los AP si lo son.

Si para las expresiones regulares se tenían ciertas maquinas abstractas, autómatas


finitos, que las reconocían, para las CFG (Gramáticas fuera de contexto) vamos a
usar otro tipo de maquina reconocedora denominada autómata de pila.

Estas se diferencian de los autómatas finitos en que se ayudan para sus transiciones de
una memoria con estructura de pila. Como en los anteriores, la transición entre estados
depende del símbolo leído y del estado actual. Cada transición implica la modificación
de la pila.
DEFINICIÓN DE AUTÓMATA CON PILA

A continuación daremos la definición formal de autómata con pila no determinístico


(APND). Al contrario que en los autómatas finitos, los autómatas con pila no
determinísticos y determinísticos no aceptan las mismas familias de lenguajes.
Precisamente son los no determinísticos los asociados con los lenguajes libres de
contexto. Los determinísticos aceptan una familia más restringida de lenguajes

La formalización de un autómata de pila es un séptuplo (K,,,, s, F) en


donde:
 K es el conjunto de estados

 Σ es el alfabeto de entrada

  es el alfabeto de la pila

 S  K es el estado inicial

 Zo   es el símbolo inicial de la pila (o también se denota como Z


simplemente)

 F  K es un conjunto de estados finales.

 Δ  ( K x Σ* x  *) x ( K x  *) es la relación (función) de transición.


Observar que el autómata es no determinista ya que dado un estado, un símbolo del
alfabeto de entrada y otro del alfabeto de la pila, puede pasar a distintos estados y
reemplazar el tope de la pila por distintas cadenas i  , avanzando o no la cabeza lectora
una posición:

Δ : K x (Σ U { }) x  → 2 K x  *

En la siguiente figura muestra la estructura de un


Autómata de Pila (PDA)
La función de transición aplica cada estado, cada símbolo de entrada (incluyendo la
cadena vacía) y cada símbolo tope de la pila en un conjunto de posibles movimientos.
Cada movimiento parte de un estado, un símbolo de la cinta de entrada y un símbolo tope
de la pila. El movimiento en sí consiste en un cambio de estado, en la lectura del símbolo
de entrada y en la sustitución del símbolo tope de la pila por una cadena de símbolos.

FUNCIONAMIENTO DE LOS AUTÓMATAS DE PILA

La pila funciona de manera que el ultimo carácter que se almacena en ella es el primero
en salir (“LIFO” por las siglas en ingles), como si se apilaran platos uno encima de otro, y
naturalmente el primero que quitaremos es el ´último que hemos colocado. Un aspecto
crucial de la pila es que solo podemos modificar su “tope”, que es el extremo por donde
entran o salen los caracteres. Los caracteres a la mitad de la pila no son accesibles sin
quitar antes los que están encima de ellos.
La pila tendrá un alfabeto propio, que puede o no coincidir con el alfabeto de la palabra de
entrada. Esto se justifica porque puede ser necesario introducir en la pila caracteres
especiales usados como separadores, según las necesidades de diseño del autómata.

Al iniciar la operación de un AP, la pila se encuentra vacía. Durante la operación del AP,
la pila puede ir recibiendo (y almacenando) caracteres, según lo indiquen las transiciones
ejecutadas. Al final de su operación, para aceptar una palabra, la pila debe estar
nuevamente vacía.

En los AP las transiciones de un estado a otro indican, además de los caracteres que se
consumen de la entrada, también lo que se saca del tope de la pila, así como también lo
que se mete a la pila.

Se entiende por configuración de un autómata con pila a su situación en un instante


considerado expresada formalmente por medio de una tripla.
(q,  ,  ) ( K x Σ* x  *) en donde:

• q  K es el estado actual del autómata.


•   Σ* es la subcadena de entrada que aún no se ha analizado.
•    * es el contenido actual de la pila
Se presenta un caso en el que:

 Si  =  no queda nada por analizar


 Si  =  se ha reconocido la cadena

La Notación gráfica que se asemeja a la de los autómatas finitos (AF) es la dada así:

Para las transacciones se usa: “ / /  ” en donde:

  = es la entrada (secuencia de caracteres) que se consume.


  = es lo que se saca de la pila.
  = es lo que se mete en la pila
Ejemplo

Dada la siguiente transición: “ a /  / A “ Indica que se consume de la entrada


un caractér a, no se saca nada de la pila y se mete A a la pila.

La función de transición de estados de un AP puede ser representada por un diagrama


donde los nodos representan los estados y los arcos transiciones. Si se da la transición, el
arco queda rotulado de la siguiente manera

Si el estado actual es q0 y la cabeza lectora apunta un símbolo a, y el tope de la pila es X,


entonces cambiar al nuevo estado q0, avanzar la cabeza lectora, y sustituir el símbolo del
tope X en la pila por la cadena 
DISEÑO DE AUTÓMATAS DE PILA
Al igual que los AF, los AP tienen estados finales, que permiten distinguir cuando una
palabra de entrada es aceptada. De hecho para que una palabra de entrada sea aceptada
en un AP se deben cumplir todas las condiciones siguientes:

 La palabra de entrada se debe haber agotado (consumido totalmente).


 El AP se debe encontrar en un estado final.
 La pila debe estar vacía.

Transiciones de un PDA: Las posibles operaciones con la cinta y la pila son:

 La cinta se desplaza en un solo sentido y su cabeza solo puede leer.


 La pila, está limitada en un extremo por definición, cuando se lee un elemento de la pila, este
desaparece o se saca y cuando se escribe en la pila se introduce un elemento.
 En cualquier caso, si se vacía la pila, entonces el autómata se detiene.
El problema de diseño de los AP consiste en obtener un AP M que acepte exactamente
un lenguaje L dado. Por exactamente queremos decir, como en el caso de los autómatas
finitos, que, por una parte, todas las palabras que acepta efectivamente pertenecen a L, y
por otra parte, que M es capaz de aceptar todas las palabras de L.

Para los AP, adicionalmente tenemos que establecer una estrategia clara para el
manejo de la pila.

Definición: Un movimiento de un AP es una transición


entre configuraciones

Se recuerda que un AP no puede realizar ningún movimiento si la pila está vacía. Por lo
que un AP reconocerá una cadena de entrada por estado final si partiendo de su
configuración inicial (q0, t, Z0), llega a una configuración final (qf, , ) empleando
movimientos válidos
La cadena será aceptada por vaciado de pila si después de leerse toda la cadena se llega
a un estado con la pila vacía, independientemente del tipo de estado en el que se
encuentre el AP.

RESUMEN DE LAS TRANSICIONES DE UN PDA:

 Leer un símbolo de entrada


 Extraer un símbolo de la pila
 Insertar un símbolo en la pila
 Pasar a un estado nuevo
 Ejemplo 51 Diseñar un AP que acepte exactamente el lenguaje con palabras de la forma
, para cualquier número natural n.

el diseño inicial para este ejercicio:


La construcción en diseño indica utilizar la pila como “contador” para recordar la cantidad
de a´s que se consumen, y luego confrontar la cantidad de b´s. Una primera versión de
este diseño utiliza un solo estado q, con transiciones a/ /a y b / a /  de q así mismo.
El diseño del autómata se ve en la figura
Para verificar el funcionamiento del autómata, podemos simular su ejecución, listando las
situaciones sucesivas en que se encuentra, mediante una tabla que llamaremos “traza de
ejecución”. Las columnas de una traza de ejecución para un AP son: el estado en que se
encuentra el autómata, lo que falta por leer de la palabra de entrada, y el contenido de la
pila.

Por ejemplo, la traza de ejecución del AP del último ejemplo, para la palabra aabb
Gracias…
REFERENCIAS

https://www.youtube.com/watch?v=ScR1T1DME14

También podría gustarte