Lenguaje libre de contexto

Summary

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.

Contexto

editar

Gramática libre de contexto

editar

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

editar

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

editar

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

editar

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

Propiedades

editar

Análisis sintáctico libre de contexto

editar

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

editar

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

editar

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

editar

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

editar

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

editar
  1. Significado de los argumentos y resultados de  :  
  2. En el artículo de Valiant, O(n2.81) fue el mejor límite superior conocido entonces. Véase Multiplicación de matrices#Complejidad computacional para mejoras en los límites desde entonces.
  3. Una gramática libre de contexto para el lenguaje «A» se da por las siguientes reglas de producción, tomando «S» como símbolo inicial: «S» → «Sc» | «aTb» | «ε»; «T» → «aTb» | «ε». La gramática para «B» es análoga.

Referencias

editar
  1. Hopcroft y Ullman, 1979, Teorema 4.7.
  2. Valiant, Leslie G. (abril de 1975). «General context-free recognition in less than cubic time» [Reconocimiento libre de contexto general en menos de tiempo cúbico]. Journal of Computer and System Sciences 10 (2): 308-315. doi:10.1016/s0022-0000(75)80046-8. Consultado el 22 de septiembre de 2025. 
  3. Lee, Lillian (enero de 2002). «Fast Context-Free Grammar Parsing Requires Fast Boolean Matrix Multiplication» [El análisis rápido de gramáticas libres de contexto requiere una multiplicación rápida de matrices booleanas]. J ACM 49 (1): 1-15. S2CID 1243491. arXiv:cs/0112018. Archivado desde el original el 27 de abril de 2003. Consultado el 22 de septiembre de 2025. 
  4. Knuth, D. E. (julio de 1965). «On the translation of languages from left to right» [Sobre la traducción de lenguajes de izquierda a derecha]. Information and Control 8 (6): 607-639. doi:10.1016/S0019-9958(65)90426-2. 
  5. a b c Hopcroft y Ullman, 1979, Corolario del Teorema 6.1.
  6. Hopcroft y Ullman, 1979, Ejercicio 6.4d.
  7. Hopcroft y Ullman, 1979, Corolario del Teorema 6.2.
  8. Hopcroft y Ullman, 1979, Teorema 6.3.
  9. Hopcroft y Ullman, 1979, Ejercicio 6.4c.
  10. Hopcroft y Ullman, 1979, Ejercicio 6.4b.
  11. Hopcroft y Ullman, 1979, Ejercicio 6.4a.
  12. Stephen Scheinberg (1960). «Note on the Boolean Properties of Context Free Languages» [Nota sobre las propiedades booleanas de los lenguajes libres de contexto]. Information and Control (en inglés) 3 (4): 372–375. doi:10.1016/s0019-9958(60)90965-7. Archivado desde el original el 26 de noviembre de 2018. Consultado el 22 de septiembre de 2025. 
  13. Beigel, Richard; Gasarch, William. «A Proof that if L = L1 ∩ L2 where L1 is CFL and L2 is Regular then L is Context Free Which Does Not use PDA's» [Una prueba de que si L = L1 ∩ L2 donde L1 es LLC y L2 es regular, entonces L es libre de contexto sin usar PDA]. University of Maryland Department of Computer Science (en inglés). Archivado desde el original el 12 de diciembre de 2014. Consultado el 22 de septiembre de 2025. 
  14. Hopcroft y Ullman, 1979, Teorema 8.12(1).
  15. Hopcroft y Ullman, 1979, Teorema 8.10.
  16. Salomaa, 1973, Teorema 6.7.
  17. Hopcroft y Ullman, 1979, Teorema 6.5.
  18. Hopcroft y Ullman, 1979, Teorema 8.12(2).
  19. Hopcroft y Ullman, 1979, Teorema 8.12(4).
  20. Hopcroft y Ullman, 1979, Teorema 8.11.
  21. Hopcroft y Ullman, 1979, Teorema 8.15.
  22. Hopcroft y Ullman, 1979, Teorema 8.16.
  23. Hopcroft y Ullman, 1979, Teorema 6.6(a).
  24. Hopcroft y Ullman, 1979, Teorema 6.6(b).
  25. John E. Hopcroft; Rajeev Motwani; Jeffrey D. Ullman (2003). Introduction to Automata Theory, Languages, and Computation [Introducción a la teoría de autómatas, lenguajes y computación]. Addison Wesley.  Aquí: Sección 7.6, p.304, y Sección 9.7, p.411
  26. a b Yehoshua Bar-Hillel; Micha Asher Perles; Eli Shamir (1961). «On Formal Properties of Simple Phrase-Structure Grammars» [Sobre las propiedades formales de gramáticas de estructura de frases simples]. Zeitschrift für Phonetik, Sprachwissenschaft und Kommunikationsforschung 14 (2): 143-172. 
  27. Hopcroft y Ullman, 1979.
  28. «How to prove that a language is not context-free?» [¿Cómo probar que un lenguaje no es libre de contexto?]. Consultado el 22 de septiembre de 2025. 

Obras citadas

editar
  • Hopcroft, John; Ullman, Jeffrey (1979). Introduction to Automata Theory, Languages, and Computation (en inglés). Addison-Wesley. ISBN 0-201-02988-X. 
  • Salomaa, Arto (1973). Formal Languages [Lenguajes formales]. ACM Monograph Series. 

Lecturas adicionales

editar
  • Autebert, Jean-Michel; Berstel, Jean; Boasson, Luc (1997). «Context-Free Languages and Push-Down Automata». En G. Rozenberg; A. Salomaa, eds. Handbook of Formal Languages [Lenguajes libres de contexto y autómatas de pila] 1. Springer-Verlag. pp. 111-174. Archivado desde el original el 16 de mayo de 2011. Consultado el 22 de septiembre de 2025. 
  • Ginsburg, Seymour (1966). The Mathematical Theory of Context-Free Languages [La teoría matemática de los lenguajes libres de contexto]. New York, NY, USA: McGraw-Hill. 
  • Sipser, Michael (1997). «2: Context-Free Languages». Introduction to the Theory of Computation (en inglés) (PWS Publishing): 91-122. ISBN 978-0-534-94728-6. 
  •   Datos: Q729271