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.