Notas de estudio — Parcial 2
Lenguajes Formales 2026-1 — EAFIT
Gramáticas Libres de Contexto (lo más importante!)
Definición formal — CFG
Gramática libre de contexto (CFG) — 4-tupla:
donde:
- — conjunto finito de variables (no terminales)
- — conjunto finito de terminales ()
- — conjunto finito de producciones (, con )
- — símbolo inicial (o axioma)
Restricción clave: el lado izquierdo de toda producción es una sola variable. Esto es lo que la hace “libre de contexto” — se puede reescribir sin importar qué la rodea.
Derivación: si se obtiene reemplazando un no terminal de por el cuerpo de alguna producción.
- Derivación por la izquierda (): siempre se expande el no terminal más a la izquierda.
- Derivación por la derecha (): siempre se expande el no terminal más a la derecha.
Árbol de derivación (parse tree): representación gráfica donde la raíz es , los nodos internos son variables, las hojas son terminales o , y los hijos de cada nodo corresponden al cuerpo de la producción aplicada. La cosecha (yield) del árbol es la cadena que se lee de izquierda a derecha en las hojas.
Ambigüedad: Una gramática es ambigua si existe alguna cadena que tiene dos o más árboles de derivación distintos (equivalentemente, dos derivaciones por la izquierda distintas). Un lenguaje es inherentemente ambiguo si TODA gramática que lo genera es ambigua.
V/F importantes sobre CFG (preguntados en examen)
- Una CFG puede tener un conjunto de producciones infinito? Falso — es finito por definición.
- Una CFG con producciones genera necesariamente ? No necesariamente — depende de si .
- Si es ambigua, se puede siempre encontrar una gramática no ambigua equivalente? No — existen lenguajes inherentemente ambiguos.
Forma Normal de Chomsky (CNF)
Definición CNF
Una CFG está en Forma Normal de Chomsky si toda producción tiene una de estas dos formas:
donde (variables) y (terminal). Adicionalmente, si , se permite y no aparece en el lado derecho de ninguna producción.
Los 4 pasos de conversión a CNF
Paso 1 — Eliminar producciones :
- Encontrar todas las variables anulables: es anulable si .
- Para cada producción que contiene una variable anulable, agregar versiones donde esa variable se omite. Ej: si es anulable y hay , agregar .
- Eliminar todas las producciones (excepto si ).
Paso 2 — Eliminar producciones unitarias ():
- Encontrar todos los pares unitarios: si usando solo producciones unitarias.
- Por cada par y cada producción no unitaria , agregar .
- Eliminar todas las producciones unitarias.
Paso 3 — Reemplazar terminales en cuerpos mixtos:
- Si una producción tiene terminales mezclados con variables o longitud (ej: ), reemplazar cada terminal por una nueva variable y agregar .
Paso 4 — Binarizar producciones largas:
- Si con , descomponer con variables auxiliares:
Mnemónico: “ε, unitarias, terminales, binarizar” = EUTB.
Teorema de pasos de derivación en CNF
Teorema: En una gramática en CNF, derivar una cadena con requiere exactamente pasos de derivación:
- aplicaciones de reglas (cada una aumenta el número de símbolos en 1, empezando de 1 hasta llegar a )
- aplicaciones de reglas (una por cada terminal de la cadena)
Caso particular para longitud par: Si , se necesitan pasos.
Ojo examen: Piden demostrar esto. La prueba es por inducción sobre :
- Base (): , es un solo paso . ✓
- Paso inductivo: Si , entonces con y con . Por HI, usa pasos y usa pasos. Total: . ✓
V/F sobre CNF (preguntado directamente)
- “Si está en CNF y contiene cadenas de longitud impar, entonces tiene al menos una producción .” Verdadero — sin producciones , solo se generan no terminales (por ), nunca se llega a terminales.
- En CNF, toda cadena (par o impar) necesita producciones — de lo contrario no se generan terminales.
Diseño de CFGs — Patrones del examen
Patrón 1: Lenguajes con (igual cantidad de a’s y b’s)
Gramática clásica:
Prueba de que — por inducción sobre :
- Base: , y . ✓
- Paso inductivo: Sea con .
- Si con : por HI , entonces . ✓
- Si : análogo con .
- Si donde ambos tienen a’s = b’s: . ✓
Tip examen: Cuando piden “demostrar que genera ”, probar ambas direcciones: (toda cadena derivable cumple la propiedad) y (toda cadena que cumple la propiedad es derivable).
Patrón 2: Lenguajes con condiciones tipo o
Estrategia: generar la parte balanceada primero, luego el exceso.
Ejemplo — :
Idea: cada se “aparea” con una (regla ), las ‘s extras se generan por .
Ejemplo — :
Cada puede “absorber” 0, 1 o 2 ‘s.
Patrón 3: Uniones de lenguajes
Si , simplemente:
donde genera y genera . Funciona porque CFL es cerrado bajo unión.
Patrón 4: Regex CFG con tabla de derivaciones
Conversión sistemática:
- Concatenación :
- Unión :
- Estrella :
- Positiva : (o equivalente , )
- Símbolo :
Después de convertir, hacer tabla de derivaciones para al menos 3 cadenas del lenguaje mostrando paso a paso cada derivación.
Patrón 5: Familias de gramáticas
Examen define familias como parametrizadas por y piden probar propiedades (ej: “toda cadena generada tiene longitud par”).
Estrategia: inducción sobre la longitud de la derivación o sobre . Verificar con casos pequeños (, ) para entender el patrón antes de generalizar.
Autómatas de Pila (PDA)
Definición formal — PDA
Autómata de Pila (PDA) — 7-tupla:
donde:
- — conjunto finito de estados
- — alfabeto de entrada
- — alfabeto de pila
- — función de transición
- — estado inicial
- — símbolo inicial de la pila
- — estados de aceptación
Transición: — estando en estado , leyendo del input y del tope de la pila, paso al estado y reemplazo por en la pila. Si , hago pop. Si , no consumo input (transición espontánea).
Descripción instantánea (ID): — estado actual, input restante, contenido de la pila (tope a la izquierda).
- = un paso de computación
- = cero o más pasos
Dos modos de aceptación:
- Por estado final: si con
- Por pila vacía: si
- Ambos modos son equivalentes en poder — se pueden convertir entre sí
DPDA vs NPDA: A diferencia de DFA/NFA, un DPDA es estrictamente menos poderoso que un NPDA. Ejemplo: necesita no determinismo (hay que “adivinar” el medio).
V/F sobre PDA (preguntado en examen)
- “Un PDA puede aceptar ?” Sí — por pila vacía: hacer pop de inmediatamente (). Por estado final: poner .
- “Todo DPDA puede convertirse en NPDA equivalente?” Sí — todo DPDA es un caso particular de NPDA.
- “Todo NPDA puede convertirse en DPDA equivalente?” No — NPDA es estrictamente más poderoso.
Equivalencia CFG PDA
Teorema de equivalencia
Todo lenguaje libre de contexto tiene un PDA que lo reconoce, y viceversa. Tres construcciones:
1. CFG PDA de estado único (LA CONSTRUCCIÓN MÁS PREGUNTADA)
Dada , construir :
- Un solo estado
- Aceptación por pila vacía (sin estados finales)
- Para cada producción :
- Para cada terminal :
Intuición: El PDA simula una derivación por la izquierda. La pila contiene la forma sentencial pendiente. Los no terminales se expanden (transiciones ), los terminales se emparejan con el input (se consumen).
Ejemplo rápido: Para :
2. PDA CFG
Variables de la forma que representan “ir de a vaciando de la pila”.
Si , generar producciones:
para toda combinación de estados intermedios.
3. Demostrar (patrón de examen)
Usar el lema de correspondencia: hay una biyección entre derivaciones por la izquierda de y secuencias de configuraciones de .
Demostrar:
Ambas direcciones por inducción sobre el número de pasos.
Diseño de PDAs — Patrones del examen
Patrón: Diseñar NPDA para
Siempre dar:
- La 7-tupla completa
- Todas las transiciones (tabla o diagrama)
- Traza de al menos 2 cadenas de ejemplo
Ejemplo:
Idea: la pila cuenta la diferencia entre y .
- Fase 1: leer ‘s, apilar una marca por cada
- Fase 2: leer ‘s, desapilar por cada
- Si la pila se vacía antes de acabar las ‘s, apilar las ‘s restantes con marca distinta
- Fase 3: leer ‘s, desapilar una marca por cada
- Aceptar cuando input y pila están vacíos
Ejemplo:
Idea: por cada , empujar 3 marcas; por cada , sacar 1 marca.
Tip: Para relaciones tipo , empujar símbolos por cada lectura de una letra y sacar 1 por cada lectura de la otra.
Ejemplo: CFG NPDA de estado único (conversión directa)
Dado una CFG del examen, mecánicamente construir el PDA:
- Un estado
- Alfabeto de pila =
- Para cada producción : transición que reemplaza por
- Para cada terminal: transición que empareja y hace pop
- Aceptación por pila vacía
Luego trazar la aceptación de una cadena mostrando cada ID.
Propiedades de los Lenguajes Libres de Contexto
Propiedades de clausura
Cerrados bajo:
- Unión: Si son CFL, entonces es CFL. ()
- Concatenación: es CFL. ()
- Estrella de Kleene: es CFL. ()
- Intersección con regular: Si es CFL y es regular, es CFL. (Producto de PDA con DFA)
NO cerrados bajo:
- Intersección entre CFLs — contraejemplo: y son CFL, pero no es CFL.
- Complemento — si fuera cerrado bajo complemento, por De Morgan sería cerrado bajo intersección. Contradicción.
Lema de Bombeo para CFL
Enunciado: Si es un CFL, existe tal que toda con se puede descomponer como:
con:
- (al menos uno de es no vacío)
- para todo
Diferencia con lema regular: Acá hay dos piezas bombeables ( e ) que crecen juntas. Vienen de un no terminal que se repite en el árbol de derivación.
Estrategia para probar no es CFL:
- Asumir que es CFL, sea la longitud de bombeo
- Elegir con (elegir inteligentemente!)
- Para toda descomposición con y …
- Mostrar un tal que
Ejemplo clásico: no es CFL.
- Elegir
- Como , la ventana toca a lo sumo 2 de los 3 símbolos
- Bombear (): los conteos se desequilibran porque no podemos aumentar los 3 simultáneamente
Truco rápido: Si necesitas probar que algo no es CFL, intenta intersectarlo con un regular para obtener o similar.
Máquinas de Turing y Computabilidad
Definición — Máquina de Turing
Máquina de Turing (MT) — 7-tupla:
donde:
- — conjunto finito de estados
- — alfabeto de entrada (, donde es el blanco)
- — alfabeto de cinta (, )
- — función de transición
- — estado inicial
- — estado de aceptación
- — estado de rechazo ()
Decidible (recursivo): Existe MT que siempre se detiene — acepta o rechaza.
Turing-reconocible (r.e.): Existe MT que acepta las cadenas de . Para , puede rechazar o loopear.
y ambos Turing-reconocibles es decidible.
Jerarquía de Chomsky completa
| Tipo | Nombre | Autómata | Producciones |
|---|---|---|---|
| 3 | Regular | DFA / NFA | o |
| 2 | Libre de contexto | PDA (NPDA) | , |
| 1 | Sensible al contexto | LBA | , $ |
| 0 | Rec. enumerable | MT | Sin restricciones |
Tesis de Church-Turing
Todo procedimiento efectivo (algoritmo intuitivo) puede ser simulado por una Máquina de Turing. No es un teorema formal — es una tesis que formaliza “computable”. Toda evidencia la respalda: MT, cálculo lambda, funciones recursivas computan lo mismo.
Referencia rápida para el examen
Tuplas
- CFG: — variables, terminales, producciones, símbolo inicial
- PDA: — estados, input, pila, transición, inicio, fondo pila, finales
- MT:
CNF
- Solo y
- Pasos conversión: ε → unitarias → terminales → binarizar
- Derivar : exactamente pasos ( reglas + reglas )
- Para : pasos
CFG PDA (un solo estado)
- Un estado , aceptación por pila vacía
- Producciones = transiciones :
- Terminales = emparejar:
Clausura CFL
| Operación | ¿Cerrado? |
|---|---|
| ✓ | |
| Concatenación | ✓ |
| (Kleene) | ✓ |
| con Regular | ✓ |
| entre CFLs | ✗ |
| Complemento | ✗ |
Lema de bombeo CFL
, , ,
Dos piezas bombeables (vs una en regular). Ventana acotada por .
Checklist de diseño PDA
- Definir la 7-tupla completa
- Listar TODAS las transiciones
- Trazar mínimo 2 cadenas
- Verificar cadenas fuera del lenguaje son rechazadas
Checklist de prueba CFG genera
- : toda derivación produce cadena válida (inducción sobre pasos)
- : toda cadena válida es derivable (inducción sobre longitud)