30
Home Page Title Page Contents Page 1 of 100 Go Back Full Screen Close Quit Programaci´ on Din´ amica Profesor: Julio C´ esar L´ opez [email protected] 8 de noviembre de 2003

Programación Dinámica

Embed Size (px)

DESCRIPTION

100 láminas de aspectos básicos de Programación Dinámica

Citation preview

Page 1: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 1 of 100

Go Back

Full Screen

Close

Quit

Programacion Dinamica

Profesor: Julio Cesar [email protected]

8 de noviembre de 2003

Page 2: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 2 of 100

Go Back

Full Screen

Close

Quit

Generalidades

La programacion Dinamica :

• Como la tecnica Dividir y Conquistar, la progra-macion dinamica es una tecnica para resolverproblemas, a partir de la solucion a subproblemasy la combinacion de esas soluciones.

• A diferencia de la tecnica Dividir y Conquistar, laProgramacion dinamica es aplicable cuandolos subproblemas no son independientes (en cuyocaso Dividir y Conquistar hace mucho trabajorepetido).

• Un algoritmo que sigue esta tecnica resuelve cadasubproblema una sola vez y guarda su respuesta enuna tabla, evitando ası volver a calcular la respuestacada vez que el subproblema aparezca.

Page 3: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 3 of 100

Go Back

Full Screen

Close

Quit

Generalidades (Cont.)

• Esta tecnica es tıpicamente aplicada para resolverproblemas de optimizacion:

? Problemas con muchas soluciones.

? Cada solucion tiene asociado un valor

? Se busca una solucion con un valor optimo(maximo o mınimo), entre las muchas solucionescon valor optimo que pueden existir.

Page 4: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 4 of 100

Go Back

Full Screen

Close

Quit

Generalidades (Cont.)

? El desarrollo de un algoritmo usando la tecnica deprogramacion dinamica puede ser dividido en lossiguientes pasos:

1. Caracterizar la estructura de una solucionoptima.

2. Definir recursivamente el valor de una solu-cion optima.

3. Calcular el Valor de una solucion optima demanera abajo hacia arriba (bottom-up).

4. Construir una solucion optima a partir de lainformacion calculada.

Page 5: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 5 of 100

Go Back

Full Screen

Close

Quit

Generalidades (Cont.)

Utilizando proramacion dinamica se solucionanproblemas de optimizacion como:

? El problema de planificacion en una fabrica de au-tomoviles.

? Multiplicacion de una sucesion de matrices.

? Construir un arbol de busqueda binaria que se opti-mo.

? Otros ejemplos: la subcadena mas larga, triangu-lacion de polıgonos convexos,...

Page 6: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 6 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

La Corporacion Colonel Motors produce au-tomoviles en una fabrica que tiene dos lıneas deensamble.

. . . .Entradachasis

Linea de ensamble 1

Linea de ensamble 2

Estado S Estado S Estado S

Estado S Estado S Estado S Estado S Estado S

Estado SEstado SEstado S

e

e

2,1 2,2 2,3 2,4 2,n−1 Estado S 2,n

1,1 1,2 1,3 1,4 1,n−1 1,n

1

2

a1,2a1,1a a a

x

x

1,3 1,4 a1,n−1 1,n

1

2

a a a a2,1 2,2 2,3 2,4 a1,n−1 a1,n

t

t t

t

t

t

t

t1,1

2,1

1,2

2,2

1,3

2,3

1,n−1

2,n−1

completadoSalida

fig 1: Problema de Planificacion

Page 7: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 7 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

El chasıs del automovil entra en cada lınea de en-samble, se adicionan al chasıs las parte necesarias encada estado del proceso, que nos lleva a construirfinalmente el automovil :

? Cada lınea de ensamble tiene n estados, numeradasj = 1, 2, ..., n.

? Un estado es representado por el j -ıesima estado dela lınea i, donde i es 1 o 2.

? El j -ıesimo estado de la lınea 1 (S1, j) realiza lamisma funcion que el j -ıesimo estado de la lınea 2(S2, j).

? Cada estado ejecuta su labor a diferentes horasy con diferentes tecnologıas, ademas el tiempo re-querido por cada estado varia, incluso entre los es-tados de una misma lınea de ensamble.

Page 8: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 8 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

? El tiempo requerido por un estado Si,j en el ensam-ble se representa por ai,j.

? Normalmente, una vez que un chasis entra a unalınea de ensamble, pasa unicamente a traves de esalınea de ensamble.

? El tiempo para transferir un chasıs de una lınea deensamble i a un estado Si,j es denotado por ti,j,donde i = 1, 2 y j = 1, 2, ..., n− 1.

En general, el problema es :

Determinar que estados elegir de la lınea 1 y que esta-dos elegir de la lınea 2 en orden, tal que se mınimize eltiempo total que toma la construccion de un automovil.

Page 9: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 9 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

En el ejemplo siguiente el tiempo total para cons-truir un automovil se encuentra eligiendo los estados1, 3 y 6 de la lınea 1 y los estados 2, 4 y 5 de la lınea 2.

1 2 1 1 2

1 2 1 2 2

Entradachasis

Linea de ensamble 1

Linea de ensamble 2

Estado S

Estado S Estado S Estado S Estado S

Estado SEstado SEstado S

2,1 2,2 2,3 2,4

1,1 1,2 1,3 1,4

completadoSalida

2

4

8 5 6 4

Estado S Estado S

Estado S Estado S

7 9

4

12

31

21

32

2

3 4 8 4

3

2

75

2,5 2,6

1,5 1,6

9 18 20 24 32 35

12 16 22 25 30 37

1 2 3 4 5 6 2 3 4 5 6j j

1

2

f* = 38 l* = 1f [j]

f [j]

l [j]

l [j]

1

2

fig 2: Problema de Planificacion

Page 10: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 10 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Si tenemos una lista con los estados de la lınea 1y los estados de la lınea 2, el costo computacional entomar un chasıs para la construccion del automovil esθ(n).Informtunadamente existe 2n posibles rutas para elegirlos estados y el costo de calcular todas las rutas yescoger la mınima es Ω(2n)

Etapa 1: Busqueda de soluciones al problema

La primera etapa del paradigma de programaciondinamica es la caracterıstica de la estructura de lasolucion optima. Se inicia el problema de la lınea deensamble en el estado S1,j :

? Si j= 1, solo hay un ruta posible para el chasıs.

? Si j = 2, 3, ..., n existen dos opciones, las cualesson:

Page 11: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 11 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

1. Supongamos que la ruta mas corta al estado S1,j

es a traves del estado S1,j−1.

2. Supongamos que la ruta mas corta al estado S1,j

es a traves del estado S2,j−1.

Podemos decir entonces que para la planificacion deuna lınea de ensamble, una solucion optima a unproblema (encontrar una buena ruta a traves de losestados Si,j) contiene dentro de ella una solucin optimaa los subproblemas (encontrar una buena ruta a travesde S1,j−1 o S2,j−1).

La propiedad de las subestructuras optimases unos de las mas importantes en la aplicabilidad dela programacion dinamica.

Utilizamos las subestructura optima para de-mostrar que podemos construir una solucion optima aun problema a traves de las soluciones optimas de lossubproblemas.

Page 12: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 12 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Podemos concluir que un ruta corta para llegar alestado S1,j es a traves del estado j − 1 de la lınea 1 o2 :

? Buscar la ruta mas corta al estado S1,j−1 y entoncesir directamente al estado S1,j, o

? Buscar la ruta mas corta al estado S2,j−1 y moversede la lınea 2 a la lınea 1 y de esta forma llegar alestado S1,j.

Utilizando razonamiento simetrico, la ruta mas corta alestado S2,j es :

? Buscar la ruta mas corta al estado S2,j−1 y entoncesir directamente al estado S2,j, o

? Buscar la ruta mas corta al estado S1,j−1 y moversede la lınea 2 a la lınea 1 y de esta forma llegar alestado S2,j.

Page 13: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 13 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Etapa 2: Una solucon recursiva

La segunda etapa del paradigma de programaciondinamica es definir recursivamente el valor de un solu-cion optima en terminos de las soluciones optimas delos subproblemas.

fi[j] denota el tiempo que toma un chasıs desde elpunto inicial al estado Si,j. La meta es determinar lamejor ruta en la fabricacion del automovil, el cual sedenota por f ∗.La formula para la mejor ruta es la siguiente :

f ∗ = min(f1[n] + x1+, f2[n] + x2) (1)

La solucion sencilla de f1[1] y f2[2] es :

f1[1] = e1 + a1,1 (2)f2[1] = e2 + a2,1 (3)

Page 14: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 14 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Realizamos los calculos de fi[j] para j = 2, 3, ..., n(i = 1, 2) y obtenemos la ecuacion recursiva :

fi[j] =

e1 + a1,1 si j = 1min(f1[j − 1] + a1,j , f2[j − 1] + t2,j−1 + a1,j) si j ≥ 2

f2[j] =

e2 + a2,1 si j = 1min(f2[j − 1] + a2,j , f1[j − 1] + t1,j−1 + a2,j) si j ≥ 2

fi[j] contiene los valores de la soluciones optimas a lossubproblemas.

En li[j] se guarda la ruta trazada (lınea 1 o 2)desde un estado j − 1 para llegar al estado Si,j.

l∗ es la lınea donde el estado n es utilizado en lafabricacion del automovil.

Page 15: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 15 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Etapa 3 : Calculo del tiempoA continuacion mostraremos el algoritmo recursivo delas ecuaciones anteriormente mencionadas :

Los datos de entrada al algoritmo son ai,j, ti,j, ei

y n que es el numero de estados en cada lınea deensamble.

Fastest way (a, t, e, x, n)1 f1[1]← e1 + a1,12 f2[1]← e2 + a2,13 for j ← 2 to n4 do if f1[j − 1] + a1,j ≤ f2[j − 1] + t2,j−1 + a1,j

5 then f1[j]← f1[j − 1] + a1,j

6 l1[j]← 17 else f1[j]← f2[j − 1] + t2,j−1 + a1,j

8 l1[j]← 2

Page 16: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 16 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Continuamos con el algoritmo9 if f2[j − 1] + a2,j ≤ f1[j − 1] + t1,j−1 + a2,j

10 then f2[j]← f2[j − 1] + a2,j

11 l2[j]← 212 else f2[j]← f1[j − 1] + t1,j−1 + a2,j

13 l2[j]← 114 if f1[n] + x1 ≤ f2[n] + x215 then f ∗ = f1[n] + x116 l∗ = 117 else f ∗ = f2[n] + x218 l∗ = 2

Las iteraciones del ciclo for desde la lınea del 3-13toman tiempo θ(n).

Page 17: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 17 of 100

Go Back

Full Screen

Close

Quit

La Planificacion de una lınea de ensamble deAutomoviles

Etapa 4: Construccion de una buena ru-ta

Para calcular los valores de fi[j], f ∗, li[j]yl∗, nece-sitamos construir la secuencia de estados utilizando lamejor ruta para la fabricacion del automovil.

El siguiente procedimiento imprime los estados utiliza-dos en la mejor ruta.

Print stations(l,n)1 i← l∗

2 print ”line ”i”, station”n3 for j ← n downto 24 do i← li[j]5 print ”line ”i”, station”j − 1

Page 18: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 18 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Supongamos que queremos multiplicar 4 matricesA1, A2, A3, A4 :Existen 5 maneras distintas de realizarlo:

1. (A1(A2(A3A4))),

2. (A1((A2A3)A4)),

3. ((A1A2)(A3A4)),

4. ((A1(A2A3))A4),

5. (((A1A2)A3)A4)

La multiplicacion de matrices es asociativa.

Page 19: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 19 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Utilizando el algoritmo estandar de multiplicacionde matrices:

Multiplicar Matrices (A, B)1 if columnas [A] 6= filas [B]2 then error “dimensiones incompatibles”3 else for i← 1 to filas [A]4 do for j ← 1 to columnas [B]5 do C[i, j]← 06 for k ← 1 to columnas [A]7 do c[i, j]← c[i, j]+A [i,k] *

B[k,j]8 return C

La complejidad se mide en terminos de multiplica-ciones, cuyo mumero es (pqr) si A es de orden p× q yB de orden q × r.

Page 20: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 20 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Ilustremos los diferentes costos en que incurren laparentizacion de la multiplicacion de matrices, con-sideremos el problema de multiplicar 3 matrices(A1, A2, A3), entonces el costo (numero de multiplica-ciones) de calcular A1A2A3 de las 2 maneras posiblees:

1. Costo de A2︸︷︷︸100×5

. A3︸︷︷︸5×50

100× 5× 50 = 25000 + Costo

de A1︸︷︷︸10×100

. (A2.A3)︸ ︷︷ ︸100×50

10× 100× 50 = 50000 = 75000

2. Costo de A1︸︷︷︸10×100

. A2︸︷︷︸100×5

10× 100× 5 = 5000 +

Costo de A1.A2︸ ︷︷ ︸10×5

. (A3)︸︷︷︸5×50

10× 5× 50 = 2500 = 7500

Hay una considerable diferencia entre utilizar la solu-cion 1 o la 2.

Page 21: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 21 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

El problema de la multiplicacion de una sucesionde matrices (MSM) es:

? entrada: Una sucesion < A1, . . . , An > de n ma-trices, donde la matriz Ai, 1 ≤ i ≤ n, tiene dimen-sion pi−1 × pi

? Salida: La manera optima de multiplicar las matri-ces (optima = mınimo numero de multiplicaciones)

Note que la salida se puede ver como una manerade poner parentesis a la expresion A1A2 . . . An de talsuerte que indique en que orden realizar las multiplica-ciones.En el caso del ejemplo anterior, una solucion optima(la unica en este caso) fue: (A1A2)A3.

Page 22: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 22 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Una solucion ingenua al problema MSM:

? Enumerar todas las posibles maneras de multiplicarlas n matrices, calculando su costo respectivo.

? Escoger la de menor costo.

Esta solucion es ingenua pues el numero de posiblesmaneras de multiplicar las n matrices es:

P (n) =

1 si n = 2∑n−1

k=1 P (k)P (n− k) Si n > 2

y P (n) = Ω(4n/n3/2)

Page 23: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 23 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Tratemos de aplicar otra tecnica: ProgramacionDinamica.

Etapa 1: Estructura de una solucion optima

Sea Ai..j la matriz que resulta de evaluar Ai . . . Aj.Una solucion optima para calcular A1..n, se divide enuna solucion optima para calcular A1..k y una solucionoptima para calcular Ak+1..n, para algun k, 1 ≤ k <n.Entonces el costo de una solucion optima es la sumade:

? Costo de una solucion optima para A1..k

? Costo de una solucion optima para Ak+1..n

? Costo de multiplicar A1..k por Ak+1..n

Page 24: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 24 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Observacion clave: La solucion para el proble-ma A1..k implıcita dentro de una solucion optima paraA1..n, es una solucion optima para ese subproblema(A1..k).

Si esto no fuera ası, entonces la solucion para A1..n quese esta proclamando como optima no lo serıa.

Entonces: toda solucion optima para el proble-ma A1..n, contiene dentro de sı, soluciones optimas paralos subproblemas encontrados.

Propiedad de las subestructuras optimas dentrode soluciones optimas, es uno de los sellos de laviabilidad de una solucion por programacion dinamica.

Page 25: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 25 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Etapa 2: Solucion recursivaLa estructura descrita anteriormente nos permiteconcluir que los subproblemas que se presentaranpara calcular la solucion optima seran del estilo:Ai..j, 1 ≤ i < j ≤ n

Sea m[i, j], el mınimo numero de multiplicacionesnecesarias para calcular Ai..j, entonces lo esencial delproblema es calcular m[1, n], para esto definamosm[i, j] recursivamente como :

m[i, j] =

0 si i = jmini≤k<jm[i, k] + m[k + 1, j] + pi−1pkpj si i < j

Para ayudar a construir una solucion optima definire-mos otra matriz, s, tal que:

s[i, j] = k si m[i, j] = m[i, k] + m[k + 1, j] + pi−1pkpj

Page 26: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 26 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Etapa 4: Calcular el costo (valor) de unasolucion optima

? Solucion ingenua: hacer un algoritmo recursivobasado en la formula recursiva descrita en el puntoanterior: Muy costoso!!! (Exponencial)

? Observacion importante: pocos subproblemas

|Ai..j : 1 ≤ i < j ≤ n| = 1+2+. . .+(n−1) = θ(n2))

Esto quiere decir que cada subproblema puedeaparecer repetidas veces en diferentes ramas delarbol de recursion.

? Clave: Calcular m[i, j]de abajo hacia arriba y norecursivamente.

Page 27: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 27 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

O sea que lo mejor serıa recorrer el triangulo superiorpor diagonales, para garantizar que en el momento decalcular un m[i, j], se tiene calculado el valor en susdependencias:

1

2

3

4

5

6 1

2

3

4

5

6

m

A A A A A A1 2 3 4 5 6

15,125

11,875 10,5009,375

7,125 5,375

3,500

5,000

000000

15,750

7,875 4,375

7502,625

2,500

1,000

Page 28: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 28 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Entonces, el algoritmo para calcular m[i, j] segunlos esquemas anteriores serıa:

Orden Sucesion Matrices (p)1 n← length[p]− 12 for i← 1 to n3 do m[i, i]← 0

B se lleno la diagonal 14 for l← 2 to nBl es la diagonal que se va a llenar.5 do for i← 1 to n− l + 16 do j ← i + l − 17 m[i, j]←∞8 for k ← i to j − 19 do q ← m[i, k] + m[k + 1, j]+

B p[i− 1]× p[k]× p[j]10 if q < m[i, j]11 then m[i, j]← q12 s[i, j]← k13 return m, s

Page 29: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 29 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

La complejidad de esta solucion es trivial O(n3).Se puede demostrar que es Ω(n3), es decir θ(n3).

En espacio, se requiere θ(n2) para almacenar m ys. Mucho mas eficiente que las soluciones descritasanteriormente.

Miremos un ejemplo :

Matriz OrdenA1 30× 35A2 35× 15A3 15× 5A4 5× 10A5 10× 20A6 20× 25

Page 30: Programación Dinámica

Home Page

Title Page

Contents

JJ II

J I

Page 30 of 100

Go Back

Full Screen

Close

Quit

Multiplicacion de una Sucesion de Matrices

Etapa 4: Construir una solucion optima

En m[1, n] queda el valor de una solucion optima,pero falta dar (exhibir) una solucion, para ello seutiliza s.

Print Optiomal Parens (s, i, j)1 if i = j2 then print A3 else print ”(”4 print Optiomal Parens(s,i,s[i,j])5 print Optiomal Parens(s,s[i,j]+1, j)6 print ”)”