C
- mp
C o mp l e x i t y ( W e i s s c h a p t e r 2 - - PowerPoint PPT Presentation
C o mp l e x i t y ( W e i s s c h a p t e r 2 ) C o m p l e x i t y Tii s l e c t u r e i s a l l a b o u t h o w t o d e s c r i b e t h e p e r f o r m a n c e o f
Tii s l e c t u r e i s a l l a b
t h
t
e s c r i b e t h e p e r f
m a n c e
a n a l g
i t h m G i v e n a n a l g
i t h m , a n d ( e . g . ) t h e s i z e
t h e i n p u t , c a n w e c
e u p w i t h a f
m u l a f
t h e r u n t i m e
t h e a l g
i t h m ?
r
l e m : r u n t i m e m a y v a r y b a s e d
e x a c t i n p u t – s
u t i
: l
a t w
s t
a s e r u n t i m e f
a g i v e n s i z e
r
l e m : c a l c u l a t i n g a n e x a c t r u n t i m e r e q u i r e s d e e p k n
l e d g e
t h e m a c h i n e t h e p r
r a m w i l l b e r u n
– s
u t i
: c
n t n u m b e r
s t e p s i n s t e a d
r
l e m : t h e f
m u l a i s u s u a l l y v e r y l a r g e a n d a n n
i n g t
a l c u l a t e – s
u t i
: t h e r e s t
t h i s l e c t u r e !
I d e a : a s y m p t
i c c
p l e x i t y – w h a t i s t h e p e r f
m a n c e l i k e w h e n n i s l a r g e ?
≈ n
2
/ 2 2 n ≈ n
2
/ 2 O b s e r v a t i
1 : c
s t a n t f a c t
s d
’ t u s u a l l y m a t t e r !
n ( n
) / 2 = n
2
/ 2
/ 2 n
2
/ 2 O b s e r v a t i
2 :
l y l e a d i n g t e r m s a r e s i g n i fj c a n t
n l y l e a d i n g t e r m s a r e s i g n i fj c a n t
s t a n t f a c t
s d
’ t ( u s u a l l y ) m a t t e r
fj r s t
e : n ( n
) / 2 i s O ( n
2
) ( “ b i g
n
q u a r e d ” )
s e c
d
e : n ( n
) / 2 i s O ( n
2
) t
t h i r d
e : 2 n i s O ( n )
( … ) m e a n s r
g h l y : “ p r
t i
a l t
, w h e n n i s l a r g e e n
g h ”
O ( n
2
) O ( n ) O ( n
2
) B i g
n
a t i
e x p l a i n s t h e d i fg e r e n c e i n p e r f
m a n c e !
f t h e n u m b e r
s t e p s i s p r
t i
a l t
2
h e n t h e a m
n t
t i m e i s p r
t i
a l t
2
2
2
n t h e s l
fj l e
y i n g p r
r a m , i t s t a r t e d q u i c k l y b u t g r a d u a l l y g
s l
e r a s i t r e a d t h e fj l e
n t h e f a s t fj l e
y i n g p r
r a m , i t c a r r i e d
a t a c
s t a n t r a t e
I m a g i n e t h a t w e d
b l e t h e i n p u t s i z e f r
n t
n . I f a n a l g
i t h m i s . . .
( 1 ) , t h e n i t t a k e s t h e s a m e t i m e a s b e f
e
( l
n ) , t h e n i t t a k e s a c
s t a n t a m
n t m
e
( n ) , t h e n i t t a k e s t w i c e a s l
g
( n l
n ) , t h e n i t t a k e s t w i c e a s l
g p l u s a l i t t l e b i t m
e
( n
2
) , t h e n i t t a k e s f
r t i m e s a s l
g
– Tii
s e x p l a i n s w h y t h e s l
fj l e r e a d i n g p r
r a m s s t a r t e d q u i c k l y , b u t t h e n g r a d u a l l y s l
e d d
n a s t h e y c
t i n u e d r e a d i n g t h e fj l e . H
?
I f a n a l g
i t h m i s O ( 2
n
) , t h e n a d d i n g
e e l e m e n t m a k e s i t t a k e t w i c e a s l
g B i g O t e l l s y
h
t h e p e r f
m a n c e
a n a l g
i t h m s c a l e s w i t h t h e i n p u t s i z e
y p i c a l l y a f u n c t i
T ( n ) g i v i n g t h e n u m b e r
s t e p s t a k e n b y a n a l g
i t h m
i n p u t
s i z e n
u t c a n a l s
e u s e d t
e a s u r e s p a c e c
p l e x i t y ( m e m
y u s a g e )
a n y t h i n g e l s e
( n ) = n ( n
) / 2
( n ) i s O ( n
2
)
n g e n e r a l , T ( n ) i s O ( f ( n ) ) , f
s
e f u n c t i
f
e
t e n a b u s e n
a t i
a n d w r i t e “ T ( n ) = O ( f ( n ) ) ”
. g . T ( n ) i s O ( n
2
)
. e . T ( n ) = k × f ( n ) f
s
e k
. g . T ( n ) = n
2
/ 2 i s O ( n
2
) ( l e t k = ½ )
e w a n t T ( n ) = n ( n
) / 2 t
e O ( n
2
)
e w a n t T ( n ) = n
2
+ 1 t
e O ( n
2
)
I n s t e a d , w e s a y t h a t T ( n ) i s O ( f ( n ) ) i f :
( n ) ≤ k × f ( n ) f
s
e k , i . e . T ( n ) i s p r
t i
a l t
( n )
l
e r !
s
l y h a s t
d f
b i g e n
g h n : i . e . f
a l l n a b
e s
e t h r e s h
d n
I f y
d r a w t h e g r a p h s
T ( n ) a n d k × f ( n ) , a t s
e p
n t t h e g r a p h
k × f ( n ) m u s t p e r m a n e n t l y
e r t a k e t h e g r a p h
T ( n )
n
h e r w
d s , T ( n ) g r
s m
e s l
l y t h a n k × f ( n )
N
e t h a t b i g
n
a t i
i s a l l
e d t
e r e s t i m a t e t h e c
p l e x i t y !
× f ( n ) i s a n u p p e r b
n d
T ( n )
2
2
n
2
+ 2 n + 3 ≤ 2 n
2
f
n ≥ 3
2
3
2
2
3
n
O ( 1 ) + O ( l
n ) = O ( l
n ) O ( l
n ) + O ( n
k
) = O ( n
k
) ( i f k ≥ ) O ( n
j
) + O ( n
k
) = O ( n
k
) , i f j ≤ k O ( n
k
) + O ( 2
n
) = O ( 2
n
)
2
2
U s e h i e r a r c h y : n
2
+ 2 n + 3 = O ( n
2
) + O ( n ) + O ( 1 ) = O ( n
2
)
2
3
4
n
2
2
2
3
3
3
4
n
4
n
n
. g . , O ( n
2
) × O ( l
n ) = O ( n
2
l
n )
× O ( f ( n ) ) = O ( f ( n ) ) , i f k i s c
s t a n t
. g . 2 × O ( n ) = O ( n )
2
n
1
2
n
1
2
n
n
3
n
3
l
1
n = l
n / l
1 i . e . l
n t i m e s a c
s t a n t f a c t
Tii s i s c a l l e d t h e u n i f
m c
t m
e l , b e c a u s e a l l p r i m i t i v e
e r a t i
s a r e a s s i g n e d t h e s a m e c
t
boolean member(Object[] array, Object x) { for (int i = 0; i < array.length; i++) if (array[i].equals(x)) return true; return false; }
boolean member(Object[] array, Object x) { for (int i = 0; i < array.length; i++) if (array[i].equals(x)) return true; return false; } L
r u n s O ( n ) t i m e s L
b
y t a k e s O ( 1 ) t i m e O ( 1 ) × O ( n ) = O ( n )
L
b
y : O ( 1 ) I n n e r l
r u n s n t i m e s : O ( n ) × O ( 1 ) = O ( n ) O u t e r l
r u n s n t i m e s : O ( n ) × O ( n ) = O ( n
2
)
L
b
y : O ( 1 ) I n n e r l
r u n s n / 2 = O ( n ) t i m e s : O ( n ) × O ( 1 ) = O ( n ) O u t e r l
r u n s n
2
t i m e s : O ( n
2
) × O ( n ) = O ( n
3
)
B
y i s O ( 1 ) I n n e r l
i s i × O ( 1 ) = O ( i ) ? ? B u t i t s h
l d b e i n t e r m s
n ?
B
y i s O ( 1 ) i < n , s
i s O ( n ) S
r u n s O ( n ) t i m e s , c
p l e x i t y : O ( n ) × O ( 1 ) = O ( n )
B
y i s O ( 1 ) i < n , s
i s O ( n ) S
r u n s O ( n ) t i m e s , c
p l e x i t y : O ( n ) × O ( 1 ) = O ( n ) O u t e r l
r u n s n t i m e s : O ( n ) × O ( n ) = O ( n
2
)
i < n , j < n , k < n , s
l l t h r e e l
s r u n O ( n ) t i m e s T
a l r u n t i m e i s O ( n ) × O ( n ) × O ( n ) × O ( 1 ) = O ( n
3
)
void something(Object[] a) { for(int i = 0; i < a.length; i++) for (int j = 1; j < a.length; j *= 2) … // something taking O(1) time }
void something(Object[] a) { for(int i = 0; i < a.length; i++) for (int j = 1; j < a.length; j *= 2) … // something taking O(1) time }
I n n e r l
i s O ( l
n ) O u t e r l
i s O ( n l
n )
long squareRoot(long n) { long i = 0; long j = n; while (i < j) { long k = (i + j) / 2; if (k*k <= n) i = k; else j = k-1; } return i; }
E a c h i t e r a t i
t a k e s O ( 1 ) t i m e . . . b u t h
m a n y t i m e s d
s t h e l
r u n ?
long squareRoot(long n) { long i = 0; long j = n; while (i < j) { long k = (i + j) / 2; if (k*k <= n) i = k; else j = k-1; } return i; }
E a c h i t e r a t i
t a k e s O ( 1 ) t i m e . . . a n d h a l v e s j-i, s
( l
n ) i t e r a t i
s
u m b e r
i t e r a t i
s t i m e s c
p l e x i t y
b
y
( i n t i = ; i < n ; i + + ) … : n i t e r a t i
s
( i n t i = 1 ; i ≤ n ; i * = 2 ) : O ( l
n ) i t e r a t i
s
i l e l
s : h a v e t
k
t n u m b e r
i t e r a t i
s
. g . O ( i ) , w h e r e ≤ i < n
c a n s a f e l y r
n d i u p t
( n ) !
I n n e r l
O ( n ) R e s t
l
b
y O ( 1 ) , s
b
y O ( 1 ) + O ( n ) = O ( n ) O u t e r l
: n i t e r a t i
s , O ( n ) b
y , s
( n
2
)
O u t e r l
: l
n i t e r a t i
s , O ( n ) b
y , s
( n l
n ) ? ?
H e r e w e “ r
n d u p ” O ( i ) t
( n ) . Tii s c a u s e s a n
e r e s t i m a t e !
n
e r e s t i m a t e , b u t n
a s e v e r e
e ( I f n = 1 t h e n n l
n = 2 n )
s c a n h a p p e n b u t i s n
m a l l y n
s e v e r e
e t t h e r i g h t a n s w e r : d
h e m a t h s
f a l l b
n d s a r e n ,
n
2
,
a n
h e r l
v a r i a b l e ,
a l
v a r i a b l e s q u a r e d ,
…
i n n e r l
' s c
p l e x i t y i s O ( i )
n t h e
t e r l
, i r a n g e s
e r 1 , 2 , 4 , 8 , … , 2
a
1 + 2 + 4 + 8 + … + 2
a
= 2 × 2
a
– 1 < 2 × 2
a
a
2
2
4
k <= j < n*n s
h i s l
i s O ( n
2
) Tie
t e r l
r u n s O ( l
n ) t i m e s Tii s l
i s O ( n ) Tie j
r u n s n
2
t i m e s
R e c a l l t h a t b i g
a l l
s u s t
e r e s t i m a t e t h e g r
t h r a t e
a f u n c t i
:
n
2
+ 3 n + 1 i s O ( n
2
) , b u t a l s
( n
3
) B i g
h a s a c
s i n , b i g
“ b i g
e g a ” ) , w h i c h a l l
s u s Ω t
n d e r e s t i m a t e t h e g r
t h r a t e :
n
2
+ 3 n + 1 i s ( n Ω
2
) , b u t a l s
n ) Ω F
m a l l y w e j u s t r e p l a c e a ≤ w i t h a ≥ i n t h e d e fj n i t i
b i g
:
( n ) i s O ( n
2
) i f T ( n ) ≤ k n
2
f
s
e k , f
b i g e n
g h n
( n ) i s ( n Ω
2
) i f T ( n ) ≥ k n
2
f
s
e k , f
b i g e n
g h n
2
2
h e r t w
r e g e n e r a l l y h a r d e r t
a l c u l a t e a c c u r a t e l y
i g
s m
t l y u s e f u l f
d e fj n i n g b i g
Θ
i g
g i v e s y
a n u p p e r b
n d , w h i c h c a n t e l l y
t h a t a n a l g
i t h m i s f a s t e n
g h
H
l
g d
s i t t a k e t
d d
e e l e m e n t t
d y n a m i c a r r a y ?
i m p l e a n s w e r : O ( n )
u t a d d i n g n e l e m e n t s t
n e m p t y a r r a y t a k e s O ( n ) t i m e , O ( 1 ) “ p e r e l e m e n t ” . S
t ’ s s
e h
O ( 1 ) “
a v e r a g e ” ?
f w e m e a s u r e t h e r u n t i m e
a p r
r a m u s i n g d y n a m i c a r r a y s , i t w i l l l
a s i f e a c h
e r a t i
t
O ( 1 ) t i m e !
T
a p t u r e t h i s , w e s a y t h a t a d d i n g a n e l e m e n t t
d y n a m i c a r r a y h a s O ( 1 ) a m
t i s e d c
p l e x i t y
n
e r a t i
h a s O ( f ( n ) ) a m
t i s e d c
p l e x i t y i f , f
a n y s e q u e n c e
e r a t i
s , t h e t
a l r u n t i m e i s a s i f e a c h
e r a t i
t
O ( f ( n ) ) t i m e
. g . : O ( l
n ) a m
t i s e d c
p l e x i t y n
e r a t i
s t a k e O ( n l
n ) t i m e →
m
t i s e d c
p l e x i t y c a n
c u r w h e n a n e x p e n s i v e
e r a t i
i s a l w a y s b a l a n c e d
t b y m a n y c h e a p
e s
B e c a r e f u l t
i s t i n g u i s h a m
t i s e d f r
“ n
m a l ” c
p l e x i t y
f y
r p r
r a m h a s r e a l
i m e c
s t r a i n t s , t h e n a d a t a s t r u c t u r e w i t h a m
t i s e d c
p l e x i t y m a y b e t
a l l y u n s u i t a b l e
u t f
m
t a p p l i c a t i
s , i t w
k s j u s t fj n e
t a r i t h m e t i c
e r a t i
s g r
a s O ( l
n ) , w h e r e n i s t h e m a g n i t u d e
t h e n u m b e r
s i s c a l l e d t h e l
a r i t h m i c c
t m
e l
t i s c
m
w h e n i n t e g e r s c a n b e u n b
n d e d s i z e , a n d a l s
n s
e s p e c i a l i s e d a p p l i c a t i
s l i k e c r y p t
r a p h y
A s s u m e t h a t l
b
y t a k e s 1 s t e p
O u t e r l
r u n s n t i m e s E a c h t i m e , i n n e r l
r u n s n t i m e s T
a l : n × n = n
2
L
r u n s t
i n s t e a d
n
+ 1 + 2 + … + n
i=0 n−1
A n s w e r : n ( n
) / 2
O u t e r l
: i g
s f r
t
M i d d l e l
: j g
s f r
t
I n n e r l
: k g
s f r
t
i=0 n−1
j=0 i−1
k=0 j−1
i=0 n−1
j=0 i−1
k=0 j−1
A n s w e r ( I l
e d i t u p ) : n ( n
) ( n
) / 6
A n s w e r : n ( n
) ( n
) / 6
F
e x a m p l e : N
q u i t e t h e s a m e , b u t c l
e ! ( u s u a l l y g i v e s t h e r i g h t c
p l e x i t y ) A b e t t e r a p p r
c h : “ F i n i t e c a l c u l u s : a t u t
i a l f
s
v i n g n a s t y s u m s ”
d a p t s r u l e s
c a l c u l u s t
k w i t h s u m s i n s t e a d
i n t e g r a l s
x=a b
a b
i=0 n
n
2/2
. . y
p r
a b l y d
a r e a b
t a f a c t
1 p e r f
m a n c e i m p r
e m e n t
. . b u t i n p r a c t i c e t h e c
s t a n t f a c t
s d
’ t g e t m u c h h i g h e r t h a n 2 ,
s m a l l p h r a s e l i k e O ( n
2
) t e l l s y
e x a c t l y h
t h e p e r f
m a n c e s c a l e s w h e n t h e i n p u t g e t s b i g
t ' s a l
e a s i e r t
a l c u l a t e b i g
c
p l e x i t y t h a n a p r e c i s e f
m u l a ( l
s
g
r u l e s t
e l p y
)