2. Proporciona un procedimiento
sistemático para encontrar la
combinación de decisiones que
maximice la efectividad total,
al descomponer el problema en
etapas, las que pueden ser
completadas por una o más
formas (estados), y enlazando
cada etapa a través de
cálculos recursivos.
3. Para este algoritmo tenemos que:
Etapa: es la parte
del problema que
posee un conjunto
de alternativas
mutuamente
excluyentes, de las
cuales se
seleccionará la
mejor alternativa.
Estado: es el que refleja
la condición o estado de
las restricciones que
enlazan las etapas.
Representa la “liga” entre
etapas de tal manera que
cuando cada etapa se
optimiza por separado la
decisión resultante es
automáticamente factible
para el problema completo.
4. Problema: Dado un conjunto de n tipos de monedas, cada una con valor v sub
i, y con una cantidad de monedas de ese tipo c sub i , y dada una cantidad
P, encontrar el número mínimo de monedas que tenemos que usar para obtener
esa cantidad.
• Utilizando programación dinámica:
– Definimos el problema en función de problemas más
pequeños.
– Determinar los valores de los casos base.
– Definimos las tablas necesarias para almacenar los
resultados de los subproblemas.
– Establecemos una forma de rellenar las tablas y de
obtener el resultado.
Ejemplo: Problema del cambio de
monedas