Jerarquía de Chomsky

Apariencia mover a la barra lateral ocultar Noam Chomsky.

En lingüística la jerarquía de Chomsky (ocasionalmente también llamada la jerarquía de Chomsky–Schützenberger) es una clasificación jerárquica de distintos tipos de gramáticas formales que generan lenguajes formales. Esta jerarquía fue descrita por Noam Chomsky en 1956.

La jerarquía

La Jerarquía de Chomsky consta de cuatro niveles:

Nótese que el conjunto de gramáticas correspondiente a los lenguajes recursivos no es un miembro de la jerarquía.

Cada lenguaje regular es a su vez libre del contexto, asimismo un lenguaje libre del contexto es también dependiente del contexto, este es recursivo y a su vez, recursivamente enumerable. Las inclusiones son, sin embargo, propias, es decir, existen en cada nivel lenguajes que no están en niveles anteriores.

Tipo Lenguaje Autómata Normas de producción de gramáticas Ejemplos
0 recursivamente enumerable (LRE) Máquina de Turing α A β → δ {\displaystyle \alpha A\beta \rightarrow \delta } L = { w | w {\displaystyle L=\{w|w} describe una máquina de Turing } {\displaystyle \}}
1 dependiente del contexto (LSC) Autómata linealmente acotado α A β → α γ β {\displaystyle \alpha A\beta \rightarrow \alpha \gamma \beta } L = { a n b n c n | n > 0 } {\displaystyle L=\{a^{n}b^{n}c^{n}|n>0\}}
2 independiente del contexto (LLC) Autómata con pila A → γ {\displaystyle A\rightarrow \gamma } L = { a n b n | n > 0 } {\displaystyle L=\{a^{n}b^{n}|n>0\}}
3 regular (LR) Autómata finito A → a {\displaystyle A\rightarrow {\text{a}}} γ {\displaystyle \gamma }

A → a B {\displaystyle A\rightarrow {\text{a}}B}

L = { a n | n ≥ 0 } {\displaystyle L=\{a^{n}|n\geq 0\}}
Significado de los símbolos:
  • a {\displaystyle {\text{a}}} = terminal
  • A {\displaystyle A} , B {\displaystyle B} = no terminal
  • α {\displaystyle \alpha } , β {\displaystyle \beta } , γ {\displaystyle \gamma } = cadena de terminales y/o no terminales
  • α {\displaystyle \alpha } , β {\displaystyle \beta } , δ {\displaystyle \delta } = cadena posiblemente vacía
  • γ {\displaystyle \gamma } = cadena no vacía


Lenguajes Recursivamente Enumerables (de tipo 0)

Las gramáticas que generan estos lenguajes pueden tener reglas compresoras.

Las reglas de producción son de la siguiente forma:


P = { ( u → v ) | u = x A y ; u ∈ Σ + ; v , x , y ∈ Σ ∗ ; A ∈ N } {\displaystyle \mathrm {P} =\{(u\rightarrow v)|u=xAy;u\in \Sigma ^{+};v,x,y\in \Sigma ^{*};A\in N\}}

Lenguajes Dependientes del Contexto (sensibles al contexto, de tipo 1)

No existen reglas compresoras en toda la teoría, salvo, opcionalmente, la que deriva el axioma a la palabra vacía.

Existen reglas en las que un símbolo no terminal puede derivar a formas sentenciales distintas, según los símbolos que aparezcan a su alrededor.

Las reglas de producción son de la siguiente forma:


P = { ( S → λ ) o ( x A y → x v y ) | v ∈ Σ + ; x , y ∈ Σ ∗ ; A ∈ N } {\displaystyle \mathrm {P} =\{(S\rightarrow \lambda )o(xAy\rightarrow xvy)|v\in \Sigma ^{+};x,y\in \Sigma ^{*};A\in N\}}

Lenguajes Independientes del Contexto (Libres de contexto, De tipo 2)

La mayoría de los lenguajes de programación entran en esta categoría en cuanto su forma sintáctica, aunque en realidad los lenguajes de programación son dependientes del contexto, se reconocen a través de lenguajes de tipo 2 porque su reconocimiento es de O(n) mientras que los de tipo 1 tienen un orden de reconocimiento O(n^3) en el peor caso. Por este motivo se ejecuta un análisis semántico para reconocer si el programa es correcto.

Las reglas de producción son de la siguiente manera:


P = { ( S → λ ) o ( A → v ) | v ∈ Σ + ; A ∈ N } {\displaystyle \mathrm {P} =\{(S\rightarrow \lambda )o(A\rightarrow v)|v\in \Sigma ^{+};A\in N\}}

Lenguajes Regulares (de tipo 3)

Son los lenguajes más simples dentro la Jerarquía de Chomsky. Se suelen expresar mediante expresiones regulares.

Existen 2 tipos: lineales por la derecha y lineales por la izquierda. Las reglas de producción son de la siguiente forma:

Lineales por la derecha:

P = { ( S → λ ) o ( A → a B ) o ( A → a ) | a ∈ T ; A , B ∈ N } {\displaystyle \mathrm {P} =\{(S\rightarrow \lambda )o(A\rightarrow aB)o(A\rightarrow a)|a\in T;A,B\in N\}}

Lineales por la izquierda:

P = { ( S → λ ) o ( A → B a ) o ( A → a ) | a ∈ T ; A , B ∈ N } {\displaystyle \mathrm {P} =\{(S\rightarrow \lambda )o(A\rightarrow Ba)o(A\rightarrow a)|a\in T;A,B\in N\}}

Véase también

Referencias

General