Una gramática libre de contexto es aquella en la que las reglas de producción son independientes del contexto. El lenguaje descrito por el CFG es un lenguaje sin contexto.
Cada regla de producción de CFG puede escribirse como S-> a, donde S es un símbolo no terminal único y una combinación de reglas de producción o no terminales. Por ejemplo, la siguiente es una gramática libre de contexto, al igual que cualquier combinación de las reglas de forma aislada. Tomé este ejemplo de Wikipedia.
Regla 1: [matemáticas] S \ a aSa [/ matemáticas]
Regla 2: [matemáticas] S \ a bSb [/ matemáticas]
Regla 3: [matemáticas] S \ a \ epsilon [/ matemáticas]
(Epsilon es la cadena vacía).
Los siguientes son ejemplos de cadenas que pueden ser construidas por esta gramática: es decir, miembros de la CFL, L , descritos por esta CFG y las derivaciones correspondientes.
- ¿Son las habilidades teóricas más valiosas que las habilidades de implementación en EE o CS en general?
- ¿Cuáles son las posibles conexiones entre la ciberseguridad y el aprendizaje automático?
- ¿Por qué el problema de detención es difícil en np?
- ¿Se está haciendo algún trabajo práctico sobre la integración del conocimiento potencial en grandes cantidades de datos (a través de algoritmos de aprendizaje automático, por ejemplo), diseño UX / UI y cómo el cerebro humano aprende para maximizar la eficiencia de la creación de conocimiento?
- No puedo resolver los problemas del juego en las competiciones de CodeChef, ¿hay algo que necesito saber que pueda ayudarme en tales problemas?
- aa: Regla 1, seguida de la Regla 3
- aabb: Regla 1, seguida de la Regla 2, seguida de la Regla 3.
- La cadena vacía (Regla 3).
El lenguaje descrito por una gramática también se puede describir en notación de conjunto.
Debido a las restricciones en una gramática libre de contexto, cada regla de producción existe independientemente de las demás.
Por el contrario, un lenguaje regular se describe mediante una gramática regular. Las gramáticas regulares son un subconjunto estricto de gramáticas libres de contexto. (Consulte la jerarquía de Chomsky). Esta es la teoría que sustenta las expresiones regulares que los programadores usan con tanta frecuencia, ya que las expresiones regulares son instancias extraídas de un lenguaje regular. Existe una equivalencia exacta entre los idiomas regulares y los autómatas de estados finitos: es decir, se puede construir un FSA para aceptar un idioma si y solo si es regular. (Por lo tanto, existe un FSA para cada expresión regular).
Los idiomas regulares agregan más restricciones a las reglas de producción. Hay gramáticas regulares derechas y gramáticas regulares izquierdas. La segunda regla determina si un RL es uno u otro. (Ver la página de Wikipedia). Las gramáticas regulares derecha e izquierda describen el conjunto completo de lenguajes regulares.
Mi libro favorito sobre este tema es la Introducción a la teoría de la computación extremadamente bien escrita, de Michael Sipser. Si compara precios, puede encontrar una copia antigua a bajo precio sin demasiados problemas.