Está en la página 1de 13

UNIVERSIDAD NACIONAL DE TRUJILLO

FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS


ESCUELA DE INFORMÁTICA

“INVESTIGACIÓN SOBRE LA SIMPLIFICACIÓN DE

GRAMÁTICA”

• AUTORES:
LIÑER SAGÁSTEGUI JEAN PIERRE CAMILO
LOZANO URQUIZO JOSEPH NICOLAI
MORY CAMONES KEVIN YARED
RUIZ CHIMBOR EBERT ALEJANDRO
VERA ZARSOZA CARLOS RAUL

• DOCENTE:
QUISPE VARON CELESTINO MEDARDO

• EXPERIENCIA CURRICULAR:
LENGUAJES FORMALES Y AUTÓMATAS

TRUJILLO – PERU
2024

1
ÍNDICE
INTRODUCCIÓN ............................................................................................................ 3

I. MARCO TEÓRICO .................................................................................................. 3

i.i FORMA NORMAL DE CHOMSKY ................................................................... 3

i.ii TEOREMA ........................................................................................................ 4

i.iii PRUEBA ............................................................................................................ 4

i.iv PASOS PARA CONVERTIR UNA GRAMÁTICA A FNC ............................ 5

i.v IMPORTANCIA ................................................................................................ 5

i.vi BENEFICIOS .................................................................................................... 6

II. SIMPLIFICACIÓN DE GRAMÁTICAS ............................................................. 6

ii.i ELIMINACIÓN DE REGLAS NULAS ............................................................ 7

ii.ii ELIMINACIÓN DE REGLAS UNITARIAS ................................................... 8

ii.iii ELIMINACIÓN DE REGLAS INÚTILES ....................................................... 9

ii.iv FORMA NORMAL CHOMSKY .................................................................... 11

III. CONCLUSIONES ............................................................................................... 12

IV. REFERENCIAS .................................................................................................. 13

2
TRANSFORMANDO LA COMPLEJIDAD: EXPLORANDO
LA FORMA NORMAL DE CHOMSKY

INTRODUCCIÓN

La forma normal de Chomsky (FNC) es una forma canónica para expresar gramáticas

formales. Fue introducida por Noam Chomsky en 1957 y ha jugado un papel fundamental

en el desarrollo de la lingüística teórica, la informática y el procesamiento del lenguaje

natural; es un concepto esencial en el estudio de las gramáticas libres de contexto,

cruciales tanto en la teoría de la computación como en la lingüística computacional. Esta

forma normal simplifica las reglas gramaticales, lo que facilita su análisis y manipulación.

Al convertir una gramática en la Forma Normal de Chomsky, se asegura que pueda

generar cualquier tipo de lenguaje libre de contexto. Este proceso implica una serie de

pasos específicos, como la introducción de una nueva variable inicial y la eliminación de

reglas nulas y unitarias. En esencia, la Forma Normal de Chomsky representa una

herramienta poderosa que permite una manipulación más eficiente de las gramáticas

libres de contexto, lo que resulta fundamental tanto en la teoría de la computación como

en la lingüística computacional.

I. MARCO TEÓRICO

i.i FORMA NORMAL DE CHOMSKY

Cuando se trabaja con una gramática libres de contexto, es común tenerla

en forma simplificada. La forma normal Chomsky es uno de los más sencillos y

útiles. Una gramática libre de contexto está en forma normal Chomsky si cada

regla es de la forma:

A → BC

A→a

3
Donde a es un terminal y A, B y C son variables, a menos que B y c no

sean las variables de inicio. Además, es permitido S -> ε, donde S es una variable

inicial.

i.ii TEOREMA

Una gramática libre de contexto en forma normal Chomsky crea cualquier

lenguaje libre de contexto

i.iii PRUEBA

1. La variable de inicio nueva 𝑺𝟎 y la regla 𝑺𝟎 → S se agregan primero, donde la

variable de inicio original era S. Esta modificación garantiza que la variable de

inicio no ocurra en la parte derecha de una regla.

2. Nos ocupamos de todas las reglas λ. Cuando A no es la variable de inicio,

eliminamos una regla A → λ. Después, para cada aparición de una letra A en la

parte derecha de una regla, agregamos una nueva regla con esa aparición

eliminada. En otras palabras, si hay una regla R → uAv en la que, u y v son

strings de variables y terminales, agregamos la regla R → uAv. Hacemos esto

para cada aparición de un A, por lo que la regla R → uAvAw nos obliga a agregar

R → uvAw, R → uAvw y R → uvw.

3. Tercero, Gestionamos todas las reglas de la unidad. Retiramos una regla de unión

de A a B. Después, cuando aparece una regla B → u, agregamos la regla A →

u, a menos que esta fuera una regla de unidad previamente eliminada. Como

antes, u es una cadena de variables y terminales. Repetimos estos pasos hasta

eliminar todas las reglas unitarias. Finalmente, convertimos todas las reglas

restantes en la forma adecuada. Cambiamos cada regla A por u1u2 ··· uk, donde

k ≥ 3 y cada ui es una variable o símbolo terminal, con las reglas A por u1A1,

A1 por u2A2, A2 por u3A3,... y Ak−2 por uk−1uk.Las variables Ai son nuevas.

4
Cambiamos cualquier terminal ui en la regla anterior con la variable Ui nueva y

agregamos la regla Ui → ui.

i.iv PASOS PARA CONVERTIR UNA GRAMÁTICA A FNC

a. Eliminar reglas de producción inútiles: Una regla de producción A → α es

inútil si no se puede generar ninguna cadena terminal a partir de S usando esa

regla.

b. Eliminar el símbolo inicial a la derecha: Si el símbolo inicial S aparece solo

en el lado derecho de las reglas de producción, se eliminan esas reglas y se

agrega una nueva regla S → λ.

c. Eliminar reglas de producción con ε: Si un símbolo no terminal A puede

generar la cadena vacía (ε), se eliminan todas las reglas de producción de la

forma A → α.

d. Transformar reglas de producción largas: Se reescriben las reglas de

producción que generan cadenas largas de símbolos no terminales en reglas

más cortas.

i.v IMPORTANCIA

➢ Facilidad de análisis: Las gramáticas en FNC son más fáciles de analizar

por analizadores sintácticos.

➢ Equivalencia: Cualquier lenguaje formal libre de contexto puede ser

generado por una gramática en FNC.

➢ Normalización: La FNC proporciona una forma estándar para representar

gramáticas formales, lo que facilita la comparación y el intercambio de

gramáticas.

➢ Fundamentos teóricos: La FNC juega un papel central en la teoría formal

de la sintaxis.

5
i.vi BENEFICIOS

➢ Claridad: La FNC hace que las gramáticas formales sean más claras y

fáciles de entender.

➢ Precisión: La FNC ayuda a garantizar que las gramáticas formales sean

precisas y consistentes.

➢ Eficiencia: La FNC puede hacer que el análisis sintáctico sea más

eficiente.

➢ Aplicaciones prácticas: La FNC se utiliza en una variedad de aplicaciones

prácticas, como el procesamiento del lenguaje natural, la traducción

automática y el diseño de lenguajes de programación.

II. SIMPLIFICACIÓN DE GRAMÁTICAS

Sea G una gramática libre de contexto y conviértalo a la forma normal de

Chomsky utilizando el procedimiento de conversión que se acaba de dar. La serie

de gramática presentada muestra los pasos de la conversión.

Las reglas que se muestran en negrita han sido agregadas recientemente

y las reglas que se muestran en rojo se han eliminado recientemente. G se

muestra en la izquierda. El resultado de aplicar el primer paso para crear una

variable de inicio nueva aparece en la parte derecha.

1. G se muestra en la izquierda. El resultado de aplicar el primer paso para crear

una variable de inicio nueva aparece en la parte derecha.

S → ASA | aB So → S

A→B|S S → ASA | aB

B→b|λ A→B|S
B→b|λ

6
ii.i ELIMINACIÓN DE REGLAS NULAS

Algoritmo 01: Variables Nulas (G)

Entrada. GLC G

Salida. Conjunto A de variables anulables.

Inicio

A←∅

Repetir

N ← {Y ∉ A | Y → Z ∈ R y Z ∈ A*}

A←A∪N

Hasta_que (N = ∅)

Retornar A

Fin.

Algoritmo 01: Variables Nulas (G) – Continuación

Entrada. GLC G
Salida. GLC G1, donde L(G) = L(G1) y sin reglas nulas.
Inicio
A ← Variables Nulas (G)
R1 ← ∅
Para cada variable X → q ∈ R Hacer
Para cada forma escribir w = X1Y2 … YnXn+1 Hacer
R1 ← R1 ∪ {X → X1X2 … Xn+1}
Fin_Para
Fin_Para
Retornar G1 = (V, Σ, R1 – {X → λ | X ≠ S}. S)
Fin

7
2. Eliminamos las reglas nulas (B → λ) mostradas a la izquierda, y A → λ,

mostradas a la derecha.

So → S So → S
S → ASA | aB | a S → ASA | aB | a | SA | AS | S
A→B|S|λ A→B|S|λ
B→b|λ B→b

ii.ii ELIMINACIÓN DE REGLAS UNITARIAS

Algoritmo 02: Reglas Unitarias

Entrada. GLC G

Salida. GLC G1, donde L(G) = L(G1) y sin reglas unitarias.

Inicio

R1 ← ∅

Para cada variable X ∈ V Hacer

R1 ← R1 ∪ {X → w | ∃Y ∈ Enc (X) y Y → w ∈ R y w ∉ V}

Fin_Para

Retornar G1

Fin

1. Eliminamos las reglas unitarias S → S, que se muestran en la derecha, y 𝑆0 → S,

que se muestran en la izquierda.

So → S So → S | ASA | aB | a | SA | AS | S
S → ASA | aB | a | SA | AS | S S → ASA | aB | a | SA | AS | S
A→B|S A→B|S
B→b B→b

8
2. Eliminamos las reglas unitarias A → B y A → S

So → ASA | aB | a | SA | AS So → ASA | aB | a | SA | AS
S → ASA | aB | a | SA | AS S → ASA | aB | a | SA | AS
A→B|S|b A → S | b | ASA | aB | a | SA | AS
B→b B→b

ii.iii ELIMINACIÓN DE REGLAS INÚTILES

Algoritmo 03: Símbolos Generadores

Entrada. GLC G

Salida. GLC G2, donde L(G) = L(G2)

Inicio

U1 ← ∅

Repetir

N ← {Y ∉ U1 | Y → Z ∈ R y Z ∈ (U1 ∪ Σ) *}

U 1 ← U1 ∪ N

Hasta_que (N = ∅)

Retirar de la gramática reglas con X ∈ V y X ∉ U1

Fin.

Algoritmo 04: Variables Alcanzables

Entrada. GLC G2

Salida. GLC G1, donde L(G2) = L(G1) = L(G), sin símbolos inútiles

Inicio

U2 ← {S}

N ← {S}

Repetir

N ← {Y ∉ U2 | X → aYβ para algún X ∈ U2}

U 2 ← U2 ∪ N

Hasta_que (N = ∅)

Retirar de la gramática reglas con X ∈ V y X ∉ U2

Fin.

9
Sea G = ({S, A, B, C}, {a, b}, R, S)

R:

S → aS | A | C

A→a

B → aa

C → aCb

Algoritmo 03: Generadores (Variable Terminal sola)

U1 = ∅

1° iter: N = {A, B} U1 = {A, B}

2° iter: N = {S} U1 = {A, B, S}

3° iter: N = {∅} U1 = {A, B, S}

R2:

S → aS | A

A→a

B → aa

Algoritmo 04: Alcanzables (Variable No Terminal)

N = {S} U2 = {S}

1° iter: N = {A} U2 = {S, A}

2° iter: N = {∅} U2 = {S, A}

R1: Final

S → aS | A

A→a

10
ii.iv FORMA NORMAL CHOMSKY

Algoritmo 05: Forma Normal Chomsky

Entrada. GLC G

Salida. GLC G1, donde FNC, L(G) = L(G1)

Inicio

1. Si S ocurre al lado derecho de alguna regla de S.


V1 ← V ∪ {S1}
R1 ← R ∪ {S1 → S}
S1 es símbolo inicial.
Sino
V1 ← V
R1 ← R
S se convierte en el símbolo inicial
Fin_si

2. Eliminar Reglas Nulas


3. Eliminar Reglas Unitarias
4. Eliminar Símbolos Inútiles
5. Para cada conjunto de reglas P ⊂ R con w en el lado derecho y |w| ≥ 2
Para cada a ∈ Σ en w Hacer
Si existe una regla de Ta → a ∈ R1 Entonces
Sustituir a por Ta en las reglas de P
Sino
Ta es una variable que no pertenece a V1
V1 ← V1 ∪ {Ta}
R1 ← R1 ∪ {Ta → a}
Sustituir a por Ta en las reglas de P
Fin_Si
Para cada regla X → Y1Y2 … Yn ∈ P y n > 2
Sustituirlas por las reglas: X → Y1Z1, Z1 → Y2Z2, …, Zn-2 → Yn-1Yn
Fin_Para
Fin_Para
Fin_Para
6. Retornar G1

11
1. Convertir las reglas restantes en la forma adecuada agregando más variables y

reglas. La gramática final en la forma normal de Chomsky equivale a G.

(Actualmente, la secuencia indicada en el teorema genera múltiples variables 𝑈𝑖 y

reglas 𝑈𝑖 → a. Usamos una variable U y un arreglo U → a para simplificar la

gramática resultante.)

So → AA1 | UB | a | SA | AS
S → AA1 | UB | a | SA | AS
A → b | AA1 | UB | a | SA | AS
A1 → SA
U→a
B→b

III. CONCLUSIONES

PRIMERA. La jerarquía de Chomsky proporciona una clasificación de los

lenguajes formales según su complejidad, y la FNC es una forma normal que se

aplica a las gramáticas libres de contexto, ubicadas en el segundo nivel de esta

jerarquía. Esto sugiere que las gramáticas libres de contexto no siempre son

suficientes para modelar la complejidad de las lenguas naturales, como lo

demostró Chomsky en su trabajo de 1956.

SEGUNDA. Los pseudocódigos que describen los pasos para encontrar la FNC

pueden ser útiles en el desarrollo de herramientas y sistemas de procesamiento del

lenguaje natural. Estas técnicas son relevantes en diversos campos, como la

traducción automática, la generación de lenguaje natural y la comprensión de

texto, donde el análisis sintáctico preciso es fundamental.

12
IV. REFERENCIAS

Arno Formella. (2006). Forma Normal de Chomsky. Obtenido de Armo Formella:

https://formella.webs.uvigo.es/doc/talf05/talf/node42.html

Sipser, M. (2013), Introduction to the Theory of Computation (3ra ed.).

Cengage Learning.

Wikipedia. (11 de Julio de 2019). Forma normal de Chomsky. Obtenido de

Wikipedia: https://es.wikipedia.org/wiki/Forma_normal_de_Chomsky

13

También podría gustarte