+ All Categories
Home > Documents > Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

Date post: 11-Jan-2016
Category:
Upload: samuel-oliver
View: 218 times
Download: 1 times
Share this document with a friend
Popular Tags:
33
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15
Transcript
Page 1: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

Analysis of AlgorithmsCS 477/677

Instructor: Monica Nicolescu

Lecture 15

Page 2: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Midterm Exam

• Tuesday, March 24 in classroom

• 75 minutes

• Exam structure:

– TRUE/FALSE questions

– short questions on the topics discussed in class

– homework-like problems

• All topics discussed so far, up to dynamic

programming2

Page 3: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

General Advice for Study

• Understand how the algorithms are working

– Work through the examples we did in class

– “Narrate” for yourselves the main steps of the

algorithms in a few sentences

• Know when or for what problems the

algorithms are applicable

• Do not memorize algorithms

3

Page 4: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Analyzing Algorithms• Alg.: MIN (a[1], …, a[n])

m ← a[1]; for i ← 2 to n

if a[i] < m then m ← a[i];

• Running time: – the number of primitive operations (steps) executed

before terminationT(n) =1 [first step] + (n) [for loop] + (n-1) [if condition] + (n-1) [the assignment in then] = 3n - 1

• Order (rate) of growth: – The leading term of the formula– Expresses the asymptotic behavior of the algorithm

• T(n) grows like n

4

Page 5: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Asymptotic Notations

• A way to describe behavior of functions in the limit

– Abstracts away low-order terms and constant factors

– How we indicate running times of algorithms

– Describe the running time of an algorithm as n grows to

• O notation: asymptotic “less than”: f(n) “≤”

g(n)

• notation: asymptotic “greater than”: f(n) “≥”

g(n)

• notation: asymptotic “equality”: f(n) “=” g(n)5

Page 6: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Exercise

• Order the following 6 functions in increasing order of their growth rates: – nlogn, log2n, n2, 2n, , n.

log2n

n

nlogn

n2

2n

n

n

6

Page 7: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Running Time Analysis

• Algorithm Loop2(n)p=1

for i = 1 to 2n

p = p*i

• Algorithm Loop3(n)

p=1

for i = 1 to n2

p = p*i

O(n)

O(n2)

7

Page 8: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Running Time Analysis

Algorithm Loop4(n)

s=0

for i = 1 to 2n

for j = 1 to i

s = s + i

O(n2)

8

Page 9: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Recurrences

Def.: Recurrence = an equation or inequality that describes a function in terms of its value on smaller inputs, and one or more base cases

• Recurrences arise when an algorithm contains

recursive calls to itself• Methods for solving recurrences

– Substitution method– Iteration method– Recursion tree method– Master method

• Unless explicitly stated choose the simplest method for solving recurrences

9

Page 10: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Example Recurrences

• T(n) = T(n-1) + n Θ(n2)– Recursive algorithm that loops through the input to

eliminate one item

• T(n) = T(n/2) + c Θ(lgn)– Recursive algorithm that halves the input in one step

• T(n) = T(n/2) + n Θ(n)– Recursive algorithm that halves the input but must

examine every item in the input

• T(n) = 2T(n/2) + 1 Θ(n)– Recursive algorithm that splits the input into 2 halves

and does a constant amount of other work

10

Page 11: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Analyzing Divide and Conquer Algorithms

• The recurrence is based on the three steps of the paradigm:– T(n) = running time on a problem of size n– Divide the problem into a subproblems, each of size

n/b: takes– Conquer (solve) the subproblems: takes– Combine the solutions: takes

(1) if n ≤ c

T(n) =

D(n)aT(n/b)

C(n)

aT(n/b) + D(n) + C(n) otherwise

11

Page 12: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Master’s method

• Used for solving recurrences of the form:

where, a ≥ 1, b > 1, and f(n) > 0

Compare f(n) with nlogb

a:

Case 1: if f(n) = O(nlogb

a - ) for some > 0, then: T(n) = (nlogb

a)

Case 2: if f(n) = (nlogb

a), then: T(n) = (nlogb

a lgn)

Case 3: if f(n) = (nlogb

a +) for some > 0, and if

af(n/b) ≤ cf(n) for some c < 1 and all sufficiently large n, then:

T(n) = (f(n))

)()( nfb

naTnT

regularity condition 12

Page 13: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem 1Two different divide-and-conquer algorithms A and B have been designed for solving the problem . A partitions into 4 subproblems each of size n/2, where n is the input size for , and it takes a total of (n1.5) time for the partition and combine steps. B partitions into 4 subproblems each of size n/4, and it takes a total of (n) time for the partition and combine steps. Which algorithm is preferable? Why?

A: , (case 1) B: , (case 2)

)(4

4)(2

4 5.1 nn

TTnn

TT BA

5.1)( nnf 24loglog 2 nnn ab )()( 2 nOnf 2)( nnT

nnf )( nnn ab 2loglog 2 )()( nnf nnnT lg)(

13

Page 14: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Sorting

• Insertion sort– Design approach:– Sorts in place:– Best case:– Worst case: – n2 comparisons, n2 exchanges

• Bubble Sort– Design approach:– Sorts in place:– Running time:– n2 comparisons, n2 exchanges

Yes(n)

(n2)

incremental

Yes(n2)

incremental

14

Page 15: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Sorting

• Selection sort– Design approach:– Sorts in place:– Running time: – n2 comparisons, n exchanges

• Merge Sort– Design approach:– Sorts in place:– Running time:

Yes

(n2)

incremental

No(nlgn)

divide and conquer

15

Page 16: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Quicksort• Quicksort

– Idea:

– Design approach:

– Sorts in place:

– Best case:

– Worst case:

• Partition– Running time

• Randomized Quicksort

Yes

(nlgn)

(n2)

Divide and conquer

(n)

Partition the array A into 2 subarrays A[p..q] and A[q+1..r], such that each element of A[p..q] is smaller than or equal to each element in A[q+1..r]. Then sort the subarrays recursively.

(nlgn) – on average(n2) – in the worst case

16

Page 17: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Randomized Algorithms

• The behavior is determined in part by values

produced by a random-number generator– RANDOM(a, b) returns an integer r, where a ≤ r ≤

b and each of the b-a+1 possible values of r is

equally likely

• Algorithm generates randomness in input

• No input can consistently elicit worst case

behavior– Worst case occurs only if we get “unlucky” numbers

from the random number generator17

Page 18: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem

a) TRUE FALSE

Worst case time complexity of QuickSort is (nlgn).

b) TRUE FALSE

If and , then

c) TRUE FALSE

If and , then

nnnn nnnf lglg 2lg)( nnng )( ))(()( ngnf

96100)( nnf nng 2)( ))(()( ngOnf

18

Page 19: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem

Consider a modification to MERGE-SORT in which n/k sublists of length k are sorted using INSERTION-SORT and then merged using the standard merging mechanism. How long will it take, in the worst case, to sort the n/k sublists, each of size k, assuming the above modification?

– Insertion sort takes (k2) time per k-element list in the worst case

– Sorting n/k lists of k elements each takes

(k2 n/k) = (nk) worst-case time

19

Page 20: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Medians and Order Statistics

• General Selection Problem: – select the i-th smallest element from a set of n distinct numbers

Algorithms:

• Randomized select

– Idea

– Worst-case O(n)

Partition the input array similarly with the approach used for Quicksort (use RANDOMIZED-PARTITION)Recurse on one side of the partition to look for the i-th element depending on where i is with respect to the pivot

20

Page 21: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem

a) What is the difference between the MAX-HEAP property and the binary search tree property?– The MAX-HEAP property states that a node in the heap is

greater than or equal to both of its children– the binary search property states that a node in a tree is

greater than or equal to the nodes in its left subtree and smaller than or equal to the nodes in its right subtree

b) What is the lowest possible bound on comparison-based sorting algorithms?– nlgn

c) Assuming the elements in a max-heap are distinct, what are the possible locations of the second-largest element?– The second largest element has to be a child of the root

21

Page 22: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Questions

• What is the effect of calling MAX-HEAPIFY(A, i) when:– The element A[i] is larger than its children?

• Nothing happens– i > heap-size[A]/2?

• Nothing happens

• Can the min-heap property be used to print out the keys of an n-node heap in sorted order in O(n) time?– No, it doesn’t tell which subtree of a node contains the element to

print before that node– In a heap, the largest element smaller than the node could be in

either subtree

22

Page 23: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Questions

a) TRUE FALSE

A reverse sorted array is always a max heap.

b) What is the maximum number of nodes possible

in a binary search tree of height h?

- max number reached when all levels are full

h

i

i

0

2 1212

12 11

h

h

23

Page 24: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem

Let x be the root node of a binary search tree (BST). Write an algorithm BSTHeight(x) that determines the height of the tree.

Alg: BSTHeight(x)

if (x==NULL)

return -1;

else

return max (BSTHeight(left[x]), BSTHeight(right[x]))+1;

24

Page 25: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Exercise

• We can sort a given set of n numbers by first building a binary search tree containing these numbers and then printing the numbers by an inorder tree walk. What are the worst-case and the best-case running times for this sorting algorithm?

Alg.: TREE-SORT(A)

let T be an empty binary search tree

for i ← 1 to n

do TREE-INSERT(T, A[i])

INORDER-TREE-WALK(root[T])• Worst-case: nodes are inserted in a linear chain: (n2)• Best-case: tree-insert gives a balanced tree of height lgn: (nlgn)

25

Page 26: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Exercise• In a binary search tree, are the insert and delete

operations commutative? (deleting x and then y leaves the tree the same as deleting y and then x)

• Insert:– Try to insert 4 followed by 6, then insert 6 followed by 4– Inserts do not commute

• Delete– Delete 5 followed by 6, then 6 followed by 5 in the following tree– Deletes do not commute

4

2 6

5 8

7

4

2 8

7

4

2 7

8

26

Page 27: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Red-Black Trees Properties

• Binary search trees with additional properties:

1. Every node is either red or black

2. The root is black

3. Every leaf (NIL) is black

4. If a node is red, then both its children are black

5. For each node, all paths from the node to

leaves contain the same number of black

nodes

27

Page 28: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Order-Statistic Tree

• Def.: Order-statistic tree:

a red-black tree with

additional information

stored in each node

• size[x] contains the

number of (internal) nodes

in the subtree rooted at x

(including x itself)

size[x] = size[left[x]] + size[right[x]] + 1

7

10

3

8

3

15

1

41

9

1

111

19

28

Page 29: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Operations on Order-Statistic Trees

• OS-SELECT– Given an order-statistic tree, return a pointer to the

node containing the i-th smallest key in the subtree

rooted at x

– Running time O(lgn)

• OS-RANK– Given a pointer to a node x in an order-statistic tree,

return the rank of x in the linear order determined by

an inorder walk of T

– Running time O(lgn)

29

Page 30: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Exercise

• In an OS-tree, the size field can be used to compute the rank’ of a node x, in the subtree for which x is the root. If we want to store this rank in each of the nodes, show how can we maintain this information during insertion and deletion.

710

3 8

315

1 4

1 9

111

119

Insertion• add 1 to rank’[x] if z is inserted

within x’s left subtree• leave rank’[x] unchanged if z is

inserted within x’s right subtree

Deletion• subtract 1 from rank’[x]

whenever the deleted node y had

been in x’s left subtree.

2

4

1 1 1 1

2

rank’[x] = size[left] + 130

Page 31: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Exercise (cont.)

• We also need to handle the rotations that occur during insertion and deletion

rank’(x) = rx

rank’(y) = ry

rank’(x) = rx

rank’(y) = ry + rank’(x)

31

Page 32: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Problem

d) TRUE FALSEThe sequence 23, 17, 14, 6, 13, 10, 1, 5, 7, 12 is a heap.

7, which is the right child of 6, is greater than its parent.e) TRUE FALSE

The depths of nodes in a red-black tree can be efficiently

maintained as fields in the nodes of the tree.

• No, because the depth of a node depends on the depth

of its parent

• When the depth of a node changes, the depths of all

nodes below it in the tree must be updated

• Updating the root node causes n - 1 other nodes to be

updated32

Page 33: Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 15.

CS 477/677 - Lecture 15

Readings

• Chapters 1-4, 6-9, 12-14

33


Recommended