Вы находитесь на странице: 1из 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)

algoritmo BackTracking(ent k:entero;


entsal X:vector[1..n]de valor)
{Pre: X[1..k-1] es completable,
cota(X,k-1)<CosteMejorSol}

para todo v en Ci hacer


X[k]:=v;
si (completable(X,k)
cota(X,k)<CosteMejorSol) entonces
si Sol(X,k) entonces
MejorSol:= X;
CosteMejorSol:= Coste(X)
fsi;
si k<n entonces
BackTracking(k+1,X)
fsi;
fsi
fpara

Ramificacin y acotacin Pg. 4


Backtracking Iterativo
tipo nodo es tupla
X: vector[1..n]de valor
k: [1..n+1]
ftipo // X[1..k-1] es una asignacin parcial

algoritmo BackTracking()

variable P es pila de nodo;


CosteMejorSol:=
pvacia(P); apilar(P,<X,1>)
mientras vacia(P) hacer
<X,k>:=cima(P); desapilar(P);
para todo v en Ci hacer
X[k]:=v;
si (completable(X,k)
cota(X,k)<CosteMejorSol) entonces
si Sol(X,k) entonces
MejorSol:= X;
CosteMejorSol:= Coste(X)
fsi;
si k<n entonces
apila(P,<X,k+1>)
fsi;
fsi
fpara
fmientras
devuelve (MejorSol, CosteMejorSol)

Ramificacin y acotacin Pg. 5


Introduccin:

Diferentes estrategias de
elegir el siguiente nodo
del conjunto de nodos vivos

Distintos rdenes de
recorrido del rbol de
soluciones

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
tipo nodo es tupla
X: vector[1..n]de valor
k: [1..n+1]
ftipo // X[1..k-1] es una asignacin parcial

algoritmo BranchAndBound()

variable C es cola_prioritaria de nodo;


CosteMejorSol:=
cvacia(C); encolar(C,<X,1,pr(X,1)>)
mientras vacia(C) hacer
<X,k>:=primero(C); desencolar(C);
para todo v en Ci hacer
X[k]:=v;
si (completable(X,k)
cota(X,k)<CosteMejorSol) entonces
si Sol(X,k) entonces
MejorSol:= X;
CosteMejorSol:= Coste(X)
fsi;
si k<n entonces
encola(C,<X,k+1,pr(X,k+1)>)
fsi;
fsi
fpara
fmientras
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
Estoy hasta
las s
Recordar: 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, xn-
1]+
+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.

x1=2 x1=3 x1=4

2 3 4

x2=3 x2=4 x2=2 x2=4 x2=2 x2=3

5 6 7 8 9 10

x3=4 x3=3 x3=4 x3=2 x3=3 x3=2

11 12 13 14 15 16

Cada hoja es una solucin y representa el viaje


definido por el camino desde la raz hasta la hoja.

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]]+ i=1..k-2 D[X[i],X[i+1]]
Ejemplo: (n=5)

20 30 10 11
15 16 4 2
3 5 2 4

19 6 18 3

16 4 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 30 10 11
15 16 4 2
3 5 2 4

19 6 18 3

16 4 7 16
Ejemplo de matriz no reducida.

Para cada k, 1<k<n, 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 30 10 11 10 20 0 1
15 16 4 2 15 16 4 2
3 5 2 4 3 5 2 4

19 6 18 3 19 6 18 3

16 4 7 16 16 4 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
5 2 4 0 3 0 2
de la matriz, 3
L = 25.
19 6 18 3 15 3 12 0

16 4 7 16 11 0 0 12

La cantidad total L restada de filas y 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 30 10 11 10 17 0 1
15 16 4 2 12 11 2 0
3 5 2 4 0 3 0 2

19 6 18 3 15 3 12 0

16 4 7 16 11 0 0 12
Grafo original. Matriz reducida, L = 25.


11 2 0 10 9 0
0 0 2 c 25 1
0 3 0

15 12 0 12 0 9
x1 = 2 x1 = 5
11 0 12 x =3 x1 = 4 0 0 12
1

2 3 4 5
c 25+10 35 c 25+17+11 53 c 25 c 25+1+5 31


1 2 0 12 11 0
0 2 0
3 3 2

4 3
0 3 12 0

0 0 12 11 0 0
Ramificacin y acotacin Pg. 17
El problema del viajante de
comercio
c 25 1 UB =

x1 = 2 x1 = 5
x1 = 3 x1 = 4
c 35 2 c 53 3 c 25 4 c 31 5

x2 = 2 x2 = 5
x2 = 3
c 28 6 7 8 c 36
c 50
x3 = 3 x3 = 5
c 32 9 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)>UB


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={(oi, di)}, oi V, di V

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:


c 25
1
20 30 10 11 incluir (3,1) excluir (3,1)
15 16 4 2
3 c 25 2 3 c 36
5 2 4
incluir (5,3) excluir (5,3)
19 6 18 3
c 28 4 5 c 36
16 4 7 16
incluir (1,4) excluir (1,4)

c 28 6 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)

El siguiente nodo en curso es el 3, con


y el algoritmo acaba. c (3) 36 UB

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
1 i 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 1 2 3 4
5 6 7 8
? 5 6 7 8
9 10 11 12 9 10 11 12
13 15 14 13 14 15

Problema de Lloyd El objetivo

Ramificacin y acotacin Pg. 23


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
1 5 6 8
9 10 7 11
13 14 15 12


1 2 4 1 2 3 4 1 2 3 4 1 2 3 4
2 5 6 3 8 3 5 6 8 4 5 6 7 8 5 5 6 8
9 10 7 11 9 10 7 11 9 10 11 9 10 7 11
13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12

6 7 8 9 10 11 12 13 14 15
1 2 4 1 2 4 1 2 3 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 3 4 1 2 3 4 1 2 3 4
5 6 3 8 5 6 3 8 5 6 8 4 5 6 8 11 5 6 7 8 5 6 7 8 5 6 7 8 5 2 6 8 5 10 6 8 5 6 8
9 10 7 11 9 10 7 11 9 10 7 11 9 10 7 9 10 11 9 10 15 11 9 10 11 9 10 7 11 9 7 11 9 10 7 11
13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12

23

16 19 22
1 2 4 8 1 2 3 1 2 3 4 1 2 3 4
5 6 3 5 6 8 4 5 6 7 5 6 7 8
9 10 7 11 9 10 7 11 9 10 11 8 9 10 11 12
13 14 15 12 13 14 15 12 13 14 15 12 13 14 15

18 20 21 objetivo
17 1 6 2 4 1 2 4 1 2 3 4 1 2 3 4
5 3 8 5 6 3 8 5 6 8 11 5 6 8 11
9 10 7 11 9 10 7 11 9 10 7 12 9 10 7
13 14 15 12 13 14 15 12 13 14 15 13 14 15 12

Ramificacin y acotacin Pg. 24


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

Вам также может понравиться