CSCE 411 Design and Analysis of Algorithms Set 10: Lower Bounds Dr. J. Michael Moore Fall 2014 Based primarily on slides by Prof. Jennifer Welch CSCE 411, Fall 2014: Set 10 1 What is a Lower Bound? Provides information about the best possible efficiency of ANY algorithm for a problem Tells us whether we can improve an algorithm or not When lower bound is (asymptotically) the same as the best upper bound (provided by an algorithm), the bound is TIGHT If there is a gap, there might be room for improvement CSCE 411, Fall 2014: Set 10 2 Lower Bound Proof Technique #1: Trivial Use size of input or output Ex: Any algorithm to generate all permutations of n elements requires time Ω(n!) because there are n! outputs Ex: Computing the product of two n-by-n matrices requires time Ω(n2) because the output has n2 entries Ex: Any TSP solution for n cities requires Ω(n2) time because there are Θ(n2) inputs to be taken into account. CSCE 411, Fall 2014: Set 10 3 Lower Bound Proof Technique #2: Information-Theoretic Consider the amount of information that the solution must provide Show that each step of the algorithm can only produce so much information Uses mechanism of decision trees Example next… CSCE 411, Fall 2014: Set 10 4 Comparison-Based Sorting We’ve seen mergesort, insertion sort, quicksort, heapsort,… All these algorithms are comparison-based the behavior depends on relative values of keys, not exact values behavior on [1,3,2,4] is same as on [9,25,23,99] Fastest of these algorithms is O(nlog n). We will show that's the best you can get with comparison-based sorting. CSCE 411, Fall 2014: Set 10 5 Decision Tree Consider any comparison based sorting algorithm Represent its behavior on all inputs of a fixed size with a decision tree Each non-leaf tree node corresponds to the execution of a comparison Each non-leaf tree node has two children, one for the case when the comparison is true and one for false Each leaf tree-node represents correct sorted order for that path CSCE 411, Fall 2014: Set 10 6 Decision Tree Diagram first comparison: check if ai ≤ aj YES second comparison if ai ≤ aj : check if ak ≤ al YES NO third comparison if ai ≤ aj and ak ≤ al : check if ax ≤ ay NO YES NO second comparison if ai > aj : check if am ≤ ap YES NO CSCE 411, Fall 2014: Set 10 7 Insertion Sort for j := 2 to n to key := a[j] i := j-1 while i > 0 and a[i] > key do a[i+1] := a[i] i := i -1 endwhile a[i+1] := key endfor CSCE 411, Fall 2014: Set 10 8 Insertion Sort for n = 3 a1 ≤ a2 ? YES NO a2 ≤ a3 ? YES a1 ≤ a3 ? NO a1 ≤ a3 ? a1 a2 a3 NO YES a2 a1 a3 YES NO a1 a3 a2 a3 a1 a2 a2 ≤ a3 ? YES NO a2 a3 a1 CSCE 411, Fall 2014: Set 10 a3 a2 a1 9 Insertion Sort for n = 3 a1 ≤ a2 ? YES NO a2 ≤ a3 ? YES a1 ≤ a3 ? NO a1 ≤ a3 ? a1 a2 a3 NO YES a2 a1 a3 YES NO a1 a3 a2 a3 a1 a2 a2 ≤ a3 ? YES NO a2 a3 a1 CSCE 411, Fall 2014: Set 10 a3 a2 a1 10 How Many Leaves? Must be at least one leaf for each permutation of the input otherwise there would be a situation that was not correctly sorted Number of permutations of n keys is n!. Idea: since there must be a lot of leaves, but each decision tree node only has two children, tree cannot be too shallow depth of tree is a lower bound on running time CSCE 411, Fall 2014: Set 10 11 Key Lemma Height of a binary tree with n! leaves is (n log n). Proof: Maximum number of leaves in a binary tree with height h is 2h. h = 1, 21 leaves h = 2, 22 leaves h = 3, 23 leaves CSCE 411, Fall 2014: Set 10 12 Proof of Lemma Let h be height of decision tree. Number of leaves in decision tree, which is n!, is at most 2h. 2h ≥ n! h ≥ log(n!) = log(n(n-1)(n-2)…(2)(1)) ≥ (n/2)log(n/2) by algebra = (n log n) CSCE 411, Fall 2014: Set 10 13 Finishing Up Any binary tree with n! leaves has height (n log n). Decision tree for any comparison-based sorting algorithm on n keys has height (n log n). Any comparison-based sorting algorithm has at least one execution with (n log n) comparisons Any comparison-based sorting algorithm has (n log n) worst-case running time. CSCE 411, Fall 2014: Set 10 14 Lower Bound Proof Technique #3: Problem Reduction (Transformation) We have already seen how to use problem transformations in a “positive” way use a pre-existing algorithm for one problem Q to get an algorithm for another problem P So an upper bound for Q helps us get an upper bound for P We can also use this idea in a “negative” way use an already-known lower bound for P to get a lower bound for Q (note change in direction!) CSCE 411, Fall 2014: Set 10 15 Using a Transformation to Get an Algorithm for P from an Algorithm for Q Recall transforming problem P to problem Q: 1. 2. 3. transform P-input to Q-input run (known) Q-algorithm on Q-input transform Q-output to P-output If we have an algorithm for Q already, and we can do steps 1 and 3, then we get an algorithm for P Ex: transform max-flow to LP CSCE 411, Fall 2014: Set 10 16 Using a Transformation to Get an Algorithm for P from an Algorithm for Q P-algorithm P-input Q-input transform Tintransform Q-output Q-algorithm TQ P-output transform Touttransform TP = TQ + (Tintransform + Touttransform) = TQ + Ttransform CSCE 411, Fall 2014: Set 10 17 Using a Transformation to get a Lower Bound for Q from a Lower Bound for P Transformation: 1. 2. 3. transform P-input to Q-input run any Q-algorithm on Q-input transform Q-output to P-output If we have a lower bound for P and if steps 1 and 2 can be done “quickly enough”, we get a lower bound for Q CSCE 411, Fall 2014: Set 10 18 Using a Transformation to Get a Lower Bound for Q from a Lower Bound for P P-algorithm P-input Q-input transform Q-output Q-algorithm Tintransform TQ P-output transform Touttransform TP = TQ + Ttransform If TP = Ω(X) and Ttransform = o(X), then TQ = Ω(X) CSCE 411, Fall 2014: Set 10 19 Use Ω(n log n) Sorting Lower Bound to Get Ω(n log n) Convex Hull Lower Bound Idea: If we could solve convex hull faster than Θ(n log n), then we could solve sorting faster than Θ(n log n) Need to figure out how to use a convex hull “subroutine” to sort numbers Key observation: given n numbers x1,…,xn, the points (x1,x12),…,(xn,xn2) are on a parabola and thus are corners of a convex region CSCE 411, Fall 2014: Set 10 20 Transform Sorting to Convex Hull 1. 2. 3. Given input x1,…,xn, compute (x1,x12),…(xn,xn2) Run a convex hull algorithm on (x1,x12),…(xn,xn2), resulting in a sequence of points Y Return sequence of first coordinates in Y, starting at point with smallest first coordinate and wrapping around if necessary Note: the convex hull algorithm must be comparison-based and must produce its output points in counter-clockwise (or clockwise) order CSCE 411, Fall 2014: Set 10 1. O(n) 2. Ω(n log n) 3. O(n) Ω(n log n) 21