07- 22 jan - divide and conquer

40
CS 321. Algorithm Analysis & Design Lecture 7 Divide and Conquer Part II - Master’s Theorem

Upload: neeldhara-misra

Post on 14-Apr-2017

115 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: 07- 22 Jan - Divide and Conquer

CS 321. Algorithm Analysis & Design Lecture 7

Divide and ConquerPart II - Master’s Theorem

Page 2: 07- 22 Jan - Divide and Conquer

Analysing Recurrences

Page 3: 07- 22 Jan - Divide and Conquer

Analysing Recurrences

Base Case: T(n) is constant for all sufficiently small n.

Page 4: 07- 22 Jan - Divide and Conquer

T (n) T (n/2) +O(1)

Analysing Recurrences

Base Case: T(n) is constant for all sufficiently small n.

Page 5: 07- 22 Jan - Divide and Conquer

T (n) 2T (n/2) +O(n)

T (n) T (n/2) +O(1)

Analysing Recurrences

Base Case: T(n) is constant for all sufficiently small n.

Page 6: 07- 22 Jan - Divide and Conquer

T (n) 2T (n/2) +O(n)

T (n) T (n/2) +O(1)

Analysing Recurrences

Binary Search

Base Case: T(n) is constant for all sufficiently small n.

Page 7: 07- 22 Jan - Divide and Conquer

T (n) 2T (n/2) +O(n)

T (n) T (n/2) +O(1)

Analysing Recurrences

Binary Search

MergeSort and C losest Pair

Base Case: T(n) is constant for all sufficiently small n.

Page 8: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

Page 9: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

Page 10: 07- 22 Jan - Divide and Conquer

#of subproblems solved

T (n) aT (n/b) +O(nd)

Page 11: 07- 22 Jan - Divide and Conquer

#of subproblems solved

size of each subproblem

T (n) aT (n/b) +O(nd)

Page 12: 07- 22 Jan - Divide and Conquer

#of subproblems solved

size of each subproblem time to combine

T (n) aT (n/b) +O(nd)

Page 13: 07- 22 Jan - Divide and Conquer

#of subproblems solved

size of each subproblem time to combine

T (n) aT (n/b) +O(nd)

integer that could be as smal l as one.

Page 14: 07- 22 Jan - Divide and Conquer

#of subproblems solved

size of each subproblem time to combine

T (n) aT (n/b) +O(nd)

b should be a constant greater than one.

integer that could be as smal l as one.

Page 15: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

Page 16: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

if a = bd

Page 17: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

if a = bd

if a < bd

Page 18: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

if a = bd

if a < bd

if a > bd

Page 19: 07- 22 Jan - Divide and Conquer

a (# of

subproblems)

b (n/b = size of subproblems)

d (nd = running time of

combine step)

Running Time

Binary Search

1 2 0 log n

Merge Sort

2 2 1 n log n

Page 20: 07- 22 Jan - Divide and Conquer

a (# of

subproblems)

b (n/b = size of subproblems)

d (nd = running time of

combine step)

Running Time

Binary Search

1 2 0 log n

Merge Sort

2 2 1 n log n

Page 21: 07- 22 Jan - Divide and Conquer

a (# of

subproblems)

b (n/b = size of subproblems)

d (nd = running time of

combine step)

Running Time

Binary Search

1 2 0 log n

Merge Sort

2 2 1 n log n

Page 22: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

if a = bd

if a < bd

if a > bd

Page 23: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Page 24: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

Page 25: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

aj · c(n/bj)d

Page 26: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

cnd(a/bd)j

Page 27: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

cnd(a/bd)j

Total work?

Page 28: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

cnd(a/bd)j

Total work?

cnd

logb nX

j=0

(a/bd)j

Page 29: 07- 22 Jan - Divide and Conquer

#of subproblems at level j = aj

size of subproblems at level j = n/bj

Amount of work done at level j?

cnd(a/bd)j

Total work?

cnd

logb nX

j=0

(a/bd)j

Page 30: 07- 22 Jan - Divide and Conquer

a = rate of proliferation

bd = rate of work shrinkage per subproblem

Page 31: 07- 22 Jan - Divide and Conquer

Amount of work done at level j?

cnd(a/bd)j

Total work?

cnd

logb nX

j=0

(a/bd)j

a = rate of proliferation

bd = rate of work shrinkage per subproblem

Page 32: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a = bd

Page 33: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a = bdT (n) = O(nd

log n)

Page 34: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a < bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)

Page 35: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a < bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)

1

(1� r)

When r < 1

Page 36: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a < bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)

T (n) = O(nd)

1

(1� r)

When r < 1

Page 37: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a > bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)

Page 38: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a > bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)When r > 1

rk✓1 +

1

(r � 1)

Page 39: 07- 22 Jan - Divide and Conquer

cnd

logb nX

j=0

(a/bd)j

if a > bd

1 + r + r2 + r3 + · · ·+ rk =rk+1 � 1

r � 1

(r 6= 1)When r > 1

rk✓1 +

1

(r � 1)

T (n) = O(alogb n)

Page 40: 07- 22 Jan - Divide and Conquer

T (n) aT (n/b) +O(nd)

T (n) = O(ndlog n)

T (n) = O(nd)

T (n) = O(nlogb a)

if a = bd

if a < bd

if a > bd