← capítulo

Programación dinámica: la familia knapsack

Maximiza el valor en una mochila limitada. Una sola regla —¿se permiten fracciones?— decide entre greedy y DP.

Fraccionario vs 0/1

El DP 0/1: tomar o saltar

Mira cómo se llena la tabla

Verde = aquí se tomó el objeto · gris = se saltó. dp[4][7] = 9 (objetos 3+4). El greedy por densidad agarra primero el objeto de peso 5 → solo 8.

Greedy no tiene garantía

Greedy promedia ~95%, pero en el PEOR caso → 0 (objetos A=(1,2), B=(W,W), mochila W: greedy 2, óptimo W). Fraccionario 136% = una cota superior floja (brecha de relajación).

Pseudo-polinomial

Para llevar

Se permiten fracciones → greedy. Todo o nada → DP. Esa es toda la diferencia. DP hace explícito el espacio de estados — pero un espacio de estados enorme sigue doliendo. Siguiente: distancia de edición y LCS — DP sobre secuencias (diff, corrector ortográfico, ADN).