Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin
El problema del viajante
de comercio
El problema de la mochila 0-1
El juego del 15
Introduccin:
Branch and Bound
Terminologa:
Nodo vivo: nodo del espacio de soluciones
del que no se han generado an todos sus
hijos.
Nodo muerto: nodo del que no se van a
generar ms hijos porque:
no hay ms
no es completable,
no producir una solucin mejor que la
solucin en curso
Nodo en curso (o en expansin): nodo del
que se estn generando hijos
Introduccin:
(1) Ramificacin
En consecuencia:
Bsqueda con retroceso:
Los nicos nodos vivos son los que estn en
el camino de la raz al nodo en curso.
Ramificacin y acotacin:
Puede haber ms nodos vivos.
Se deben almacenar en una estructura de
datos auxiliar: lista de nodos vivos.
Recordemos:
Backtracking para
problemas de
optimizacin
(minimizacin)
algoritmoBackTracking(entk:entero;
algoritmoBackTracking(entk:entero;
entsalX:vector[1..n]devalor)
entsalX:vector[1..n]devalor)
{Pre:X[1..k1]escompletable,
{Pre:X[1..k1]escompletable,
cota(X,k1)<CosteMejorSol}
cota(X,k1)<CosteMejorSol}
paratodovenC
paratodovenCiihacer
hacer
X[k]:=v;
X[k]:=v;
si(completable(X,k)
si(completable(X,k)
cota(X,k)<CosteMejorSol)entonces
cota(X,k)<CosteMejorSol)entonces
siSol(X,k)entonces
siSol(X,k)entonces
MejorSol:=X;
MejorSol:=X;
CosteMejorSol:=Coste(X)
CosteMejorSol:=Coste(X)
fsi;
fsi;
sik<nentonces
sik<nentonces
BackTracking(k+1,X)
BackTracking(k+1,X)
fsi;
fsi;
fsi
fsi
fpara
fpara
Backtracking Iterativo
tiponodoestupla
tiponodoestupla
X:vector[1..n]devalor
X:vector[1..n]devalor
k:[1..n+1]
k:[1..n+1]
ftipo//X[1..k1]esunaasignacinparcial
ftipo//X[1..k1]esunaasignacinparcial
algoritmoBackTracking()
algoritmoBackTracking()
variablePespiladenodo;
variablePespiladenodo;
CosteMejorSol:=
CosteMejorSol:=
pvacia(P);apilar(P,<X,1>)
pvacia(P);apilar(P,<X,1>)
mientrasvacia(P)hacer
mientrasvacia(P)hacer
<X,k>:=cima(P);desapilar(P);
<X,k>:=cima(P);desapilar(P);
paratodovenC
paratodovenCiihacer
hacer
X[k]:=v;
X[k]:=v;
si(completable(X,k)
si(completable(X,k)
cota(X,k)<CosteMejorSol)entonces
cota(X,k)<CosteMejorSol)entonces
siSol(X,k)entonces
siSol(X,k)entonces
MejorSol:=X;
MejorSol:=X;
CosteMejorSol:=Coste(X)
CosteMejorSol:=Coste(X)
fsi;
fsi;
sik<nentonces
sik<nentonces
apila(P,<X,k+1>)
apila(P,<X,k+1>)
fsi;
fsi;
fsi
fsi
fpara
fpara
fmientras
fmientras
devuelve(MejorSol,CosteMejorSol)
devuelve(MejorSol,CosteMejorSol)
Ramificacin y acotacin Pg. 5
Introduccin:
Diferentes estrategias de
elegir el siguiente nodo
del conjunto de nodos vivos
Distintos rdenes de
del rbol de
soluciones
recorrido
pila:
recorr. en profundidad
cola:
recorrido por niveles
cola con prioridades (Branch and
Bound): seleccin del nodo vivo ms
prometedor.
recorrido extrao
La prioridad de un nodo se calcula de acuerdo
con una funcin de estimacin que mide
cunto de prometedor es un nodo.
Ramificacin y poda
tiponodoestupla
tiponodoestupla
X:vector[1..n]devalor
X:vector[1..n]devalor
k:[1..n+1]
k:[1..n+1]
ftipo//X[1..k1]esunaasignacinparcial
ftipo//X[1..k1]esunaasignacinparcial
algoritmoBranchAndBound()
algoritmoBranchAndBound()
variableCescola_prioritariadenodo;
variableCescola_prioritariadenodo;
CosteMejorSol:=
CosteMejorSol:=
cvacia(C);encolar(C,<X,1,pr(X,1)>)
cvacia(C);encolar(C,<X,1,pr(X,1)>)
mientrasvacia(C)hacer
mientrasvacia(C)hacer
<X,k>:=primero(C);desencolar(C);
<X,k>:=primero(C);desencolar(C);
paratodovenC
paratodovenCiihacer
hacer
X[k]:=v;
X[k]:=v;
si(completable(X,k)
si(completable(X,k)
cota(X,k)<CosteMejorSol)entonces
cota(X,k)<CosteMejorSol)entonces
siSol(X,k)entonces
siSol(X,k)entonces
MejorSol:=X;
MejorSol:=X;
CosteMejorSol:=Coste(X)
CosteMejorSol:=Coste(X)
fsi;
fsi;
sik<nentonces
sik<nentonces
encola(C,<X,k+1,pr(X,k+1)>)
encola(C,<X,k+1,pr(X,k+1)>)
fsi;
fsi;
fsi
fsi
fpara
fpara
fmientras
fmientras
devuelve(MejorSol,CosteMejorSol)
devuelve(MejorSol,CosteMejorSol)
Ramificacin y acotacin Pg. 7
Ramificacin y poda
Ramificacin y poda
Recordar:
Estoy
hasta
las s
de viajar !
Formalizacin:
Sean G=(V,A) un grafo orientado,
V={1,2,,n},
D[i,j] la longitud de (i,j)A,
D[i,j]= si no existe el arco (i,j).
El circuito buscado empieza en el vrtice 1.
Candidatos:
E = { 1,X,1 | X es una permutacin de (2,3,
,n) }
|E| = (n-1)!
Soluciones factibles:
E = { 1,X,1 | X = x1,x2,,xn-1, es una
permutacin de (2,3,,n) tal que (ij,ij+1)A,
0<j<n,
(1, x1) A , (xn-1,1) A}
Funcion objetivo:
F(X)=D[1,x1]+D[x1, x2] + D[x2, x3]+...+D[xn-2, xn1]+
+D[xn,1]
x1=4
x1=3
3
x2=4
x2=2
4
x2=4
x2=2
x3=4
x3=3
x3=4
x3=2
x3=3
11
12
13
14
15
x2=3
10
x3=2
16
i=1..k-2
Ejemplo: (n=5)
20
15
3 5
19 6
16 4
30 10 11
16 4 2
2 4
18 3
7 16
20
15
3 5
19 6
16 4
30 10 11
16 4 2
2 4
18 3
7 16
matriz
no reducida.
Para cada k,Ejemplo
1<k<n, de
todo
circuito
hamiltoniano
incluye exactamente un arco de la forma (k,-) y
exactamente un arco de la forma (-,k).
20
15
3 5
19 6
16 4
30 10 11
16 4 2
2 4
18 3
7 16
10
15
3 5
19 6
16 4
20 0 1
16 4 2
2 4
18 3
7 16
20 30 10 11
10 17 0 1
15 16 4 2
12 11 2 0
Reduccin
0 3 0 2
de la matriz, 3 5 2 4
L = 25.
19 6 18 3
15 3 12 0
7 16de
filas
0 0 12
16 L4restada
y11
La cantidad total
columnas
es una cota inferior de la longitud de un
hamiltoniano de longitud mnima
Ejemplo:
20
15
3 5
19 6
16 4
30 10 11
16 4 2
2 4
18 3
7 16
10 17 0 1
12 11 2 0
0 3 0 2
15 3 12 0
11 0 0 12
Grafo original.
15
11
11 2 0
0 2
c 25 1
12 0
x1 = 2
0 12
x =3
1
x1 = 4
10
0 3
12 0
x1 = 5
0
3
4
c 25+10 35 c 25+17+11 53c 25
3
3
0
2 0
0 2
12
12
0 3
11 0
11
12
0
9
0
0
0
12
5
c 25+1+5 31
0
2
x1 = 5
x1 = 3
c 35 2
x1 = 4
c 25 4
c 53 3
x2 = 2
x2 = 3
c 28 6
7
c 50
x3 = 3
c 32 9
c 31 5
x2 = 5
8 c 36
x3 = 5
10 c 28
x4 = 3
c 28 11 Es hoja (solucin),
se actualiza UB = 28.
19 6
16 4
c 25
30 10 11
16 4 2
2 4
18 3
7 16
incluir (3,1)
excluir (3,1
c 25 2
incluir (5,3)
c 28 4
incluir (1,4)
c 28 6
3 c 36
excluir (5,3)
5 c 36
excluir (1,4)
7 c 37
Se llega al nodo 6.
Se han elegido ya tres arcos: (3,1), (5,3),
(1,4).
Para los dos restantes, slo queda ya una
opcin:
(4,2) y (2,5).
As, se obtiene el recorrido: 5,3,1,4,2,5.
Con distancia total: 28 (as, UB = 28)
c(3) 36 UB
El siguiente nodo en curso es el 3, con
y el algoritmo acaba.
El problema de la
mochila 0-1
Recordar el problema de la
mochila
Se tienen n objetos fraccionables y una
mochila.
El objeto i tiene peso pi y beneficio bi.
El objetivo es llenar la mochila, de
capacidad C, de manera que se maximice el
beneficio.
maximizar
bi xi
1i n
sujeto a
pi xi C
1i n
con xi 0,1 , bi 0, pi 0, 1 i n
Un primer ejemplo:
El juego del 15
Samuel Loyd: El juego del 15 o taken.
Problema publicado en un peridico de Nueva York
en 1878 y por cuya solucin se ofrecieron 1000
dlares.
El problema original:
Problema de Lloyd
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
El objetivo
Un primer ejemplo:
El juego del 15
Configuracin: permutacin de (1,2,...,16)
Solucin: secuencia de configuraciones
que
empiezan en el estado inicial y acaban
en el final.
De cada configuracin se puede pasar
a la siguiente.
No hay configuraciones repetidas
1 2 3 4
5 6
8
9 10 7 11
1314 15 12
2
6
1 2
4
5 6 3 8
9 10 7 11
1314 15 12
1 2 3 4
5 6 8
9 10 7 11
1314 15 12
1 2 4
1
2 4
1 2 3
5 6 3 8
5 6 3 8
5 6 8 4
9 10 7 11 9 10 7 11 9 10 7 11
13 14 15 12 1314 15 12 1314 15 12
1
615
2 4 8
6 3
9 10 7 11
13 14 15 12
1
7
1 6 2 4
5
3 8
9 10 7 11
13 14 15 12
1
8
1
9
9 1
4
1 2 3 4
0
1 2 3
5 6 8 11 5 6 7 8
9 10 7
9 10 11
1314 15 12 1314 15 12
1 2
3
5 6 8 4
9 10 7 11
1314 15 12
1 2 4
5 6 3 8
9 10 7 11
13 14 15 12
2
1 2
0
3 4
5 6 8 11
9 10 7 12
1314 15
2
2
1 2 3 4
5 6 7
9 10 11 8
13 14 15 12
2
11
2 3 4
5 6 8 11
9 10
7
13 14 15 12
1 2 3 4
5 6 7 8
9 10
11
1314 15 12
1
1 2
1
5 6
1
2
1
1
3
1 2 3 4
5
6 8
9 10 7 11
1314 15 12
1
1 2 3 4
4
5 10 6 8
1
5
3 4
1 2 3 4
3 4
1 2 3 4
7 8
5 6 7 8
5 2 6 8
5 6 8
9 10 15 11 9
10 11 9 10 7 11 9
7 11 9 10 7 11
1314
12 1314 15 12 1314 15 12 1314 15 12 1314 15 12
2
3
1 2 3 4
5 6 7 8
9 10 1112
13 14 15
objetiv
o
Un primer ejemplo:
El juego del 15