Teoría de Autómatas y Lenguajes Formales...
Transcript of Teoría de Autómatas y Lenguajes Formales...
Teoría de Autómatas y Lenguajes Formales
Introducción a las Gramáticas. Gramáticas incontextuales
José M. Sempere
Departamento de Sistemas Informáticos y Computación
Universidad Politécnica de Valencia
Introducción a las gramáticas.Gramáticas incontextuales
1. Conceptos básicos sobre las gramáticas formales
2. Una clasificación gramatical de los lenguajes formales: La Jerarquía de
de Chomsky
3. Conceptos básicos de las gramáticas incontextuales
4. Simplificación de gramáticas incontextuales
5. Formas Normales en las gramáticas incontextuales
Bibliografía
• John Hopcroft, Jeffrey D. Ullman, Rajeev Motwani.
Introducción a la teoría de autómatas, lenguajes y computación
Addison Wesley, 2002.
• P. García, E. Segarra, T. Pérez, J.M. Sempere, J. Ruiz, M. Vázquez de Parga.
Apuntes sobre la Teoría de Autómatas y Lenguajes Formales. Editorial UPV.
Servicio de Publicaciones SPUPV-96.846. 1996.
Conceptos básicos sobre las gramáticas formales
Una gramática se define mediante la tupla G=(N,T,P,S) donde
N es un alfabeto de símbolos auxiliares (variables)
T es un alfabeto de símbolos terminales (constantes)
P es un conjunto finito de producciones
S N es un símbolo inicial o axioma
Se debe cumplir que N T =
Una producción es un par ( ) que lo escribiremos como → donde es el
antecedente o parte izquierda y es el consecuente o parte derecha. Se debe
cumplir que (N T)*N(N T)* y (N T)*. Cuando varias producciones
compartan el mismo antecedente las escribiremos de forma compacta como
→ 1 | 2 | … | n.
Nota: Las gramáticas las definiremos a partir de sus producciones. Tomaremos
el criterio de indicar los símbolos auxiliares mediante letras mayúsculas, los
símbolos terminales mediante letras minúsculas y dígitos y el axioma mediante
la letra S mientras no se indique lo contrario.
Conceptos básicos sobre las gramáticas formales
Relaciones de derivación
Dada una gramática G=(N,T,P,S) definiremos la relación de derivación directa entre
las cadenas formadas por símbolos auxiliares y terminales
G
321
321
P 22
sii con
*T)(N ,, 231
*T)N(N*T)(N 2
Dada una relación de derivación directa podemos calcular su clausura reflexiva y
transitiva para definir la relación de derivación de la siguiente forma
G
*sii se cumple una de las dos siguientes condiciones:
)1(
GG que tal Existe )2( *
Nota: En lo sucesivo eliminaremos el símbolo G de las relaciones de derivación
siempre que quede establecida la gramática de referencia.
Conceptos básicos sobre las gramáticas formales
Formas sentenciales, palabras y lenguajes
Dada una gramática G=(N,T,P,S) definiremos una forma sentencial de la
gramática como una cadena (N T)* tal queG
S *
Dada una gramática G=(N,T,P,S) definiremos una palabra o cadena de la
gramática como una cadena T* tal queG
S *
Dada una gramática G=(N,T,P,S) definiremos el lenguaje generado por G como
el conjunto de cadenas o palabras de G. Formalmente se expresa como sigue
}:{)( * xSTxGLG
*
Conceptos básicos sobre las gramáticas formales
Algunos ejemplos de gramáticas y sus lenguajes generados
Ejemplo 1G: S → 0A | 1B
A → 0A |
B → 1B |
L(G) = { 0n : n 1 } { 1n : n 1 } = 00* + 11*
S 0A 00A 000A 000
Ejemplo 2G: S → AB
A → aAa | a
B → bBb |
L(G) = { a2n+1b2m: n,m 0 }
S AB aAaB aaaB aaabBb aaabb
Ejemplo 3
G: S → ACaB aD → Da
Ca → aaC AD → AC
CB → DB aE → Ea
CB → E AE → S ACaB AaaCB AaaDB AaDaB
ADaaB ACaaB AaaCaB AaaaaCB
AaaaaE AaaaEa AaaEaa AaEaaa
AEaaaa aaaa
}0:{)( 2 iaGLi
Una clasificación gramatical de los lenguajes formalesLa Jeraquía de Chomsy
En la clasificación de Chomsky se establecen cuatro tipos de gramáticas de acuerdo
con las formas de sus producciones
Gramáticas de tipo 0 (no restringidas o con estructura de frase)
→
Gramáticas de tipo 1 (sensibles al contexto)
Gramáticas de tipo 2 (de contexto libre o incontextuales)
Gramáticas de tipo 3 (regulares)
Lineales por la izquierda Lineales por la derecha
G=(N,T,P,S)
(N T)*N(N T)* (N T)*
1 2 3 → 1 2 3
A → A N (N T)*
2 (N T)*N(N T)* 1, 3, 2 (N T)* | 2| | 2|
El único auxiliar que puede generar es el axioma siempre que no aparezca en la parte
derecha de ninguna producción
A → Ba | B | a |
A,B N a T
A → aB | B | a |
A,B N a T
Una clasificación gramatical de los lenguajes formalesLa Jeraquía de Chomsy
Cada clase de gramáticas define una clase de lenguajes. Tenemos cuatro clases
de lenguajes que se relacionan entre sí, formando una jerarquía.
RE - La clase de los lenguajes recursivamente enumerables : Lenguajes
generados por gramáticas de tipo 0.
CS - La clase de los lenguajes sensibles al contexto: Lenguajes generados por
gramáticas de tipo 1.
CF - La clase de los lenguajes de contexto libre : Lenguajes generados por
gramáticas de tipo 2.
REG - La clase de los lenguajes regulares : Lenguajes generados por gramáticas
de tipo 3 (lineales por la izquierda o por la derecha)
REG CF CS RE
La Jerarquía de Chomsky
Una clasificación gramatical de los lenguajes formalesLa Jeraquía de Chomsy
RE
CS
CF
REG
La Jerarquía de Chomsky
Lenguajes generados por gramáticas de tipo 0
Lenguajes aceptados por máquinas de Turing
{<M,w> : M acepta w}
Lenguajes generados por gramáticas de tipo 1
Lenguajes aceptados por autómatas de memoria
limitada linealmente
{anbncn: n > 0}
Lenguajes generados por gramáticas de tipo 2
Lenguajes aceptados por autómatas de pila
{anbn: n > 0}
Lenguajes generados por gramáticas de tipo 3
Lenguajes aceptados por autómatas finitos
{anbm: n,m > 0}
Gramática incontextual:
G=(N, , P, S) con las producciones de la forma
A A N, (N )*
S AB
A aAb |
B cBd |
S AB aAbB abB abcBd abcd
Derivaciones por la izquierda : En cada paso de derivación se sustituye el auxiliar de la forma
sentencial más a la izquierda
Gramáticas incontextualesConceptos básicos
Derivaciones por la derecha : En cada paso de derivación se sustituye el auxiliar de la forma
sentencial más a la derecha
Ejemplo
S AB AcBd Acd aAbcd abcd
S AB AcBd aAbcBd aAbcd abcd
Derivación por la izquierda
Derivación por la derecha
Derivación arbitraria
Árboles de derivación
G=(N, , P, S) con las producciones de la forma
A A N, (N )*
S AB
A aAb |
B cBd |
Un árbol de derivación es un árbol que cumple las siguientes condiciones:
1. La raíz está etiquetada con el símbolo del axioma
2. Los nodos internos están etiquetados por símbolos auxiliares
3. Las hojas están etiquetadas por símbolos terminales o la cadena vacía
4. Si una hoja está etiquetada por es el único descendiente de su nodo padre
5. Un nodo etiquetado por A tiene hijos etiquetados por B1, B2, …, Bn sólo si
la producción A → B1B2 …Bn pertenece a la gramática
Gramáticas incontextualesConceptos básicos
Ejemplo
Un A-árbol es un árbol de derivación cuya raíz está etiquetada por el símbolo A
S
BA
Aa b c dB
Árboles de derivación
G=(N, , P, S) con las producciones de la forma
A A N, (N )*
S AB
A aAb |
B cBd |
Todo árbol de derivación define una derivación por la izquierda y una derivación por la derecha.
(las derivaciones por la izquierda (derecha) siguen un recorrido en profundidad del árbol por la
izquierda (derecha))
Gramáticas incontextualesConceptos básicos
EjemploS
BA
Aa b c dB
Denominaremos frontera o resultado del árbol a la cadena formada por los símbolos que etiquetan
las hojas haciendo un recorrido en profundidad por la izquierda
S AB aAbB abB abcBd abcd
S AB AcBd Acd aAbcd abcd
resultado: abcd
Ambigüedad
G=(N, , P, S) con las producciones de la forma
A A N, (N )*
S AB | ABA
A aAb | AA |
B cBd |
Una gramática es ambigua si existen al menos dos árboles de derivación distintos cuyos
resultados son el mismo (para la cadena resultado existen al menos dos derivaciones
distintas por la izquierda)
Gramáticas incontextualesConceptos básicos
Ejemplo
S
BA
Aa b c dB
S
BA
Aa b c dB
A
A A
x = abcd
Ambigüedad
G=(N, , P, S) con las producciones de la forma
A A N, (N )*
Un lenguaje es inherentemente ambiguo si todas las gramáticas que lo generan son
ambiguas
Gramáticas incontextualesConceptos básicos
Teorema: Existen lenguajes incontextuales inherentemente ambiguos.
Ejemplo: L = { anbncmdm : n,m > 0 } {anbmcmdn : n,m > 0}
Equivalencia
Dos gramáticas G1 y G2 son equivalentes si generan el mismo lenguaje, L(G1)=L(G2)
Dos gramáticas G1 y G2 son casi-equivalentes si generan el mismo lenguaje, con
excepción de la cadena vacía L(G1)=L(G2) – { }
Simplificación de gramáticas incontextuales
Una gramática incontextual G=(N, , P, S) diremos que está simplificada si
(1) Todos sus símbolos son útiles
(1.1) Generativos A N :
(1.2) Alcanzables A ( N):
(2) No contiene producciones unitarias
(3) No contiene producciones vacías
Para toda gramática incontextual G1 existe una gramática incontextual
G2 simplificada tal que L(G2) = L(G1) – { }
* wwAG
*
*)(, NASG
*
NBABA ,
NAA
Formas Normales en las gramáticas incontextuales
Una gramática incontextual G=(N, , P, S) diremos que está en Forma Normal de Chomsky
si todas sus producciones toman una de las dos siguientes formas
(1) A BC A, B, C N
(2) A a a
Para toda gramática incontextual G1 existe una gramática incontextual
G2 en Forma Normal de Chomsky tal que L(G2) = L(G1) – { }
Una gramática incontextual G=(N, , P, S) diremos que está en Forma Normal de Greibach
si todas sus producciones son de la forma
A a a N*
Para toda gramática incontextual G1 existe una gramática incontextual
G2 en Forma Normal de Greibach tal que L(G2) = L(G1) – { }