Un nodo guarda el estado de la búsqueda en un punto dado.
Branch and Bound
Ramificación, cotas, poda por suboptimalidad y ejemplo completo de mochila entera.
Branch and Bound: idea central
Branch and Bound es una técnica para resolver problemas de optimización explorando un árbol de decisiones. En cada nodo se calcula una cota que estima qué tan buena podría llegar a ser la mejor solución dentro de esa rama.
La técnica combina dos acciones: ramificar y acotar. Ramificar significa dividir el problema en decisiones más específicas. Acotar significa estimar si una rama todavía tiene posibilidad de mejorar la mejor solución encontrada.
Branch and Bound no explora una rama solo porque sea válida. La explora únicamente si todavía puede mejorar la mejor solución conocida.
Diferencia básica con backtracking
| Criterio | Backtracking | Branch and Bound |
|---|---|---|
| Tipo de problema | Búsqueda de soluciones válidas. | Búsqueda de la mejor solución. |
| Poda principal | Por infactibilidad. | Por infactibilidad y por suboptimalidad. |
| Orden de exploración | Normalmente profundidad. | Profundidad, anchura o cola de prioridades. |
Conceptos clave
El algoritmo mantiene una mejor solución conocida y una lista de nodos pendientes. Cada nodo se conserva o se descarta según sus cotas.
Modelo de poda en maximización
En un problema de maximización, es la cota superior (estimación optimista) del nodo . Si este valor máximo posible ni siquiera alcanza a la mejor solución ya encontrada (mejor), la rama se corta porque no tiene sentido seguir explorando algo que no puede superar lo que ya tenemos.
Modelo de poda en minimización
En minimización, representa la cota inferior (el costo mínimo estimado). Si el costo más bajo que podríamos conseguir en esta rama es mayor o igual que el mejor costo ya conocido, descartamos el nodo.
Glosario técnico de Branch and Bound
| Concepto | Rol en el algoritmo |
|---|---|
| Cota global / Incumbente | Referencia del mejor valor factible encontrado hasta ahora. |
| Lista de Nodos Vivos (LNV) | Estructura que guarda los nodos generados pero no expandidos. |
Modelo general de Branch and Bound
Cada nodo representa una solución parcial. Además de las decisiones tomadas, el nodo guarda el valor acumulado, los recursos usados, una cota optimista y el siguiente nivel de decisión.
Modelo de nodo
Un nodo N se define por el vector de decisiones parciales , el valor y recurso consumido hasta el momento, las cotas inferior () y superior (), y el nivel en el árbol de decisiones.
Modelo de ramificación binaria
Ramificar consiste en dividir el problema actual en dos o más subproblemas. En el caso binario, esto suele significar tomar una decisión (valor 1) o ignorarla (valor 0) para el siguiente elemento del problema.
Actualización de la mejor solución
La variable se actualiza únicamente cuando encontramos una solución que es factible (cumple restricciones), completa (todas las decisiones tomadas) y que además supera el valor previo.
Modelo completo de decisión sobre un nodo
Este modelo resume el destino de un nodo. Puede morir por exceder recursos, por ser una hoja del árbol, o por ser suboptimal (su cota superior no supera al mejor). Si no cumple nada de esto, el nodo permanece vivo para ser explorado más tarde.
Flujo general de Branch and Bound
Ejemplo completo: Mochila entera 0/1
En la mochila entera 0/1 se tienen objetos con valor y peso. El objetivo es maximizar el valor total sin superar la capacidad.
Modelo de decisión
La variable de decisión es binaria. Un valor de 1 indica que el objeto forma parte de la mochila, y un 0 indica que se queda fuera.
Modelo de optimización
Buscamos maximizar la suma de los valores () de los objetos elegidos, con la restricción de que la suma de sus pesos () no exceda la capacidad total W.
Árbol de exploración Branch and Bound — Mochila 0/1
La solución óptima es , es decir, tomar los objetos 1, 2 y 4. El peso total es y el valor total es .
Cota superior por mochila fraccionaria
Para estimar una cota superior en mochila 0/1, permitimos tomar fracciones de objetos. Esa solución fraccionaria es siempre mayor o igual a cualquier solución entera.
Modelo de cota superior
La cota superior del nodo es la suma del valor ya acumulado más el valor que obtendríamos si pudiéramos llenar el resto de la capacidad de forma óptima usando fracciones de los objetos que sobran.
Valor de una fracción
Cuando un objeto ya no cabe completo, tomamos solo la parte proporcional que complete la capacidad W. Su valor se calcula multiplicando el valor total del objeto por la fracción de peso que estamos aprovechando.
Complejidad de Branch and Bound
Branch and Bound puede ser rápido en la práctica, pero su peor caso sigue siendo exponencial.
Modelo general de costo
El tiempo total depende del número de nodos visitados multiplicado por el costo de las operaciones por nodo: generar hijos (), calcular la cota () y gestionar la lista de nodos vivos ().
Peor caso binario
En el peor de los casos, la cota no descarta ninguna rama y visitamos todo el árbol binario de tamaño . Sin embargo, una buena cota puede hacer que el número real de nodos sea órdenes de magnitud menor.
Mochila 0/1 con cota fraccionaria
Como el cálculo de la cota fraccionaria requiere un recorrido lineal por los objetos restantes, el costo por nodo es , lo que multiplica el costo total del árbol.
Costo adicional de cola de prioridad
Si usamos una cola de prioridad para Max Benefit o Least Cost, insertar y extraer nodos tiene un costo logarítmico respecto al número de nodos vivos en ese momento.
Resumen operativo
- Define la función objetivo.
- Representa cada solución como secuencia de decisiones.
- Define ramificación y cotas seguras.
- Mantén la mejor solución factible (incumbente).
- Elige estrategia de recorrido (Max Benefit recomendado).
- Expande y poda hasta vaciar la LNV.
Modelos clave
Se descarta la rama si su máximo potencial no supera lo ya conseguido.
El costo se mide en nodos multiplicados por el trabajo en cada uno.