Richard Anderson Lecture 14 Divide and Conquer

Slides:



Advertisements
Similar presentations
Theory of Computing Lecture 3 MAS 714 Hartmut Klauck.
Advertisements

Introduction to Algorithms Jiafen Liu Sept
Chapter 4: Divide and Conquer Master Theorem, Mergesort, Quicksort, Binary Search, Binary Trees The Design and Analysis of Algorithms.
Spring 2015 Lecture 5: QuickSort & Selection
CS38 Introduction to Algorithms Lecture 7 April 22, 2014.
CSE 421 Algorithms Richard Anderson Lecture 12 Recurrences.
Lecture 31 CSE 331 Nov 16, Jeff is out of town this week No regular recitation or Jeff’s normal office hours I’ll hold extra Question sessions Mon,
CSE 421 Algorithms Richard Anderson Lecture 13 Divide and Conquer.
Design and Analysis of Algorithms – Chapter 51 Divide and Conquer (I) Dr. Ying Lu RAIK 283: Data Structures & Algorithms.
Divide and Conquer The most well known algorithm design strategy: 1. Divide instance of problem into two or more smaller instances 2. Solve smaller instances.
CSE 421 Algorithms Richard Anderson Lecture 11 Recurrences.
Sorting (Part II: Divide and Conquer) CSE 373 Data Structures Lecture 14.
Divide and Conquer Andreas Klappenecker [based on slides by Prof. Welch]
CSE 421 Algorithms Lecture 15 Closest Pair, Multiplication.
Divide and Conquer Andreas Klappenecker [based on slides by Prof. Welch]
CSCI-256 Data Structures & Algorithm Analysis Lecture Note: Some slides by Kevin Wayne. Copyright © 2005 Pearson-Addison Wesley. All rights reserved. 11.
Today’s Material Sorting: Definitions Basic Sorting Algorithms
CSE 421 Algorithms Richard Anderson Lecture 13 Recurrences, Part 2.
David Luebke 1 6/26/2016 CS 332: Algorithms Linear-Time Sorting Continued Medians and Order Statistics.
David Luebke 1 7/2/2016 CS 332: Algorithms Linear-Time Sorting: Review + Bucket Sort Medians and Order Statistics.
Chapter 2. Divide-and-conquer Algorithms
Analysis of Algorithms CS 477/677
Fundamentals of Algorithms MCS - 2 Lecture # 11
Order Statistics.
Linear-Time Sorting Continued Medians and Order Statistics
Randomized Algorithms
Chapter 4 Divide-and-Conquer
Divide and Conquer – and an Example QuickSort
Algorithm Design Methods
Divide-and-Conquer The most-well known algorithm design strategy:
CSCE 411 Design and Analysis of Algorithms
Chapter 4: Divide and Conquer
Randomized Algorithms
Punya Biswas Lecture 15 Closest Pair, Multiplication
Richard Anderson Lecture 13 Recurrences and Divide and Conquer
Topic: Divide and Conquer
Richard Anderson Lecture 11 Recurrences
Richard Anderson Lecture 13 Divide and Conquer
Lecture No 6 Advance Analysis of Institute of Southern Punjab Multan
Richard Anderson Lecture 12 Recurrences and Divide and Conquer
Richard Anderson Lecture 14 Inversions, Multiplication, FFT
Divide-and-Conquer The most-well known algorithm design strategy:
Lecture 32 CSE 331 Nov 14, 2011.
Lecture 29 CSE 331 Nov 8, 2017.
Richard Anderson Lecture 13 Recurrences, Part 2
Divide-and-Conquer The most-well known algorithm design strategy:
Lecture 31 CSE 331 Nov 14, 2012.
Merge and Count Merge and count step.
Merge and Count Merge and count step.
Merge and Count Merge and count step.
CSE 373 Data Structures and Algorithms
CSC 380: Design and Analysis of Algorithms
CSC 380: Design and Analysis of Algorithms
Lecture 15, Winter 2019 Closest Pair, Multiplication
Richard Anderson Lecture 14 Divide and Conquer
Lecture 31 CSE 331 Nov 11, 2011.
CSC 380: Design and Analysis of Algorithms
David Kauchak cs161 Summer 2009
CS200: Algorithm Analysis
Lecture 30 CSE 331 Nov 9, 2011.
The Selection Problem.
Richard Anderson Lecture 13, Winter 2019 Recurrences, Part 2
Richard Anderson Lecture 14, Winter 2019 Divide and Conquer
Richard Anderson Lecture 14 Divide and Conquer
Lecture 15 Closest Pair, Multiplication
Richard Anderson Lecture 12, Winter 2019 Recurrences
Divide and Conquer Merge sort and quick sort Binary search
Richard Anderson Lecture 12 Recurrences
Richard Anderson Lecture 13 Divide and Conquer
Presentation transcript:

Richard Anderson Lecture 14 Divide and Conquer CSE 421 Algorithms Richard Anderson Lecture 14 Divide and Conquer

Announcements Mon. February 9 Wed. February 11 Fri. February 13 Midterm Wed. February 11 Punya Biswal Divide and Conquer Algorithms Read 5.3 – 5.5 Fri. February 13 Anna Karlin FFT – Read 5.6

Midterm exam Instructions Seven problems Closed book, closed notes, no calculators Time limit: 50 minutes Answer the problems on the exam paper If you need extra space use the back of the page Problems are not of equal difficulty, if you get stuck on a problem, move on. Seven problems Uniform coverage Several “true/false/justify” Two algorithm design questions

Where I will be . . . Digital StudyHall Project Lucknow, India Talk: Richard Anderson, CIS Lecture Series, Wednesday, February 18, 3pm, MGH 420

What you really need to know about recurrences Work per level changes geometrically with the level Geometrically increasing (x > 1) The bottom level wins Geometrically decreasing (x < 1) The top level wins Balanced (x = 1) Equal contribution

T(n) = aT(n/b) + nc Balanced: a = bc Increasing: a > bc Decreasing: a < bc

Divide and Conquer Algorithms Split into sub problems Recursively solve the problem Combine solutions Make progress in the split and combine stages Quicksort – progress made at the split step Mergesort – progress made at the combine step D&C Algorithms Strassen’s Algorithm – Matrix Multiplication Inversions Median Closest Pair Integer Multiplication FFT

Inversion Problem Let a1, . . . an be a permutation of 1 . . n (ai, aj) is an inversion if i < j and ai > aj Problem: given a permutation, count the number of inversions This can be done easily in O(n2) time Can we do better? 4, 6, 1, 7, 3, 2, 5

Application Counting inversions can be use to measure how close ranked preferences are People rank 20 movies, based on their rankings you cluster people who like that same type of movie

Counting Inversions Count inversions on lower half 11 12 4 1 7 2 3 15 9 5 16 8 6 13 10 14 Count inversions on lower half Count inversions on upper half Count the inversions between the halves

Count the Inversions 5 2 3 1 11 12 4 1 7 2 3 15 9 5 16 8 6 13 10 14 8 6 15 10 11 12 4 1 7 2 3 15 9 5 16 8 6 13 10 14 19 43 11 12 4 1 7 2 3 15 9 5 16 8 6 13 10 14

Problem – how do we count inversions between sub problems in O(n) time? Solution – Count inversions while merging 1 2 3 4 7 11 12 15 5 6 8 9 10 13 14 16 Standard merge algorithm – add to inversion count when an element is moved from the upper array to the solution

Use the merge algorithm to count inversions 1 4 11 12 2 3 7 15 5 8 9 16 6 10 13 14 Indicate the number of inversions for each element detected when merging

Inversions Counting inversions between two sorted lists O(1) per element to count inversions Algorithm summary Satisfies the “Standard recurrence” T(n) = 2 T(n/2) + cn x y z

Computing the Median Given n numbers, find the number of rank n/2 Selection, given n numbers and an integer k, find the k-th largest

Select(A, k) Select(A, k){ Choose element x from A S1 = {y in A | y < x} S2 = {y in A | y > x} S3 = {y in A | y = x} if (|S2| >= k) return Select(S2, k) else if (|S2| + |S3| >= k) return x else return Select(S1, k - |S2| - |S3|) } S1 S3 S2

Randomized Selection Choose the element at random Analysis can show that the algorithm has expected run time O(n)

Deterministic Selection What is the run time of select if we can guarantee that choose finds an x such that |S1| < 3n/4 and |S2| < 3n/4

BFPRT Algorithm A very clever choose algorithm . . . Split into n/5 sets of size 5 M be the set of medians of these sets Let x be the median of M

BFPRT runtime |S1| < 3n/4, |S2| < 3n/4 Split into n/5 sets of size 5 M be the set of medians of these sets x be the median of M Construct S1 and S2 Recursive call in S1 or S2

BFPRT Recurrence T(n) <= T(3n/4) + T(n/5) + c n Prove that T(n) <= 20 c n