Pruning - PowerPoint PPT Presentation

1 / 11
About This Presentation
Title:

Pruning

Description:

It seems like, with a little cleverness, we could do better. It turns out that we can use pruning to do somewhat better ... you can do significant pruning, if ... – PowerPoint PPT presentation

Number of Views:21
Avg rating:3.0/5.0
Slides: 12
Provided by: davidlm3
Category:

less

Transcript and Presenter's Notes

Title: Pruning


1
Pruning
2
Exponential growth
  • How many leaves are there in a complete binary
    tree of depth N?

depth 0, count 1 depth 1,
count 2 depth 3, count
4 depth 4, count 8
depth 5, count 16
depth N, count 2N
  • This is easy to demonstrate
  • Count going left as a 0
  • Count going right as a 1
  • Each leaf represents one of the 2N possible N-bit
    binary numbers
  • This observation turns out to be very useful in
    certain kinds of problems

3
Pruning
  • Suppose the binary tree represents a problem that
    we have to explore to find a solution (or goal
    node)
  • If we can prune (decide we can ignore) a part of
    the tree, we save effort
  • The higher up in the tree we can prune, the more
    effort we can save
  • The advantage is exponential

4
Sum of subsets
  • Problem
  • There are n positive integers, and a positive
    integer W
  • Find a subset of the integers that sum to exactly
    W
  • Example
  • The numbers are 2, 5, 7, 8, 13
  • Find a subset of numbers that sum to exactly 25
  • We can multiply each number by 1 if it is in the
    sum, 0 if it is not
  • 2 5 7 8 130 0 0 0 0 ? 00 0 0 0 1 ?
    130 0 0 1 0 ? 80 0 0 1 1 ? 210 0 1
    0 1 ? 200 0 1 1 0 ? 150 0 1 1 1 ? 280
    1 0 0 0 ? 50 1 0 0 1 ? 180 1 0 1 0
    ? 130 1 0 1 1 ? 260 1 1 0 0 ? 120 1
    1 0 1 ? 25

5
Brute force
  • We have a brute-force method for solving the sum
    of subsets problem
  • For N numbers, count in binary from 0 to 2N
  • For each 1, include the corresponding number for
    each 0, exclude the corresponding number
  • Stop if we get lucky
  • This is clearly an exponential-time algorithm
  • It seems like, with a little cleverness, we could
    do better
  • It turns out that we can use pruning to do
    somewhat better
  • But we are still left with an exponential-time
    algorithm

6
Binary tree representation
  • Suppose our numbers are3, 8, 9, 17, 26, 39, 43,
    56and our goal is 100
  • We can describe thisas a binary tree search
  • As we search the binary tree,
  • A node is promising if we might be able to get to
    a solution from it
  • A node is nonpromising if we know we cant get to
    a solution
  • When we detect a nonpromising node, we can prune
    (ignore) the entire subtree rooted at that node
  • How do we detect nonpromising nodes?

7
Detecting nonpromising nodes
  • Suppose we work from left to right in the
    sequence 3 8 9 17 26 39 43 56
  • That is, we try things in the order 0 0 0 0
    0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0
    0 0 0 1 1 0 0 0 0 0 0 ...
  • When we get to 0 0 0 0 0 0 1 0 ? 43we
    notice that even if we include all the remaining
    numbers (in this case, there is only one), we
    cant get to 100
  • There is no need to try the 0 0 0 0 0 0 1 x
    numbers
  • When we get to 1 1 1 1 1 1 0 0 ? 101we
    notice that we have overshot, hence no solution
    is possible with what we have so far
  • We dont need to try any of the 1 1 1 1 1 1 x x
    numbers

8
Still exponential
  • Even with pruning, the sum of subsets typically
    requires exponential time
  • However, in some cases, pruning can save
    significant amounts of time
  • Consider trying to find a subset of 23, 29, 35,
    41, 43, 46, 48, 51 that sums to 100
  • Here, pruning can save substantial effort
  • Sometimes, common sense can be a big help
  • Consider trying to find a subset of 16, 20, 28,
    34, 44, 48 that sums to 75

9
Boolean satisfaction
  • Suppose you have n boolean variables, a, b, c,
    ..., that occur in a logical expression such as
    (a or c or not f) and (not b or not d or a) and
    ...
  • The problem is to assign true/false values to
    each of the boolean variables in such a way as to
    satisfy (make true) the logical expression
  • The brute-force algorithm is the same as before
    (0 is false, 1 is true, try all n binary numbers)
  • Again, you can do significant pruning, if you
    think about the problem
  • Anything you do, you will still end up with a
    solution that is exponential in n

10
Intractable problems
  • The technical term for a problem that takes
    exponential time is intractable
  • Intractable problems can only be solved for small
    input sizes
  • Faster computer speeds will not help
    muchexponential growth is fast
  • Bottom line Avoid these problems if at all
    possible!

11
The End
Write a Comment
User Comments (0)
About PowerShow.com