Vous êtes sur la page 1sur 30

Programacion Dinamica

Profesor: Julio Cesar Lopez


Home Page
Title Page
Contents

JJ

II

Page 1 of 100
Go Back
Full Screen
Close
Quit

jlopez@eisc.univalle.edu.co

8 de noviembre de 2003

Generalidades
La programacion Dinamica :

Home Page

Como la tecnica Dividir y Conquistar, la programaci


on din
amica es una tecnica para resolver
problemas, a partir de la solucion a subproblemas
y la combinacion de esas soluciones.

Title Page
Contents

JJ

II

Page 2 of 100

A diferencia de la tecnica Dividir y Conquistar, la


Programaci
on din
amica es aplicable cuando
los subproblemas no son independientes (en cuyo
caso Dividir y Conquistar hace mucho trabajo
repetido).

Go Back
Full Screen
Close
Quit

Un algoritmo que sigue esta tecnica resuelve cada


subproblema una sola vez y guarda su respuesta en
una tabla, evitando as volver a calcular la respuesta
cada vez que el subproblema aparezca.

Generalidades (Cont.)
Home Page
Title Page
Contents

Esta tecnica es tpicamente aplicada para resolver


problemas de optimizaci
on:

JJ

II

? Problemas con muchas soluciones.

? Cada solucion tiene asociado un valor

Page 3 of 100
Go Back
Full Screen
Close
Quit

? Se busca una solucion con un valor optimo


(maximo o mnimo), entre las muchas soluciones
con valor optimo que pueden existir.

Generalidades (Cont.)

Home Page
Title Page
Contents

JJ

II

Page 4 of 100
Go Back
Full Screen
Close
Quit

? El desarrollo de un algoritmo usando la tecnica de


programaci
on din
amica puede ser dividido en los
siguientes pasos:
1. Caracterizar la estructura de una solucion
optima.
2. Definir recursivamente el valor de una solucion optima.
3. Calcular el Valor de una solucion optima de
manera abajo hacia arriba (bottom-up).
4. Construir una solucion optima a partir de la
informacion calculada.

Generalidades (Cont.)

Home Page
Title Page
Contents

JJ

II

Page 5 of 100

Utilizando proramaci
on dinamica se solucionan
problemas de optimizacion como:
? El problema de planificacion en una fabrica de automoviles.
? Multiplicacion de una sucesion de matrices.
? Construir un arbol de busqueda binaria que se optimo.

Go Back
Full Screen
Close
Quit

? Otros ejemplos: la subcadena mas larga, triangulacion de polgonos convexos,...

La Planificaci
on de una lnea de ensamble de
Autom
oviles
La Corporacion Colonel Motors produce automoviles en una fabrica que tiene dos lneas de
ensamble.
Home Page

Estado S 1,1

Title Page

Linea de
ensamble 1

Contents

JJ

II

Page 6 of 100
Go Back
Full Screen
Close

a1,1

Estado S 1,2
a1,2

Estado S 1,3
a1,3

Estado S 1,4
a1,4

Estado S 1,n1 Estado S 1,n


a1,n1

a1,n
x1

e1

Entrada
chasis

t 1,1

t 1,2

t 1,3

t 2,1

t 2,3

e2

Linea de
ensamble 2

2,2

t 1,n1

. . . .

completado
Salida

t 2,n1
x2

a2,1
Estado S 2,1

a2,2
Estado S 2,2

a2,3
Estado S 2,3

a2,4
Estado S 2,4

a1,n1

a1,n

Estado S 2,n1 Estado S 2,n

Quit

fig 1: Problema de Planificaci


on

La Planificaci
on de una lnea de ensamble de
Autom
oviles
El chass del automovil entra en cada lnea de ensamble, se adicionan al chass las parte necesarias en
cada estado del proceso, que nos lleva a construir
finalmente el automovil :
Home Page
Title Page

? Cada lnea de ensamble tiene n estados, numeradas


j = 1, 2, ..., n.

Contents

JJ

II

Page 7 of 100
Go Back
Full Screen
Close
Quit

? Un estado es representado por el j-esima estado de


la lnea i, donde i es 1 o 2.
? El j-esimo estado de la lnea 1 (S1, j) realiza la
misma funcion que el j-esimo estado de la lnea 2
(S2, j).
? Cada estado ejecuta su labor a diferentes horas
y con diferentes tecnologas, ademas el tiempo requerido por cada estado varia, incluso entre los estados de una misma lnea de ensamble.

La Planificaci
on de una lnea de ensamble de
Autom
oviles
? El tiempo requerido por un estado Si,j en el ensamble se representa por ai,j .
Home Page
Title Page
Contents

JJ

II

Page 8 of 100
Go Back

? Normalmente, una vez que un chasis entra a una


lnea de ensamble, pasa unicamente a traves de esa
lnea de ensamble.
? El tiempo para transferir un chass de una lnea de
ensamble 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 :

Full Screen
Close
Quit

Determinar que estados elegir de la lnea 1 y que estados elegir de la lnea 2 en orden, tal que se mnimize el
tiempo total que toma la construccion de un automovil.

La Planificaci
on de una lnea de ensamble de
Autom
oviles
En el ejemplo siguiente el tiempo total para construir un automovil se encuentra eligiendo los estados
1, 3 y 6 de la lnea 1 y los estados 2, 4 y 5 de la lnea 2.
Estado S 1,1
Home Page
Title Page

Estado S 1,2

Linea de
ensamble 1

Estado S 1,3

Estado S 1,4

Estado S 1,5

Estado S 1,6

4
3

Contents

JJ

II

Entrada
chasis

completado
Salida

Page 9 of 100
Go Back

Linea de
ensamble 2

8
Estado S 2,1

Full Screen
Close
Quit

f [j] 9
1

Estado S 2,2

Estado S 2,3

Estado S 2,4

18 20 24 32 35

f [j] 12 16 22 25 30 37
2

f* = 38

Estado S 2,5

Estado S 2,6

l [j]

l [j] 1

1
2

fig 2: Problema de Planificaci


on

l* = 1

La Planificaci
on de una lnea de ensamble de
Autom
oviles

Home Page
Title Page
Contents

JJ

II

Page 10 of 100
Go Back
Full Screen

Si tenemos una lista con los estados de la lnea 1


y los estados de la lnea 2, el costo computacional en
tomar un chass para la construccion del automovil es
(n).
Informtunadamente existe 2n posibles rutas para elegir
los estados y el costo de calcular todas las rutas y
escoger la mnima es (2n)
Etapa 1: B
usqueda de soluciones al problema
La primera etapa del paradigma de programaci
on
din
amica es la caracterstica de la estructura de la
solucion optima. Se inicia el problema de la lnea de
ensamble en el estado S1,j :

Close
Quit

? Si j= 1, solo hay un ruta posible para el chass.


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

La Planificaci
on de una lnea de ensamble de
Autom
oviles
1. Supongamos que la ruta mas corta al estado S1,j
es a traves del estado S1,j1.
2. Supongamos que la ruta mas corta al estado S1,j
es a traves del estado S2,j1.
Home Page
Title Page
Contents

JJ

II

Page 11 of 100
Go Back
Full Screen

Podemos decir entonces que para la planificacion de


una lnea de ensamble, una solucion optima a un
problema (encontrar una buena ruta a traves de los
estados Si,j ) contiene dentro de ella una solucin optima
a los subproblemas (encontrar una buena ruta a traves
de S1,j1 o S2,j1).
La propiedad de las subestructuras
optimas
es unos de las mas importantes en la aplicabilidad de
la programacion dinamica.

Close
Quit

Utilizamos las subestructura


optima para demostrar que podemos construir una solucion optima a
un problema a traves de las soluciones optimas de los
subproblemas.

La Planificaci
on de una lnea de ensamble de
Autom
oviles
Podemos concluir que un ruta corta para llegar al
estado S1,j es a traves del estado j 1 de la lnea 1 o
2:
Home Page

? Buscar la ruta mas corta al estado S1,j1 y entonces


ir directamente al estado S1,j , o

Title Page
Contents

JJ

II

Page 12 of 100

? Buscar la ruta mas corta al estado S2,j1 y moverse


de la lnea 2 a la lnea 1 y de esta forma llegar al
estado S1,j .
Utilizando razonamiento simetrico, la ruta mas corta al
estado S2,j es :

Go Back
Full Screen

? Buscar la ruta mas corta al estado S2,j1 y entonces


ir directamente al estado S2,j , o

Close
Quit

? Buscar la ruta mas corta al estado S1,j1 y moverse


de la lnea 2 a la lnea 1 y de esta forma llegar al
estado S2,j .

La Planificaci
on de una lnea de ensamble de
Autom
oviles
Etapa 2: Una soluc
on recursiva

Home Page

La segunda etapa del paradigma de programacion


dinamica es definir recursivamente el valor de un solucion optima en terminos de las soluciones optimas de
los subproblemas.

Title Page
Contents

JJ

II

Page 13 of 100

fi[j] denota el tiempo que toma un chass desde el


punto inicial al estado Si,j . La meta es determinar la
mejor ruta en la fabricacion del automovil, el cual se
denota por f .
La formula para la mejor ruta es la siguiente :

Go Back
Full Screen

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

Close
Quit

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


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

La Planificaci
on de una lnea de ensamble de
Autom
oviles
Realizamos los calculos de fi[j] para j = 2, 3, ..., n
(i = 1, 2) y obtenemos la ecuacion recursiva :
Home Page

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

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

fi [j] =
Title Page
Contents

f2 [j] =
JJ

II

Page 14 of 100
Go Back
Full Screen

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


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

Close
Quit

l es la lnea donde el estado n es utilizado en la


fabricacion del automovil.

La Planificaci
on de una lnea de ensamble de
Autom
oviles
Etapa 3 : Calculo del tiempo
A continuacion mostraremos el algoritmo recursivo de
las ecuaciones anteriormente mencionadas :
Home Page
Title Page
Contents

JJ

II

Page 15 of 100
Go Back
Full Screen
Close
Quit

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


y n que es el numero de estados en cada lnea de
ensamble.
Fastest way (a, t, e, x, n)
1 f1[1] e1 + a1,1
2 f2[1] e2 + a2,1
3 for j 2 to n
4
do if f1[j 1] + a1,j f2[j 1] + t2,j1 + a1,j
5
then f1[j] f1[j 1] + a1,j
6
l1[j] 1
7
else f1[j] f2[j 1] + t2,j1 + a1,j
8
l1[j] 2

La Planificaci
on de una lnea de ensamble de
Autom
oviles

Home Page
Title Page
Contents

JJ

II

Page 16 of 100
Go Back
Full Screen

Continuamos con el algoritmo


9
if f2[j 1] + a2,j f1[j 1] + t1,j1 + a2,j
10
then f2[j] f2[j 1] + a2,j
11
l2[j] 2
12
else f2[j] f1[j 1] + t1,j1 + a2,j
13
l2[j] 1
14 if f1[n] + x1 f2[n] + x2
15 then f = f1[n] + x1
16
l = 1
17 else f = f2[n] + x2
18
l = 2

Close
Quit

Las iteraciones del ciclo for desde la lnea del 3-13


toman tiempo (n).

La Planificaci
on de una lnea de ensamble de
Autom
oviles
Etapa 4: Construcci
on de una buena ruta
Home Page
Title Page

Para calcular los valores de fi[j], f , li[j]yl, necesitamos construir la secuencia de estados utilizando la
mejor ruta para la fabricacion del automovil.

Contents

JJ

II

Page 17 of 100
Go Back
Full Screen
Close
Quit

El siguiente procedimiento imprime los estados utilizados en la mejor ruta.


Print stations(l,n)
1 i l
2 print line i, stationn
3 for j n downto 2
4
do i li[j]
5
print line i, stationj 1

Multiplicaci
on de una Sucesi
on de Matrices

Home Page

Supongamos que queremos multiplicar 4 matrices


A1, A2, A3, A4 :
Existen 5 maneras distintas de realizarlo:

Title Page

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

Contents

JJ

II

2. (A1((A2A3)A4)),
3. ((A1A2)(A3A4)),

Page 18 of 100
Go Back
Full Screen
Close
Quit

4. ((A1(A2A3))A4),
5. (((A1A2)A3)A4)
La multiplicacion de matrices es asociativa.

Multiplicaci
on de una Sucesi
on de Matrices
Utilizando el algoritmo estandar de multiplicacion
de matrices:

Home Page
Title Page
Contents

JJ

II

Page 19 of 100
Go Back

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] 0
6
for k 1 to columnas [A]
7
do c[i, j] c[i, j]+A [i,k] *
B[k,j]
8
return C

Full Screen
Close
Quit

La complejidad se mide en terminos de multiplicaciones, cuyo mumero es (pqr) si A es de orden p q y


B de orden q r.

Multiplicaci
on de una Sucesi
on de Matrices

Home Page
Title Page
Contents

JJ

II

Page 20 of 100
Go Back

Ilustremos los diferentes costos en que incurren la


parentizacion de la multiplicacion de matrices, consideremos el problema de multiplicar 3 matrices
(A1, A2, A3), entonces el costo (numero de multiplicaciones) de calcular A1A2A3 de las 2 maneras posible
es:
1. Costo de |{z}
A2 . |{z}
A3 100 5 50 = 25000 + Costo
1005

550

de |{z}
A1 . (A2.A3) 10 100 50 = 50000 = 75000
| {z }
10100

10050

2. Costo de |{z}
A1 . |{z}
A2 10 100 5

= 5000 +

10100 1005

Full Screen
Close
Quit

Costo de A
.A}2 . (A3) 10 5 50 = 2500 = 7500
| 1{z
|{z}
105

550

Hay una considerable diferencia entre utilizar la solucion 1 o la 2.

Multiplicaci
on de una Sucesi
on de Matrices
El problema de la multiplicaci
on de una sucesi
on
de matrices (MSM) es:
Home Page
Title Page

? entrada: Una sucesion < A1, . . . , An > de n matrices, donde la matriz Ai, 1 i n, tiene dimension pi1 pi

Contents

JJ

II

Page 21 of 100
Go Back
Full Screen
Close
Quit

? Salida: La manera optima de multiplicar las matrices (optima = mnimo numero de multiplicaciones)
Note que la salida se puede ver como una manera
de poner parentesis a la expresion A1A2 . . . An de tal
suerte que indique en que orden realizar las multiplicaciones.
En el caso del ejemplo anterior, una solucion optima
(la unica en este caso) fue: (A1A2)A3.

Multiplicaci
on de una Sucesi
on de Matrices
Una solucion ingenua al problema MSM:
Home Page
Title Page
Contents

? Escoger la de menor costo.

JJ

II

Page 22 of 100
Go Back
Full Screen
Close
Quit

? Enumerar todas las posibles maneras de multiplicar


las n matrices, calculando su costo respectivo.
Esta solucion es ingenua pues el numero de posibles
manerasde multiplicar las n matrices es:
1
si n = 2
P (n) = Pn1
k=1 P (k)P (n k) Si n > 2
y P (n) = (4n/n3/2)

Multiplicaci
on de una Sucesi
on de Matrices
Tratemos de aplicar otra tecnica: Programacion
Dinamica.
Etapa 1: Estructura de una soluci
on
optima
Home Page
Title Page
Contents

JJ

II

Page 23 of 100
Go Back
Full Screen
Close

Sea Ai..j la matriz que resulta de evaluar Ai . . . Aj .


Una solucion optima para calcular A1..n, se divide en
una solucion optima para calcular A1..k y una solucion
optima para calcular Ak+1..n, para algun k, 1 k <
n.
Entonces el costo de una solucion optima es la suma
de:
? Costo de una solucion optima para A1..k
? Costo de una solucion optima para Ak+1..n

Quit

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

Multiplicaci
on de una Sucesi
on de Matrices

Home Page

Observaci
on clave: La solucion para el problema A1..k implcita dentro de una solucion optima para
A1..n, es una solucion optima para ese subproblema
(A1..k ).

Title Page

Si esto no fuera as, entonces la solucion para A1..n que


se esta proclamando como optima no lo sera.

Contents

JJ

II

Page 24 of 100
Go Back
Full Screen
Close
Quit

Entonces: toda solucion optima para el problema A1..n, contiene dentro de s, soluciones optimas para
los subproblemas encontrados.
Propiedad de las subestructuras
optimas dentro
de soluciones
optimas, es uno de los sellos de la
viabilidad de una solucion por programacion dinamica.

Multiplicaci
on de una Sucesi
on de Matrices

Home Page
Title Page
Contents

JJ

II

Etapa 2: Soluci
on recursiva
La estructura descrita anteriormente nos permite
concluir que los subproblemas que se presentaran
para calcular la solucion optima seran del estilo:
Ai..j , 1 i < j n
Sea m[i, j], el mnimo numero de multiplicaciones
necesarias para calcular Ai..j , entonces lo esencial del
problema es calcular m[1, n], para esto definamos
m[i, j] recursivamente como :

Page 25 of 100


Go Back

m[i, j] =

0
si i = j
minik<j {m[i, k] + m[k + 1, j] + pi1 pk pj } si i < j

Full Screen
Close
Quit

Para ayudar a construir una solucion optima definiremos otra matriz, s, tal que:
s[i, j] = k si m[i, j] = m[i, k] + m[k + 1, j] + pi1pk pj

Multiplicaci
on de una Sucesi
on de Matrices
Etapa 4: Calcular el costo (valor) de una
soluci
on
optima
Home Page
Title Page
Contents

? Observacion importante: pocos subproblemas

JJ

II

Page 26 of 100
Go Back
Full Screen
Close
Quit

? Solucion ingenua: hacer un algoritmo recursivo


basado en la formula recursiva descrita en el punto
anterior: Muy costoso!!! (Exponencial)

|{Ai..j : 1 i < j n}| = 1+2+. . .+(n1) = (n2))


Esto quiere decir que cada subproblema puede
aparecer repetidas veces en diferentes ramas del
arbol de recursion.
? Clave: Calcular m[i, j]de abajo hacia arriba y no
recursivamente.

Multiplicaci
on de una Sucesi
on de Matrices

Home Page

O sea que lo mejor sera recorrer el triangulo superior


por diagonales, para garantizar que en el momento de
calcular un m[i, j], se tiene calculado el valor en sus
dependencias:
m

Title Page

6
Contents

JJ

II

4
3

Page 27 of 100
Go Back

1
Full Screen
Close
Quit

15,125

11,875
9,375

A1

A2

2
10,500

   5,375


 
4

2,500
    3,500
5
         
750
  1,000
     5,000
    

7,125

    4,375


 
     






    
  2,625
15,750














      






 0      0












7,875

A3

A4

A5

6
0
A6

Multiplicaci
on de una Sucesi
on de Matrices
Entonces, el algoritmo para calcular m[i, j] segun
los esquemas anteriores sera:

Home Page
Title Page
Contents

JJ

II

Page 28 of 100
Go Back
Full Screen
Close
Quit

Orden Sucesion Matrices (p)


1 n length[p] 1
2 for i 1 to n
3
do m[i, i] 0
B se lleno la diagonal 1
4 for l 2 to n
Bl es la diagonal que se va a llenar.
5
do for i 1 to n l + 1
6
do j i + l 1
7
m[i, j]
8
for k i to j 1
9
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] q
12
s[i, j] k
13 return m, s

Multiplicaci
on de una Sucesi
on de Matrices
La complejidad de esta solucion es trivial O(n3).
Se puede demostrar que es (n3), es decir (n3).
Home Page
Title Page

En espacio, se requiere (n2) para almacenar m y


s. Mucho mas eficiente que las soluciones descritas
anteriormente.

Contents

JJ

II

Page 29 of 100
Go Back
Full Screen
Close
Quit

Miremos un ejemplo :
Matriz
A1
A2
A3
A4
A5
A6

Orden
30 35
35 15
15 5
5 10
10 20
20 25

Multiplicaci
on de una Sucesi
on de Matrices
Etapa 4: Construir una soluci
on
optima
Home Page
Title Page
Contents

JJ

II

Page 30 of 100
Go Back
Full Screen
Close
Quit

En m[1, n] queda el valor de una solucion optima,


pero falta dar (exhibir) una solucion, para ello se
utiliza s.
Print Optiomal Parens (s, i, j)
1 if i = j
2 then print A
3 else print (
4
print Optiomal P arens(s,i,s[i,j])
5
print Optiomal P arens(s,s[i,j]+1, j)
6
print )

Vous aimerez peut-être aussi