Está en la página 1de 25

Ramificacin y acotacin

(Branch and Bound)

Introduccin
El problema del viajante
de comercio
El problema de la mochila 0-1
El juego del 15

Ramificacin y acotacin Pg. 1

Introduccin:
Branch and Bound

Al igual que los mtodos de


bsqueda con retroceso:
se aplica a problemas de optimizacin con
restricciones (algunas veces tambin a
probl. de decisin)
se genera el espacio de soluciones,
organizndolo en un rbol.
Se podan subrboles intiles.

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

Ramificacin y acotacin Pg. 2

Introduccin:
(1) Ramificacin

Diferencia fundamental con el


mtodo de bsqueda con retroceso:
Bsqueda con retroceso:
Tan pronto como se genera un nuevo hijo
del
nodo en curso, este hijo pasa a ser el nodo
en curso.
Ramificacin y acotacin:
Se generan todos los hijos del nodo en curso

antes de que cualquier otro nodo vivo


pase a ser el nuevo nodo en curso.

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.

Ramificacin y acotacin Pg. 3

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

Ramificacin y acotacin Pg. 4

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 acotacin Pg. 6

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

La prioridad sirve para guiar la


bsqueda y encontrar pronto una
solucin ptima.
Si prioridad(X,k) = coste de la mejor extensin
de X, el algoritmo ir directo a la mejor solucin

La cota sirve para descubrir pronto que


es intil continuar por el camino actual
Si, adems, cota(X,k)= coste de la mejor
extensin de X, podar el resto de ramas.

En general, conseguir prioridades y


cotas perfectas es imposible.
Si prioridad(X,k) coste de la mejor extensin
de X, el algoritmo ir casi directo a la mejor
solucin
Si cota(X,k) coste de la mejor extensin de X,
el algoritmo podar casi todas las ramas

En general, el coste espacial y temporal


del mtodo es O(p(n) dn)
d=max{|Ci|}
p(n) es un polinomio

Ramificacin y acotacin Pg. 8

Ramificacin y poda

Punto clave de los mtodos de


ramificacin y acotacin:
Encontrar buenas funciones de
prioridad y buenas cotas.

Habitualmente se usa la cota


como prioridad del nodo (si la cota
es buena, es una buena medida de
lo prometedor que es el nodo). Si
no decimos lo contrario, nosotros
tambin lo haremos.

Ramificacin y acotacin Pg. 9

El problema del viajante


de comercio

Recordar:

Estoy
hasta
las s
de viajar !

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).

Ramificacin y acotacin Pg. 10

El problema del viajante


de comercio

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]

Ramificacin y acotacin Pg. 11

El problema del viajante


de comercio

Representacin del espacio de


estados:
Caso de un grafo completo con |V| = 4.
1
x1=2
2
x2=3

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

Cada hoja es una solucin y representa el viaje


definido por el camino desde la raz hasta la hoj

Ramificacin y acotacin Pg. 12

El problema del viajante


de comercio

Definicin de una cota(X,k) muy


sencilla:
Suma de aristas ya escogidas
cota(X,k)=D[1,X[1]]+
D[X[i],X[i+1]]

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

Ejemplo de matriz no reducida.

Ramificacin y acotacin Pg. 13

El problema del viajante


de comercio

Puede mejorarse usando la matriz de


distancias reducida:
Una fila (columna) de la matriz de distancias se
dice reducida si sus elementos son no
negativos y contiene al menos un 0.
Una matriz de distancias se dice reducida si
cada fila y columna es reducida.

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).

Si se resta una constante t de cada elemento de


una fila (columna) de la matriz de distancias, la
longitud de todo hamiltoniano se reduce
exactamente en t y un hamiltoniano de
distancia mnima lo sigue siendo.

Ramificacin y acotacin Pg. 14

El problema del viajante


de comercio
Si se elige t como el mnimo de los elementos de
la fila (columna) i-sima y se resta t de todos los
elementos de esa fila (columna), la fila
resultante es reducida.

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

Reduccin de la fila 1, t = 10.


Repitiendo el proceso para filas y columnas,
siempre se puede conseguir que la matriz de
distancias sea reducida.

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

Ramificacin y acotacin Pg. 15

El problema del viajante


de comercio
Clculo de la cota inferior para los nodos
distintos de la raz y de las hojas:

Sea A la matriz de distancias reducida para


el nodo y.
Sea x un hijo de y que corresponda a
incluir el arco (i,j) en el recorrido y que no
sea hoja.
La matriz B reducida para x, y por tanto
cota(x), se calcula de la siguiente forma:

1.Cambiar todos los elementos de la fila i y


de la columna j de A por .
Esto evita el incluir ms arcos que
salgan de i o lleguen a j.
2.Cambiar el elemento (j,1) de A por
Esto evita considerar el arco (j,1).
3.B es la matriz que se obtiene al reducir
todas las filas y columnas de la matriz
resultante (excepto aqullas formadas slo
por ).

Si r es el valor total restado en el paso (3):


cota(x)=cota(y) + D[i,j] + r

Ramificacin y acotacin Pg. 16

El problema del viajante


de comercio

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

Matriz reducida, L = 25.


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

Ramificacin y acotacin Pg. 17


12
0 3

11 0

11

12
0

9
0


0
0

12

5
c 25+1+5 31


0
2

El problema del viajante


de comercio
c 25 1 UB =
x1 = 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.

El siguiente nodo en curso sera el 5, pero cota(5)>U


luego el algoritmo termina y el hamiltoniano mnimo
es 1,4,2,5,3,1.

Ramificacin y acotacin Pg. 18

El problema del viajante


de comercio

Otras versiones, basadas en otra


representacin del espacio de
estados:
G=(V,A),
|V|=n, |A|=a
A={(o , d )}, o V, d V
i
i
i
i

D[oi, di], distancia de la arista

Un hamiltoniano es un conjunto de n arcos.


Adems, para cada vrtice i, 0<i<n+1, debe
haber en ese conjunto exactamente un arco
de la forma (i,j) y uno de la forma (k,i).
Soluciones Factibles: {X=()| i xi {0,1}, xi
=n,
u V ((!i (xi =1 oi =u) (!j (xj =1
dj =u)) }
Funcin Objetivo: F(X)= xi D[oi, di]
Arbol de bsqueda= rbol binario:

Un hijo izquierdo representa la inclusin


de un determinado arco en el
hamiltoniano mientras que su hermano
derecho
representa la exclusin de ese arco.

Ramificacin y acotacin Pg. 19

El problema del viajante


de comercio
Si se elige, para empezar, el arco (i,j):
el subrbol izquierdo representa todos
los recorridos que incluyen el arco (i,j),
y
el subrbol derecho los recorridos que
no lo incluyen;

si hay un recorrido ptimo incluido en


el subrbol izquierdo, entonces slo
faltan por seleccionar n-1 arcos para
encontrarlo,
mientras que si todos estn en el
derecho, hay que seleccionar todava n
arcos.

Ejercicio: pensar en como se calcula la


cota de un nodo, dada la cota de su padre

Ramificacin y acotacin Pg. 20

El problema del viajante


de comercio
Por ejemplo, con el grafo de antes:
20
15
3 5

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.

Ramificacin y acotacin Pg. 21

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

ya vimos una cota que consista en resolver


el problema permitiendo fracciones en los
objetos sobre los que an no se ha decidido.

Ramificacin y acotacin Pg. 22

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:

Decisin: encontrar una secuencia


de movimientos que lleven al
objetivo
Optimizacin: encontrar la secuencia
de movimientos ms corta
1 2 3 4
5 6 7 8
9 10 11 12
13 15 14

Problema de Lloyd

Ramificacin y acotacin Pg. 23

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

Ramificacin y acotacin Pg. 24

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

Problema muy difcil para


backtracking
El rbol de bsqueda es
potencialmente muy profundo (16!
niveles), aunque puede haber
soluciones muy cerca de la raz.

Se puede resolver con branch


and bound (aunque hay
mtodos mejores)
funciones de prioridad:
numero de fichas mal colocadas (puede
engaar)
suma, para cada ficha, de la distancia a la
posicin donde le tocara estar
...

Ramificacin y acotacin Pg. 25

También podría gustarte