Introduction to Algorithms 6.046J/18.401J/SMA5503

Similar documents
Introduction to Algorithms 6.046J/18.401J

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

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

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

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

Computer Algorithms. Introduction to Algorithm

ECE250: Algorithms and Data Structures Midterm Review

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

Data Structures Lecture 8

Organisation. Assessment

Lecture 2: Getting Started

Another Sorting Algorithm

Lecture 5: Running Time Evaluation

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

Introduction to Computers & Programming

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

UNIT 1 ANALYSIS OF ALGORITHMS

Introduction to Algorithms

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

CS:3330 (22c:31) Algorithms

Complexity Analysis of an Algorithm

Choice of C++ as Language

Introduction to Data Structure

Advanced Algorithms and Data Structures

Introduction to Algorithms

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

Data Structures and Algorithms

We don t have much time, so we don t teach them [students]; we acquaint them with things that they can learn. Charles E. Leiserson

Lecture 1. Introduction / Insertion Sort / Merge Sort

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

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

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

CSI33 Data Structures

Advanced Algorithms and Data Structures

CS240 Fall Mike Lam, Professor. Algorithm Analysis

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

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

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

COSC 311: ALGORITHMS HW1: SORTING

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

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

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

Lecture Notes for Chapter 2: Getting Started

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

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

COMP Analysis of Algorithms & Data Structures

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

CSC148 Week 9. Larry Zhang

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

CS2351 Data Structures. Lecture 1: Getting Started

Algorithms and Data Structures

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

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

Data Structures and Algorithms. Part 2

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

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

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

EECS 2011M: Fundamentals of Data Structures

The complexity of Sorting and sorting in linear-time. Median and Order Statistics. Chapter 8 and Chapter 9

Overview. CSE 101: Design and Analysis of Algorithms Lecture 1

Chapter 2: Algorithm Complexity Analysis. Chaochun Wei Spring 2018

Introduction to Asymptotic Running Time Analysis CMPSC 122

Introduction to Algorithms

Chapter 3: The Efficiency of Algorithms

Lower bound for comparison-based sorting

Problem Set 5. MIT students: Each problem should be done on a separate sheet (or sheets) of three-hole punched paper.

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

RUNNING TIME ANALYSIS. Problem Solving with Computers-II

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

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

Randomized Algorithms, Quicksort and Randomized Selection

CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK

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

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

CSE373: Data Structure & Algorithms Lecture 21: More Comparison Sorting. Aaron Bauer Winter 2014

Comparison Based Sorting Algorithms. Algorithms and Data Structures: Lower Bounds for Sorting. Comparison Based Sorting Algorithms

Chapter 8 Sorting in Linear Time

Midterm CSE 21 Spring 2012

Computer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis

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

Introduction to Algorithms

Algorithms and Data Structures: Lower Bounds for Sorting. ADS: lect 7 slide 1

Algorithm Analysis Part 2. Complexity Analysis

Recall from Last Time: Big-Oh Notation

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

Assignment 1 (concept): Solutions

1 Introduction. 2 InsertionSort. 2.1 Correctness of InsertionSort

Algorithms and Data Structures, or

SEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY

UNIT-1. Chapter 1(Introduction and overview) 1. Asymptotic Notations 2. One Dimensional array 3. Multi Dimensional array 4. Pointer arrays.

Transcription:

Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 1 Prof. Charles E. Leiserson

Welcome to Introduction to Algorithms, Fall 01 Handouts 1. Course Information. Calendar 3. Registration (MIT students only) 4. References 5. Objectives and Outcomes 6. Diagnostic Survey Day 1 Introduction to Algorithms L1.

Course information 1. Staff. Distance learning 3. Prerequisites 4. Lectures 5. Recitations 6. Handouts. Textbook (CLRS) 8. Website. Extra help 10.Registration (MIT only).problem sets.describing algorithms.grading policy 14.Collaboration policy Course information handout Day 1 Introduction to Algorithms L1.3

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 Day 1 Introduction to Algorithms L1.4

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. The lessons of program performance generalize to other computing resources. Speed is fun! Day 1 Introduction to Algorithms L1.5

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 Day 1 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 Day 1 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 Day 1 Introduction to Algorithms L1.8

Example of insertion sort 8 4 3 6 Day 1 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 Day 1 Introduction to Algorithms L1.10

Example of insertion sort 8 4 3 6 8 4 3 6 Day 1 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 Day 1 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 Day 1 Introduction to Algorithms L1.

Example of insertion sort 8 4 3 6 8 4 3 6 4 8 3 6 4 8 3 6 Day 1 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 Day 1 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 Day 1 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 Day 1 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 Day 1 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. Day 1 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. Day 1 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 Day 1 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 ) Day 1 Introduction to Algorithms L1.

Asymptotic performance T(n) When n gets large enough, a Θ(n ) algorithm always beats a Θ(n 3 ) algorithm. n n 0 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. Day 1 Introduction to Algorithms 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. Day 1 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 Day 1 Introduction to Algorithms L1.5

Merging two sorted arrays 1 Day 1 Introduction to Algorithms L1.6

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.8

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.30

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.31

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.3

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.33

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.34

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.35

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.36

Merging two sorted arrays 1 1 Day 1 Introduction to Algorithms L1.3

Merging two sorted arrays 1 1 Time = Θ(n) to merge a total of n elements (linear time). Day 1 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. Day 1 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). Day 1 Introduction to Algorithms L1.40

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

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

Recursion tree Solve T(n) = T(n/) + cn, where c > 0 is constant. cn T(n/) T(n/) Day 1 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) Day 1 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) Day 1 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) Day 1 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) Day 1 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) Day 1 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) Day 1 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) Day 1 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) Day 1 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! Day 1 Introduction to Algorithms L1.5