Professional Documents
Culture Documents
L04-D&C I
L04-D&C I
gr/courses/INF161/
2016 - I.
Divide and Conquer (D&C)
AN
:
-
2
- 2016 - . - 04 - DIVIDE & CONQUER I
Binary Search
binS (A[i..j], k)
: [1..n],
k
: H k ,
nil
if i>j: return nil
m= (i j ) / 2 O(1)
if k=A[m]: return m
If k>A[m]: return binS(A[m+1..j],k) T(n/2)
else: return binS(A[i, m-1],k)
: binS(A[1..n],k)
1, if n 1
T ( n) (n) O(log n)
T (n / 2) O(1), if n 1
- 2016 - . - 04 - DIVIDE & CONQUER I 3
Integer Multiplication
2 n bits
**********
x **********
**********
**********
**********
**********
**********
********** (n2 )
**********
**********
*********
*********
*******************
y= c d = c 2n/2 + d
IntMult1(x,y)
: x, y n bits
: xy
if n=1: return xy
a= n/2 leftmost bits of x, b= n/2 rightmost bits of x
c= n/2 leftmost bits of y, d= n/2 rightmost bits of y
P1 = IntMult1(a,c), P2 = IntMult1(a,d)
P3 = IntMult1(b,c), P4 = IntMult1(b,d)
return P1 2n + (P2 + P3)2n/2 + P4
y= c d = c 2n/2 + d
3 n/2 bits (n/2)
2 2 O(n)
6 n bits O(n)
1, if n 1
T ( n) (n) O(n log 2 3 ) O(n1.59 )
3T (n / 2) O(n), if n 1
T
- 2016 - . - 04 - DIVIDE & CONQUER I 8
Matrix Multiplication
: X Y: n x n
Z=X Y
n
Z ij X ik Ykj Complexity: O(n3)
k 1
9
- 2016 - . - 04 - DIVIDE & CONQUER I
Matrix Multiplication
Divide and Conquer
1, if n 1 3
T ( n) 2
( n ) O ( n )
8T (n / 2) O(n ), if n 1
- 2016 - . - 04 - DIVIDE & CONQUER I 10
Matrix Multiplication: Strassens Algorithm
7 n/2 x n/2
18 n/2 x n/2
[Strassen, 1969]
11
- 2016 - . - 04 - DIVIDE & CONQUER I
Matrix Multiplication: Strassens Algorithm
7 n/2 x n/2 7 (n/2)
18 n/2 x n/2 O(n2)
1, if n 1 log 2 7 2.808
T ( n) 2
( n ) O ( n ) O ( n )
7T (n / 2) O (n ), if n 1
? ! O(n2.376) !
For n=100
n3 is 1,000,000
n2.808 is 413,048
n2.376 is 56,494
12
- 2016 - . - 04 - DIVIDE & CONQUER I
Master* Theorem
n d
If T (n) aT ( b ) n , a 0, b 1, d 0,
and n b m (m log b n),
then :
O(n d ), if d log b a d
(b a)
T (n) O(n d log b n), if d log b a (b d a)
O(n logb a ), if d log a d
(b a)
b
d log b a
Compare n ~ n
- 2016 - . - 04 - DIVIDE & CONQUER I 13
Proof of Master* Theorem
n d
T (n) aT ( ) n b
2 n n d d n b m (m log b n)
a T ( ) a( ) n
b2 b
n b m (m log b n)
15
- 2016 - . - 04 - DIVIDE & CONQUER I
Proof of Master* Theorem
m
d k
T ( n) n (
k 0
a
bd
)
a
Geometric series with ratio
d
b
Three cases:
a a a
i) d 1 (ii ) d 1 (iii ) d 1
b b b
16
- 2016 - . - 04 - DIVIDE & CONQUER I
Proof of Master* Theorem
a
Case i: d 1 ( d log b a )
b
m
d 1 k d d k d
T ( n) n ( ) n ( ) n
a
bd a
O ( n ) a
bd
k 0 k 0 1 bd
Case ii:
a
d
1 (d log b a ) m log b n
b
m log b n
d k d d d
T ( n) n (
k 0
a
bd
) n 1 n
k 0
log b n O(n log b n)
m m 1
d k d x 1 d m
T ( n) n (
k 0
a
bd
) n
x 1
O(n x )
d a m n d m
a n d m
a
O n d O dm O d
b b n
m log b n log b a
O(a ) O(a ) O(n )
T(n) = T(2n/3) + 1
a=1, b=3/2, logb a = log3/2 1=0
d=0 = logb a
case (ii) applies: T ( n ) O n 0
log 3 / 2 n O(logn)
T(n) = 5T(n/25) + n2
a=5, b=25, logb a = log255=0.5
d=2 > 0.5 = logb a
d 2
case (i) applies: T (n) O n O(n )
- 2016 - . - 04 - DIVIDE & CONQUER I 19
Master Theorem
If T(n) = aT(n/b) + f(n) then
n log b a
, if f ( n ) O n
log b a
a 1
b 1
T (n) n logb a log n , if f (n) n logb a
0
c 1
f (n) ,
if f ( n) n logb a
and af (n / b) cf (n)
for large n
- 2016 - . - 04 - DIVIDE & CONQUER I 20