Académique Documents
Professionnel Documents
Culture Documents
Introduccin
bi xi
1i n
pi xi C
1i n
con 0 xi 1, bi 0, pi 0, 1 i n
Programacin dinmica:
Introduccin
Ejemplo:
n=3
C=15
(b1,b2,b3)=(38,40,24)
(p1,p2,p3)=(9,6,5)
Programacin dinmica:
Introduccin
R. Bellman: Dynamic Programming,
Princeton University Press, 1957.
Programacin dinmica:
Introduccin
Supongamos que un problema se resuelve tras
tomar un secuencia d1, d2, , dn de decisiones.
Si hay d opciones posibles para cada una de las
decisiones, una tcnica de fuerza bruta
explorara un total de dn secuencias posibles de
decisiones (explosin combinatoria).
La tcnica de programacin dinmica evita
explorar todas las secuencias posibles por medio
de la resolucin de subproblemas de tamao
creciente y almacenamiento en una tabla de las
soluciones ptimas de esos subproblemas para
facilitar la solucin de los problemas ms
grandes.
maximizar bi xi
ik
sujeto a pi xi P
ik
con xi {0,1} , k i l
w
w
w
g j (c ) max g j 1(c ) , g j 1(c p j ) b j
Problema: ineficiencia
Un problema de tamao n se reduce a dos
subproblemas de tamao (n-1).
Cada uno de los dos subproblemas se reduce a
otros dos
Por tanto, se obtiene un algoritmo exponencial.
w
La funcin g j (c ) tiene dos parmetros:
el primero puede tomar n valores distintos y
el segundo, C valores.
Luego slo hay nC problemas diferentes!
1
0
0
0
2
0
0
0
3
0
0
0
4
0
0
0
5
0
0
24
6
0
40
40
7
0
40
40
8
0
40
40
9
38
40
40
10
38
40
40
11
38
40
64
12
38
40
64
w
w
w
g j (c ) max g j 1(c ) , g j 1(c p j ) b j
13
38
40
64
14
38
40
64
15
38
78
78
Consideraciones finales
Cada componente de la tabla g se calcula en
tiempo constante, luego el coste de construccin
de la tabla es O(nC).
El algoritmo test se ejecuta una vez por cada
valor de j, desde n descendiendo hasta 0, luego
su coste es O(n).
Si C es muy grande, entonces esta solucin no es
buena.
Si los pesos pi o la capacidad C son reales,
esta solucin no sirve.
Grafo multietapa:
Un grafo multietapa G=(V,A) es un grafo
dirigido en el que se puede hacer una particin
del conjunto V de vrtices en k (k2) conjuntos
distintos Vi, 1ik, tal que todo arco del grafo
(u,v) es tal que uVi y vVi+1 para algn i, 1i<k.
Los conjuntos V1 y Vk tienen un solo vrtice que
se llama vrtice origen, o, y vrtice destino, d,
respectivamente.
V1
V2
V3
2
5
1
2
3
1
5
4
6
9
7
11
V4
V5
5
9
10 d
12
V2
V3
2
5
1
2
3
1
5
4
6
9
7
11
V4
V5
5
9
12
10 d
Ejemplo de aplicacin:
Se tienen n unidades de un recurso que deben
asignarse a r proyectos.
Si se asignan j, 0jn, unidades al proyecto i se
obtiene un beneficio Ni,j.
El problema es asignar el recurso a los r
proyectos maximizando el beneficio total.
v2,0
v3,0
N 1,0
max { N 3,i }
i 0,1,2,3,4
N 2,1
N 1,1
N 2,0
v2,1
o v1,0
max { N 3,i }
N 2,2
N 2,3
N 1,2
v3,1
i 0,1,2,3
N 2,1
v2,2
N 2,0
v3,2
N 2,1
N 1,3
N 2,2
v2,3
N 2,0
N 2,1
N 1,4
v2,4
N
N 2,2 2,3
max{ N 3,i }
i 0,1
v3,3
N 2,4
N 2,0
max { N 3,i }
i 0,1,2
v3,4
N 3,0
d v4,4
V2
V3
2
5
1
2
3
1
5
4
7
11
V4
V5
5
9
10 d
12
si ( j ,d) A
en otro caso
V1
V2
V3
2
5
1
2
3
1
5
4
6
9
7
11
V4
V5
5
9
12
10 d
si ( j ,d) A
en otro caso
V1
V2
V3
2
5
1
2
3
1
5
4
6
9
7
11
V4
V5
5
9
10 d
12
V2
V3
2
5
5
4
6
9
7
11
V4
D(3, 5) 7 ; D(3,6) 8
D(2, 2) 6; D(2, 3) 5; D(2, 4) 5
D(1,1) 2
v1
v2
v3
v4
1
D(1,1) 2
D(2,D(1,1)) 6
D(3,D(2,D(1,1))) 8
V5
5
9
12
10 d
Anlogamente, se desarrolla la
recurrencia hacia atrs.
Ecuacin de recurrencia hacia atrs:
Sea s(i,j) un camino de coste mnimo C*(i,j)
desde el vrtice origen o hasta el vrtice j del
conjunto Vi.
Entonces:
c(o , j) ,
C (2, j)
,
si (o , j) A
en otro caso
V1
V2
V3
2
5
1
2
3
1
5
4
6
9
7
11
V4
V5
5
9
12
10 d
Multiplicacin de una
secuencia de matrices
Mn
n multip.
10582
54201
2856
4055
26418
Multiplicacin de una
secuencia de matrices
Mi ) (Mi 1Mi 2
Mn )
n1
T (i)T (n i) ,
i 1
T (1) 1
Nmeros de Catalan
para n 1
Multiplicacin de una
secuencia de matrices
Por ejemplo:
n 1 2 3 4 5 10
15
T (n) 1 1 2 5 14 4862 2674440
Multiplicacin de una
secuencia de matrices
S. Godbole: On efficient computation of
matrix chain
products, IEEE Transactions on
Computers, 22(9),
pp. 864-866, 1973.
Mtodo:
Construir la matriz [mij], 1ijn, donde mij da el
ptimo (i.e., el nmero de multiplicaciones
escalares requeridas) para la parte Mi Mi 1 M j
del producto total.
La solucin final vendr dada por m1n.
Multiplicacin de una
secuencia de matrices
Construccin de [mij], 1ijn:
Guardar las dimensiones de las Mi, 1in, en
un vector d, de 0..n componentes, de forma
que Mi tiene dimensiones di-1di.
La diagonal s de [mij] contiene los mij tales
que j-i=s:
s 0:
mi ,i 0, para i 1, 2,
s 1:
mi ,i 1 di 1di di 1 , para i 1, 2,
1 s n: mi ,i s
min
i ki s 1
para i 1, 2,
,n
,n 1
,n s
Multiplicacin de una
secuencia de matrices
j 1 2
3
4
i 1 0 5785 1530 2856
2
s3
1335 1845
s2
3
4
9078
0
s 1
s 0
Multiplicacin de una
secuencia de matrices
Multiplicacin de una
secuencia de matrices
algoritmo parentOpt(ent d:vect[0..n]de nat;
sal m:vect[1..n,1..n]de nat;
sal km:vect[1..n,1..n]de 1..n)
{m es la matriz [mij] definida antes;
km[i,j] guarda el ndice k para el que se alcanza
el mnimo al calcular m[i,j].}
variables i,r,j,k,q:nat;
principio
para i:=1 hasta n hacer
m[i,i]:=0
fpara;
para r:=2 hasta n hacer
para i:=1 hasta n-r+1 hacer
j:=i+r-1;
m[i,j]:=;
para k:=i hasta j-1 hacer
q:=m[i,k]+m[k+1,j]+d[i-1]*d[k]*d[j];
si q<m[i,j]
entonces
m[i,j]:=q;
km[i,j]:=k
fsi
fpara
fpara
fpara
fin
Multiplicacin de una
secuencia de matrices
Coste en tiempo:
(n3)
Coste en memoria:
(n2)
Multiplicacin de una
secuencia de matrices
Problema:
Clculo de los caminos de coste mnimo entre
todos los pares de vrtices de un grafo dirigido
sin ciclos de peso negativo.
Principio de optimalidad:
Si i1, i2, , ik, ik+1, , in es un camino de coste
mnimo de i1 a in, entonces:
i1, i2, , ik es un camino de coste mnimo de
i1 a ik, y
ik, ik+1, , in es un camino de coste mnimo
de ik a in.
D0 (i , j) C(i , j) , 1 i n, 1 j n
En resumen:
Se tiene la siguiente ecuacin recurrente que
define el mtodo de programacin dinmica.
Dk (i , j) min Dk 1 (i , j) , Dk 1 (i ,k ) Dk 1 (k , j) ,
k 1
D0 (i , j) C(i , j) , 1 i n, 1 j n
funcin Floyd(g:grafo)
devuelve vector[vrt,vrt] de etiq
variables D:vector[vrt,vrt] de etiq;
u,v,w:vrt; et,val:etiq
principio
{inicialmente la distancia entre dos vrtices
tiene el valor de la arista que los une;
las diagonales se ponen a cero}
fpara;
D[v,v]:=0
fpara;
...
Espacio:
Floyd exige (n2) mientras que Dijkstra precisa
(n)
Un problema de fiabilidad de
sistemas
El problema:
Disear un sistema compuesto de varios
dispositivos conectados en serie.
D1
D2
D3
Dn
i 1ri
0,904
Un problema de fiabilidad de
sistemas
Una forma de aumentar la fiabilidad es duplicar
los dispositivos (en paralelo).
D1
D1
D1
D2
D2
D3
D3
D3
D3
Fase 1
Fase 2
Fase 3
Dn
Dn
Dn
Fase n
1i n i (mi )
Un problema de fiabilidad de
sistemas
El problema: maximizar la fiabilidad duplicando
los dispositivos y con alguna limitacin en el
coste.
maximizar
sujeto a
i (mi )
1i n
ci mi c
1i m
mi 1 y entero , 1 i n
ui c ci c j ci
j 1
Un problema de fiabilidad de
sistemas
Una solucin ptima m1, m2, , mn es el
resultado de una secuencia de decisiones, una
por cada mi.
Denotemos:
fi (x) mximo
sujeto a
1 j i
j (m j )
1 j i
cjm j x
1 mj u j , 1 j i
Un problema de fiabilidad de
sistemas
La ltima decisin requiere elegir mn de entre
{1,2,3,,un}.
Una vez tomada la ltima decisin, las restantes
decisiones deben utilizar el resto de fondos
c-cnmn de forma ptima.
Se cumple el principio de optimalidad y
f n (c ) max
1 mn un
n ( mn )
f n 1 (c cnmn )
f i (x ) max i ( mi ) f i 1 (x ci mi )
1 mi ui
Recordar:
Encontrar un recorrido de longitud mnima para
un viajante que tiene que visitar varias ciudades
y volver al punto de partida, conocida la
distancia existente entre cada dos ciudades.
Es decir, dado un grafo dirigido con arcos de
longitud no negativa, se trata de encontrar un
circuito de longitud mnima que comience y
termine en el mismo vrtice y pase exactamente
una vez por cada uno de los vrtices restantes
(circuito hamiltoniano).
Ms vueltas!
(*)
Adems:
g (i ,) Li 1 ,
i 2, 3,,n
Mtodo de resolucin:
Usar (*) y calcular g para todos los conjunto
S con un solo vrtice (distinto del 1).
Volver a usar (*) y calcular g para todos los
conjuntos S de dos vrtices (distintos del 1) y
as sucesivamente.
Cuando se conoce el valor de g para todos
los conjuntos S a los que slo les falta un
vrtice (distinto del 1) basta calcular
g(1,V\{1}).
10
0
13
8
15
9
0
9
20
10
12
0
Inicializacin:
g(2,) = 5;
g(3,) = 6;
g(4,) = 8.
g(3,{4}) = 20;
g(4,{3}) = 15.
Finalmente:
g (1,{ 2, 3, 4}) min{ L12 g (2,{ 3, 4}) ,
L13 g (3,{ 2, 4}) ,
L14 g (4 ,{ 2, 3}) }
min{ 35, 40, 43 } 35.
En el ejemplo:
J(2,{3,4}) = 4;
J(4,{2,3}) = 2;
J(3,{2,4}) = 4;
J(1,{2,3,4}) = 2.
(n 1) n 2 k sumas en total ,
k
n 2
2(n 1) (n 1)k
n2 2n
k
k 1
Puesto que
r
k
k r 2r 1
k 1
tiempo
espacio
nmero de
tiempo
vrtices fuerza bruta prog . dinmica prog . dinmica
n
n!
n2 2n
n 2n
5
10
15
20
120
3628800
1 , 31 1012
2 , 43 1018
800
102400
7372800
419430400
160
10240
491520
20971520
Planificacin de trabajos
El problema:
Sea un sistema en el que la realizacin de un conjunto de trabajos requiere la ejecucin por parte
de un conjunto de agentes (o procesadores) de
una serie de tareas diferentes para cada trabajo.
Planificacin de trabajos
Ejemplo:
Se tiene que planificar la ejecucin de dos
trabajos en tres procesadores, de forma que los
tiempos de cada tarea vienen dados por:
2 0
T 3 3
5 2
(a)
(b)
tiempo 0 1
P1
T11
P2
T22
P3
tiempo 0 1
P1
T11
P2
T22
P3
T21
T22
T31
3
T21
T32
10 11 12
T32
10 11 12
T31
Planificacin de trabajos
El tiempo de terminacin del trabajo i en la
planificacin S es el instante, fi(S), en que todas
las tareas del trabajo i han terminado.
En el ejemplo (a), f1(Sa)=10 y f2(Sa)=12.
En el ejemplo (b), f1(Sb)=11 y f2(Sb)=5.
El tiempo de terminacin, f(S), de la planificacin
S es:
1
f i (S)
n 1i n
Planificacin de trabajos
Planificacin con tiempo de terminacin ptimo
(OFT) para un conjunto de trabajos:
es una planificacin no apropiativa, S, para la
que F(S) es mnimo entre todas las
planificaciones no apropiativas.
Planificacin apropiativa y con tiempo de
terminacin ptimo (POFT):
es una planificacin apropiativa, S, para la que
F(S) es mnimo entre todas las planificaciones
apropiativas.
Planificacin de trabajos
El clculo de OFT y POFT para m>2 y el clculo
de OMFT es computacionalmente difcil
(es NP-duro).
El clculo de OFT para m=2 puede hacerse
mediante programacin dinmica.
Caso m=2:
Denotemos T1i como ai y T2i como bi.
Una planificacin est completamente
especificada fijando una permutacin de los
trabajos en uno de los procesadores (coincidir
con el otro procesador).
Cada tarea empezar tan pronto como sea
posible.
Ejemplo con 5 trabajos:
P1
P2
a5
a1 a3 a2
b5
a4
b1 b3 b2
planificacin (5,1,3,2,4)
b4
Planificacin de trabajos
Supongamos, para simplificar, que ai0, 1in
(si hay trabajos con ai=0, se construye primero la
planificacin ptima para los trabajos con ai0 y
despus se aaden delante los trabajos con ai=0).
Principio de optimalidad:
Una permutacin (planificacin) ptima es tal
que, fijado el primer trabajo de la permutacin, el
resto de la permutacin es ptimo con respecto
al estado en que quedan los dos procesadores
despus de terminar el primer trabajo.
Planificacin de trabajos
Sea g(S,t) la longitud (duracin) de una
planificacin ptima para el subconjunto de
trabajos S suponiendo que el procesador 2 no
estar disponible hasta el instante t.
Entonces:
caso tai:
ai
t+bi
aj, jS\{i}
ai
bj, jS\{i}
bi
t+bi-ai
0
caso t<ai:
0 t ai ai+bi
aj, jS\{i}
ai
bj, jS\{i}
bi
bi
Planificacin de trabajos
La ecuacin recursiva resultante podra
resolverse de forma anloga a la del problema
del viajante de comercio, pero existe una
solucin mejor
Supongamos que i y j son los dos primeros
trabajos (y en ese orden) en la planificacin
ptima del subconjunto S; entonces:
g (S,t) ai g (S \{i} ,bi max{t ai ,0})
ai a j g (S \{i , j} ,bj max{bi max{t ai ,0} a j ,0} )
tij
Pero:
Planificacin de trabajos
Entonces:
g (S,t) g (S,t)
max{t ,ai a j bi ,ai } max{t ,a j ai b j ,a j }
Es decir:
ai a j max{ bi , a j } a j ai max{b j , ai }
O sea:
min{bi ,a j } min{b j ,ai }
(*)
Planificacin de trabajos
Ahora, si
min{a1 ,a2 ,
bn } ai
bn } bj
Planificacin de trabajos
Planificacin de trabajos
Ejemplo:
Sean n=4, (a1,a2,a3,a4) = (3,4,8,10) y
(b1,b2,b3,b4) = (6,2,9,15).
La secuencia ordenada de los ai y los bi es:
(b2,a1,a2,b1,a3,b3,a4,b4) = (2,3,4,6,8,9,10,15).
Sea 1,2,3,4 la secuencia ptima.
Como el nmero menor es b2, entonces 4=2.
El siguiente nmero es a1 luego 1=1.
El siguiente es a2 pero el trabajo 2 ya ha sido
planificado.
El siguiente es b1 pero 1 ya ha sido
planificado.
El siguiente es a3 luego hacemos 2=3.
Por tanto, 3=4.
Planificacin de trabajos