Package topics.branchandbound
package topics.branchandbound
Branch-and-Bound algorithms — intelligent search for combinatorial optimisation.
Branch and Bound systematically enumerates candidate solutions by partitioning the search space into sub-problems (branching) while using upper/lower bounds to discard sub-problems that cannot yield a solution better than the current best (bounding). It guarantees optimality while avoiding full enumeration.
Core Steps
- Branch: partition the current node into child nodes.
- Bound: compute a bound on the optimal value reachable from each child.
- Prune: discard any child whose bound is worse than the best solution found so far.
- Select: choose the next node to expand (best-first, depth-first, etc.).
Comparison with Related Techniques
- Backtracking — explores all valid solutions; no cost bounds.
- Dynamic Programming — solves overlapping sub-problems; polynomial time.
- Branch & Bound — optimal solution via bounding; variable time.
Classes in This Package
AgentsTasks— optimal assignment of agents to tasksEightPuzzle— 8-puzzle solverRectanglesPlacement— optimal rectangle packingRectanglesPlacementThreads— multi-threaded variant
-
ClassesClassDescriptionBRANCH AND BOUND PROBLEM: THE PROBLEM OF ASSIGNING N TASK TO AGENTSBRANCH AND BOUND PROBLEM: THE PUZZLEBRANCH AND BOUND PROBLEM: OPTIMAL PLACEMENT OF RECTANGLESBRANCH AND BOUND PROBLEM: OPTIMAL PLACEMENT OF RECTANGLES