Presentation is loading. Please wait.

Presentation is loading. Please wait.

24-Jun-15 Pruning. 2 Exponential growth How many leaves are there in a complete binary tree of depth N? This is easy to demonstrate: Count “going left”

Similar presentations


Presentation on theme: "24-Jun-15 Pruning. 2 Exponential growth How many leaves are there in a complete binary tree of depth N? This is easy to demonstrate: Count “going left”"— Presentation transcript:

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


Download ppt "24-Jun-15 Pruning. 2 Exponential growth How many leaves are there in a complete binary tree of depth N? This is easy to demonstrate: Count “going left”"

Similar presentations


Ads by Google