Download presentation
Presentation is loading. Please wait.
1
24-Jun-15 Pruning
2
2 Exponential growth How many leaves are there in a complete binary tree of depth N? This is easy to demonstrate: Count “going left” as a 0 Count “going right” as a 1 Each leaf represents one of the 2 N possible N-bit binary numbers This observation turns out to be very useful in certain kinds of problems depth = 0, count = 1 depth = 1, count = 2 depth = 2, count = 4 depth = 3, count = 8 depth = 4, count = 16 depth = N, count = 2 N
3
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 saves 3 saves 7 saves 15
4
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 13 0 0 0 0 0 0 0 0 0 0 1 13 0 0 0 1 0 8 0 0 0 1 1 21 0 0 1 0 1 20 0 0 1 1 0 15 0 0 1 1 1 28 0 1 0 0 0 5 0 1 0 0 1 18 0 1 0 1 0 13 0 1 0 1 1 26 0 1 1 0 0 12 0 1 1 0 1 25
5
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 2 N 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
6 Binary tree representation Suppose our numbers are 3, 8, 9, 17, 26, 39, 43, 56 and our goal is 100 We can describe this as 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 can’t 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? 3 (yes or no) 8 (yes or no) 9 (yes or no) 17 (yes or no) etc.
7
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 43 we notice that even if we include all the remaining numbers (in this case, there is only one), we can’t 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 101 we notice that we have overshot, hence no solution is possible with what we have so far We don’t need to try any of the 1 1 1 1 1 1 x x numbers
8
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
9 The End
10
10 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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.