Proponer una CFG para el lenguaje {a^n b^m c^k | n >= m, k >= 5}
Fuente: Parcial 2 — ST0270-2534 (2024-1)
cfgdisenodesigualdadrestriccion
Enunciado
Proponer una gramatica independiente del contexto para el lenguaje:
L={anbmck∣n≥m∧k≥5}
Solución rápida— la idea clave sin formalismo
La idea: separar las dos restricciones independientes
Las dos condiciones (n≥m y k≥5) son independientes entre si: una afecta a las a‘s y b‘s, la otra a las c‘s. Entonces separamos la gramatica en dos partes con S→AB.
Para n≥m: escribimos n=m+j donde j≥0. Primero generamos j a’s extras con A→aA, y luego emparejamos a‘s con b‘s usando C→aCb∣ε. Resultado: ajambm=aj+mbm.
Para k≥5: forzamos 5 c’s fijas con B→cccccD, y luego D genera las adicionales con D→cD∣ε.
El patron general: para x≥y, empareja y con y y genera el excedente por separado. Para k≥ constante, escribe la constante literalmente y genera el resto con recursion.
Solución formal— lista para entregar en un parcial
L={anbmck∣n≥m∧k≥5}.
SACBD→AB→aA∣C→aCb∣ε→cccccD→cD∣ε
Correccion.A genera ajC con j≥0, y C genera ambm con m≥0. Entonces A genera aj+mbm donde n=j+m≥m. B genera c5+l con l≥0, donde k=5+l≥5. La cadena completa es anbmck con n≥m y k≥5. ■
Gramatica
Explicación completa— paso a paso, con visualizaciones
Solucion
Analisis del lenguaje
El lenguaje es L={anbmck∣n≥m∧k≥5}.
Podemos descomponer las restricciones:
n≥m: Esto significa n=m+j para algun j≥0. Necesitamos m pares ab y ja‘s adicionales al inicio.
k≥5: Al menos 5 c‘s, mas cualquier cantidad adicional.
Gramatica
SACBD→AB→aA∣C→aCb∣ε→cccccD→cD∣ε
Explicacion
S→AB separa la generacion de la parte anbm (con n≥m) de la parte ck (con k≥5).
A→aA∣C: genera ja‘s adicionales (j≥0) antes de pasar a C.
C→aCb∣ε: genera ambm para algun m≥0, emparejando a‘s con b‘s.
B→cccccD: genera las 5 c‘s obligatorias.
D→cD∣ε: genera c‘s adicionales.
Asi, la cadena generada tiene la forma ajambmc5cl=aj+mbmc5+l donde: