CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473...

52
1 CS473 - Algorithms I CS 473 Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and Mustafa Ozdal Computer Engineering Department, Bilkent University View in slide-show mode

Transcript of CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473...

Page 1: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

1

CS473 - Algorithms I

CS 473 – Lecture 1

Lecture 1

Introduction to Analysis of Algorithms

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

View in slide-show mode

Page 2: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

2 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Grading

Midterm: 20%

Final: 20%

Classwork: 54%

Attendance: 6%

Page 3: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

3 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Classwork (54% of the total grade)

Like small exams, covering the most recent material

There will be 7 classwork sessions

Thursdays: 17:40 – 19:30?

Open book (clean and unused). No notes. No slides.

See the syllabus for details.

Page 4: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

4 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Algorithm Definition

Algorithm: A sequence of computational steps that transform the input to the desired output

Procedure vs. algorithm

An algorithm must halt within finite time with the right output

Example:

Sorting

Algorithm

a sequence of

n numbers

sorted permutation

of input sequence

Page 5: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

5 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Many Real World Applications

Bioinformatics

Determine/compare DNA sequences

Internet

Manage/manipulate/route data

Information retrieval

Search and access information in large data

Security

Encode & decode personal/financial/confidential data

Computer Aided Design

Minimize human effort in chip-design process

Page 6: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

6 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Course Objectives

Learn basic algorithms & data structures

Gain skills to design new algorithms

Focus on efficient algorithms

Design algorithms that

are fast

use as little memory as possible

are correct!

Page 7: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

7 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Outline of Lecture 1

Study two sorting algorithms as examples

Insertion sort: Incremental algorithm

Merge sort: Divide-and-conquer

Introduction to runtime analysis

Best vs. worst vs. average case

Asymptotic analysis

Page 8: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

8 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Sorting Problem

Input: Sequence of numbers

a1, a2,…,an

Output: A permutation

= (1), (2),…, (n)

such that

a(1)a(2) … a(n)

Page 9: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

9 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort

Page 10: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

10 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort: Basic Idea

Assume input array: A[1..n]

Iterate j from 2 to n

iter j

j already sorted

after

iter j

j

insert into sorted array

sorted subarray

Page 11: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

11 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Pseudo-code notation

Objective: Express algorithms to humans in a clear

and concise way

Liberal use of English

Indentation for block structures

Omission of error handling and other details

needed in real programs

Page 12: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

12 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Algorithm: Insertion Sort (from Section 2.2)

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

Page 13: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

13 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Algorithm: Insertion Sort

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

Iterate over array elts j

Loop invariant:

The subarray A[1..j-1]

is always sorted

j already sorted

key

Page 14: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

14 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Algorithm: Insertion Sort

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

Shift right the entries

in A[1..j-1] that are > key

j already sorted

> key < key

j > key < key

Page 15: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

15 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Algorithm: Insertion Sort

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

> key < key

Insert key to the correct location

End of iter j: A[1..j] is sorted

key

j

now sorted

Page 16: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

16 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

5 2 4 6 1 3

Page 17: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

17 CS 473 – Lecture 1

5 4 6 1 3 2

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=2

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

5 2 4 6 1 3 initial

> 2 j

5 2 4 6 1 3 shift

key=2

sorted

insert

key

Page 18: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

18 CS 473 – Lecture 1

? ? ? ? ? ?

2 5 4 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=3

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

key=4

What are the entries at the

end of iteration j=3?

Page 19: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

19 CS 473 – Lecture 1

2 5 6 1 3

2 5 4 6 1 3

2 5 4 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=3

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

> 4 j

shift

key=4

sorted

insert

key

< 4

4

Page 20: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

20 CS 473 – Lecture 1

2 4 5 1 3

2 4 5 6 1 3

2 4 5 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=4

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

< 6 j

shift

key=6

sorted

insert

key 6

Page 21: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

21 CS 473 – Lecture 1

2 4 5 6 1 3

? ? ? ? ? ?

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=5

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

key=1

What are the entries at the

end of iteration j=5?

Page 22: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

22 CS 473 – Lecture 1

2 4 5 6 3

2 4 5 6 1 3

2 4 5 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=5

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

>1 j

shift

key=1

sorted

insert

key

>1 >1 >1

1

Page 23: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

23 CS 473 – Lecture 1

1 2 4 5 6

1 2 4 5 6 3

1 2 4 5 6 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort - Example: Iteration j=6

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

>3 j

shift

key=3

sorted

insert

key

>3 >3 <3

3

Page 24: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

24 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort Algorithm - Notes

Items sorted in-place

Elements rearranged within array

At most constant number of items stored outside the array

at any time (e.g. the variable key)

Input array A contains sorted output sequence when the

algorithm ends

Incremental approach

Having sorted A[1..j-1], place A[j] correctly so that A[1..j]

is sorted

Page 25: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

25 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Running Time

Depends on:

Input size (e.g., 6 elements vs 6M elements)

Input itself (e.g., partially sorted)

Usually want upper bound

Page 26: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

26 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Kinds of running time analysis

Worst Case (Usually)

T(n) = max time on any input of size n

Average Case (Sometimes)

T(n) = average time over all inputs of size n

Assumes statistical distribution of inputs

Best Case (Rarely)

T(n) = min time on any input of size n BAD*: Cheat with slow algorithm that works fast on some inputs

GOOD: Only for showing bad lower bound

*Can modify any algorithm (almost) to have a low best-case running time

Check whether input constitutes an output at the very beginning of the algorithm

Page 27: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

27 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Running Time

For Insertion-Sort, what is its worst-case time?

Depends on speed of primitive operations

Relative speed (on same machine)

Absolute speed (on different machines)

Asymptotic analysis

Ignore machine-dependent constants

Look at growth of T(n) as n

Page 28: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

28 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Notation

Drop low order terms

Ignore leading constants

e.g.

2n2+5n + 3 = (n2)

3n3+90n2-2n+5= (n3)

Formal explanations in the next lecture.

Page 29: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

CS473 – Lecture 1 Cevdet Aykanat - Bilkent University

Computer Engineering Department

29

• As n gets large, a (n2) algorithm runs faster

than a (n3) algorithm

T(n)

n

min value for n0

Runtime larger

asymptotically

Page 30: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

30 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort – Runtime Analysis

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

Cost

c1

c2

c3

c4

c5

c6

c7

tj: The number of

times while loop

test is executed for j

Page 31: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

31 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

How many times is each line executed?

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

# times

n

n-1

n-1

k4 = t jj=2

n

å

k5 = (t j -1)j=2

n

å

k6 = (t j -1)j=2

n

å

k4

k5

k6

n-1

Page 32: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

32 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort – Runtime Analysis

Sum up costs:

What is the best case runtime?

What is the worst case runtime?

n

j

jtcncncncnT2

4321 )1()1(

c5 (t j -1)+ c6

j=2

n

å (t j -1)+c7(n-1)j=2

n

å

Page 33: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

33 CS 473 – Lecture 1

2 4 5 6 1 3

2 4 5 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Question: If A[1...j] is already sorted, tj = ?

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

< 6 j shift

none

key=6

tj = 1

Page 34: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

34 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort – Best Case Runtime

Original function:

Best-case: Input array is already sorted

tj = 1 for all j

n

j

jtcncncncnT2

4321 )1()1(

c5 (t j -1)+ c6

j=2

n

å (t j -1)+c7(n-1)j=2

n

å

T n( ) = (c1 +c2 +c3 +c4 +c7)n- (c2 +c3 +c4 +c7)

Page 35: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

35 CS 473 – Lecture 1

2 4 5 6 1 3

2 4 5 6 1 3

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Q: If A[j] is smaller than every entry in A[1..j-1], tj = ?

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

j

sorted

initial

>1 j shift

all

key=1

>1 >1 >1

tj = j

Page 36: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

36 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort – Worst Case Runtime

Worst case: The input array is reverse sorted

tj = j for all j

After derivation, worst case runtime:

T n( ) = 12(c4 +c5 +c6 )n2 +

(c1 +c2 +c3 + 12(c4 -c5 -c6 )+c7)n- (c2 +c3 +c4 +c7)

Page 37: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

37 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Insertion Sort – Asymptotic Runtime Analysis

Insertion-Sort (A)

1. for j 2 to n do

2. key A[j];

3. i j - 1;

4. while i > 0 and A[i] > key

do

5. A[i+1] A[i];

6. i i - 1;

endwhile

7. A[i+1] key;

endfor

(1)

(1)

(1)

Page 38: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

CS473 – Lecture 1 Cevdet Aykanat - Bilkent University

Computer Engineering Department

38

Asymptotic Runtime Analysis of Insertion-Sort

• Worst-case (input reverse sorted)

– Inner loop is (j)

• Average case (all permutations equally likely)

– Inner loop is (j/2)

• Often, average case not much better than worst case

• Is this a fast sorting algorithm?

– Yes, for small n. No, for large n.

2

22

njjnTn

j

n

j

2

22

2 njjnTn

j

n

j

Page 39: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

39 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort

Page 40: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

40 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort: Basic Idea

Divide

Input array A

Conquer

sort this half sort this half

merge two sorted halves

Combine

Page 41: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

CS473 – Lecture 1 Cevdet Aykanat - Bilkent University

Computer Engineering Department

41

Merge-Sort (A, p, r) if p = r then return;

else

q (p+r)/2; (Divide)

Merge-Sort (A, p, q); (Conquer)

Merge-Sort (A, q+1, r); (Conquer)

Merge (A, p, q, r); (Combine)

endif

• Call Merge-Sort(A,1,n) to sort A[1..n]

• Recursion bottoms out when subsequences have length 1

Page 42: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

42 CS 473 – Lecture 1

Merge-Sort (A, p, r)

if p = r then

return

else

q (p+r)/2

Merge-Sort (A, p, q)

Merge-Sort (A, q+1, r)

Merge(A, p, q, r)

endif

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort: Example

5 2 4 6 1 3

p r q

2 4 5 1 3 6

p r q

1 2 3 4 5 6

Page 43: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

43 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

How to merge 2 sorted subarrays?

HW: Study the pseudo-code in the textbook (Sec. 2.3.1)

What is the complexity of this step? (n)

2 4 5

1 3 6

A[p..q]

A[q+1..r]

1 2 3 4 5 6

Page 44: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

44 CS 473 – Lecture 1

Merge-Sort (A, p, r)

if p = r then

return

else

q (p+r)/2

Merge-Sort (A, p, q)

Merge-Sort (A, q+1, r)

Merge(A, p, q, r)

endif

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort: Correctness

Base case: p = r

Trivially correct

Inductive hypothesis: MERGE-SORT

is correct for any subarray that is a

strict (smaller) subset of A[p, r].

General Case: MERGE-SORT is

correct for A[p, r].

From inductive hypothesis and

correctness of Merge.

Page 45: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

45 CS 473 – Lecture 1

Merge-Sort (A, p, r)

if p = r then

return

else

q (p+r)/2

Merge-Sort (A, p, q)

Merge-Sort (A, q+1, r)

Merge(A, p, q, r)

endif

Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort: Complexity

(1)

T(n)

(1)

T(n/2)

T(n/2)

(n)

Page 46: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

46 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort – Recurrence

Describe a function recursively in terms of itself

To analyze the performance of recursive algorithms

For merge sort:

(1) if n=1

2T(n/2) + (n) otherwise T(n) =

Page 47: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

47 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

How to solve for T(n)?

Generally, we will assume T(n) = (1) for sufficiently small n

The recurrence above can be rewritten as:

T(n) = 2 T(n/2) + (n)

How to solve this recurrence?

(1) if n=1

2T(n/2) + (n) otherwise T(n) =

Page 48: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

48 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Solve Recurrence: T(n) = 2T (n/2) + Θ(n)

Θ(n)

T(n/2) T(n/2)

Page 49: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

49 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Solve Recurrence: T(n) = 2T (n/2) + Θ(n)

Θ(n)

Θ(n/2)

T(n/4) T(n/4) T(n/4) T(n/4)

T(n/2) Θ(n/2)

2x

subpro

bs

each

siz

e

hal

ved

Page 50: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

50 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Solve Recurrence: T(n) = 2T (n/2) + Θ(n)

Θ(n)

Θ(n/2) Θ(n/2)

T(n/4) T(n/4) T(n/4) T(n/4)

Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1)

Θ(n)

Θ(l

gn

)

Θ(n)

Θ(n)

Θ(n)

Total: Θ(nlgn)

Page 51: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

51 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Merge Sort Complexity

Recurrence:

T(n) = 2T(n/2) + Θ(n)

Solution to recurrence:

T(n) = Θ(nlgn)

Page 52: CS473 - Algorithms Ics.bilkent.edu.tr/~reha/473/MO/01-Intro-MO.pdf · CS473 - Algorithms I CS 473 – Lecture 1 Lecture 1 Introduction to Analysis of Algorithms Cevdet Aykanat and

52 CS 473 – Lecture 1 Cevdet Aykanat and Mustafa Ozdal

Computer Engineering Department, Bilkent University

Conclusions: Insertion Sort vs. Merge Sort

(nlgn) grows more slowly than (n2)

Therefore Merge-Sort beats Insertion-Sort in the

worst case

In practice, Merge-Sort beats Insertion-Sort for n>30

or so.