Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin
sujeto a p
i
x
i
1i n
C
con 0 x
i
1" b
i
> 0" p
i
> 0" 1 i n
Ejemplo:
n-. C-1/
(b
1
"b
0
"b
.
-(.1"20"02
(p
1
"p
0
"p
.
-(3"4"/
Se obtiene la solucin:
(x
1
"x
0
"x
.
-(0"1"1" con beneficio 42
sujeto a p
i
x
i
i k
l
P
con x
i
?0" 1@" k i l
<dem9s"
El problema de la mochila 0-1
<mbas ecuaciones permiten calcular "
#ue es el !alor de una solucin ptima de
mochila(1"n"C.
v
g
1
(C
(Btese #ue la ecuacin de recurrencia es
hacia adelante pero el c9lculo se reali,a hacia atr9s.
g
j
(c
g
j
(c ma$
g
j+1
(c"
g
j+1
(c p
j
+ b
j
{ }
g
n+1
(c 0" para cual#uier capacidad c
<dem9s"
El problema de la mochila 0-1
<mbas ecuaciones permiten calcular "
#ue es el !alor de una solucin ptima de
mochila(1"n"C.
w
g
n
(C
(<hora la recurrencia es hacia atr9s pero el c9lculo
se reali,a hacia adelante.
g
j
(c
g
j
(c ma$
g
j1
(c"
g
j1
(c p
j
+ b
j
{ }
g
0
(c 0" para cual#uier capacidad c
7roblema: ineficiencia
el se+undo" C !alores.
C)ue+o slo hay nC problemas diferentesD
;onsideraciones finales
Frafo multietapa:
Ejemplo de aplicacin:
El !8rtice &
i"j
" 0ir" representa el estado en el
#ue se asi+nan un total de j unidades del recurso
a los proyectos 1" 0" =" i'1.
El arco (&
i"j
"&
iG1"l
" jl" tiene asi+nado un coste '
i(l'j
#ue corresponde a asi+nar l'j unidades del
recurso al proyecto i" 1iHr.
7rincipio de optimalidad:
El camino de coste m:nimo debe contener subcaminos
de coste m:nimo entre otros nodos.
Iem.: En otro caso" podr:an sustituirse dichos
subcaminos por otros mejores" resultando un
camino total de coste menor.
Camino de cote m!nimo en un
gra"o multietapa
10 1
0
.
2
/
4
6
1
3
/
6
0
.
1
2
/
3
1
11
4
2
/
3
10
$
1
$
0
$
.
$
2
$
/
o
d
Entonces:
Camino de cote m!nimo en un
gra"o multietapa
10 1
0
.
2
/
4
6
1
3
/
6
0
.
1
2
/
3
1
11
4
2
/
3
10
$
1
$
0
$
.
$
2
$
/
o
d
C
(k 1" j
c( j " d " si ( j " d %
" en otro caso
'
(i " j min
l$
i+1
( j "l%
c( j " l +C
(i +1" l
{ }
" para 1 i k 0
Camino de cote m!nimo en un
gra"o multietapa
10 1
0
.
2
/
4
6
1
3
/
6
0
.
1
2
/
3
1
11
4
2
/
3
10
$
1
$
0
$
.
$
2
$
/
o
d
C
(k 1" j
c( j " d " si ( j " d %
" en otro caso
'
(i " j min
l$
i+1
( j "l%
c( j " l +C
(i +1" l
{ }
" para 1 i k 0
C
(." / min ?1 +C
(2"6"11 +C
(2" 1"4 +C
(2"3@ 1.
C
(."4 2 +C
(2" 1 1.
C
(0" 0 min ?. +C
(." /"1 +C
(."4@ 12
C
(0" . 2 +C
(." / 16
C
(0" 2 min ?/ +C
(." /"3 +C
(."4@ 11
C
(1"1 min ?/ +C
(0" 0"6 +C
(0" ." 0 +C
(0" 2@ 13
(i + 1" l.
10 1
0
.
2
/
4
6
1
3
/
6
0
.
1
2
/
3
1
11
4
2
/
3
10
$
1
$
0
$
.
$
2
$
/
o
d
)(." / 6M )(."4 1
)(0" 0 4M )(0" . /M )(0" 2 /
)(1"1 0
&
1
1
&
0
)(1"1 0
&
.
)(0")(1"1 4
&
2
)(.")(0")(1"1 1
Camino de cote m!nimo en un
gra"o multietapa
algoritmo multietapa(ent G=(V,A,c):grafo;
ent k,n:nat;
sal P:vect[1..k]de 1..n)
{Los vrtices estn numerados de forma que los
ndices de los vrtices de una etapa son mayores
que los ndices de los de la etapa anterior.
El primer ndice de C
*
y D, que slo identificaba
la etapa, se ha suprimido.}
variables C:vect[1..n]de real;
D:vect[1..n]de 1..n;
j,r:1..n
principio
C[n]:=0.0; {Clculo de C
*
y D}
para j:=n-1 descendiendo hasta 1 hacer
r:=vrtice t.q. (j,r)A 3
c(j,r)+C[r] es mnimo;
C[j]:=c(j,r)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n; {Construccin del camino}
para j:=2 hasta k-1 hacer
P[j]:=D[P[j-1]]
fpara
fin
algoritmo multietapa(ent G=(V,A,c):grafo;
ent k,n:nat;
sal P:vect[1..k]de 1..n)
{Los vrtices estn numerados de forma que los
ndices de los vrtices de una etapa son mayores
que los ndices de los de la etapa anterior.
El primer ndice de C
*
y D, que slo identificaba
la etapa, se ha suprimido.}
variables C:vect[1..n]de real;
D:vect[1..n]de 1..n;
j,r:1..n
principio
C[n]:=0.0; {Clculo de C
*
y D}
para j:=n-1 descendiendo hasta 1 hacer
r:=vrtice t.q. (j,r)A 3
c(j,r)+C[r] es mnimo;
C[j]:=c(j,r)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n; {Construccin del camino}
para j:=2 hasta k-1 hacer
P[j]:=D[P[j-1]]
fpara
fin
<n9lo+amente" se desarrolla la
recurrencia hacia atr9s.
Entonces:
Camino de cote m!nimo en un
gra"o multietapa
10 1
0
.
2
/
4
6
1
3
/
6
0
.
1
2
/
3
1
11
4
2
/
3
10
$
1
$
0
$
.
$
2
$
/
o
d
C
(0" j
c(o" j " si (o" j %
" en otro caso
'
(i " j min
l$
i1
(l " j%
c(l " j +C
(i 1" l
{ }
" para . i k
Camino de cote m!nimo en un
gra"o multietapa
algoritmo multietapaB(ent G=(V,A,c):grafo;
ent k,n:nat;
sal P:vect[1..k]de 1..n)
{Los vrtices estn numerados de forma que los
ndices de los vrtices de una etapa son mayores
que los ndices de los de la etapa anterior.
El primer ndice de C
*
y D, que slo identificaba
la etapa, se ha suprimido.}
variables C:vect[1..n]de real;
D:vect[1..n]de 1..n;
j,r:1..n
principio
C[1]:=0.0; {Clculo de C
*
y D}
para j:=2 hasta n hacer
r:=vrtice t.q. (r,j)A 3
c(r,j)+C[r] es mnimo;
C[j]:=c(r,j)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n; {Construccin del camino}
para j:=k-1 descendiendo hasta 2 hacer
P[j]:=D[P[j+1]]
fpara
fin
algoritmo multietapaB(ent G=(V,A,c):grafo;
ent k,n:nat;
sal P:vect[1..k]de 1..n)
{Los vrtices estn numerados de forma que los
ndices de los vrtices de una etapa son mayores
que los ndices de los de la etapa anterior.
El primer ndice de C
*
y D, que slo identificaba
la etapa, se ha suprimido.}
variables C:vect[1..n]de real;
D:vect[1..n]de 1..n;
j,r:1..n
principio
C[1]:=0.0; {Clculo de C
*
y D}
para j:=2 hasta n hacer
r:=vrtice t.q. (r,j)A 3
c(r,j)+C[r] es mnimo;
C[j]:=c(r,j)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n; {Construccin del camino}
para j:=k-1 descendiendo hasta 2 hacer
P[j]:=D[P[j+1]]
fpara
fin
Nota: )a eficiencia es la misma si # est9 representado mediante
listas de adyacencia in!ersa.
*ultiplicacin de una
ecuencia de matrice
- (1 1
- (n - (i- (n i
i 1
n1
_
,
n 1 0 . 2 / 10 1/
- (n 1 1 0 / 12 2140 0462220
E8todo:
;onstruir la matri, Rm
ij
S" 1ijn" donde m
ij
da el
ptimo (i.e." el n*mero de multiplicaciones
escalares re#ueridas para la parte
del producto total.
)a solucin final !endr9 dada por m
1n
.
*ultiplicacin de una
ecuencia de matrice
S. Godbole: n e!!icient
com"#tation o! matri$ c%ain
"rod#cts&, IEEE Transactions on
Computers, ''(9),
"". *+,-*++, 1973.
*
1
*
0
L*
i
y *
i +1
*
i +0
L*
n
*
i
*
i +1
L*
j
;onstruccin de Rm
ij
S" 1ijn:
)a dia+onal de Rm
ij
S contiene los m
ij
tales #ue j'
i-:
0: m
i "i
0" para i 1" 0"K" n
1: m
i "i +1
d
i 1
d
i
d
i +1
" para i 1" 0"K" n 1
1 < < n: m
i "i +
min
i ki +1
(m
ik
+ m
k+1"i +
+ d
i 1
d
k
d
i +
"
para i 1" 0"K" n
m
ij
0" si i j
min
i k< j
?m
ik
+ m
k+1" j
+d
i 1
d
k
d
j
@" si i < j
'
Se tiene d-(1."/"13".".2.
7ara -1: m
10
-/61/" m
0.
-1../" m
.2
-3061.
7ara -0:
7ara -.:
)a matri, es:
*ultiplicacin de una
ecuencia de matrice
m
1.
min (m
11
+ m
0.
+1. / ." m
10
+ m
..
+1. 13 .
min (1/.0" 30/4 1/.0
m
02
min (m
00
+ m
.2
+ / 13 .2" m
0.
+ m
22
+ / . .2
min (02001" 112/ 112/
m
12
min (?k 1@ m
11
+ m
02
+1. / .2"
?k 0@ m
10
+ m
.2
+1. 13 .2"
?k .@ m
1.
+ m
22
+1. . .2
min (20//" /2001" 01/4 01/4
j 1 0 . 2
i 1 0 /61/ 1/.0 01/4
.
0 0 1../ 112/
0
. 0 3061
1
2 0
0
B*mero de subproblemas: (n
0
.
*ultiplicacin de una
ecuencia de matrice
*ultiplicacin de una
ecuencia de matrice
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 [m
ij
] 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
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 [m
ij
] 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
;oste en tiempo:
(n
.
;oste en memoria:
(n
0
*ultiplicacin de una
ecuencia de matrice
7or tanto:
*ultiplicacin de una
ecuencia de matrice
*
i
*
i +1
L*
j
funcin multSec(M:vect[1..n]de matriz;
km:vect[1..n,1..n]de 1..n;
i,j:1..n)
devuelve matriz
variables X,Y:matriz
principio
si j>i
entonces
X:=multSec(M,km,i,km[i,j]);
Y:=multSec(M,km,km[i,j]+1,j];
devuelve mult(X,Y)
sino
devuelve M[i]
fsi
fin
funcin multSec(M:vect[1..n]de matriz;
km:vect[1..n,1..n]de 1..n;
i,j:1..n)
devuelve matriz
variables X,Y:matriz
principio
si j>i
entonces
X:=multSec(M,km,i,km[i,j]);
Y:=multSec(M,km,km[i,j]+1,j];
devuelve mult(X,Y)
sino
devuelve M[i]
fsi
fin
Camino m!nimo entre todo
lo pare de nodo de un gra"o
7roblema:
;9lculo de los caminos de coste m:nimo entre todos
los pares de !8rtices de un +rafo diri+ido sin ciclos de
peso ne+ati!o.
7rincipio de optimalidad:
Si i
1
" i
0
" =" i
k
" i
kG1
" =" i
n
es un camino de coste
m:nimo de i
1
a i
n
" entonces:
i
1
" i
0
" =" i
k
es un camino de coste m:nimo de i
1
a i
k
"
y
i
k
" i
kG1
" =" i
n
es un camino de coste m:nimo de i
k
a
i
n
.
Entonces:
'
)
0
(i " j C(i " j " 1 i n" 1 j n
)
k
(i " j )
k1
(i " k +)
k1
(k " j
)
k
(i " j )
k1
(i " j
En resumen:
Eficiencia temporal: (n
.
Espacio:
Jloyd e$i+e (n
0
mientras #ue IijTstra precisa (n
El problema:
r
i
i 1
10
0" 302
m
i
1 (1 r
i
m
i
1 (1 r
i
m
i
i
(m
i
i
(m
i
1i n
1i n
sujeto a c
i
m
i
1i m
c
m
i
1 y entero " 1 i n
u
i
c +c
i
c
j
j 1
n
_
,
c
i
1
]
1
%na solucin ptima m
1
" m
0
" =" m
n
es el
resultado de una secuencia de decisiones" una por
cada m
i
.
Ienotemos:
Entonces el !alor de una solucin ptima es "
n
(c.
/n problema de "iabilidad de
itema
"
i
(x m9$imo
j
1 j i
(m
j
sujeto a c
j
m
j
x
1 j i
1 m
j
u
j
" 1 j i
)a *ltima decisin re#uiere ele+ir m
n
de entre
?1"0"."="u
n
@.
n
(m
n
"
n1
(c c
n
m
n
{ }
"
i
(x ma$
1m
i
u
i
i
(m
i
"
i 1
(x c
i
m
i
{ }
El problema del &iajante de
comercio
Recordar:
E8todo de resolucin:
Qniciali,acin:
g(0"Z - /M g(."Z - 4M g(2"Z - 1.
%sar (L para obtener:
g(0"?.@ - 1
0.
G g(."Z - 1/M
g(0"?2@ - 1
02
G g(2"Z - 11M
g(."?0@ - 11M g(."?2@ - 00M
g(2"?0@ - 1.M g(2"?.@ - 1/.
El problema del &iajante de
comercio
1
0 10 1/ 00
/ 0 3 10
4 1. 0 10
1 1 3 0
1
]
1
1
Jinalmente:
El problema del &iajante de
comercio
g(0" ?." 2@ min 1
0.
+ g(." ?2@ " 1
02
+ g(2" ?.@
{ }
En el ejemplo:
3(0"?."2@ - 2M 3(."?0"2@ - 2M
3(2"?0".@ - 0M 3(1"?0"."2@ - 0.
\ el circuito ptimo ser9 pues:
1 3(1"?0"."2@ - 0
3(0"?."2@ - 2
3(2"?.@ - .
1
El problema del &iajante de
comercio
_
,
k sumas en total "
0(n 1 + (n 1k
n 0
k
_
,
k1
n0
_
,
n
0
0
n
( )
k
r
k
_
,
k1
r
r 0
r1
El problema:
Sea un sistema en el #ue la reali,acin de un con'
junto de trabajos re#uiere la ejecucin por parte de un
conjunto de a+entes (o procesadores de una serie de
tareas diferentes para cada trabajo.
la tarea -
ji
la reali,a el procesador P
j
" 1jm" y
re#uiere un tiempo t
ji
la tarea -
ji
debe asi+narse a P
j
Ejemplo:
Se tiene #ue planificar la ejecucin de dos trabajos en
tres procesadores" de forma #ue los tiempos de cada
tarea !ienen dados por:
Ios planificaciones posibles:
)a planificacin (b se dice no apropiati!a (non-
preempti&e por#ue el procesamiento de una tarea no
se interrumpe hasta #ue 8sta ha terminado.
)a planificacin (a se dice apropiati!a (preempti&e
por#ue el trabajo 1 se apropia del procesador 0 antes
de #ue 8ste termine con el trabajo 0.
T
0 0
. .
/ 0
1
]
1
tiempo 0 1 0 . 2 / 4 6 1 3 10 11 10
P
1
T
11
P
0
T
22
T
21
T
22
P
.
T
31
T
32
tiempo 0 1 0 . 2 / 4 6 1 3 10 11 10
P
1
T
11
P
0
T
22
T
21
P
.
T
32
T
31
(a)
(b)
Plani"icacin de trabajo
Plani"icacin de trabajo
;aso m-0:
Ienotemos -
1i
como a
i
y -
0i
como b
i
.
7rincipio de optimalidad:
%na permutacin (planificacin ptima es tal #ue"
fijado el primer trabajo de la permutacin" el resto de
la permutacin es ptimo con respecto al estado en
#ue #uedan los dos procesadores despu8s de terminar
el primer trabajo.
Plani"icacin de trabajo
t
ij
b
j
+ ma$ ?b
i
+ ma$ ?t a
i
" 0@ a
j
" 0@
b
j
+b
i
a
j
+ ma$ ?ma$ ?t a
i
" 0@" a
j
b
i
@
b
j
+b
i
a
j
+ ma$ ?t a
i
" a
j
b
i
" 0@
b
j
+b
i
a
j
a
i
+ma$ ?t " a
i
+a
j
b
i
" a
i
@
g (2" t a
j
+a
i
+
g (2 Y ?j " i@" b
i
+b
j
a
i
a
j
+ ma$ ?t " a
j
+a
i
b
j
" a
j
@
Entonces:
7ara #ue esto sea cierto para todo !alor de t" se
precisa:
Es decir:
] sea:
g (2" t
ma$ ?t " a
i
+a
j
b
i
" a
i
@ ma$ ?t " a
j
+a
i
b
j
" a
j
@
ma$ ?a
i
+a
j
b
i
" a
i
@ ma$ ?a
j
+a
i
b
j
" a
j
@
a
i
+a
j
+ ma$ ?b
i
" a
j
@a
j
+a
i
+ ma$ ?b
j
" a
i
@
min ?b
i
" a
j
@ min ?b
j
" a
i
@
(L
<hora" si
Entonces el trabajo i deber:a ser el primero en
una planificacin ptima.
En cambio" si
Entonces el trabajo j deber:a ser el *ltimo en una
planificacin ptima.
Ejemplo:
Sean n-2" (a
1
"a
0
"a
.
"a
2
- (."2"1"10 y
(b
1
"b
0
"b
.
"b
2
- (4"0"3"1/.
)a secuencia ordenada de los a
i
y los b
i
es:
(b
0
"a
1
"a
0
"b
1
"a
.
"b
.
"a
2
"b
2
- (0"."2"4"1"3"10"1/.
Sea
1
"
0
"
.
"
2
la secuencia ptima.
El si+uiente n*mero es a
1
lue+o
1
-1.
El si+uiente es a
0
pero el trabajo 0 ya ha sido
planificado.
El si+uiente es b
1
pero 1 ya ha sido
planificado.
El si+uiente es a
.
lue+o hacemos
0
-..
7or tanto"
.
-2.
Plani"icacin de trabajo