Backtracking And Branch And Bound
Subset & Permutation Problems
• Subset problem of size n.
 Nonsystematic search of the space for the answer takes
O(p2n
) time, where p is the time needed to evaluate
each member of the solution space.
• Permutation problem of size n.
 Nonsystematic search of the space for the answer takes
O(pn!) time, where p is the time needed to evaluate
each member of the solution space.
• Backtracking and branch and bound perform a
systematic search; often taking much less time
than taken by a nonsystematic search.
Tree Organization Of Solution Space
• Set up a tree structure such that the leaves represent
members of the solution space.
• For a size n subset problem, this tree structure has 2n
leaves.
• For a size n permutation problem, this tree structure
has n! leaves.
• The tree structure is too big to store in memory; it
also takes too much time to create the tree structure.
• Portions of the tree structure are created by the
backtracking and branch and bound algorithms as
needed.
Subset Tree For n = 4
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
x3=1 x3= 0
x4=1 x4=0
1110 1011 0111 0001
Permutation Tree For n = 3
x1=1 x1=2
x1= 3
x2= 2 x2= 3 x2= 1 x2= 3 x2= 1 x2= 2
x3=3 x3=2 x3=3 x3=1 x3=2 x3=1
123 132 213 231 312 321
Backtracking
• Search the solution space tree in a depth-
first manner.
• May be done recursively or use a stack to
retain the path from the root to the current
node in the tree.
• The solution space tree exists only in your
mind, not in the computer.
Backtracking Depth-First Search
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
Backtracking Depth-First Search
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
Backtracking Depth-First Search
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
Backtracking Depth-First Search
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
Backtracking Depth-First Search
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
O(2n
) Subet Sum & Bounding Functions
x1=1 x1= 0
x2=1 x2= 0 x2=1 x2= 0
Each forward and backward move takes O(1) time.
{10, 5, 2, 1}, c = 14
Backtracking
• Space required is O(tree height).
• With effective bounding functions, large instances
can often be solved.
• For some problems (e.g., 0/1 knapsack), the
answer (or a very good solution) may be found
quickly but a lot of additional time is needed to
complete the search of the tree.
• Run backtracking for as much time as is feasible
and use best solution found up to that time.
Branch And Bound
• Search the tree using a breadth-first search (FIFO
branch and bound).
• Search the tree as in a bfs, but replace the FIFO
queue with a stack (LIFO branch and bound).
• Replace the FIFO queue with a priority queue
(least-cost (or max priority) branch and bound).
The priority of a node p in the queue is based on
an estimate of the likelihood that the answer node
is in the subtree whose root is p.
Branch And Bound
• Space required is O(number of leaves).
• For some problems, solutions are at different
levels of the tree (e.g., 16 puzzle).
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
1
3
2
4
5
6
13
14
15
12
11 10
9 7
8
Branch And Bound
 FIFO branch and bound finds solution closest to root.
 Backtracking may never find a solution because tree
depth is infinite (unless repeating configurations are
eliminated).
• Least-cost branch and bound directs the search to
parts of the space most likely to contain the
answer. So it could perform better than
backtracking.

design and analysis of algorithms lecture 43

  • 1.
  • 2.
    Subset & PermutationProblems • Subset problem of size n.  Nonsystematic search of the space for the answer takes O(p2n ) time, where p is the time needed to evaluate each member of the solution space. • Permutation problem of size n.  Nonsystematic search of the space for the answer takes O(pn!) time, where p is the time needed to evaluate each member of the solution space. • Backtracking and branch and bound perform a systematic search; often taking much less time than taken by a nonsystematic search.
  • 3.
    Tree Organization OfSolution Space • Set up a tree structure such that the leaves represent members of the solution space. • For a size n subset problem, this tree structure has 2n leaves. • For a size n permutation problem, this tree structure has n! leaves. • The tree structure is too big to store in memory; it also takes too much time to create the tree structure. • Portions of the tree structure are created by the backtracking and branch and bound algorithms as needed.
  • 4.
    Subset Tree Forn = 4 x1=1 x1= 0 x2=1 x2= 0 x2=1 x2= 0 x3=1 x3= 0 x4=1 x4=0 1110 1011 0111 0001
  • 5.
    Permutation Tree Forn = 3 x1=1 x1=2 x1= 3 x2= 2 x2= 3 x2= 1 x2= 3 x2= 1 x2= 2 x3=3 x3=2 x3=3 x3=1 x3=2 x3=1 123 132 213 231 312 321
  • 6.
    Backtracking • Search thesolution space tree in a depth- first manner. • May be done recursively or use a stack to retain the path from the root to the current node in the tree. • The solution space tree exists only in your mind, not in the computer.
  • 7.
    Backtracking Depth-First Search x1=1x1= 0 x2=1 x2= 0 x2=1 x2= 0
  • 8.
    Backtracking Depth-First Search x1=1x1= 0 x2=1 x2= 0 x2=1 x2= 0
  • 9.
    Backtracking Depth-First Search x1=1x1= 0 x2=1 x2= 0 x2=1 x2= 0
  • 10.
    Backtracking Depth-First Search x1=1x1= 0 x2=1 x2= 0 x2=1 x2= 0
  • 11.
    Backtracking Depth-First Search x1=1x1= 0 x2=1 x2= 0 x2=1 x2= 0
  • 12.
    O(2n ) Subet Sum& Bounding Functions x1=1 x1= 0 x2=1 x2= 0 x2=1 x2= 0 Each forward and backward move takes O(1) time. {10, 5, 2, 1}, c = 14
  • 13.
    Backtracking • Space requiredis O(tree height). • With effective bounding functions, large instances can often be solved. • For some problems (e.g., 0/1 knapsack), the answer (or a very good solution) may be found quickly but a lot of additional time is needed to complete the search of the tree. • Run backtracking for as much time as is feasible and use best solution found up to that time.
  • 14.
    Branch And Bound •Search the tree using a breadth-first search (FIFO branch and bound). • Search the tree as in a bfs, but replace the FIFO queue with a stack (LIFO branch and bound). • Replace the FIFO queue with a priority queue (least-cost (or max priority) branch and bound). The priority of a node p in the queue is based on an estimate of the likelihood that the answer node is in the subtree whose root is p.
  • 15.
    Branch And Bound •Space required is O(number of leaves). • For some problems, solutions are at different levels of the tree (e.g., 16 puzzle). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 3 2 4 5 6 13 14 15 12 11 10 9 7 8
  • 16.
    Branch And Bound FIFO branch and bound finds solution closest to root.  Backtracking may never find a solution because tree depth is infinite (unless repeating configurations are eliminated). • Least-cost branch and bound directs the search to parts of the space most likely to contain the answer. So it could perform better than backtracking.

Editor's Notes

  • #3 Tree organizations in which nonleaf nodes represent members of the solution space are also possible.
  • #14 When you move forward on an x =1 branch, add to a variable that keeps track of the sum of the subset represented by the node. When you move back on an x = 1 branch, subtract. Moving in either direction along an x = 0 branch requires no add/subtract. When you reach a node with the desired sum, terminate. When you reach a node whose sum exceeds the desired sum, backtrack; do not move into this nodes subtrees. When you make a right child move see if the desired sum is attainable by adding in all remaining integers; for this keep another variable that gives you the sum of the remaining integers.