← Lumbre

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

← Volver a todos los contenidos
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 4 minutos

Roadwise Consulting

Firmado y verificado · Fernando Castro

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.

4 min 18–30 años
Autoevaluación
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 Objetos 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.

Autoevaluación

Comprueba lo que aprendiste

2 preguntas · ves cada respuesta al momento · el resultado queda guardado en tu historial

Iniciar autoevaluación
Más sobre esta lección

Rutas vivas

¿Y ahora qué? Elige el camino por lo que necesitas

No es un listado al azar: cada camino responde una pregunta distinta y te dice por qué.

Otra forma de comprenderlo

✦ Explorar el universo completo
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

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