Sei sulla pagina 1di 19

PROGRAMACIN DINMICA DETERMINISTA

Lic. Mario Ivn Cruz Chin


Septiembre, 2009
PROGRAMACIN
DINMICA
La programacin dinmica es una tcnica
que se utiliza para resolver diversos
problemas de optimizacin.
Esta tcnica llega a la solucin trabajando
hacia atrs partiendo del final del
problema hacia el principio, por lo que un
problema enorme e inmanejable se
convierte en una serie de problemas ms
pequeos y manejables.
Dos Acertijos para entender
la PD
Acertijo de las cerillas:
Suponga que hay 30 cerillas sobre una mesa.
Yo empiezo eligiendo 1, 2 3 cerillas. Luego mi
contrincante debe tomar 1, 2 3 cerillas. As
continuamos hasta que alguno de los jugadores
toma la ltima cerilla. Este jugador es el que
pierde. Cmo puedo yo (el primer jugador)
estar seguro de ganar el juego?
Dos Acertijos para entender
la PD
Acertijo de las tazas de leche
Tengo una taza de 9 onzas y otra de 4 onzas. Mi
madre me pidi traer a casa exactamente 6
onzas de leche. Cmo puedo cumplir lo
pedido?
Naturaleza recursiva de
la
LosPD
clculos de programacin dinmica se hacen
en forma recursiva, ya que la solucin ptima de
un subproblema se usa como dato para el
siguiente subproblema.
Para cuando se resuelve el ltimo subproblema
queda a la mano la solucin ptima de todo el
problema.
La forma en la que se hacen los clculos
recursivos dependen de cmo se descomponga el
problema original.
En particular, los subproblemas se vinculan
normalmente mediante restricciones comunes.
Un problema de redes
Joe Cougar vive en Nueva York, pero quiere viajar en su
automvil hasta Los ngeles en busca de fama y
fortuna. Los fondos de Joe son limitados, as que decide
pasar cada noche de su viaje en la casa de un amigo.
Joe tiene amigos en cada ciudad.
Joe sabe que puede viajar un da a la vez y avanzar por
etapas.
Luego de 4 das de manejar Joe puede llegar
finalmente a Los ngeles.
Para minimizar la cantidad de millas recorridas, dnde
debe Joe pasar cada noche del viaje?
Columbus Kansas City
2 5

Denver
8

Nueva York Nashville Omaha Los ngeles


1 3 6 10

San Antonio
9

Lousville Dallas
4 7
Solucin con programacin
dinmica
Se determinar yendo hacia atrs (Recursividad)
Primero clasificamos todas las ciudades en la
que Joe puede estar al principio del n-simo da
de su viaje como ciudades de la etapa n.
Etapa 1: Nueva York
Etapa 2: Columbus, Nashville, Louisville
Etapa 3: Kansas City, Omaha, Dallas
Etapa 4: Denver, San Antonio
Etapa 5: Los ngeles
Columbus 680 Kansas City
2 5
610
580
790

550 Denver
8
1030
540
790

Nueva York 900 Nashville 760 Omaha Los ngeles


1 3 6 10
940 Etapa 5
Etapa 1 1390
660

San Antonio
770 790
510 9
1050
700 Etapa 4
270

Lousville Dallas
4 830 7
Etapa 2 Etapa 3
Algoritmo para
Recursividad
La idea de trabajar hacia atrs implica que debemos
empezar por resolver un problema fcil que con el
tiempo nos servir para resolver uno ms complejo.
Empezamos por determinar la trayectoria ms corta a
Los ngeles desde cada ciudad de dnde hay slo un da
de viaje en automvil (ciudades de la etapa 4).
Luego usamos esta informacin para encontrar el
camino ms corto hasta Los ngeles desde cada ciudad
donde hay 2 das de manejo (ciudades de la etapa 3).
Con esta informacin ya somos capaces de hallar el
camino ms corto desde cada ciudad que est a 3 das
de viaje (ciudades de la etapa 2).
Encontramos, por ltimo, la trayectoria ms corta a Los
ngeles desde cada ciudad que est a 4 das de viaje
(hay slo una: Nueva York).
Criterios bsicos
Con el fin de simplificar la exposicin usamos
los nmeros 1, 2, 3,, 10 dados en la figura
para nombrar las 10 ciudades.
Definimos tambin cij como las millas entre la
ciudad i y la ciudad j. Por ejemplo, c35 = 580
son las millas entre Nashville y Kansas City.
Hacemos ft(i) la distancia del camino ms
corto desde la ciudad i hasta Los ngeles,
dado que la ciudad i es una ciudad de la
etapa t.
Columbus 680 Kansas City
2 5
610
580
790

550 Denver
8
1030
540
790

Nueva York 900 Nashville 760 Omaha Los ngeles


1 3 6 10
940 Etapa 5
Etapa 1 1390
660

San Antonio
770 790
510 9
1050
700 Etapa 4
270

Lousville Dallas
4 830 7
Etapa 2 Etapa 3
Clculos de la Etapa 4
Determinamos el camino ms
corto desde cada ciudad de la
Denver
etapa 4 hasta L. A. 8

Como hay un solo camino desde 1030

cada ciudad, observamos que: Los ngeles


10
f4(8) = 1030 Etapa 5
1390

f4(9) = 1390 San Antonio


9

Etapa 4
Clculos de la Etapa 3
Kansas City
Determinamos el camino ms corto desde 5
cada ciudad de la etapa 3 hasta L. A. 610

Determinar f3(5) 790

C58 + f4(8) = 610 + 1030 = 1640 * (5-8-10) Denver

C59 + f4(9) = 790 + 1390 = 2180 8


540 103
Determinar f3(6) 0
Omaha Los
C68 + f4(8) = 540 + 1030 = 1570 * (6-8-10) ngeles
6
C69 + f4(9) = 940 + 1390 = 2330 940
139 E 10
5
0
Determinar f3(7) San Antonio
790
9
C78 + f4(8) = 790 + 1030 = 1820
E4
C79 + f4(9) = 270 + 1390 = 1660 * (7-9-10) 270
Dallas
7
E3
Clculos de la Etapa 2
Determinamos el camino ms corto 2 68 5
desde cada ciudad de la etapa 2 hasta 0 61
L. A. 58
0 79
0

Determinar f2(2) 0
8
C25 + f3(5) = 680 + 1640 = 2320* (2-5-8-
10
10) 79 54
0 30
3 0 6 10
C26 + f3(6) = 790 + 1570 = 2360 76
0
C27 + f3(7) = 1050 + 1660 = 2710 94 13 E5
66 0 90
Determinar f2(3) 0
79 9
51
C35 + f3(5) = 580 + 1640 = 2220* (3-5-8- 0 10 0
70 50 E4
10) 0 27
0
4 7
C36 + f3(6) = 750 + 1570 = 2330 83
0
C37 + f3(7) = 660 + 1660 = 2320 E2 E3

Determinar f2(4)
C45 + f4(5) = 510 + 1640 = 2150* (4-5-8-
10)
C46 + f4(6) = 700 + 1570 = 2270
C47 + f4(7) = 830 + 1660 = 2490
Clculos de la Etapa 1
Como ya conocemos f2(2), f2(3) y f2(4), podemos ir
hacia atrs una etapa ms para determinar f1(1) y, por
lo tanto, el camino ms corto de la ciudad 1 a la 10.
Obsrvese que el camino ms corto desde la c1 a la
c10 debe empezar por ir a la ciudad 2, 3 a la 4.
Esto significa que el camino ms corto desde la c1
hasta la c10 tiene que ser uno de los siguientes:
Camino 1. Ir desde la 1 hasta la 2, luego seguir el
camino ms corto desde la 2 hasta la 10. [C12 + f2(2) ]
Camino 2. Ir desde la 1 hasta la 3, luego seguir el
camino ms corto desde la 3 hasta la 10. [C13 + f2(3) ]
Camino 3. Ir desde la 1 hasta la 4, luego seguir el
camino ms corto desde la 4 hasta la 10. [C14 + f2(4) ]
Continuacin
Determinar f1(1):
C12 + f2(2) = 550 + 2320 = 2870
C13 + f2(3) = 900 + 2220 = 3120
C14 + f2(4) = 770 + 2150 = 2920
Camino ptimo: 1-2-5-8-10
Desde Nueva York hasta Los ngeles pasar por:
Nueva York, Columbus, Kansas City, Denver y Los
ngeles.
Este camino tiene una distancia de f1(1) = 2780
millas
2 6 5

1
3
3

2 8

3
6
4

4 3 2 6 10
1

3
4
4

9
3 3
3
6
1
3

4 7
5

Potrebbero piacerti anche