"La idea de la programación dinámica es evitar recalcular subsoluciones parciales que son necesarias para alcanzar las solución final, almacenandolas en memoria."
-
Compromiso tiempo-espacio, se sacrifica espacio para ganar tiempo.
-
La estructura de datos en las que se almacenan las subsoluciones se llama tabla de subproblemas resueltos.
-
La programación dinamica es una técnica ascendente, la mayor dificultad está en elegir orden en el que resuelven los subejemplares.
-
Hay que fijar el orden en que se debe de rellenar la tabla. Al cumplar el subejemplar, aquéllos implicados ya deben de estar almacenados.
Dados n objetos, cada uno con un valor vi y pi y una mochila con una capacidad c, se desea hallar la composición de la mochila que maximiza el valor de la carga.
Disponemos de n tipos de monedas de valor vi y deseamos devolver un cambio de c unidades monetarias empleando el mínimo número posible de monedas de cada tipo.
-
Como simplificación supondremos que disponemos una cantidad ilimitada de monedas de cada tipo.
-
La resolución de este problema puede contemplarse como un problema de decisión donde hay que decidir para cada tipo de moneda cúantas incluimos para devolver el cambio.
-
El principio de optimalidad se cumple para este problema.
A. Salguero, F. Palomo, I. Medina.
Universidad de Cádiz.
Aho, Alfred; Hopcroft, John & Ullman, Jeffrey.
The Design and Analysis of Computer Algorithms.
Addison-Wesley. 1974.
Brassard, Gilles & Bratley, Paul.
Fundamentos de Algoritmia.
Prentice-Hall. 1997.
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. &
Stein, Cliford.
Introduction to Algorithms.
MIT Press. 2001. 2a ed.
Horowitz, Ellis & Sahni, Sartaj.
Fundamentals of Computer Algorithms.
Pitman. 1978.