Siguiente:Características ComunesArriba:Tutorial Anterior:Primer Ejemplo

Segundo Ejemplo

Programación Dinámica tiene similitudes con PERT/CPM y con algoritmos específicos de grafos, como por ejemplo el algoritmo de la ruta más corta.
Veamos el siguiente problema de la ruta más corta. Suponga que se desea ir desde A hasta J en la carretera mostrada en la red de la figura 2.

figure156
Figura 2: Red Carreteras

Los números en los arcos representan las distancias. Debido a la estructura especial del problema, éste se puede dividir en niveles. El nivel 1 contiene el nodo A, nivel 2 los nodos B,C y D, el nivel 3 contiene los nodos E, F y G, el nivel 4 contiene H e I y el nivel 5 contiene el nodo J. Los estados en cada nivel corresponden a los nombres de los nodos. Así, el nivel 3 contiene los estados E, F y G.

Sea S un nodo en el nivel  j y sea tex2html_wrap_inline946 la distancia más corta desde el nodo S al destino J, se puede escribir

displaymath952

donde tex2html_wrap_inline954 denota el largo del arco SZ. Esto nos da la recursividad para poder resolver el problema. Se parte entonces con tex2html_wrap_inline958 .
A continuación se muestra el resto de los cálculos:

Nivel  4.
En el nivel 4, realmente no hay decisiones que tomar, hay que ir hasta el destino J.
Nivel 3.
Aquí hay más decisiones. Calcular tex2html_wrap_inline966 . Desde F se puede ir a H o a I. El costo inmediato de ir de H es 6. El siguiente costo es tex2html_wrap_inline962 . El costo total es 9. El costo inmediato de ir a I es 3. El siguiente costo es tex2html_wrap_inline964 con un total de 7. Luego, encontrándose en F la mejor decisión a tomar es ir a I. Con un costo total de 7, así tex2html_wrap_inline972 .

 

 
 
 
 
 

La siguiente tabla resume los otros cálculos:

tabular421
 
 

Se calcula hacia atrás nivel por nivel, cada vez completando el cálculo por nivel antes de continuar al nivel que lo precede. Los resultados son:
Nivel 2.

 

 
 
 
 
 

tabular433

Nivel  1.

 

 
 
 
 
 

tabular442
 
 



Siguiente:Características ComunesArriba:Tutorial Anterior:Primer Ejemplo