Lenguaje libre de contexto

From Wikipedia, the free encyclopedia

En la teoría de lenguajes formales, un lenguaje libre de contexto (LLC), también llamado lenguaje de tipo 2 de Chomsky, es un lenguaje generado por una gramática libre de contexto (GLC).

Los lenguajes libres de contexto tienen numerosas aplicaciones en lenguajes de programación, en particular, la mayoría de las expresiones aritméticas son generadas por gramáticas libres de contexto.

Gramática libre de contexto

Diferentes gramáticas libres de contexto pueden generar el mismo lenguaje libre de contexto. Las propiedades intrínsecas del lenguaje pueden distinguirse de las propiedades extrínsecas de una gramática particular al comparar múltiples gramáticas que describen el lenguaje.

Autómatas

El conjunto de todos los lenguajes libres de contexto es idéntico al conjunto de lenguajes aceptados por autómata con pila, lo que hace que estos lenguajes sean susceptibles de análisis sintáctico. Además, para una GLC dada, existe una manera directa de producir un autómata de pila para la gramática (y, por ende, el lenguaje correspondiente), aunque el proceso inverso (producir una gramática dado un autómata) no es tan directo.

Ejemplos

Un ejemplo de lenguaje libre de contexto es , el lenguaje de todas las cadenas no vacías de longitud par, cuya primera mitad está formada por a y la segunda mitad por b. L es generado por la gramática . Este lenguaje no es regular.

Es aceptado por el autómata con pila donde se define como sigue:[Nota 1]

Los LLC no ambiguos son un subconjunto propio de todos los LLC: existen LLC inherentemente ambiguos. Un ejemplo de un LLC inherentemente ambiguo es la unión de con . Este conjunto es libre de contexto, ya que la unión de dos lenguajes libres de contexto siempre es libre de contexto. Pero no hay forma de analizar sin ambigüedad las cadenas en el subconjunto (no libre de contexto) , que es la intersección de estos dos lenguajes.[1]

Lenguaje de Dyck

El lenguaje de todos los paréntesis correctamente emparejados es generado por la gramática .

Propiedades

Análisis sintáctico libre de contexto

La naturaleza libre de contexto del lenguaje facilita su análisis con un autómata de pila.

Determinar una instancia del problema de pertenencia; es decir, dada una cadena , determinar si , donde es el lenguaje generado por una gramática dada ; también se conoce como «reconocimiento». El reconocimiento libre de contexto para gramáticas en forma normal de Chomsky fue demostrado por Leslie G. Valiant como reducible a la multiplicación de matrices booleanas, heredando así su límite superior de complejidad de O(n2.3728596).[2][Nota 2]

Por el contrario, Lillian Lee ha demostrado que la multiplicación de matrices booleanas O(n3−ε) es reducible a un análisis sintáctico de GLC O(n3−3ε), estableciendo así un límite inferior para este último.[3]

El uso práctico de los lenguajes libres de contexto también requiere producir un árbol de derivación que muestre la estructura que la gramática asocia con la cadena dada. El proceso de producir este árbol se llama «análisis sintáctico». Los analizadores conocidos tienen una complejidad temporal cúbica en el tamaño de la cadena que se analiza.

Formalmente, el conjunto de todos los lenguajes libres de contexto es idéntico al conjunto de lenguajes aceptados por autómatas de pila (PDA). Los algoritmos de análisis para lenguajes libres de contexto incluyen el algoritmo CYK y el algoritmo de Earley.

Una subclase especial de lenguajes libres de contexto son los lenguajes libres de contexto deterministas, que se definen como el conjunto de lenguajes aceptados por un autómata de pila determinista y pueden ser analizados por un analizador LR(k).[4]

Véase también gramática de expresiones de análisis como un enfoque alternativo para gramáticas y analizadores.

Propiedades de cierre

La clase de lenguajes libres de contexto es cerrada bajo las siguientes operaciones. Es decir, si «L» y «P» son lenguajes libres de contexto, los siguientes lenguajes también son libres de contexto:

  • la unión de «L» y «P»[5]
  • la inversión de «L»[6]
  • la concatenación de «L» y «P»[5]
  • la estrella de Kleene de «L»[5]
  • la imagen de «L» bajo un homomorfismo [7]
  • la imagen de «L» bajo un homomorfismo inverso [8]
  • el desplazamiento circular de «L» (el lenguaje )[9]
  • la cerradura de prefijos de «L» (el conjunto de todos los prefijos de cadenas de «L»)[10]
  • el cociente «L»/«R» de «L» por un lenguaje regular «R»[11]

No cerradura bajo intersección, complemento y diferencia

Los lenguajes libres de contexto no son cerrados bajo intersección. Esto se puede ver al tomar los lenguajes y , ambos libres de contexto.[Nota 3] Su intersección es , que se puede demostrar que no es libre de contexto mediante el lema de bombeo para lenguajes libres de contexto. Como consecuencia, los lenguajes libres de contexto no son cerrados bajo complementación, ya que para cualesquiera lenguajes «A» y «B», su intersección puede expresarse mediante unión y complemento: . En particular, los lenguajes libres de contexto no son cerrados bajo diferencia, ya que el complemento puede expresarse mediante diferencia: .[12]

Sin embargo, si «L» es un lenguaje libre de contexto y «D» es un lenguaje regular, entonces tanto su intersección como su diferencia son lenguajes libres de contexto.[13]

Decidibilidad

En la teoría de lenguajes formales, las preguntas sobre lenguajes regulares suelen ser decidibles, pero las de lenguajes libres de contexto a menudo no lo son. Es decidible si un lenguaje de este tipo es finito, pero no si contiene todas las cadenas posibles, si es regular, si es no ambiguo, o si es equivalente a un lenguaje con una gramática diferente.

Los siguientes problemas son indecidibles para gramáticas libres de contexto arbitrariamente dadas A y B:

  • Equivalencia: ¿es ?[14]
  • Disyunción: ¿es ?[15] Sin embargo, la intersección de un lenguaje libre de contexto y un lenguaje «regular» es libre de contexto,[16][17] por lo que la variante del problema donde «B» es una gramática regular es decidible (véase «Vaciedad» más abajo).
  • Contención: ¿es ?[18] Nuevamente, la variante del problema donde «B» es una gramática regular es decidible,[aclaración requerida] mientras que aquella donde «A» es regular generalmente no lo es.[19]
  • Universalidad: ¿es ?[20]
  • Regularidad: ¿es un lenguaje regular?[21]
  • Ambigüedad: ¿es toda gramática para ambigua?[22]

Los siguientes problemas son «decidibles» para lenguajes libres de contexto arbitrarios:

  • Vaciedad: Dada una gramática libre de contexto «A», ¿es ?[23]
  • Finidad: Dada una gramática libre de contexto «A», ¿es finito?[24]
  • Pertenencia: Dada una gramática libre de contexto «G» y una palabra , ¿es ? Los algoritmos eficientes en tiempo polinómico para el problema de pertenencia son el algoritmo CYK y el algoritmo de Earley.

Según Hopcroft, Motwani, Ullman (2003),[25] muchas de las propiedades fundamentales de cierre y (in)decidibilidad de los lenguajes libres de contexto fueron demostradas en el artículo de 1961 de Bar-Hillel, Perles y Shamir.[26]

Lenguajes que no son libres de contexto

El conjunto es un lenguaje sensible al contexto, pero no existe una gramática libre de contexto que genere este lenguaje.[27] Por lo tanto, existen lenguajes sensibles al contexto que no son libres de contexto. Para probar que un lenguaje dado no es libre de contexto, se puede emplear el lema del bombeo para lenguajes libres de contexto[26] o varios otros métodos, como el lema de Ogden o el teorema de Parikh.[28]

Notas

Referencias

Lecturas adicionales

Related Articles

Wikiwand AI