Chapter 4 Divide-and-Conquer

Similar documents
The Divide-and-Conquer Design Paradigm

The maximum-subarray problem. Given an array of integers, find a contiguous subarray with the maximum sum. Very naïve algorithm:

CMPS 2200 Fall Divide-and-Conquer. Carola Wenk. Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk

Chapter 2. Recurrence Relations. Divide and Conquer. Divide and Conquer Strategy. Another Example: Merge Sort. Merge Sort Example. Merge Sort Example

A design paradigm. Divide and conquer: (When) does decomposing a problem into smaller parts help? 09/09/ EECS 3101

Data Structures and Algorithms Chapter 3

Introduction to Algorithms 6.046J/18.401J/SMA5503

Algorithms Chapter 4 Recurrences

Divide and Conquer. Andreas Klappenecker. [based on slides by Prof. Welch]

Asymptotic Analysis and Recurrences

Solving recurrences. Frequently showing up when analysing divide&conquer algorithms or, more generally, recursive algorithms.

Analysis of Algorithms - Using Asymptotic Bounds -

CS 577 Introduction to Algorithms: Strassen s Algorithm and the Master Theorem

1 Substitution method

Algorithm Design and Analysis

CPS 616 DIVIDE-AND-CONQUER 6-1

Divide and Conquer: Polynomial Multiplication Version of October 1 / 7, 24201

Grade 11/12 Math Circles Fall Nov. 5 Recurrences, Part 2

CS 470/570 Divide-and-Conquer. Format of Divide-and-Conquer algorithms: Master Recurrence Theorem (simpler version)

Analysis of Algorithms I: Asymptotic Notation, Induction, and MergeSort

Design and Analysis of Algorithms Recurrence. Prof. Chuhua Xian School of Computer Science and Engineering

Divide and Conquer. Arash Rafiey. 27 October, 2016

Chapter 4. Recurrences

Divide-and-conquer: Order Statistics. Curs: Fall 2017

Introduction to Divide and Conquer

What we have learned What is algorithm Why study algorithm The time and space efficiency of algorithm The analysis framework of time efficiency Asympt

The Master Theorem for solving recurrences. Algorithms and Data Structures Strassen s Algorithm. Tutorials. The Master Theorem (cont d)

In-Class Soln 1. CS 361, Lecture 4. Today s Outline. In-Class Soln 2

COL106: Data Structures and Algorithms (IIT Delhi, Semester-II )

Divide-and-Conquer. Reading: CLRS Sections 2.3, 4.1, 4.2, 4.3, 28.2, CSE 6331 Algorithms Steve Lai

Review Of Topics. Review: Induction

Divide-and-Conquer Algorithms and Recurrence Relations. Niloufar Shafiei

Data Structures and Algorithms Chapter 3

Data Structures and Algorithms CSE 465

Algorithms and Data Structures Strassen s Algorithm. ADS (2017/18) Lecture 4 slide 1

Divide & Conquer. CS 320, Fall Dr. Geri Georg, Instructor CS320 Div&Conq 1

Inf 2B: Sorting, MergeSort and Divide-and-Conquer

Advanced Analysis of Algorithms - Midterm (Solutions)

Tutorials. Algorithms and Data Structures Strassen s Algorithm. The Master Theorem for solving recurrences. The Master Theorem (cont d)

CSCI 3110 Assignment 6 Solutions

6.046 Recitation 2: Recurrences Bill Thies, Fall 2004 Outline

Divide and Conquer. Andreas Klappenecker

CS 5321: Advanced Algorithms - Recurrence. Acknowledgement. Outline. Ali Ebnenasir Department of Computer Science Michigan Technological University

Chapter 5. Divide and Conquer CLRS 4.3. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

COMP 382: Reasoning about algorithms

Algorithms And Programming I. Lecture 5 Quicksort

CS 5321: Advanced Algorithms Analysis Using Recurrence. Acknowledgement. Outline

CS 4407 Algorithms Lecture 2: Iterative and Divide and Conquer Algorithms

Divide and conquer. Philip II of Macedon

Chapter 5. Divide and Conquer CLRS 4.3. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Lecture 4. Quicksort

Analysis of Algorithms CMPSC 565

Data Structures and Algorithms CMPSC 465

Recurrence Relations

V. Adamchik 1. Recurrences. Victor Adamchik Fall of 2005

b + O(n d ) where a 1, b > 1, then O(n d log n) if a = b d d ) if a < b d O(n log b a ) if a > b d

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Asymptotic Analysis, recurrences Date: 9/7/17

A SUMMARY OF RECURSION SOLVING TECHNIQUES

Matrix Multiplication

Class Note #14. In this class, we studied an algorithm for integer multiplication, which. 2 ) to θ(n

Data structures Exercise 1 solution. Question 1. Let s start by writing all the functions in big O notation:

CS 4349 Lecture August 30th, 2017

MA008/MIIZ01 Design and Analysis of Algorithms Lecture Notes 3

CS483 Design and Analysis of Algorithms

CS161: Algorithm Design and Analysis Recitation Section 3 Stanford University Week of 29 January, Problem 3-1.

Recurrence Relations

CS/COE 1501 cs.pitt.edu/~bill/1501/ Integer Multiplication

CSCI Honor seminar in algorithms Homework 2 Solution

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 3. Θ Notation. Comparing Algorithms

Algorithms Design & Analysis. Analysis of Algorithm

COMP 355 Advanced Algorithms

Divide and Conquer. CSE21 Winter 2017, Day 9 (B00), Day 6 (A00) January 30,

Objective. - mathematical induction, recursive definitions - arithmetic manipulations, series, products

CS Analysis of Recursive Algorithms and Brute Force

Fast Convolution; Strassen s Method

Divide and Conquer algorithms

Computational Complexity. This lecture. Notes. Lecture 02 - Basic Complexity Analysis. Tom Kelsey & Susmit Sarkar. Notes

Midterm Exam. CS 3110: Design and Analysis of Algorithms. June 20, Group 1 Group 2 Group 3

Algorithms, Design and Analysis. Order of growth. Table 2.1. Big-oh. Asymptotic growth rate. Types of formulas for basic operation count

COMP 355 Advanced Algorithms Algorithm Design Review: Mathematical Background

CSE548, AMS542: Analysis of Algorithms, Fall 2017 Date: October 11. In-Class Midterm. ( 7:05 PM 8:20 PM : 75 Minutes )

Data Structures and Algorithms

CS F-01 Algorithm Analysis 1

Methods for solving recurrences

Design Patterns for Data Structures. Chapter 3. Recursive Algorithms

CSE 613: Parallel Programming. Lecture 8 ( Analyzing Divide-and-Conquer Algorithms )

Algorithms. Quicksort. Slide credit: David Luebke (Virginia)

CSE 613: Parallel Programming. Lectures ( Analyzing Divide-and-Conquer Algorithms )

CS483 Design and Analysis of Algorithms

CS2223 Algorithms D Term 2009 Exam 3 Solutions

Computational Complexity - Pseudocode and Recursions

Recommended readings: Description of Quicksort in my notes, Ch7 of your CLRS text.

Algorithms and Data Structures 2014 Exercises week 5

Asymptotic Algorithm Analysis & Sorting

Mergesort and Recurrences (CLRS 2.3, 4.4)

Algorithms. Adnan YAZICI Dept. of Computer Engineering Middle East Technical Univ. Ankara - TURKEY. Algorihms, A.Yazici, Fall 2007 CEng 315

Week 5: Quicksort, Lower bound, Greedy

Divide and Conquer Algorithms. CSE 101: Design and Analysis of Algorithms Lecture 14

Advanced Counting Techniques. Chapter 8

Divide and Conquer Strategy

Transcription:

Chapter 4 Divide-and-Conquer 1

About this lecture (1) Recall the divide-and-conquer paradigm, which we used for merge sort: Divide the problem into a number of subproblems that are smaller instances of the same problem. Conquer the subproblems by solving them recursively. Base case: If the subproblems are small enough, just solve them by brute force. Combine the subproblem solutions to give a solution to the original problem. We look at two more algorithms based on divideand-conquer. 2

About this lecture (2) Analyzing divide-and-conquer algorithms Introduce some ways of solving recurrences Substitution Method (If we know the answer) Recursion Tree Method (Very useful!) Master Theorem (Save our effort) 3

Maximum-subarray problem Input: an array A[1..n] of n numbers Assume that some of the numbers are negative, because this problem is trivial when all numbers are nonnegative Output: a nonempty subarray A[i..j] having the largest sum S[i, j] = a i + a i+1 +... + a j 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A 13-3 -25 20-3 -16-23 18 20-7 12-5 -22 15-4 7 maximum subarray 4

A brute-force solution n Examine all possible S[i, j] 2 Two implementations: compute each S[i, j] in O(n) time O(n 3 ) time compute each S[i, j+1] from S[i, j] in O(1) time (S[i, i] = A[i] and S[i, j+1] = S[i, j] + A[j+1]) O(n 2 ) time Ex: i 1 2 3 4 5 6 A[i] 13-3 -25 20-3 -16 S[1, j] = 13 10-15 5 2-14 S[2, j] = -3-28 -8-11 -27 S[3, j] = -25-5 -8-34 S[4, j] = 20 17 1 S[5, j] = -3-19 S[6, j] = -16 5

A divide-and-conquer solution Possible locations of a maximum subarray A[i..j] of A[low..high], where mid = (low+high)/2 entirely in A[low..mid] (low i j mid) entirely in A[mid+1..high] (mid < i j high) crossing the midpoint (low i mid < j high) crossing the midpoint low mid high mid +1 entirely in A[low..mid] entirely in A[mid+1..high] Possible locations of subarrays of A[low..high] 6

Crossing the midpoint i A[mid+1..j] low mid high A[i..mid] mid +1 j A[i..j] comprises two subarrays A[i..mid] and A[mid+1..j] 7

Example: A mid =5 1 2 3 4 5 6 7 8 9 10 13-3 -25 20-3 -16-23 18 20-7 S[5.. 5] = -3 S[4.. 5] = 17 (max-left = 4) S[3.. 5] = -8 S[2.. 5] = -11 S[1.. 5] = 2 mid =5 A 1 2 3 4 5 6 7 8 9 10 13-3 -25 20-3 -16-23 18 20-7 S[6.. 6] = -16 S[6.. 7] = -39 S[6.. 8] = -21 S[6.. 9] = (max-right = 9) -1 S[6..10] = -8 maximum subarray crossing mid is S[4..9] = 16 8

Example: mid =3 mid =3 1 2 3 4 5 1 2 3 4 5 A 13-3 -25 20-3 A 13-3 -25 20-3 S[3.. 3] = -25 S[4.. 4] = (max-right = 4) 20 S[2.. 3] = -28 S[4.. 5] = -5 S[1.. 3] = -15 (max-left = 1) maximum subarray crossing mid is S[1..4] = 5 mid =7 mid =7 6 7 8 9 10 6 7 8 9 10 A -16-23 18 20-7 A -16-23 18 20-7 S[8.. 8] = 18 (max-left = 8) S[9.. 9] = (max-right = 9) 20 S[7.. 8] = -5 S[9..10] = 13 S[6.. 8] = -21 maximum subarray crossing mid is S[8..9] = 38 9

FIND-MAX-CROSSING-SUBARRAY(A, low, mid, high) left-sum = - // Find a maximum subarray of the form A[i..mid] sum = 0 for i = mid downto low sum = sum + A[i ] if sum > left-sum left-sum = sum max-left = i right-sum = - // Find a maximum subarray of the form A[mid + 1.. j ] sum =0 for j = mid +1 to high sum = sum + A[j] if sum > right-sum right-sum = sum max-right = j // Return the indices and the sum of the two subarrays Return (max-left, max-right, left-sum + right-sum) 10

FIND-MAXIMUM-SUBARRAY (A, low, high) if high == low Return (low, high, A[low]) // base case: only one element else mid = low high / 2 (left-low, left-high, left-sum) = FIND-MAXIMUM-SUBARRAY(A, low, mid) (right-low, right-high, right-sum) = FIND-MAXIMUM-SUBARRAY(A, mid + 1, high) (cross-low, cross-high, cross-sum) = FIND-MAX-CROSSING-SUBARRAY(A, low, mid, high) if left-sum right-sum and left-sum cross-sum return (left-low, left-high, left-sum) elseif right-sum left-sum and right-sum cross-sum return (right-low, right-high, right-sum) else return (cross-low, cross-high, cross-sum) Initial call: FIND-MAXIMUM-SUBARRAY (A, 1, n) 11

Analyzing time complexity FIND-MAX-CROSSING-SUBARRAY : (n), where n = high low + 1 FIND-MAXIMUM-SUBARRAY T(n) = 2T(n/2) + (n) (with T(1) = (1)) = (nlg n) (similar to merge-sort) 12

Matrix multiplication Input: two n n matrices A and B Output: C = AB, ij n c a k1 An O(n 3 ) time naive algorithm ik b kj. SQUARE-MATRIX-MULTIPLY(A, B) n A.rows let C be an n n matrix for i 1 to n for j 1 to n c ij 0 for k 1 to n c ij c ij + a ik b kj return C 13

Divide-and-Conquer Algorithm Assume that n is an exact power of 2 A A A 11 21 A A C C 12 22 11 21, C C 12 22 B A A B B 11 21 11 21 A A B B 12 22 12 22, B B C 11 21 C C B B 12 22 11 21 C C 12 22 (4.1) 14

Divide-and-Conquer Algorithm C C 11 A11 B11 A12 B 21 12 A11 B12 A12 B 22 C C 21 A21 B 11 A22 B 21 22 A21 B 12 A22 B 22 A straightforward divide-and-conquer algorithm T(n) = 8T(n/2) + (n 2 ) = (n 3 ) Computing A+B O(n 2 ) 15

16 Strassen s method (1) 22 21 3 12 11 2 22 12 1,, A A S A A S B B S 22 11 6 22 11 5 11 21 4,, B B S A A S B B S 21 11 9 22 21 8 22 12 7,, A A S B B S A A S 12 11 10 B B S (4.2)

Strassen s method (2) P 1 A11 S1 P S 2 2B22 P S 3 3B11 P 4 A22S 4 P S 5 5S6 P S 6 7S8 C C C C 11 P5 P4 P2 P6 12 P1 P2 21 P3 P4 (4.3) (4.4) 22 P5 P1 P3 P7 P S 7 9S10 17

Strassen s divide-and-conquer algorithm Step 1: Divide each of A, B, and C into four sub-matrices as in (4.1) Step 2: Create 10 matrices S 1, S 2,, S 10 as in (4.2) Steep 3: Recursively, compute P 1, P 2,, P 7 as in (4.3) Step 4: Compute (4.4) C 11 C12, C21,, C 22 according to 18

Time complexity T(n) = 7T(n/2) + (n 2 ) = (n lg 7 ) (why?) = (n 2.81 ) 19

Discussion Strassen s method is largely of theoretical interest for n 45 Strassen s method is based on the fact that we can multiply two 2 2 matrices using only 7 multiplications (instead of 8). It was shown that it is impossible to multiply two 2 2 matrices using less than 7 multiplications. 20

Discussion We can improve Strassen s algorithm by finding an efficient way to multiply two k k matrices using a smaller number q of multiplications, where k > 2. The time is T(n) = qt(n/k) + θ(n 2 ). A trivial lower bound for matrix multiplication is (n 2 ). The current best upper bound known is O(n 2.376 ). Open problems: Can the upper bound O(n 2.376 ) be improved? Can the lower bound (n 2 ) be improved? 21

Homework Bonus: Exercise 4.1-3 (Due: Oct. 8) Exercise 4.1-5* (Due: Oct. 8) Exercise: 4.2-3, 4.2-5*, 4.2-6 (Due: Oct. 8) 22

How to solve this? Substitution Method (1) (if we know the answer) T(n) = 2T( n / 2 ) + n, with T(1) = 1 1. Make a guess e.g., T(n) = O(n lg n) 2. Show it by induction e.g., to show upper bound, we find constants c and n 0 such that T(n) c f(n) for n n 0 23

Substitution Method (2) (if we know the answer) How to solve this? T(n) = 2T( n / 2 ) + n, with T(1) = 1 1. Make a guess e.g., T(n) = O(n lg n) 2. Show it by induction Firstly, T(2) = 4, T(3) = 5. We want to have T(n) cn lg n Let c = 2 T(2) and T(3) okay Other Cases? 24

Substitution Method (3) (if we know the answer) Base case: n 0 = 2 hold. Induction Case: Assume the guess is true for all n = 2, 3,, k For n = k+1, we have: T(n) = 2T( n / 2 ) + n n / 2lgn / n 2c 2 cn lg n / 2 n = cn lg n cn + n cn log n Induction case is true 25

Substitution Method (4) (if we know the answer) Q. How did we know the value of c and n 0? A. If induction works, the induction case must be correct c 1 Then, we find that by setting c = 2, our guess is correct as soon as n 0 = 2 Alternatively, we can also use c = 1.5 Then, we just need a larger n 0 = 4 (What will be the new base case? Why?) 26

Substitution Method (5) (New Challenge) How to solve this? T( n) T( n / 2) T( n / 2) 1, T(1) 1 1. Make a guess (T(n) = O(n)), and 2. Show T(n) cn by induction What will happen in induction case? 27

Substitution Method (6) (New Challenge) Assume guess is true for some base cases Induction Case: Assume the guess is true for all n = 2, 3,, k For n = k+1, we have: T( n) T( c cn n n / / 2 1 2 ) c T( n / n 2 / 2 1 ) 1 This term is not what we want 28

Substitution Method (7) (New Challenge) The 1 st attempt was not working because our guess for T(n) was a bit loose Recall: Induction may become easier if we prove a stronger statement Can you prove T(n) cn 2 by induction? 2 nd Attempt: Refine our statement Try to show T(n) cn - b instead 29

Substitution Method (8) (New Challenge) Induction Case: T ( n) T c ( n / 2) T ( n / 2 n / 2 b cn / 2 cn b ) 1 b 1 We get the desired term (when b 1) It remains to find c and n 0, and prove the base case(s), which is relatively easy 30

Avoiding Pitfalls For T(n) = 2T( n / 2 ) + n, we can falsely prove T(n) = O(n) by guessing T(n) cn and then arguing T ( n ) 2( c cn n n / 2 ) n O ( n ) Wrong!! 31

Substitution Method (New Challenge 2) How to solve this? T(n) = 2T( ) + lg n? n Hint: Change variable: Set m = lg n 32

Substitution Method (New Challenge 2) Set m = lg n, we get T(2 m ) = 2T(2 m/2 ) + m Next, set S(m) = T(2 m ) = T(n) S(m) = 2S(m/2) + m We solve S(m) = O(m lg m) T(n) = O(lg n lg lg n) 33

Recursion Tree Method (1) ( Nothing Special Very Useful! ) How to solve this? T(n) = 2T(n/2) + n 2, with T(1) = 1 34

Recursion Tree Method (2) ( Nothing Special Very Useful! ) Expanding the terms, we get: T(n) = n 2 + 2T(n/2) = n 2 + 2n 2 /4 + 4T(n/4) = n 2 + n 2 /2 + n 2 /4 + 8T(n/8) =... = lg n 1 k 0 (1/ 2) = (n 2 ) + (n) = (n 2 ) k n 2 2 lg n T (1) 35

Recursion Tree Method (3) ( Recursion Tree View ) We can express the previous recurrence by: 36

Further expressing gives us: This term is from T(n/2) 37

Recursion Tree Method ( New Challenge ) How to solve this? T(n) = T(n/3) + T(2n/3) + n, with T(1) = 1 What will be the recursion tree view? 38

The corresponding recursion tree view is: The depth of the tree is log 3/2 n. Why? 39

Master Method ( Save our effort ) When the recurrence is in a special form, we can apply the Master Theorem to solve the recurrence immediately. Let T(n) = at(n/b) + f(n) with a 1 and b 1 are constants, where we interpret n/b to mean either n/b or n/b. The Master Theorem has 3 cases 40

Master Theorem (1) Let T(n) = at(n/b) + f(n) Theorem 1: (Case 1) If f(n) = O(n log b a - e ) for some constant e 0 then T(n) = (n log b a ) 41

Master Theorem (2) 1. Solve T(n) = 9T(n/3) + n We have a = 9 b= 3, f(n) =n Since n log b a = n log 3 9 = n 2, f(n)= n = O(n 2-ε ) We have T(n) = Θ(n 2 ), where ε = 1. 2. T(n) = 8T(n/2) + n 2, a = 8, b = 2, and f(n) = Θ (n 2 ), we can apply case 1, and T(n) = Θ (n 3 ). How about T(n) = 8T(n/2) + n? 42

Master Theorem (3) 3. T(n) = 7T(n/2) + n 2 a = 7, b = 2, n log a b = n lg 7 n 2.81, and f(n) = Θ (n 2 ), we can apply case 1 and T(n) = Θ (n 2.81 ) How about T(n) = 7T(n/2) + 1? 43

Master Theorem (4) Let T(n) = at(n/b) + f(n) Theorem 2: (Case 2) If f(n) = (n log b a ), then T(n) = (n log b a lg n) 1. Solve T(n) = T(2n/3) + 1 Here, a= 1, b = 2/3, f(n) = 1, and n log b a = n log 3/2 1 = 1. Case 2 applied, f(n) = (n log b a ) = (1). Thus T(n) = (lg n) 2. How about T(n) = 4T(n/2) + n 2? 3. How about T(n) = T(n/2) + 1 44

Master Theorem (5) Let T(n) = at(n/b) + f(n) Theorem 3: (Case 3) If f(n) = (n log b a + e ) for some constant e 0, and if af(n/b) cf(n) for some constant c 1, and all sufficiently large n, then T(n) = (f(n)) 45

Master Theorem (6) 1. Solve T(n) = 3T(n/4) + n lg n (case 3) a = 3, b = 4, f(n) = n lg n, and n log 4 3 = O(n 0.793 ). f(n) = (n 0.793 + e ), where ε 0.2, af(n/b) =3f(n/4) = 3(n/4) lg (n/4) (3/4) n lg n = c f(n), for c = 3/4 T(n) = Θ(n lg n ) 46

Master Theorem (7) Note that, there is a gap between case 1 and case 2 when f(n) is smaller than n log b a, but not polynomial smaller. For example: T(n) = 2T(n/2) + n/lg n Similarly, there is a gap between cases 2 and 3 when f(n) is larger than n log b a but not polynomial larger. In the above cases, you cannot apply master theorem. 47

Master Theorem (8) For example: T(n) = 2T(n/2) + n lg n a =2, b = 2, f(n) = n lg n and n log b a = n. You cannot apply case 3. Why? n lg n/n = lg n is smaller than n ε for any positive constant ε. 48

Homework Exercise: 4.3-1, 4.3-2, 4.3-6*, 4.3-7, 4.3-8*, 4.4-2, 4.4-5, 4.4-6*, 4.5-1, 4.5-4 (due: Oct. 15) Problem: 4.3 (e, h) (due: Oct.15) 49

What s wrong with it? (Bonus) Your friend, after this lecture, has tried to prove 1+2+ + n = O(n) His proof is by induction: First, 1 = O(n) {n=1} Assume 1+2+ +k = O(n) {n=k} Then, 1+2+ +k+(k+1) = O(n) + (k+1) {n=k+1} = O(n) + O(n) = O(2n) = O(n) So, 1+2+ +n = O(n) [where is the bug??] 50