Y LENGUAJES LIBRES DE
CONTEXTO
Limite de lo computable Máquina de
C Turing
a
p Se liberan los extremos de la cinta
a ahora es infinita
c Autómata
i Linealmente
d Acotado
a
d
JERARQUIA DE LAS MÁQUINAS ABSTRACTAS Se incorpora la
d capacidad de
e grabar sobre la
cinta de
c Autómata entrada que
ó De Pila está acotada
m
p Se incorpora una
u memoria de pila
t LIFO Se permite el movimiento del cabezal en
o dos sentidos Autómata
Autómata Finito
Máquinas
Finito Bidireccional
secuenciales
TIPOS DE GRAMÁTICAS
0 Sin restricciones
1 I(w1) ˂ I(w2 ) , w2 = λ
3 w1 = A = A y w2 = aB o w2 = a, siendo A є N, B є N y a
є T, o S є λ
Máquina de Gramáticas
Relación entre las máquinas Turing Sin
abstractas y los tipos de
restriccioness
Gramáticas según las
jerarquías de Chomsky
Autómata
Linealmente Gramáticas
Acotado Dependientes del
Contexto
Gramáticas
Independientes
Autómata
del
De Pila
Contexto
Se incorpora una
memoria de pila
LIFO
Autómata Gramáticas
Autómata Finito regularess
Finito Bidireccional
JERARQUIA DE GRAMÁTICAS DE CHOMSKY
Gramáticas Gramáticas
Gramáticas Dependientes Independientes Gramáticas
Sin del del s Regulares
Restricciones Contexto Contexto (Tipo 3)
(Tipo 0) (Tipo 1) (Tipo 2)
Definición (Forma Normal de Chomsky)
Una gramática libre de contexto G := (V, ∑, Q0,P) se dice que
tipos siguientes.
A a, con A є V y a є ∑ ,
LՍM L+M
L.M LM
Una expresión regular siempre denota un lenguaje formal (uno
Si el lenguaje es FINITO, entonces la gramática puede consistir de todas las reglas de la forma S —>w para cada
cadena w en el lenguaje.
Sin embargo, si el lenguaje que se desea describir es INFINITO, entonces al menos una de las reglas de producción
en la gramática deberá ser una regla recursiva:
Definition: Una regla de producción se denomina Recursiva cuando y sólo cuando su lado izquierdo aparece como
parte de su lado derecho.
Definition Una regla se denomina Indirectamente Recursiva si su lado izquierdo aparece en el lado derecho de
alguna otra regla derivable a partir de la primera.
Para ilustrar lo anterior considérese la regla de producción S —> b | aS, evidentemente se trata de una regla
recursiva, sin embargo, se en alguna otra gramática se encontraran las siguientes reglas de producción:
S —> b | aA
A —> c | bS
Entonces se tienen dos reglas indirectamente recursivas, por una parte, S —> aA es indirectamente recursiva ya
que:
S —> aA —> abS
Por otra parte, también la regla A bS es indirectamente recursiva, ya que:
A —> bS —> baA
Así que, de las cuatro reglas de producción contenidas en la gramática, dos de ellas son indirectamente recursivas.
Definition: Una gramática se denomina Gramática Recursiva
si y sólo si contiene alguna regla de producción recursiva, o bien alguna regla indirectamente recursiva.
Por lo tanto, es posible realizar la siguiente afirmación acerca de las gramáticas que describen lenguajes
infinitos:
Una gramática cuyo lenguaje es infinito, forzosamente es recursiva
Además, la conclusión anterior conduce inevitablemente a reflexionar sobre la estructura de las reglas de
producción en una gramática cualquiera. Siempre es posible tener reglas que no sean ni recursivas, ni
indirectamente recursivas, y algunas veces se encontrarán reglas que sí lo sean. Lo cual, inevitablemente
lleva a observar que:
El lenguaje l (G)= definido por una gramática G, siempre es un conjunto definido
inductivamente de la siguiente forma
Sea G una gramática cualquiera, con símbolo inicial S y sea w cualquier cadena en el mismo alfabeto de G,
entonces:
CASO BASE Todas las cadenas w que pueden ser derivadas a partir de S sin usar ninguna regla recursiva o
indirectamente recursiva, pertenecen a l (G).
Inducción: Si w є l (G). y alguna derivación S =>+ w contiene un símbolo no-terminal de alguna regla
recursiva o indirectamente recursiva, entonces agregar un paso más a la derivación,
usando dicha regla para obtener S =>+ x y entonces, x є l (G). .
Cerradura: l (G) está formado únicamente por aquellos símbolos considerados en esta definición y
por ningún otro.
Example Sea G ( {A,B}, { 0, 1}, S, Rp) una gramática cuyas reglas de producción en el conjunto Rp son las
siguientes:
S —> λ | 0B
B —> 1 | 1B
Para describir el lenguaje l (G) se debe proporcionar un caso base y una regla de inducción. Según la observación
anterior, el caso base está formado por todas las cadenas derivables sin usar recursividad. En la gramática existen tres
reglas de producción que no son ni recursivas, ni indirectamente recursivas: S —> λ , S —> 0B y B —> 1.
Sólo existen dos cadenas que pueden ser derivadas usando estas reglas:
S => λ y S => 0B => 01
Por lo tanto, queda conformado el caso base:
λ , 01 є l(G). .
Ahora, para formar la regla de inducción, se observa la única regla recursiva: B —> 1B. Según lo establecido
anteriormente, cualquier elemento de l (G) cuya derivación contenga una ocurrencia del símbolo B se
puede usar para agregar un paso más y obtener nuevos elementos de l (G) .
La única derivación apta para tal proceso es:
S => 0B => 01
Si se agrega un paso más, usando para ello la regla recursiva, se obtiene:
S => 0B => 01B => 011
Y así queda conformada la regla de inducción de la siguiente forma:
Inducción:
Si x es una cadena formada exclusivamente por símbolos 1, y 0x є l(G). , entonces también 01x є l(G). .
Agregando la cláusula de cerradura, se tiene completa la definición inductiva de l(G).
De acuerdo a esa definición, 01 є l(G). implica que 011 є l(G).
Si ahora se usa ese conocimiento se puede deducir, por la regla de inducción que 0111 є l(G)
y también que 01111 є l(G). . En general, esa estructura sugiere que:
l(G)={01n|n є n }
GRAMÁTICAS LIBRES DE CONTEXTO
Tanto las Gramáticas libres de contexto como las regulares desempeñan un papel importante en los
lenguajes de programación.
Las gramáticas libres de contexto se utilizan para definir la sintaxis de casi todos los lenguajes de
programación.
Estas gramáticas son lo bastante potentes como pare definir una amplia variedad de lenguajes.
Además se pueden diseñar algoritmos eficientes que determinen cuando y como generar la cadena.
S ==>4 1S1 ==>4 11S11 ==>2 110S011 ==>3 1101011 esta cadena es binaria
palíndromo
Lenguaje Si G es una GIC, G = (V, T, P, S) entonces L (G) = { w esta
en T* | S ⇒* w }
Sea A→ X1 X2 … Xm en P 1-
Si Xi es Terminal y Xi = a entonces
∑N = ∑N Ս {Xa } P´ = P Ս Ս {Xa := a}
c) Para cada producción de la gramática que contenga en su lado derecho tanto símbolos tanto símbolos terminales como
símbolos no terminales, reemplazarla por una nueva que tenga en lugar del símbolo terminal a su correspondiente nuevo no
terminal Xa . Esto es:
En caso contrario:
d) Para cada producción con más de dos símbolos no terminales en su lado derecho, digamos B:= η donde η contiene dos o
mas no terminales, crear un nuevo símbolo no terminal X y reemplazar la producción por el par
A:= BX y X:= η
Procedimiento reiteradamente de ésta forma y siendo el conjunto P finito se llegará a tener todas las
producciones en la Forma Normal de Chomsky.
Similarmente, los DTDs usados para indicar el formato permitido en documentos XML son
esencialmente gramáticas que describen lenguajes LC.
Los lenguajes LC también se usan en biología computacional para modelar las propiedades que se
buscan en secuencias de ADN o proteínas. El estudio de este tipo de lenguajes deriva en la
construcción semiautomática de parsers (reconocedores) eficientes, los cuales son esenciales en la
construcción de compiladores e interpretes, así como para procesar textos semiestructurados. Una
herramienta conocida para esta construcción semiautomática es lex/yacc en C/Unix, y sus distintas
versiones para otros ambientes.
S −→ aSb
S −→ ε
donde S es el símbolo (no terminal) inicial, y {a, b} son los símbolos terminales. Las
cadenas que se pueden generar con esta GLC forman precisamente el conjunto
{anbn, n ≥ 0}, vimos que no era regular. De modo que este mecanismo permite
expresar lenguajes no regulares.
Ejemplo 1
Determinar una gramática equivalente a la que sigue, pero que la misma se encuentre en Forma Normal de
Chomsky:
Cualesquiera que sean α y β. Al terminar con estos pasos se tendrá una gramática
equivalente con producciones que solo contienen en su lado derecho un solo
símbolo terminal (es decir que está en forma Normal de Chomsky), o una cadena de
dos o más símbolos no terminales, entonces ya está en la Forma Normal de
Chomsky.
los lenguajes independientes del contexto tienen su correspondencia