Introduction to Algorithms 6.046J/18.401J

Similar documents
Introduction to Algorithms 6.046J/18.401J/SMA5503

Theory and Algorithms Introduction: insertion sort, merge sort

Introduction to Algorithms 6.046J/18.401J

CS302 Topic: Algorithm Analysis. Thursday, Sept. 22, 2005

Data Structures and Algorithms CSE 465

CS302 Topic: Algorithm Analysis #2. Thursday, Sept. 21, 2006

CS583 Lecture 01. Jana Kosecka. some materials here are based on Profs. E. Demaine, D. Luebke A.Shehu, J-M. Lien and Prof. Wang s past lecture notes

Scientific Computing. Algorithm Analysis

0.1 Welcome. 0.2 Insertion sort. Jessica Su (some portions copied from CLRS)

Algorithms in Systems Engineering IE172. Midterm Review. Dr. Ted Ralphs

PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS

Class Note #02. [Overall Information] [During the Lecture]

Computer Algorithms. Introduction to Algorithm

The divide-and-conquer paradigm involves three steps at each level of the recursion: Divide the problem into a number of subproblems.

Design and Analysis of Computer Algorithm Lecture 1. Assoc. Prof.Pradondet Nilagupta Department of Computer Engineering

Data Structures Lecture 8

Lecture 2: Getting Started

Introduction to Algorithms

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: September 28, 2016 Edited by Ofir Geri

ECE250: Algorithms and Data Structures Midterm Review

6/12/2013. Introduction to Algorithms (2 nd edition) Overview. The Sorting Problem. Chapter 2: Getting Started. by Cormen, Leiserson, Rivest & Stein

Another Sorting Algorithm

Lecture 5: Running Time Evaluation

UNIT 1 ANALYSIS OF ALGORITHMS

Plotting run-time graphically. Plotting run-time graphically. CS241 Algorithmics - week 1 review. Prefix Averages - Algorithm #1

Organisation. Assessment

CS:3330 (22c:31) Algorithms

Complexity Analysis of an Algorithm

Choice of C++ as Language

Introduction to Algorithms

Introduction to Data Structure

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015

How many leaves on the decision tree? There are n! leaves, because every permutation appears at least once.

CMPSCI 187: Programming With Data Structures. Lecture 5: Analysis of Algorithms Overview 16 September 2011

Introduction to Computers & Programming

9/10/2018 Algorithms & Data Structures Analysis of Algorithms. Siyuan Jiang, Sept

Algorithm. Algorithm Analysis. Algorithm. Algorithm. Analyzing Sorting Algorithms (Insertion Sort) Analyzing Algorithms 8/31/2017

CS4311 Design and Analysis of Algorithms. Lecture 1: Getting Started

Data Structures and Algorithms

Module 1: Asymptotic Time Complexity and Intro to Abstract Data Types

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and

INTRODUCTION. Analysis: Determination of time and space requirements of the algorithm

21# 33# 90# 91# 34# # 39# # # 31# 98# 0# 1# 2# 3# 4# 5# 6# 7# 8# 9# 10# #

COMP Analysis of Algorithms & Data Structures

CSE 3101: Introduction to the Design and Analysis of Algorithms. Office hours: Wed 4-6 pm (CSEB 3043), or by appointment.

CS240 Fall Mike Lam, Professor. Algorithm Analysis

Jana Kosecka. Linear Time Sorting, Median, Order Statistics. Many slides here are based on E. Demaine, D. Luebke slides

CSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis. Aaron Bauer Winter 2014

The Limits of Sorting Divide-and-Conquer Comparison Sorts II

CS2351 Data Structures. Lecture 1: Getting Started

CSI33 Data Structures

Lecture 1. Introduction / Insertion Sort / Merge Sort

LECTURE 9 Data Structures: A systematic way of organizing and accessing data. --No single data structure works well for ALL purposes.

Chapter 3: The Efficiency of Algorithms. Invitation to Computer Science, C++ Version, Third Edition

CITS3001. Algorithms, Agents and Artificial Intelligence. Semester 2, 2016

Lecture Notes for Chapter 2: Getting Started

Introduction to Asymptotic Running Time Analysis CMPSC 122

Chapter 3: The Efficiency of Algorithms

Introduction to Algorithms

COSC 311: ALGORITHMS HW1: SORTING

Lower bound for comparison-based sorting

[ 11.2, 11.3, 11.4] Analysis of Algorithms. Complexity of Algorithms. 400 lecture note # Overview

Problem Set 6 Due: 11:59 Sunday, April 29

Chapter 3: The Efficiency of Algorithms Invitation to Computer Science,

RUNNING TIME ANALYSIS. Problem Solving with Computers-II

Advanced Algorithms and Data Structures

Advanced Algorithms and Data Structures

Algorithms I Dr Robert Harle. CST Paper I (IA NST CS, PPS CS and CST) Easter 2009/10

CSC148 Week 9. Larry Zhang

Algorithms and Data Structures

17/05/2018. Outline. Outline. Divide and Conquer. Control Abstraction for Divide &Conquer. Outline. Module 2: Divide and Conquer

COE428 Lecture Notes Week 1 (Week of January 9, 2017)

EECS 2011M: Fundamentals of Data Structures

Data Structures and Algorithms. Part 2

Quicksort (CLRS 7) We saw the divide-and-conquer technique at work resulting in Mergesort. Mergesort summary:

SEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY. Lecture 11 CS2110 Spring 2016

Recall from Last Time: Big-Oh Notation

1 Introduction. 2 InsertionSort. 2.1 Correctness of InsertionSort

Algorithm Analysis Part 2. Complexity Analysis

Why study algorithms? CS 561, Lecture 1. Today s Outline. Why study algorithms? (II)

CIS 121 Data Structures and Algorithms with Java Spring Code Snippets and Recurrences Monday, January 29/Tuesday, January 30

Introduction to Algorithms

The divide and conquer strategy has three basic parts. For a given problem of size n,

Algorithm Analysis. (Algorithm Analysis ) Data Structures and Programming Spring / 48

CS S-11 Sorting in Θ(nlgn) 1. Base Case: A list of length 1 or length 0 is already sorted. Recursive Case:

CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK

CS141: Intermediate Data Structures and Algorithms Analysis of Algorithms

COMP Analysis of Algorithms & Data Structures

Algorithms - Ch2 Sorting

Introduction to Algorithms

Agenda. The worst algorithm in the history of humanity. Asymptotic notations: Big-O, Big-Omega, Theta. An iterative solution

Data Structures and Algorithms Chapter 2

Randomized Algorithms, Quicksort and Randomized Selection

Overview of Data. 1. Array 2. Linked List 3. Stack 4. Queue

Mergesort. CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington

Elementary maths for GMT. Algorithm analysis Part I

ASYMPTOTIC COMPLEXITY

STA141C: Big Data & High Performance Statistical Computing

CS2 Algorithms and Data Structures Note 1

Algorithms Lab 3. (a) What is the minimum number of elements in the heap, as a function of h?

Transcription:

Introduction to Algorithms 6.046J/18.401J LECTURE 1 Analysis of Algorithms Insertion sort Merge sort Prof. Charles E. Leiserson

Course information 1. Staff. Prerequisites 3. Lectures 4. Recitations 5. Handouts 6. Textbook (CLRS). Extra help 8. Registration.Problem sets 10.Describing algorithms.grading policy.collaboration policy Course information handout September 8, 04 Introduction to Algorithms L1.

Analysis of algorithms The theoretical study of computer-program performance and resource usage. What s more important than performance? modularity user-friendliness correctness programmer time maintainability simplicity functionality extensibility robustness reliability September 8, 04 Introduction to Algorithms L1.3

Why study algorithms and performance? Algorithms help us to understand scalability. Performance often draws the line between what is feasible and what is impossible. Algorithmic mathematics provides a language for talking about program behavior. Performance is the currency of computing. The lessons of program performance generalize to other computing resources. Speed is fun! September 8, 04 Introduction to Algorithms L1.4

The problem of sorting Input: sequence a 1, a,, a n of numbers. Output: permutation a' 1, a',, a' n such that a' 1 a' a' n. Example: Input: 8 4 3 6 Output: 3 4 6 8 September 8, 04 Introduction to Algorithms L1.5

Insertion sort pseudocode INSERTION-SORT (A, n) A[1.. n] for j to n do key A[ j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] = key September 8, 04 Introduction to Algorithms L1.6

Insertion sort pseudocode INSERTION-SORT (A, n) A[1.. n] for j to n do key A[ j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] = key A: 1 i j n key sorted September 8, 04 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 September 8, 04 Introduction to Algorithms L1.8

Example of insertion sort 8 4 3 6 September 8, 04 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 September 8, 04 Introduction to Algorithms L1.8

Example of insertion sort 8 4 3 6 8 4 3 6 September 8, 04 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 September 8, 04 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 September 8, 04 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 September 8, 04 Introduction to Algorithms L1.14

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 September 8, 04 Introduction to Algorithms L1.15

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 3 4 8 6 September 8, 04 Introduction to Algorithms L1.16

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 3 4 8 6 September 8, 04 Introduction to Algorithms L1.1

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 3 4 8 6 3 4 6 8 done September 8, 04 Introduction to Algorithms L1.18

Running time The running time depends on the input: an already sorted sequence is easier to sort. Parameterize the running time by the size of the input, since short sequences are easier to sort than long ones. Generally, we seek upper bounds on the running time, because everybody likes a guarantee. September 8, 04 Introduction to Algorithms L1.1

Kinds of analyses Worst-case: (usually) T(n) = maximum time of algorithm on any input of size n. Average-case: (sometimes) T(n) = expected time of algorithm over all inputs of size n. Need assumption of statistical distribution of inputs. Best-case: (bogus) Cheat with a slow algorithm that works fast on some input. September 8, 04 Introduction to Algorithms L1.

Machine-independent time What is insertion sort s worst-case time? It depends on the speed of our computer: relative speed (on the same machine), absolute speed (on different machines). BIG IDEA: Ignore machine-dependent constants. Look at growth of T(n) as n. Asymptotic Analysis September 8, 04 Introduction to Algorithms L1.1

Θ-notation Math: Θ(g(n)) = { f (n):there exist positive constants c 1, c, and n 0 such that 0 c 1 g(n) f (n) c g(n) for all n n 0 } Engineering: Drop low-order terms; ignore leading constants. Example: 3n 3 + 0n 5n + 6046 = Θ(n 3 ) September 8, 04 Introduction to Algorithms L1.

Asymptotic performance T(n) When n gets large enough, a Θ(n ) algorithm always beats a Θ(n 3 ) algorithm. September 8, 04 n n 0 Introduction to Algorithms We shouldn t ignore asymptotically slower algorithms, however. Real-world design situations often call for a careful balancing of engineering objectives. Asymptotic analysis is a useful tool to help to structure our thinking. L1.3

Insertion sort analysis Worst case: Input reverse sorted. T ( n) = n j= Θ( j) = Θ ( n ) Average case: All permutations equally likely. T ( n) = n j= Θ( j / ) = Θ ( n ) [arithmetic series] Is insertion sort a fast sorting algorithm? Moderately so, for small n. Not at all, for large n. September 8, 04 Introduction to Algorithms L1.4

Merge sort MERGE-SORT A[1.. n] 1. If n = 1, done.. Recursively sort A[ 1.. n/ ] and A[ n/ +1.. n ]. 3. Merge the sorted lists. Key subroutine: MERGE September 8, 04 Introduction to Algorithms L1.5

Merging two sorted arrays 1 September 8, 04 Introduction to Algorithms L1.6

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.8

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.30

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.31

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.3

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.33

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.34

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.35

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.36

Merging two sorted arrays 1 1 September 8, 04 Introduction to Algorithms L1.3

Merging two sorted arrays 1 1 Time = Θ(n) to merge a total of n elements (linear time). September 8, 04 Introduction to Algorithms L1.38

Analyzing merge sort Abuse T(n) Θ(1) T(n/) Θ(n) MERGE-SORT A[1.. n] 1. If n = 1, done.. Recursively sort A[ 1.. n/ ] and A[ n/ +1.. n ]. 3. Merge the sorted lists Sloppiness: Should be T( n/ ) + T( n/ ), but it turns out not to matter asymptotically. September 8, 04 Introduction to Algorithms L1.3

Recurrence for merge sort T(n) = Θ(1) if n = 1; T(n/) + Θ(n) if n > 1. We shall usually omit stating the base case when T(n) = Θ(1) for sufficiently small n, but only when it has no effect on the asymptotic solution to the recurrence. CLRS and Lecture provide several ways to find a good upper bound on T(n). September 8, 04 Introduction to Algorithms L1.40

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. September 8, 04 Introduction to Algorithms L1.41

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. T(n) September 8, 04 Introduction to Algorithms L1.4

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn T(n/) T(n/) September 8, 04 Introduction to Algorithms L1.43

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn/ cn/ T(n/4) T(n/4) T(n/4) T(n/4) September 8, 04 Introduction to Algorithms L1.44

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn/ cn/ cn/4 cn/4 cn/4 cn/4 Θ(1) September 8, 04 Introduction to Algorithms L1.45

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn/ cn/ h = lg n cn/4 cn/4 cn/4 cn/4 Θ(1) September 8, 04 Introduction to Algorithms L1.46

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn cn/ cn/ h = lg n cn/4 cn/4 cn/4 cn/4 Θ(1) September 8, 04 Introduction to Algorithms L1.4

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 Θ(1) September 8, 04 Introduction to Algorithms L1.48

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn Θ(1) September 8, 04 Introduction to Algorithms L1.4

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn Θ(1) #leaves = n Θ(n) September 8, 04 Introduction to Algorithms L1.50

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn Θ(1) #leaves = n Θ(n) Total = Θ(n lg n) September 8, 04 Introduction to Algorithms L1.51

Conclusions Θ(n lg n) grows more slowly than Θ(n ). Therefore, merge sort asymptotically beats insertion sort in the worst case. In practice, merge sort beats insertion sort for n > 30 or so. Go test it out for yourself! September 8, 04 Introduction to Algorithms L1.5