TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Práctica 6

Anuncio
TEORÍA DE AUTÓMATAS Y LENGUAJES
FORMALES
Práctica 6 - Forma Normal de Chomsky
1. Introducción
2. Forma Normal de Chomsky
3. Actividades propuestas
1. Introducción.
Como ya conocemos, existen gramáticas de muy diferentes formas que generan un
mismo lenguaje. El hecho de no restringir la forma de las reglas de tipo 2 tiene interés en
los casos en que se desea diseñar una gramática para un lenguaje dado. Sin embargo,
cuando se desea desarrollar demostraciones de ciertas propiedades de los lenguajes
incontextuales o se desea desarrollar algoritmos eficientes que operen sobre gramáticas
incontextuales, interesa imponer ciertas restriciones en las formas de las reglas de la
gramática. Para ello se introducen las definiciones y los algoritmos de obtención de las
formas normales para las gramáticas incontextuales. En concreto, vamos a estudiar la
conocida como Forma Normal de Chomsky (FNC).
El objetivo principal de esta práctica es el estudio e implementación de los algoritmos
que permiten obtener una gramática incontextual en FNC a partir de una gramática
incontextual sin λ-reglas ni reglas simples
2. Forma Normal de Chomsky.
Definición de la Forma Normal de Chomsky
Diremos que una gramática incontextual G=(N,T,P,S) que no genera la cadena
vacía, está en FNC cuando todas sus reglas son de la forma:
{
{
A → BC con A,B,C ∈ N
A → a, con A,B ∈ N y a ∈T
Teorema. Todo lenguaje incontextual L que no incluye la cadena vacía, es generado
por una gramática en FNC.
Algoritmo para la obtención de gramáticas en FNC
Entrada: G=(N,T,P,S) (sin producciones unitarias ni vacías)
Salida: G=(N'',T,P'',S)
Método:
PASO 1
N'=N; P'=∅;
Para toda regla (A → α ) de P hacer
Si |α|=1
entonces añadir la regla a P' (*ya esta en FNC*)
Sino sea α=X1X2...Xm con m > 1
Para i=1 hasta m hacer
Si Xi=a ∈Σ
Entonces se añade a N' un nuevo no
terminal Ca y se añade a P' una nueva
regla (Ca → a)
finsi
finpara
Se añade a P' una regla (A → X'1X'2...X'm)
con:
X'i=Xi si Xi ∈ N
X'i=Ca si Xi = a ∈Σ
finSi
finPara
NOTA: al finalizar el PASO 1 todas las reglas de la
gramática resultante G'=(N',T,P',S) presentarán la forma:
A→a
A → B1B2...Bm
con A ∈ N', Bi ∈ N' 1<= i<= m, a ∈Σ.
Diremos que esta gramática G' está en Forma Normal de
Chomsky intermedia.
PASO 2
(*Se toma como entrada la gramática G' resultante del
PASO 1*)
N''=N'; P''=∅;
Para toda regla (A → α ) de P' hacer
Si |α| < 3
Entonces añadir la regla a P'' (*ya esta en FNC*)
Sino sea α = B1B2 ...Bm con m > 2
Añadir a N' los no terminales { D1, D2, ..., Dm2};
Añadir a P'' el siguiente conjunto de reglas:
A → B1D1
D1 → B2D2
...
Dm-3 → Bm-2Dm-2
Dm-2 → Bm-1Dm;
finSi
finPara
La gramática resultado es G''=(N'',T,P'',S).
fin_del_Método
Ejemplo
Sea la gramática incontextual G definida por las siguientes reglas:
S → bA | aB
A → bAA | aS | a
B → aBB | bS | b
Tras la aplicación del PASO 1 se obtiene la gramática en FNC intermedia G':
S → CbA | CaB
A → CbAA | CaS | a
B → CaBB | CbS | b
Ca → a
Cb → b
A partir de G', tras el PASO 2 se obtiene la gramática en FNC G'':
S → CbA | CaB
A → CbD1 | CaS | a
D1 → AA
B → CaD2 | CbS | b
D2 → BB
Ca → a
Cb → b
3. Actividades propuestas.
Actividad 1
Desarrollar un módulo Mathematica que a partir de un gramática incontextual de entrada
sin λ-reglas ni reglas simples, obtenga una gramática de salida en FNC intermedia
(resultado del PASO 1 del algoritmo propuesto).
Actividad 2
Desarrollar un módulo Mathematica que a partir de una gramática en FNC intermedia de
entrada obtenga como salida una gramática en FNC.
Actividad 3
Aplicar los anteriores módulos para obtener la gramática en FNC correspondiente a la
gramática del ejemplo.
Descargar