You are on page 1of 25

Ramificacin y acotacin (Branch and Bound)

y y y y

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

amificacin y acotacin

Pg. 1

Introduccin: Branch and Bound


y

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: x no hay ms x no es completable, x no producir una solucin mejor que la solucin en curso Nodo en curso (o en expansin): nodo del que se estn generando hijos

amificacin y acotacin

Pg. 2

Introduccin: (1) Ramificacin


y

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

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: amificacin y acotacin Pg. 3

Recordemos: Backtracking para problemas de optimizacin (minimizacin)


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

para todo v en Ci hacer para todo v en Ci 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 si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces BackTracking(k+1,X) BackTracking(k+1,X) fsi; fsi; fsi fsi fpara fpara

amificacin y acotacin

Pg. 4

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

algoritmo BackTracking() algoritmo BackTracking() variable P es pila de nodo; variable P es pila de nodo; CosteMejorSol:= CosteMejorSol:= pvacia(P); apilar(P,<X,1>) pvacia(P); apilar(P,<X,1>) mientras vacia(P) hacer mientras vacia(P) hacer <X,k>:=cima(P); desapilar(P); <X,k>:=cima(P); desapilar(P); para todo v en Ci hacer para todo v en Ci 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 si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces apila(P,<X,k+1>) apila(P,<X,k+1>) fsi; fsi; fsi fsi fpara fpara fmientras fmientras devuelve (MejorSol, CosteMejorSol) devuelve (MejorSol, CosteMejorSol)
Pg. 5

amificacin y acotacin

Introduccin:
y

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 Pg. 6estimacin que de amificacin y acotacin mide cunto de prometedor es

Ramificacin y poda
tipo nodo es tupla tipo nodo es tupla X: vector[1..n]de valor X: vector[1..n]de valor k: [1..n+1] k: [1..n+1] ftipo // X[1..k-1] es una asignacin parcial ftipo // X[1..k-1] es una asignacin parcial algoritmo BranchAndBound() algoritmo BranchAndBound() variable C es cola_prioritaria de nodo; variable C es cola_prioritaria de nodo; CosteMejorSol:= CosteMejorSol:= cvacia(C); encolar(C,<X,1,pr(X,1)>) cvacia(C); encolar(C,<X,1,pr(X,1)>) mientras vacia(C) hacer mientras vacia(C) hacer <X,k>:=primero(C); desencolar(C); <X,k>:=primero(C); desencolar(C); para todo v en Ci hacer para todo v en Ci 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 si Sol(X,k) entonces si Sol(X,k) entonces MejorSol:= X; MejorSol:= X; CosteMejorSol:= Coste(X) CosteMejorSol:= Coste(X) fsi; fsi; si k<n entonces si k<n entonces 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)
Pg. 7

amificacin y acotacin

Ramificacin y poda
y

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|} un polinomio Pg. 8

p(n) es amificacin y acotacin

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.

amificacin y acotacin

Pg. 9

El problema del viajante de comercio


y

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.

Estoy hasta las s de viajar !

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

amificacin y acotacin

Pg. 10

El problema del viajante de comercio


y

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:
Pg. 11 F(X)=D[1,x1]+D[x1, x2] + D[x2,

amificacin y acotacin

El problema del viajante de comercio


y

Representacin del espacio de estados:


Caso de un grafo completo con |V| = 4.
1 x1=2 2 x2=3 5 x3=4 11 x2=4 6 x3=3 12 x2=2 7 x3=4 13 x1=3 3 x2=4 8 x3=2 14 x2=2 9 x3=3 15 x1=4 4 x2=3 10 x3=2 16

Cada hoja es una solucin y representa el viaje definido por el camino desde la raz hasta la hoja.

amificacin y acotacin

Pg. 12

El problema del viajante de comercio


y

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.

amificacin y acotacin

Pg. 13

El problema del viajante de comercio


y

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 amificacin y acotacin Pg. 14 elemento de una fila (columna) de la matriz

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 proceso 10 11filas columnas, 1 el 20 30 para y 10 17 0 siempre se puede conseguir que la matriz 15 16 4 2 12 11 2 0 de Reduccin 0 3 0 2 distancias 3 5 2 de la matriz,sea reducida. 4 L = 25. 19 6 18 3 15 3 12 0 16 4 7 16 11 0 0 12

amificacin 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:
x

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 yPg. 16 columnas de la matriz amificacin y acotacin resultante (excepto aqullas

El problema del viajante de comercio


y

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
Matriz reducida, L = 25.

Grafo original.

0 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

9 9 0

0 0 12

3 4 25+17+11 = 53 c = 25 =25+10 = 35 c = c

5 25+1+5 = 31 c=

1 4 0

3 3 0

2 0 0 2 0 12

12 0 3 3 11 0

11 12 0

0 2 0

amificacin y acotacin

Pg. 17

El problema del viajante de comercio


c = 25 1 UB = x1 = 2 x1 = 3 c = 35 2 c = 53 3 x1 = 4 c = 25 4 x2 = 2 x2 = 3 c = 28 6 x3 = 3 c = 32 9 7 c = 50 x3 = 5 10 c = 28 x4 = 3 c = 28 11 Es hoja (solucin), se actualiza UB = 28. x1 = 5 c = 31 5 x2 = 5 8 c = 36

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.

amificacin y acotacin

Pg. 18

El problema del viajante de comercio


y

Otras versiones, basadas en otra representacin del espacio de estados:


G=(V,A), x |V|=n, |A|=a x A={(o , d )}, o V, d V i i i i
x

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: x Un hijo izquierdo representa la inclusin de un determinado arco en el hamiltoniano mientras que su hermano derecho representa 19 exclusin de ese arco. la amificacin y acotacin Pg.

El problema del viajante de comercio


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

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

amificacin 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 30 10 11 16 4 2 2 4 18 3 7 16
c = 25 incluir (3,1) c = 25 2 incluir (5,3) c = 28 4 1 3 c = 36 excluir (5,3) 5 c = 36 excluir (1,4) 7 c = 37

excluir (3,1)

incluir (1,4) c = 28 6

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: (3) = 36> UB c (4,2) y (2,5). As, se obtiene el recorrido: 5,3,1,4,2,5. Con distancia total: 28 (as, UB = 28) amificacin y acotacin Pg. 21

El problema de la mochila 0-1


y

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

1 in

pi xi C

con xi 0,1 , b > 0, pi > 0, 1 i n i

{ }

ya vimos una cota que consista en resolver el problema permitiendo fracciones en los objetos sobre los que an no se ha decidido.
Pg. 22

amificacin y acotacin

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

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

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

Problema de Lloyd

El objetivo

amificacin y acotacin

Pg. 23

Un primer ejemplo: El juego del 15


Configuracin: permutacin de (1,2,...,16) Solucin: secuencia de configuraciones que x empiezan en el estado inicial y acaban en el final. x De cada configuracin se puede pasar a la siguiente. x No hay configuraciones repetidas

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

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

3 8

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

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

5 1 1 3

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 13 14 15 12 13 14 15 12

1 61 5

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


1 8

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

1 9


2 1 02 2 1 1

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

1 1 02 3 4

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 13 14 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 12

1 1 2 1 5 6

1
2

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

1 1 2 3 4 4 5 10 6 8

1
5

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

2 2

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

1 7

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

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

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

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

objetiv o

amificacin y acotacin

Pg. 24

Un primer ejemplo: El juego del 15


y

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

amificacin y acotacin

Pg. 25

You might also like