Estamos preparando el PDF de «Programación dinámica y voracidad». Se descargará automáticamente en cuanto esté listo.
← Lumbre

Estructuras de Datos y Algoritmos · 2.º Programación dinámica y voracidad

Portada de Programación dinámica y voracidad

Programación dinámica y voracidad

✦ Ambos atacan problemas de optimización · Estructuras de Datos y Algoritmos · Programación · y te lleva 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: Reconocer cuándo un problema admite solución voraz y cuándo requiere programación dinámica, apoyándose en subestructura óptima y subproblemas traslapados.

8 min Estructuras de Datos y Algoritmos · Programación 18–30 años
Más
Programación dinámica y voracidad

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Estructuras de Datos y Algoritmos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Programación dinámica y voracidad

Diagrama de estructuras de datos: arbol binario, lista enlazada y tabla hash.
Estructuras de datos fundamentales y analisis de complejidad algoritmica.

Mapa conceptual

  • Estructuras de Datos
    • Lineales
      • Arrays
      • Listas enlazadas
      • Pilas y Colas
    • No lineales
      • Arboles BST
      • Heaps
      • Grafos
    • Hash
      • Funcion hash
      • Colisiones
      • Rehashing
    • Algoritmos
      • Ordenamiento
      • Busqueda binaria
      • BFS DFS
    • Optimizacion
      • Big-O
      • Dinamica
      • Voracidad

Los dos ingredientes

  • Subestructura óptima: una solución óptima del todo se construye con soluciones óptimas de sus partes.
  • Subproblemas traslapados: al resolver recursivamente, se recomputan las mismas piezas una y otra vez.

Programación dinámica

La programación dinámica (DP) explota ambos ingredientes: resuelve cada subproblema una vez y guarda su resultado. Se implementa por arriba (memoización, recursión con caché) o por abajo (tabulación, rellenar una tabla). Convierte un algoritmo exponencial en uno polinomial.

El ejemplo de Fibonacci

Calcular fib(n) = fib(n−1) + fib(n−2) por recursión pura es exponencial por recomputar. Con memoización es O(n): cada valor se calcula una vez. Es el ejemplo mínimo de DP: subproblemas traslapados y una recurrencia clara.

Estrategia voraz

La voracidad toma en cada paso la opción que parece mejor AHORA (máximo beneficio local) esperando llegar al óptimo global. Es simple y rápida, pero solo es válida cuando una elección local segura no arruina el futuro: cuando el problema tiene la propiedad de elección voraz.

La voracidad exige una justificación (a un intercambio); si falla, se va a DP.
ProblemaVoraz funcionaHace falta DPPor qué
Monedas canónicasSi—cada moneda grande nunca estorba
Monedas arbitrariasNo siempreSitomar la mayor puede no dar el mínimo
Mochila 0-1NoSilo mejor por unidad de peso puede no caber óptimo
Intervalos (agendar máx.)Si—elegir el que termina antes es seguro

¿Qué distingue a la programación dinámica de la simple recursión divide y vencerás?

El cambio de monedas, caso vivo

Con monedas 1, 3, 4 y objetivo 6: lo voraz toma la de 4 y luego dos de 1 (tres monedas). Lo óptimo son dos de 3. La voraz falla porque la moneda más grande no garantiza el mínimo total: hace falta DP sobre «mínimo monedas para cada importe».

Mochila

En la mochila 0-1, ordenar por valor/peso y meter lo más rentable (voraz) puede dejar un hueco caro. DP define «mejor valor con los ítems hasta i y capacidad w» y explora incluir o no en O(n·capacidad).

Si un problema no tiene subproblemas traslapados, la programación dinámica ofrece ventaja sobre la recursión directa.

Errores frecuentes

  • Aplicar voracidad sin probar la propiedad de elección (o sin un argumento de intercambio).
  • Definir mal el estado en DP: si los estados no capturan lo necesario, la recurrencia falla.
  • Olvidar el orden de relleno en tabulación, leyendo valores aún no computados.

Cómo decidirse

  1. ¿Tiene subestructura óptima? Si no, ninguno de los dos sirve (busca otra vía).
  2. ¿Se puede justificar una elección local segura? Sí → voraz; es más simple y rápido.
  3. ¿Los subproblemas se traslapan y no hay garantía voraz? → DP, define el estado con cuidado.

Vocabulario de optimización

subestructura óptima
lo óptimo global usa lo óptimo de las partes
traslape
los mismos subproblemas reaparecen
memoización
DP de arriba, recursión con caché
tabulación
DP de abajo, rellenar tabla
elección voraz
decisión local segura y final

Toca una tarjeta para ver la respuesta.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Explica por qué «dar el cambio con el mínimo número de monedas» es resolvable voraz con monedas comunes pero requiere DP con un sistema arbitrario. Da un contraejemplo concreto.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.