Вы находитесь на странице: 1из 27

Exploracin de grafos Exploracin de grafos

Grafos Grafos
Recorridos sobre grafos Recorridos sobre grafos
Bsqueda primero en profundidad Bsqueda primero en profundidad
Bsqueda primero en anchura Bsqueda primero en anchura
Backtracking Backtracking (vuelta atrs) (vuelta atrs) Backtracking Backtracking (vuelta atrs) (vuelta atrs)
Descripcin general Descripcin general
Espacio de soluciones Espacio de soluciones
Implementacin Implementacin
Ejemplos Ejemplos
Branch Branch & & Bound Bound (ramificacin y poda) (ramificacin y poda)
Descripcin general Descripcin general
Estrategias de ramificacin Estrategias de ramificacin
Implementacin Implementacin
Ejemplos Ejemplos
125 125
Branch Branch & & Bound Bound
Branch Branch and and Bound Bound (B&B) (B&B)
es una es una generalizacin generalizacin de la tcnica de de la tcnica de backtracking backtracking: :
Se realiza un recorrido sistemtico del rbol de estados Se realiza un recorrido sistemtico del rbol de estados
de un problema, si bien ese recorrido no tiene por qu de un problema, si bien ese recorrido no tiene por qu
ser en profundidad, como suceda en ser en profundidad, como suceda en backtracking backtracking: : ser en profundidad, como suceda en ser en profundidad, como suceda en backtracking backtracking: :
usaremos una usaremos una estrategia de ramificacin estrategia de ramificacin..
Adems, utilizaremos Adems, utilizaremos tcnicas de poda tcnicas de poda para eliminar para eliminar
todos aquellos nodos que no lleven a soluciones ptimas todos aquellos nodos que no lleven a soluciones ptimas
(estimando, en cada nodo, cotas del beneficio que (estimando, en cada nodo, cotas del beneficio que
podemos obtener a partir del mismo). podemos obtener a partir del mismo).
N NOTA OTA:: Los algoritmos que utilizan B&B suelen ser Los algoritmos que utilizan B&B suelen ser
de orden exponencial (o peor)en su peor caso. de orden exponencial (o peor)en su peor caso.
126 126
Branch Branch & & Bound Bound
Diferencias con Diferencias con backtracking backtracking
En En bactracking bactracking, tan pronto como se genera un nuevo hijo , tan pronto como se genera un nuevo hijo
del nodo en curso, este hijo pasa a ser el nodo en curso. del nodo en curso, este hijo pasa a ser el nodo en curso.
En B&B, se generan todos los hijos del nodo en curso En B&B, se generan todos los hijos del nodo en curso
antes de que cualquier otro nodo vivo pase a ser el antes de que cualquier otro nodo vivo pase a ser el antes de que cualquier otro nodo vivo pase a ser el antes de que cualquier otro nodo vivo pase a ser el
nuevo nodo en curso ( nuevo nodo en curso (no no se realiza un recorrido en se realiza un recorrido en
profundidad). profundidad).
En consecuencia: En consecuencia:
En En backtracking backtracking, los nicos nodos vivos son los que estn , los nicos nodos vivos son los que estn
en el camino de la raz al nodo en curso. en el camino de la raz al nodo en curso.
En B&B, puede haber ms nodos vivos, En B&B, puede haber ms nodos vivos,
que se almacenan en una lista de nodos vivos. que se almacenan en una lista de nodos vivos.
127 127
Branch Branch & & Bound Bound
Diferencias con Diferencias con backtracking backtracking
En En bactracking bactracking, el test de comprobacin realizado por la , el test de comprobacin realizado por la
funciones de poda nos indica nicamente si un nodo funciones de poda nos indica nicamente si un nodo
concreto nos puede llevar a una solucin o no. concreto nos puede llevar a una solucin o no.
En B&B, sin embargo, se acota el valor de la solucin a la En B&B, sin embargo, se acota el valor de la solucin a la En B&B, sin embargo, se acota el valor de la solucin a la En B&B, sin embargo, se acota el valor de la solucin a la
que nos puede conducir un nodo concreto, de forma que que nos puede conducir un nodo concreto, de forma que
esta acotacin nos permite esta acotacin nos permite
podar el rbol (si sabemos que no nos va a llevar a podar el rbol (si sabemos que no nos va a llevar a
una solucin mejor de la que ya tenemos) y una solucin mejor de la que ya tenemos) y
establecer el orden de ramificacin (de modo que establecer el orden de ramificacin (de modo que
comenzaremos explorando las ramas ms comenzaremos explorando las ramas ms
prometedores del rbol). prometedores del rbol).
128 128
Branch Branch & & Bound Bound
Estimacin de las cotas Estimacin de las cotas
a partir de una solucin parcial: a partir de una solucin parcial:
Antes de explorar Antes de explorar ss,,
se acota el valor de se acota el valor de
1
2 3
x
1
x
2
se acota el valor de se acota el valor de
la mejor solucin la mejor solucin M M
alcanzable desde alcanzable desde ss..
CI(s) CI(s) valor(M) valor(M) CS(s) CS(s)
129 129
?
(sin explorar)
s s= (x
1
, x
2
)
................
M
M= (x
1
, x
2
, x
3
, x
4
,..., x
n
)
valor(M) = ?
Branch Branch & & Bound Bound
Descripcin general Descripcin general
Branch Branch & & Bound Bound es un mtodo general de bsqueda es un mtodo general de bsqueda
que se aplica de la siguiente forma: que se aplica de la siguiente forma:
Explora un rbol comenzando a partir de un problema Explora un rbol comenzando a partir de un problema Explora un rbol comenzando a partir de un problema Explora un rbol comenzando a partir de un problema
raz y su regin factible (inicialmente, el problema raz y su regin factible (inicialmente, el problema
original, con su espacio de soluciones completo). original, con su espacio de soluciones completo).
Aplica funciones de acotacin al problema raz, para el Aplica funciones de acotacin al problema raz, para el
que establece cotas inferiores y/o superiores. que establece cotas inferiores y/o superiores.
Si las cotas cumplen las condiciones que se hayan Si las cotas cumplen las condiciones que se hayan
establecido, habremos encontrado la solucin ptima establecido, habremos encontrado la solucin ptima
del problema y la bsqueda termina. del problema y la bsqueda termina.
130 130
Branch Branch & & Bound Bound
Descripcin general Descripcin general
Si se encuentra una solucin ptima para un
subproblema concreto, sta ser una solucin factible
para el problema completo, pero no necesariamente su para el problema completo, pero no necesariamente su
ptimo global.
Cuando en un nodo (subproblema), su cota local es peor
que el mejor valor conocido en la regin, no puede existir
un ptimo global en el subespacio de la regin factible
asociada a ese nodo y, por tanto, ese nodo puede ser
eliminado (podado).
131 131
Branch Branch & & Bound Bound
Descripcin general Descripcin general
En B&B, la bsqueda prosigue hasta que
se examinan o podan todos los nodos, o bien se examinan o podan todos los nodos, o bien
se cumple algn criterio pre-establecido sobre el
mejor valor encontrado y las cotas locales de los
subproblemas an no resueltos.
132 132
Branch Branch & & Bound Bound
Estimadores y cotas en Estimadores y cotas en Branch Branch & & Bound Bound
Problema de
maximizacin
Problema de
minimizacin
Valor Beneficio Coste
Cota local Cota superior Cota inferior
133 133
Cota local Cota superior Cota inferior
CL ptimo local CL ptimo local
Interpretacin: No alcanzaremos
nada mejor al expandir el nodo.
Cota global Cota inferior Cota superior
CG ptimo global CG ptimo global
Interpretacin: La solucin ptima
nunca ser peor que esta cota.
Branch Branch & & Bound Bound
Estimadores y cotas en Estimadores y cotas en Branch Branch & & Bound Bound: :
Cota local Cota local
Nos permite Nos permite asegurar que no se alcanzar nada mejor al asegurar que no se alcanzar nada mejor al
expandir un nodo expandir un nodo determinado. determinado.
Se calcula localmente para cada nodo i. Se calcula localmente para cada nodo i. Se calcula localmente para cada nodo i. Se calcula localmente para cada nodo i.
Si Si ptimoLocal ptimoLocal(i) es el coste/beneficio de la mejor (i) es el coste/beneficio de la mejor
solucin que se podra alcanzar al expandir el nodo i, la solucin que se podra alcanzar al expandir el nodo i, la
cota local es una estimacin de dicho valor que debe ser cota local es una estimacin de dicho valor que debe ser
mejor o igual que mejor o igual que ptimoLocal ptimoLocal(i). (i).
Cuanto ms cercana sea la cota a Cuanto ms cercana sea la cota a ptimoLocal ptimoLocal(i), mejor (i), mejor
ser la cota y ms se podar el rbol (si bien debemos ser la cota y ms se podar el rbol (si bien debemos
mantener un equilibrio entre la eficiencia del clculo mantener un equilibrio entre la eficiencia del clculo
de la cota y su calidad). de la cota y su calidad).
134 134
Branch Branch & & Bound Bound
Estimadores y cotas en Estimadores y cotas en Branch Branch & & Bound Bound: :
Cota global Cota global
La solucin ptima nunca ser peor que esta cota La solucin ptima nunca ser peor que esta cota..
Es el valor de la mejor solucin estudiada hasta el Es el valor de la mejor solucin estudiada hasta el
momento (o una estimacin del ptimo global) y debe momento (o una estimacin del ptimo global) y debe momento (o una estimacin del ptimo global) y debe momento (o una estimacin del ptimo global) y debe
ser peor o igual al coste/beneficio de la solucin ptima. ser peor o igual al coste/beneficio de la solucin ptima.
Inicialmente, se le puede asignar el valor obtenido por un Inicialmente, se le puede asignar el valor obtenido por un
algoritmo algoritmo greedy greedy o, en su defecto, el peor valor posible. o, en su defecto, el peor valor posible.
Se actualiza siempre que alcanzamos una solucin que Se actualiza siempre que alcanzamos una solucin que
mejore su valor actual. mejore su valor actual.
Cuanto ms cercana sea al coste/beneficio ptimo, Cuanto ms cercana sea al coste/beneficio ptimo,
ms se podar el rbol, por lo que es importante ms se podar el rbol, por lo que es importante
encontrar buenas soluciones cuanto antes. encontrar buenas soluciones cuanto antes.
135 135
Branch Branch & & Bound Bound
Estimadores y cotas en Estimadores y cotas en Branch Branch & & Bound Bound: :
Estimador del coste/beneficio local ptimo Estimador del coste/beneficio local ptimo
Se calcula para cada nodo i y sirve para determinar el Se calcula para cada nodo i y sirve para determinar el
siguiente nodo que se expandir. siguiente nodo que se expandir.
Es un estimador de Es un estimador de ptimoLocal ptimoLocal(i), como la cota local, (i), como la cota local, Es un estimador de Es un estimador de ptimoLocal ptimoLocal(i), como la cota local, (i), como la cota local,
pero no tiene por qu ser mejor o igual que pero no tiene por qu ser mejor o igual que
ptimoLocal ptimoLocal(i). (i).
Normalmente, se utiliza la cota local como estimador, Normalmente, se utiliza la cota local como estimador,
pero, si se puede definir una medida ms cercana a pero, si se puede definir una medida ms cercana a
ptimoLocal ptimoLocal(i) sin que importe si es mejor o peor que (i) sin que importe si es mejor o peor que
ptimoLocal ptimoLocal(i), podra interesar el uso de esta medida (i), podra interesar el uso de esta medida
para decidir el siguiente nodo que se expandir. para decidir el siguiente nodo que se expandir.
136 136
Branch Branch & & Bound Bound
Estrategia de poda en Estrategia de poda en Branch Branch & & Bound Bound
Adems de podar aquellos nodos que no cumplan las Adems de podar aquellos nodos que no cumplan las
restricciones implcitas (soluciones parciales no factibles), restricciones implcitas (soluciones parciales no factibles),
se podrn podar aquellos nodos cuya cota local se podrn podar aquellos nodos cuya cota local se podrn podar aquellos nodos cuya cota local se podrn podar aquellos nodos cuya cota local
sea peor que la cota global sea peor que la cota global. .
Si s que lo mejor que se puede alcanzar al expandir un Si s que lo mejor que se puede alcanzar al expandir un
nodo no puede mejorar una solucin que ya se ha nodo no puede mejorar una solucin que ya se ha
obtenido (o se va a obtener al explorar otra rama del obtenido (o se va a obtener al explorar otra rama del
rbol), no es necesario expandir dicho nodo. rbol), no es necesario expandir dicho nodo.
137 137
Branch Branch & & Bound Bound
Estrategia de poda en Estrategia de poda en Branch Branch & & Bound Bound
Por la forma en la que estn definidas las cotas Por la forma en la que estn definidas las cotas
local y global, se puede asegurar que con la poda local y global, se puede asegurar que con la poda
no se perder ninguna solucin ptima: no se perder ninguna solucin ptima: no se perder ninguna solucin ptima: no se perder ninguna solucin ptima:
Por definicin: Por definicin:
- - CotaLocal CotaLocal(i) es mejor o igual que (i) es mejor o igual que ptimoLocal ptimoLocal(i). (i).
- - CotaGlobal CotaGlobal es peor o igual que ptimo. es peor o igual que ptimo.
Si Si CotaLocal CotaLocal(i) es peor que (i) es peor que CotaGlobal CotaGlobal, ,
entonces entonces
ptimoLocal ptimoLocal(i) tiene que ser peor que ptimo. (i) tiene que ser peor que ptimo.
138 138
Branch Branch & & Bound Bound
Estrategia de poda en Estrategia de poda en Branch Branch & & Bound Bound
Problema de
maximizacin
Problema de
minimizacin
Valor Beneficio Coste
Podar si CL < CG CL > CG
139 139
Podar si CL < CG CL > CG
Cota local CL ptimo local CL ptimo local
Interpretacin: No alcanzaremos
nada mejor al expandir el nodo.
Cota global CG ptimo global CG ptimo global
Interpretacin: La solucin ptima
nunca ser peor que esta cota.
Branch Branch & & Bound Bound
Estrategias de ramificacin Estrategias de ramificacin
Normalmente, el rbol de estados de un problema no se Normalmente, el rbol de estados de un problema no se
representa de forma explcita. representa de forma explcita.
Para realizar el recorrido del rbol se utiliza una lista de Para realizar el recorrido del rbol se utiliza una lista de Para realizar el recorrido del rbol se utiliza una lista de Para realizar el recorrido del rbol se utiliza una lista de
nodos vivos (nodos generados pero an no explorados). nodos vivos (nodos generados pero an no explorados).
Segn cmo se implemente la lista de nodos vivos, el Segn cmo se implemente la lista de nodos vivos, el
recorrido ser de uno u otro tipo. recorrido ser de uno u otro tipo.
La lista de nodos vivos contiene todos los nodos que La lista de nodos vivos contiene todos los nodos que
han sido generados pero que no han sido explorados han sido generados pero que no han sido explorados
todava (los nodos pendientes de tratar por B&B). todava (los nodos pendientes de tratar por B&B).
140 140
Branch Branch & & Bound Bound
Estrategias de ramificacin Estrategias de ramificacin
Sin tener en cuenta los costes/beneficios, Sin tener en cuenta los costes/beneficios,
realizando una bsqueda a ciegas: realizando una bsqueda a ciegas:
Estrategia FIFO Estrategia FIFO ((First First In In First First Out Out)) Estrategia FIFO Estrategia FIFO ((First First In In First First Out Out))
Estrategia LIFO Estrategia LIFO ((Last Last In, In, First First Out Out). ).
Usando estimaciones de costes/beneficios, Usando estimaciones de costes/beneficios,
explorando primero los nodos ms prometedores: explorando primero los nodos ms prometedores:
Estrategias LC Estrategias LC ((Least Least Cost Cost) / ) / MB MB ((Maximum Maximum Benefit Benefit). ).
141 141
Branch Branch & & Bound Bound
Estrategias de ramificacin: Estrategias de ramificacin:
Estrategia FIFO Estrategia FIFO
Lista de nodos vivos: Cola FIFO. Lista de nodos vivos: Cola FIFO.
Recorrido del rbol en anchura. Recorrido del rbol en anchura.
LNV
Recorrido del rbol en anchura. Recorrido del rbol en anchura.
142 142
1
3 2
4 5 6 7
1
2 3
3 4 5
4 5 6 7
LNV
Branch Branch & & Bound Bound
Estrategias de ramificacin: Estrategias de ramificacin:
Estrategia LIFO Estrategia LIFO
Lista de nodos vivos: Pila LIFO.
Recorrido del rbol en profundidad.
LNV
Recorrido del rbol en profundidad.
143 143
1
3
2
4 5
6 7
1
2 3
2 4 5
2 4 6 7
LNV
Branch Branch & & Bound Bound
Estrategias de ramificacin: Estrategias de ramificacin:
Estrategias LC [ Estrategias LC [Least Least Cost Cost] / MB [ ] / MB [Maximum MaximumBenefit Benefit] ]
De los nodos de la lista de nodos vivos,
elegir el que tenga elegir el que tenga
menor coste estimado (LC) menor coste estimado (LC)
en problemas de minimizacin, o
mayor beneficio estimado (MB) mayor beneficio estimado (MB)
en problemas de maximizacin.
144 144
Branch Branch & & Bound Bound
Estrategias de ramificacin: Estrategias de ramificacin:
Estrategias LC [ Estrategias LC [Least Least Cost Cost] / MB [ ] / MB [Maximum MaximumBenefit Benefit] ]
En caso de empate (de beneficio o coste estimado)
deshacer el empate usando un criterio FIFO o LIFO: deshacer el empate usando un criterio FIFO o LIFO:
Estrategia LC Estrategia LC- -FIFO/MB FIFO/MB- -FIFO FIFO: En caso de empate,
escoger el primero que se introdujo en la LNV.
Estrategia LC Estrategia LC- -LIFO/MB LIFO/MB- -LIFO LIFO: En caso de empate,
escoger el ltimo que se introdujo en la LNV.
145 145
Branch Branch & & Bound Bound
Estrategias de ramificacin: Estrategias de ramificacin:
Estrategias LC [ Estrategias LC [Least Least Cost Cost] / MB [ ] / MB [Maximum MaximumBenefit Benefit] ]
En cada nodo podemos tener:
una cota inferior de coste/beneficio, una cota inferior de coste/beneficio,
un coste/beneficio estimado y
una cota superior del coste/beneficio.
El rbol se poda segn los valores de las cotas (CI,CS).
El rbol se ramifica segn los valores estimados (E).
146 146
CI E CS
Branch Branch & & Bound Bound
Branch Branch & & Bound Bound en problemas de minimizacin en problemas de minimizacin
La cota local es una cota inferior CI(i) del mejor coste La cota local es una cota inferior CI(i) del mejor coste
que se puede conseguir al expandir el nodo i: que se puede conseguir al expandir el nodo i:
CI(i) CI(i) ptimoLocal ptimoLocal(i) (i) CI(i) CI(i) ptimoLocal ptimoLocal(i) (i)
La cota global es una cota superior CS del coste del La cota global es una cota superior CS del coste del
ptimo global: ptimo global:
CS ptimo CS ptimo
Se puede podar un nodo i cuando Se puede podar un nodo i cuando CI(i) > CS CI(i) > CS..
147 147
Branch Branch & & Bound Bound
Branch Branch & & Bound Bound en problemas de maximizacin en problemas de maximizacin
La cota local es una cota superior CS(i) del mximo La cota local es una cota superior CS(i) del mximo
beneficio que se puede conseguir al expandir el nodo i: beneficio que se puede conseguir al expandir el nodo i:
CS(i) CS(i) ptimoLocal ptimoLocal(i) (i) CS(i) CS(i) ptimoLocal ptimoLocal(i) (i)
La cota global es una cota inferior CI del beneficio del La cota global es una cota inferior CI del beneficio del
ptimo global: ptimo global:
CI ptimo CI ptimo
Se puede podar un nodo i cuando Se puede podar un nodo i cuando CS(i) < CI CS(i) < CI..
148 148
Branch Branch & & Bound Bound
Ejemplo: Ejemplo:
Branch Branch & & Bound Bound usando LC usando LC- -FIFO FIFO
en un problema de minimizacin en un problema de minimizacin
Criterio de poda: Criterio de poda:
Si para algn nodo i, CI(i) > C, entonces se poda el nodo i,
donde C es valor de la menor de las cotas superiores
hasta ese momento (o de alguna solucin final ya
encontrada).
149 149
Ejemplo: Ejemplo:
Branch Branch & & Bound Bound usando LC usando LC- -FIFO FIFO
en un problema de minimizacin en un problema de minimizacin
Branch Branch & & Bound Bound
LNV C
1
2 8 15
1
15
CI E CS
10 11 5 4
5
4
9 8
3 5 8 6 7 8
8 5
5
6 7 5 6
3 5
5
5
4
4 6 10
5 7 11
4 3 5
10
3
2
3 7 13
2 7 13
2 3 13
150 150
1
2 8 15
1
15
5
Branch Branch & & Bound Bound
Implementacin para un problema de minimizacin Implementacin para un problema de minimizacin
( (C,s C,s) ) BranchAndBoundMin BranchAndBoundMin ( (nodoRaz nodoRaz) )
{ {
LNV = { LNV = {nodoRaz nodoRaz}; };
( (C,s C,s) = CS( ) = CS(nodoRaz nodoRaz); // Primera solucin (p.ej. ); // Primera solucin (p.ej. Greedy Greedy) ) ( (C,s C,s) = CS( ) = CS(nodoRaz nodoRaz); // Primera solucin (p.ej. ); // Primera solucin (p.ej. Greedy Greedy) )
// y cota superior asociada // y cota superior asociada
while while (LNV (LNV ) { ) {
x = seleccionar(LNV); // Segn un criterio FIFO, x = seleccionar(LNV); // Segn un criterio FIFO,
// LIFO, LC // LIFO, LC- -FIFO LC FIFO LC- -LIFO LIFO
LNV = LNV LNV = LNV - - {x}; {x};

151 151
Branch Branch & & Bound Bound
Implementacin para un problema de minimizacin Implementacin para un problema de minimizacin

if if ( CI(x) <= C ) ( CI(x) <= C )
foreach foreach (y hijo de x) (y hijo de x)
if if (y es una solucin final mejor que s) { (y es una solucin final mejor que s) {
s = y; s = y; s = y; s = y;
C = coste(y); C = coste(y);
} } else else if if ( y no es solucin final ( y no es solucin final
&& (CI(y) <= C) ) { && (CI(y) <= C) ) {
LNV = LNV + {y}; LNV = LNV + {y};
( (Ctmp,Stmp Ctmp,Stmp) = CS (y); ) = CS (y);
if if ( (Ctmp Ctmp < C) { C = < C) { C = Ctmp Ctmp; s = ; s = Stmp Stmp; } ; }
} }
} } // del bucle // del bucle while while (LNV (LNV ) )
return return ( (C,s C,s); );
} }
152 152
Branch Branch & & Bound Bound
Implementacin para un problema de maximizacin Implementacin para un problema de maximizacin
( (C,s C,s) ) BranchAndBoundMax BranchAndBoundMax ( (nodoRaz nodoRaz) )
{ {
LNV = { LNV = {nodoRaz nodoRaz}; };
( (C,s C,s) = ) = CI CI( (nodoRaz nodoRaz); // Primera solucin (p.ej. ); // Primera solucin (p.ej. Greedy Greedy) ) ( (C,s C,s) = ) = CI CI( (nodoRaz nodoRaz); // Primera solucin (p.ej. ); // Primera solucin (p.ej. Greedy Greedy) )
// y cota inferior asociada // y cota inferior asociada
while while (LNV (LNV ) { ) {
x = seleccionar(LNV); // Segn un criterio FIFO, x = seleccionar(LNV); // Segn un criterio FIFO,
// LIFO, MB // LIFO, MB- -FIFO MB FIFO MB- -LIFO LIFO
LNV = LNV LNV = LNV - - {x}; {x};

153 153
Branch Branch & & Bound Bound
Implementacin para un problema de maximizacin Implementacin para un problema de maximizacin

if if ( ( CS(x) >= C CS(x) >= C ) )
foreach foreach (y hijo de x) (y hijo de x)
if if (y es una solucin final mejor que s) { (y es una solucin final mejor que s) {
s = y; s = y; s = y; s = y;
C = C = beneficio(y) beneficio(y); ;
} } else else if if ( y no es solucin final ( y no es solucin final
&& ( && (CS(y) >= C CS(y) >= C) ) { ) ) {
LNV = LNV + {y}; LNV = LNV + {y};
( (Ctmp,Stmp Ctmp,Stmp) = ) = CI (y) CI (y); ;
if if ( (Ctmp Ctmp > > C) { C = C) { C = Ctmp Ctmp; s = ; s = Stmp Stmp; } ; }
} }
} } // del bucle // del bucle while while (LNV (LNV ) )
return return ( (C,s C,s); );
} }
154 154
Branch Branch & & Bound Bound
Observaciones: Observaciones:
Slo se comprueba el criterio de poda cuando se
introduce o se saca un nodo de la lista de nodos vivos. introduce o se saca un nodo de la lista de nodos vivos.
Si un descendiente de un nodo es una solucin final,
entonces no se introduce en la lista de nodos vivos.
Se comprueba si esa solucin es mejor que la actual y,
si es as, se actualiza C y se guarda como mejor
solucin hasta el momento.
155 155
Branch Branch & & Bound Bound
Qu hacemos cuando Qu hacemos cuando CI(x) CI(x) = = CS(x)? CS(x)?
Opcin A: Opcin A: No podar No podar (no sabemos si tenemos la solucin) (no sabemos si tenemos la solucin)..
Opcin B: Opcin B: Usar dos variables de poda. Usar dos variables de poda. Opcin B: Opcin B: Usar dos variables de poda. Usar dos variables de poda.
CI CI: Cota inferior actual de una solucin parcial. : Cota inferior actual de una solucin parcial.
voa voa: Valor ptimo actual de una solucin encontrada. : Valor ptimo actual de una solucin encontrada.
Podar Podar x x si si ((CS(x) CS(x) < < CI CI) o bien ( ) o bien (CS(x) CS(x) voa voa))..
Opcin C: Opcin C: Generar directamente el nodo solucin Generar directamente el nodo solucin
usando el mtodo utilizado para calcular la cota. usando el mtodo utilizado para calcular la cota.
if if (CI(x) == CS(x)) (CI(x) == CS(x))
x = Solucin empleada para calcular x = Solucin empleada para calcular
la cota (p.ej. algoritmo la cota (p.ej. algoritmo greedy greedy) )
156 156
Branch Branch & & Bound Bound
Tiempo de ejecucin de un algoritmo B&B Tiempo de ejecucin de un algoritmo B&B
El tiempo de ejecucin de un algoritmo B&B depende de:
El nmero de nodos recorridos
(que, a su vez, depende de la efectividad de la poda).
El tiempo empleado en cada nodo El tiempo empleado en cada nodo
(tiempo necesario para hacer las estimaciones de coste y gestionar
la lista de nodos vivos en funcin de la estrategia de ramificacin).
En el peor caso, el tiempo de un algoritmo B&B ser
igual al de un algoritmo backtracking (o peor incluso,
si tenemos en cuenta el tiempo que requiere la LNV).
En el caso promedio, no obstante, se suelen
obtener mejoras con respecto a backtracking.
157 157
Branch Branch & & Bound Bound
Tiempo de ejecucin de un algoritmo B&B Tiempo de ejecucin de un algoritmo B&B
Cmo hacer que un algoritmo B&B sea ms eficiente?
Haciendo estimaciones de coste muy precisas
(con lo que se realiza una poda exhaustiva del rbol
y se recorren menos nodos, pero se emplea mucho y se recorren menos nodos, pero se emplea mucho
tiempo en realizar las estimaciones).
Haciendo estimaciones de coste poco precisas
(con lo que se emplea poco tiempo en cada nodo,
a costa de no podar demasiado, con lo que el nmero
de nodos explorados puede ser muy elevado).
Conclusin:
Se debe buscar un equilibrio entre la precisin
de las cotas y el tiempo empleado en calcularlas.
158 158
Branch Branch & & Bound Bound
Soluciones Soluciones branch branch & & bound bound para distintos problemas para distintos problemas
El problema de la mochila 0/1 El problema de la mochila 0/1
El problema del viajante de comercio El problema del viajante de comercio El problema del viajante de comercio El problema del viajante de comercio
El problema de la asignacin El problema de la asignacin
N NOTA OTA: Para cada problema, describiremos la forma de : Para cada problema, describiremos la forma de
las soluciones (y su rbol asociado), el clculo de las las soluciones (y su rbol asociado), el clculo de las
cotas y las estrategias de ramificacin y poda. cotas y las estrategias de ramificacin y poda. 159 159
Branch Branch & & Bound Bound
El problema de la mochila 0/1 El problema de la mochila 0/1
1. Representacin de la solucin 1. Representacin de la solucin
Mediante un Mediante un rbol binario rbol binario::
(s (s
11
, s , s
22
, ..., , ..., s s
nn
), con s ), con s
ii
{0, 1}. {0, 1}.
Hijos de un nodo (s Hijos de un nodo (s ,..., ,...,s s ): ): Hijos de un nodo (s Hijos de un nodo (s
11
,..., ,...,s s
k k
): ):
(s (s
11
,...,s ,...,s
k k
,0) y (s ,0) y (s
11
,...,s ,...,s
k k
,1). ,1).
Mediante un Mediante un rbol combinatorio rbol combinatorio: :
(s (s
11
, s , s
22
, ..., , ..., s s
nn
), donde ), donde mmnn y s y s
ii
{1, 2, ..., n}. {1, 2, ..., n}.
Hijos de un nodo (s Hijos de un nodo (s
11
,..., ,...,s s
k k
): ):
(s (s
11
,...,s ,...,s
k k
,s ,s
k k
+1), (s +1), (s
11
,...,s ,...,s
k k
,s ,s
k k
+2), , (s +2), , (s
11
,..., ,...,s s
k k
,n ,n). ).
160 160
Branch Branch & & Bound Bound
El problema de la mochila 0/1 El problema de la mochila 0/1
2. Clculo de las cotas 2. Clculo de las cotas
Cota inferior: Cota inferior: Beneficio que se obtendra slo Beneficio que se obtendra slo
con los objetos incluidos hasta ese nodo. con los objetos incluidos hasta ese nodo.
Estimacin del beneficio: Estimacin del beneficio: A la solucin actual, A la solucin actual,
sumar el beneficio de incluir los objetos enteros sumar el beneficio de incluir los objetos enteros
que quepan, utilizando un algoritmo que quepan, utilizando un algoritmo greedy greedy
(p.ej. en orden decreciente de (p.ej. en orden decreciente de bb
ii
/p /p
ii
). ).
Cota superior: Cota superior: Valor obtenido resolviendo el problema Valor obtenido resolviendo el problema
de la mochila continuo a partir de ese nodo de la mochila continuo a partir de ese nodo
(un algoritmo (un algoritmo greedy greedy que proporciona una cota que proporciona una cota
superior vlida para el problema de la mochila 0/1). superior vlida para el problema de la mochila 0/1).
161 161
Branch Branch & & Bound Bound
El problema de la mochila 0/1 El problema de la mochila 0/1
3. Estrategia de ramificacin y poda 3. Estrategia de ramificacin y poda
Estrategia de poda (problema de maximizacin): Estrategia de poda (problema de maximizacin):
Variable de poda C: Valor de la mayor cota inferior o Variable de poda C: Valor de la mayor cota inferior o
solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora.
Condicin de poda: Podar el nodo i si Condicin de poda: Podar el nodo i si CS(i) CS(i) C C..
Estrategia de ramificacin: Estrategia de ramificacin:
Puesto que disponemos de una estimacin del beneficio, Puesto que disponemos de una estimacin del beneficio,
usamos una estrategia MB (exploramos primero las usamos una estrategia MB (exploramos primero las
ramas con mayor beneficio esperado). ramas con mayor beneficio esperado).
MB MB- -FIFO MB FIFO MB- -LIFO? LIFO? Si ussemos MB Si ussemos MB- -LIFO, en caso LIFO, en caso
de empate, seguiramos por la rama ms profunda. de empate, seguiramos por la rama ms profunda.
162 162
Branch Branch & & Bound Bound
El problema de la mochila 0/1 El problema de la mochila 0/1
Ejemplo (con un rbol binario) Ejemplo (con un rbol binario)
n = 4, M = 7, B = (2, 3, 4, 5), P = (1, 2, 3, 4) n = 4, M = 7, B = (2, 3, 4, 5), P = (1, 2, 3, 4)
1
0 9 10
2 9 10
0 7 9
0 1
1
LNV C
0
CI E CS
163 163
3
7
2
4
2 6 9
5 10 10
2 9 10
8 9 5 10
9 9 10
5 9 10
5
6
0
0
0
1
1
1
3 2
5 2 4
2 4
2 4 7
2 4
4
2
5
9
10
10
10
6 7
Branch Branch & & Bound Bound
El problema de la mochila 0/1 El problema de la mochila 0/1
Ejemplo (con un rbol combinatorio y MB Ejemplo (con un rbol combinatorio y MB- -LIFO) LIFO)
n = 4, M = 7, B = (2, 3, 4, 5), P = (1, 2, 3, 4) n = 4, M = 7, B = (2, 3, 4, 5), P = (1, 2, 3, 4)
0 9 10
1
2 3
1
4
1
LNV C
0
CI E CS
164 164
2 9 10
9 9 10
10 10 10
5 9 10
3
4
4 2
7 7 7
5 5 5
11
3
6
10
7 8
2
5
6 6 9
3 7 9
4
4 9 9
3
4
9
9 9 9
2 4 3
4 6
6 3 7
3 7
7
5
7
9
10
10
3 7
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
Encontrar un recorrido de longitud Encontrar un recorrido de longitud
mnima para una persona que tiene mnima para una persona que tiene
que visitar varias ciudades y volver que visitar varias ciudades y volver
al punto de partida, conocida la al punto de partida, conocida la
distancia existente entre cada dos distancia existente entre cada dos
ciudades. ciudades. ciudades. ciudades.
En trminos formales: En trminos formales:
Dado un grafo dirigido con arcos de longitud no negativa, Dado un grafo dirigido con arcos de longitud no negativa,
se trata de encontrar un circuito se trata de encontrar un circuito hamiltoniano hamiltoniano de longitud de longitud
mnima (un circuito de longitud mnima que comience y mnima (un circuito de longitud mnima que comience y
termine en el mismo vrtice y pase exactamente termine en el mismo vrtice y pase exactamente
una vez por cada uno de los vrtices restantes). una vez por cada uno de los vrtices restantes).
165 165
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
1. Representacin del espacio de soluciones: 1. Representacin del espacio de soluciones:
rbol de permutaciones restringido al grafo G rbol de permutaciones restringido al grafo G
Grafo G(V,E), Grafo G(V,E),
con D[ con D[i,j i,j] la distancia asociada a la arista ( ] la distancia asociada a la arista (i,j i,j))E E.. con D[ con D[i,j i,j] la distancia asociada a la arista ( ] la distancia asociada a la arista (i,j i,j))E E..
Candidatos: Candidatos:
C = { (1,X,1) | X es una permutacin de (2,3,,n) }, C = { (1,X,1) | X es una permutacin de (2,3,,n) },
|C| = (n |C| = (n- -1)! 1)!
Soluciones factibles: Soluciones factibles:
E = { (1,X,1) | X = (x E = { (1,X,1) | X = (x
11
,x ,x
22
,,x ,,x
nn- -11
) es una permutacin ) es una permutacin
de (2,3,,n) tal que (i de (2,3,,n) tal que (i
jj
,i ,i
j+1 j+1
))E E, 0<j<n, (1,x , 0<j<n, (1,x
11
))E E, (x , (x
nn- -11
,1) ,1)E E} }
Funcin objetivo: Funcin objetivo: Minimizar F(X) Minimizar F(X)
F(X)=D[1,x F(X)=D[1,x
11
]+D[x ]+D[x
11
, x , x
22
]+...+D[x ]+...+D[x
nn- -22
, x , x
nn- -11
]+D[x ]+D[x
nn
,1] ,1]
166 166
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
1. Representacin del espacio de soluciones: 1. Representacin del espacio de soluciones:
rbol de permutaciones restringido al grafo G rbol de permutaciones restringido al grafo G
La raz del rbol (nivel 0) es el vrtice inicial del ciclo.
En el nivel i del rbol se consideran todos los vrtices En el nivel i del rbol se consideran todos los vrtices
menos los i que ya han sido visitados.
Un vrtice en el nivel i debe ser adyacente a su vrtice
padre, que aparece en el nivel i-1 del rbol.
167 167
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
2. Clculo de cotas 2. Clculo de cotas
Cota inferior: Cota inferior:
El mejor coste ser el de la arista adyacente que tenga El mejor coste ser el de la arista adyacente que tenga
el menor valor. el menor valor. el menor valor. el menor valor.
La suma de los costes asociados a las mejores aristas La suma de los costes asociados a las mejores aristas
incidentes en cada vrtice an por incluir en el circuito, incidentes en cada vrtice an por incluir en el circuito,
ms el coste del camino ya recorrido, nos ofrece una ms el coste del camino ya recorrido, nos ofrece una
estimacin vlida para tomar decisiones. estimacin vlida para tomar decisiones.
168 168
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
2. Clculo de cotas 2. Clculo de cotas
Dada la siguiente matriz de adyacencia, Dada la siguiente matriz de adyacencia,
cul es el coste mnimo de un circuito cul es el coste mnimo de un circuito hamiltoniano hamiltoniano??
00 14 14 44 10 10 20 20 Mnimo Mnimo = 4 = 4
14 14 00 77 88 77 Mnimo Mnimo = 7 = 7
44 55 00 77 16 16 Mnimo = 4 Mnimo = 4
11 11 77 99 00 22 Mnimo = 2 Mnimo = 2
18 18 77 17 17 44 00 Mnimo = 4 Mnimo = 4
TOTAL TOTAL = = 21 21
169 169
Branch Branch & & Bound Bound
El problema del viajante de comercio El problema del viajante de comercio
3. Estrategia de ramificacin y poda 3. Estrategia de ramificacin y poda
Estrategia de poda (problema de minimizacin): Estrategia de poda (problema de minimizacin):
Variable de poda C: Valor de la menor cota superior o Variable de poda C: Valor de la menor cota superior o
solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora.
Condicin de poda: Podar el nodo i si Condicin de poda: Podar el nodo i si CI(i) CI(i) C C..
Estrategia de ramificacin: Estrategia de ramificacin:
Puesto que disponemos de una estimacin del coste, Puesto que disponemos de una estimacin del coste,
podemos usar una podemos usar una estrategia LC estrategia LC (exploramos primero (exploramos primero
los circuitos con menor valor esperado). los circuitos con menor valor esperado).
170 170
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
Enunciado del problema: Enunciado del problema:
Dadas n personas y n tareas tales que B[i][j] es el Dadas n personas y n tareas tales que B[i][j] es el
rendimiento o beneficio asociado a que la persona i se rendimiento o beneficio asociado a que la persona i se
encargue de realizar la tarea j, encontrar la asignacin de encargue de realizar la tarea j, encontrar la asignacin de encargue de realizar la tarea j, encontrar la asignacin de encargue de realizar la tarea j, encontrar la asignacin de
personas a tareas que maximice el beneficio obtenido. personas a tareas que maximice el beneficio obtenido.
Formulacin matemtica: Formulacin matemtica:
Maximizar Maximizar B[p B[p
ii
][ ][t t
jj
], ],
sujeto a la restriccin sujeto a la restriccin pp
ii
p p
jj
, , t t
ii
t t
jj
, , ij ij
171 171
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
1. Representacin de la solucin 1. Representacin de la solucin
Desde el punto de vista de las Desde el punto de vista de las personas: personas:
s = (t s = (t
11
, t , t
22
, ..., , ..., t t
nn
), siendo t ), siendo t
ii
{1, ..., n}, con {1, ..., n}, con t t
ii
t t
jj
, , iijj
172 172
B 1 2 3
1 5 6 4
2 3 8 2
3 6 5 1
Tareas
P
e
r
s
o
n
a
s
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
2. Clculo de cotas 2. Clculo de cotas
Alternativa A: Alternativa A: Estimaciones triviales Estimaciones triviales
Cota inferior: Cota inferior:
Beneficio acumulado hasta ese momento. Beneficio acumulado hasta ese momento. Beneficio acumulado hasta ese momento. Beneficio acumulado hasta ese momento.
Cota superior: Cota superior:
CI ms las restantes asignaciones con el mximo global. CI ms las restantes asignaciones con el mximo global.
Estimacin del beneficio: Estimacin del beneficio:
La media de las cotas: BE(x) = (CI(x)+CS(x))/2. La media de las cotas: BE(x) = (CI(x)+CS(x))/2.
173 173
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
2. Clculo de cotas 2. Clculo de cotas
Alternativa B: Alternativa B: Estimaciones con un algoritmo Estimaciones con un algoritmo greedy greedy
Cota inferior: Cota inferior:
Beneficio acumulado hasta ese momento ms el Beneficio acumulado hasta ese momento ms el Beneficio acumulado hasta ese momento ms el Beneficio acumulado hasta ese momento ms el
resultado de resultado de asignar a cada persona la tarea libre asignar a cada persona la tarea libre
que proporciona un mayor beneficio que proporciona un mayor beneficio..
Cota superior: Cota superior:
Asignar las tareas con mayor beneficio Asignar las tareas con mayor beneficio
(aunque se repitan). (aunque se repitan).
Estimacin del beneficio: Estimacin del beneficio:
La media de las cotas: BE(x) = (CI(x)+CS(x))/2. La media de las cotas: BE(x) = (CI(x)+CS(x))/2.
174 174
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
3. Estrategia de ramificacin y poda 3. Estrategia de ramificacin y poda
Estrategia de poda (problema de maximizacin): Estrategia de poda (problema de maximizacin):
Variable de poda C: Valor de la mayor cota inferior o Variable de poda C: Valor de la mayor cota inferior o
solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora. solucin final del problema encontrada hasta ahora.
Condicin de poda: Podar el nodo i si Condicin de poda: Podar el nodo i si CS(i) CS(i) C C..
Estrategia de ramificacin Estrategia de ramificacin MB MB- -LIFO: LIFO:
Explorar primero los nodos con mayor beneficio estimado Explorar primero los nodos con mayor beneficio estimado
y, en caso de empate, seguir por la rama ms profunda. y, en caso de empate, seguir por la rama ms profunda.
175 175
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
Alternativa A Alternativa A
B 1 2 3
1 5 6 4
2 3 8 2
3 6 5 1
Tareas
P
e
r
s
o
n
a
s
1
2 4
1
3
x
1
3
2
0 12 24
x
2
x
3
5 13 21 6 14 22 4 12 20
S=(3,2,1)
5
6
9 13 17 8 12 16
7
10
8
9
13 17 21 7 11 15
10
14
11
14
12
13
7 11 15 12 16 20
14
18
1 1
1
2
3
2
3
3
3 1
176 176
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
Alternativa B Alternativa B
B 1 2 3
1 5 6 4
2 3 8 2
3 6 5 1
Tareas
P
e
r
s
o
n
a
s
1
1 3
x
1
2
10 14 18
Optimizacin Optimizacin
177 177
x
3
s= (3, 2, 1)
1
10
18
18
C LNV
3
2 3
2
5
4
2 x
2
3
6
1
18 18 18
...
if (CI(y) == CS(y))
y = solucinGreedy(y);
...
14 15 14.5 14 14 14
Branch Branch & & Bound Bound
El problema de la asignacin El problema de la asignacin
NNOTA OTA F FINAL INAL
El problema de la asignacin se puede resolver de forma El problema de la asignacin se puede resolver de forma
mucho ms eficiente plantendolo como un problema de mucho ms eficiente plantendolo como un problema de
optimizacin del flujo en una red: optimizacin del flujo en una red: O(n O(n
33
) ).. optimizacin del flujo en una red: optimizacin del flujo en una red: O(n O(n ) )..
Jon Jon Kleinberg Kleinberg & Eva Tardos: & Eva Tardos:
Algorithm Algorithm Design Design, seccin 7.13 , seccin 7.13
Addison Addison- -Wesley Wesley, 2005 , 2005
ISBN 0 ISBN 0- -321 321- -37291 37291- -33
http://en.wikipedia.org/wiki/Assignment_problem http://en.wikipedia.org/wiki/Assignment_problem
178 178