Sunteți pe pagina 1din 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 PD
Los 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

Denver 8

Nueva York 1

Nashville 3

Omaha 6

Los ngeles 10

San Antonio 9

Lousville

Dallas

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
580

5
790

610

550

Denver 8
790
540

1030

Nueva York 1
Etapa 1

900

Nashville 3

760

Omaha 6
940

Los ngeles 10
1390 Etapa 5

660 770

510 1050 700

790

San Antonio 9
Etapa 4 270

Lousville

Dallas
830

4
Etapa 2

7
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
580

5
790

610

550

Denver 8
790
540

1030

Nueva York 1
Etapa 1

900

Nashville 3

760

Omaha 6
940

Los ngeles 10
1390 Etapa 5

660 770

510 1050 700

790

San Antonio 9
Etapa 4 270

Lousville

Dallas
830

4
Etapa 2

7
Etapa 3

Clculos de la Etapa 4
Determinamos el camino ms corto

desde cada ciudad de la etapa 4 hasta L. A. Como hay un solo camino desde cada ciudad, observamos que:
f4(8) = 1030 f4(9) = 1390

Denver

8
1030

Los ngeles

10
1390 Etapa 5

San Antonio

9
Etapa 4

Clculos de la Etapa 3
Determinamos el camino ms corto desde
Kansas City 5

cada ciudad de la etapa 3 hasta L. A. Determinar f3(5)


C58 + f4(8) = 610 + 1030 = 1640 * (5-8-10) C59 + f4(9) = 790 + 1390 = 2180

610

790

Denver

8
540 103 0

Determinar f3(6) C68 + f4(8) = 540 + 1030 = 1570 * (6-8-10) C69 + f4(9) = 940 + 1390 = 2330 Determinar f3(7) C78 + f4(8) = 790 + 1030 = 1820 C79 + f4(9) = 270 + 1390 = 1660 * (7-9-10)

Omaha 6
940 139 0
San Antonio
9

Los ngeles
E 10 5

790

E4 270

Dallas
7
E3

Clculos de la Etapa 2
Determinamos el camino ms corto

desde cada ciudad de la etapa 2 hasta L. A. Determinar f2(2)


10) C26 + f3(6) = 790 + 1570 = 2360 C27 + f3(7) = 1050 + 1660 = 2710

68 0 58 0

5
79 0 61 0

8
10 30

C25 + f3(5) = 680 + 1640 = 2320* (2-5-83


76 0 66 0 51 0 70 0 83 0

79 0

54 0 94 0

10
13 90 E5

Determinar f2(3) C35 + f3(5) = 580 + 1640 = 2220* (3-5-8-10) C36 + f3(6) = 750 + 1570 = 2330 C37 + f3(7) = 660 + 1660 = 2320 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

10 50

79 0

9
27 0 E4

4
E2

7
E3

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

5
1 3 3

4
4

10

3 4 3

3 6 1

4
5