PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

19
PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009

Transcript of PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Page 1: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

PROGRAMACIÓN DINÁMICA DETERMINISTA

Lic. Mario Iván Cruz ChinSeptiembre, 2009

Page 2: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

PROGRAMACIÓN DINÁMICALa programación dinámica es una técnica

que se utiliza para resolver diversos problemas de optimización.

Esta técnica llega a la solución trabajando hacia atrás partiendo del final del problema hacia el principio, por lo que un problema enorme e inmanejable se convierte en una serie de problemas más pequeños y manejables.

Page 3: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Dos Acertijos para entender la PDAcertijo 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. ¿Cómo puedo yo (el primer jugador) estar seguro de ganar el juego?

Page 4: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Dos Acertijos para entender la PDAcertijo 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. ¿Cómo puedo cumplir lo pedido?

Page 5: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Naturaleza recursiva de la PDLos cálculos de programación dinámica se

hacen en forma recursiva, ya que la solución óptima de un subproblema se usa como dato para el siguiente subproblema.

Para cuando se resuelve el último subproblema queda a la mano la solución óptima de todo el problema.

La forma en la que se hacen los cálculos recursivos dependen de cómo se descomponga el problema original.

En particular, los subproblemas se vinculan normalmente mediante restricciones comunes.

Page 6: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Un problema de redes…Joe Cougar vive en Nueva York, pero quiere viajar en

su automóvil 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 día a la vez y avanzar por etapas.

Luego de 4 días de manejar Joe puede llegar finalmente a Los Ángeles.

Para minimizar la cantidad de millas recorridas, ¿dónde debe Joe pasar cada noche del viaje?

Page 7: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

Los Ángeles

10

Page 8: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Solución con programación dinámicaSe determinará yendo hacia atrás

(Recursividad)Primero clasificamos todas las ciudades en la

que Joe puede estar al principio del n-ésimo día de su viaje como ciudades de la etapa n.

Etapa 1: Nueva YorkEtapa 2: Columbus, Nashville, LouisvilleEtapa 3: Kansas City, Omaha, DallasEtapa 4: Denver, San AntonioEtapa 5: Los Ángeles

Page 9: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Los Ángeles

10

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

550

900 760

770

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390 Etapa 5

Etapa 4

Etapa 3Etapa 2

Etapa 1

Page 10: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Algoritmo para RecursividadLa idea de trabajar hacia atrás implica que debemos

empezar por resolver un problema fácil que con el tiempo nos servirá para resolver uno más complejo.

Empezamos por determinar la trayectoria más corta a Los Ángeles desde cada ciudad de dónde hay sólo un día de viaje en automóvil (ciudades de la etapa 4).

Luego usamos esta información para encontrar el camino más corto hasta Los Ángeles desde cada ciudad donde hay 2 días de manejo (ciudades de la etapa 3).

Con esta información ya somos capaces de hallar el camino más corto desde cada ciudad que esté a 3 días de viaje (ciudades de la etapa 2).

Encontramos, por último, la trayectoria más corta a Los Ángeles desde cada ciudad que está a 4 días de viaje (hay sólo una: Nueva York).

Page 11: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Criterios básicosCon el fin de simplificar la exposición usamos

los números 1, 2, 3,…, 10 dados en la figura para nombrar las 10 ciudades.

Definimos también 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 más corto desde la ciudad i hasta Los Ángeles, dado que la ciudad i es una ciudad de la etapa t.

Page 12: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

Los Ángeles

10

550

900 760

770

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390 Etapa 5

Etapa 4

Etapa 3Etapa 2

Etapa 1

Page 13: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Cálculos de la Etapa 4Determinamos el camino más

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 San Antonio

9

Denver

8

Los Ángeles

10

1030

1390 Etapa 5

Etapa 4

Page 14: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Cálculos de la Etapa 3Determinamos el camino más corto desde

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

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

Kansas City

5

Dallas

7

San Antonio

9

Denver

8

Los Ángeles

10

270

790

540

940

610

790

1030

1390

E 5

E 4

E 3

Page 15: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Cálculos de la Etapa 2Determinamos el camino más corto

desde cada ciudad de la etapa 2 hasta L. A.

Determinar f2(2) C25 + f3(5) = 680 + 1640 = 2320* (2-5-8-

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

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

6

5

4

3

2

7

9

8

10760

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390

E5

E4

E3E2

Page 16: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Cálculos de la Etapa 1Como ya conocemos f2(2), f2(3) y f2(4), podemos ir

hacia atrás una etapa más para determinar f1(1) y, por lo tanto, el camino más corto de la ciudad 1 a la 10.

Obsérvese que el camino más corto desde la c1 a la c10 debe empezar por ir a la ciudad 2, 3 ó a la 4.

Esto significa que el camino más 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 más corto desde la 2 hasta la 10. [C12 + f2(2) ]Camino 2. Ir desde la 1 hasta la 3, luego seguir el

camino más corto desde la 3 hasta la 10. [C13 + f2(3) ]Camino 3. Ir desde la 1 hasta la 4, luego seguir el

camino más corto desde la 4 hasta la 10. [C14 + f2(4) ]

Page 17: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

Continuación…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-10Desde 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

Page 18: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.
Page 19: PROGRAMACIÓN DINÁMICA DETERMINISTA Lic. Mario Iván Cruz Chin Septiembre, 2009.

16

5

4

3

2

7

9

8

10

2

4 2

3

3

6

4

5

1

3

4

6

3

3

6

3

1

3

3

4