Verdadero o falso: producciones de una CFG pertenecen a N x (N U Sigma)+
Fuente: Parcial 2 — ST0270-1587 (2024-2)
cfgverdadero-falsoproduccionesdefinicion-formal
Enunciado
Decida si la siguiente afirmacion es verdadera o falsa. Si considera que es verdadera, de un ejemplo; en caso contrario, de un contraejemplo.
Afirmacion: En una gramatica libre de contexto G=(N,Σ,P,S) se tiene que P⊆N×(N∪Σ)+.
Solución rápida— la idea clave sin formalismo
Respuesta rapida: FALSO
La afirmacion dice que las producciones pertenecen a N×(N∪Σ)+. El problema esta en el "+": eso significa cadenas de longitud al menos 1, lo cual excluye la cadena vacia ε.
Pero las CFG permiten producciones epsilon como A→ε. Entonces la definicion correcta usa (N∪Σ)∗ (con estrella, no con +), porque la estrella de Kleene si incluye la cadena vacia.
Un contraejemplo inmediato: la gramatica S→aSa∣ε es una CFG valida. La produccion S→ε tiene lado derecho ε, que no pertenece a (N∪Σ)+. Eso refuta la afirmacion.
Solución formal— lista para entregar en un parcial
FALSO.
Contraejemplo. Sea G=({S},{a},P,S) con P={S→aSa,S→ε}.
G es una gramatica libre de contexto valida. Sin embargo:
S→ε∈P⟹ε∈rango de P
ε∈/(N∪Σ)+pues ∣ε∣=0<1
∴P⊆N×(N∪Σ)+
La definicion correcta es P⊆N×(N∪Σ)∗. ■
Gramatica
Explicación completa— paso a paso, con visualizaciones
Solucion
La afirmacion es FALSA.
La afirmacion dice que P⊆N×(N∪Σ)+, es decir, que el lado derecho de toda produccion pertenece a (N∪Σ)+, lo cual excluye la cadena vacia ε.
Sin embargo, en las gramaticas libres de contexto es valido tener producciones de la forma A→ε (llamadas producciones epsilon o producciones nulas). La definicion correcta es:
P⊆N×(N∪Σ)∗
donde (N∪Σ)∗ incluye la cadena vacia.
Contraejemplo
Considere la gramatica G=({S},{a},P,S) con:
S→aSa∣ε
Esta es una gramatica libre de contexto valida que genera el lenguaje L={anan∣n≥0}={(aa)n∣n≥0}. La produccion S→ε tiene lado derecho ε, y ε∈/(N∪Σ)+ ya que (N∪Σ)+ solo contiene cadenas de longitud al menos 1.
Por lo tanto, P⊆N×(N∪Σ)+.
Nota
Si bien la forma normal de Chomsky restringe las producciones epsilon (solo permite S→ε si S no aparece en el lado derecho de ninguna produccion), la definicion general de CFG permite producciones epsilon para cualquier no terminal.