2010-08-18 16 views

Respuesta

1

Necesita una gramática para el idioma para determinar si es libre de contexto. Una gramática está libre de contexto si todas sus producciones tienen forma "(no terminal) -> secuencia de terminales y no terminales".

+0

Sí, gracias. Entonces 0^n 1^n está libre de contexto. entonces El complemento de {(0^n1^n)^m | m, n> 0} está libre de contexto o no. – user423733

+0

Debe señalarse que el hecho de que se pueda obtener una gramática sin contexto para un idioma no significa que no exista una gramática libre de contexto para ese idioma. En resumen, solo puedes usar la construcción de una gramática para mostrar que un idioma no tiene contexto, no para mostrar que no lo es. – sepp2k

22

Primero, intente construir un context-free grammar que forma el idioma en el asunto. Una gramática no tiene contexto si los lados izquierdos de todas las producciones contienen exactamente un símbolo no terminal. Por definición, si uno existe, entonces el lenguaje está libre de contexto.

Una construcción equivalente sería pushdown automaton. Es lo mismo que DFA, pero con una pila disponible. Puede ser más fácil de construir que una gramática.

Sin embargo, si no logras crear una gramática o un autómata, no significa que un idioma no esté libre de contexto; quizás, eres solo tú el que no puede construir una gramática lo suficientemente complicada (por ejemplo, una vez pasé unas 7 horas para construir una gramática para un lenguaje complicado).

Si comienza a dudar de que el idioma no tenga contexto, debe usar el llamado "pumping lemma for context-free languages". Describe una propiedad de todos lenguajes sin contenido, y si tu idioma no lo permite, entonces no es en absoluto contexto (ver usage notes en Wikipedia).

Este lema es un corolario de Ogden's lemma. Entonces Ogden's es más poderoso, y si no aplicas el lemma de bombeo, puedes probar Ogden (se usa de la misma manera).

+2

Todo esto es bueno, pero te das cuenta de que nada de esto determina por completo una respuesta, ¿verdad? ¿Qué sucede si no puede encontrar una gramática libre de contexto y el lema de Ogden no contradice ninguna propiedad conocida de su idioma? Todavía estás atascado con el problema. (Lo cual creo que es difícil, por lo que su respuesta es tal vez buena, solo indica que no es exhaustiva) – ShreevatsaR

+1

@ShreevatsaR, exactamente. Puede suceder que ninguno de los anteriores funcione. Pero en realidad no sé qué hacer en ese caso. –

2

Editar

Como se sugiere en los comentarios para probar un lenguaje que sea no-CFG, creo que es mediante el uso de un lema Ogdens. La mala interpretación inherente contenida en mi respuesta anterior debe ser excusada :) Retener la respuesta anterior para los acechadores.

respuesta Antiguo

Al mirar la gramática y reglas utilizado! Como se ve en la imagen (cortesía wikipedia chomsky hierarchy). Solo los idiomas regulares no tienen contexto. Implicar cualquier cosa que use cosas de la forma A-> aB o A-> Ba solo no está libre de contexto.

alt text

Editar A-> aB y A-> Definiciones Ba tienen el propósito de expresar izquierda y gramáticas recursivas derecho y no deben ser tomadas literalmente.

+1

Técnicamente, los lenguajes regulares están libres de contexto, pero estoy de acuerdo en que el término "sin contexto" se usa a menudo para indicar "sin contexto, pero no regular", es decir, que las etiquetas del diagrama se aplican a las áreas de encerramiento más pequeñas están dentro, en lugar de los círculos más pequeños en los que se encuentran. – reinierpost

+3

"Solo los idiomas regulares no tienen contexto". ¿Qué? Creo que estás leyendo el diagrama al revés. Los idiomas regulares son un subconjunto de idiomas libres de contexto y, por lo tanto, definitivamente no tienen contexto. Sin embargo, la mayoría de los lenguajes sensibles al contexto son * no * sin contexto, lo que hace que los lenguajes contextuales sean un superconjunto estricto de lenguajes sin contexto. – sepp2k

+0

Sepp2k, quise decir aquellos en términos de poder expresivo. Por ejemplo, el poder expresivo de los lenguajes libres de contexto es mucho más alto que el de los lenguajes normales. Una gramática regular ** no ** tendrá el mismo poder expresivo. Sin embargo, un CSL puede ser más expresivo que un CFG. Entonces un CSL definitivamente es un candidato para CFG pero RG no lo es. – questzen

Cuestiones relacionadas