S u mmi n g u p
B a s i c d a t a s t r u c t u r e s A r r a y s : g o o d f o r r a n d o m a c c e s s ● d y n a m i c a r r a y s : r e s i z e a b l e L i n k e d l i s t s : g o o d f o r s e q u e n t i a l a c c e s s ● m a n y v a r i a n t s – d o u b l y l i n k e d , e t c . T r e e s : g o o d f o r h i e r a r c h i c a l d a t a ● s p e c i a l c a s e : b i n a r y t r e e s G r a p h s : g o o d f o r c y c l i c d a t a ● m a n y v a r i a n t s : w e i g h t e d , d i r e c t e d , e t c .
S o m e d a t a s t r u c t u r e s a r e s p e c i a l I n m a c h i n e l a n g u a g e , t h e m e m o r y i s a n a r r a y o f i n t e g e r s ● T o t h e p r o c e s s o r , e v e r y t h i n g i s a n a r r a y I n i m p e r a t i v e l a n g u a g e s , t h e m e m o r y i s a n o b j e c t w i t h r e f e r e n c e s b e i n g e d g e s g r a p h ● T o a n i m p e r a t i v e l a n g u a g e , e v e r y t h i n g i s a g r a p h ( o r a n a r r a y ) I n f u n c t i o n a l l a n g u a g e s , a n y a l g e b r a i c d a t a t y p e i s a k i n d o f t r e e ( c f . L i s p S - e x p r e s s i o n s ) ● T o a f u n c t i o n a l l a n g u a g e , e v e r y t h i n g i s a t r e e ( o r a f u n c t i o n ) E v e r y t h i n g e l s e i s b u i l t f r o m w h a t e v e r p r i m i t i v e d a t a s t r u c t u r e s y o u r p r o g r a m m i n g l a n g u a g e s u p p o r t s
B a s i c A D T s Ma p s : m a i n t a i n a k e y / v a l u e r e l a t i o n s h i p ● A n a r r a y i s a s o r t o f m a p w h e r e t h e k e y s a r e a r r a y i n d i c e s S e t s : l i k e a m a p b u t w i t h o n l y k e y s , n o v a l u e s Q u e u e : a d d t o o n e e n d , r e m o v e f r o m t h e o t h e r S t a c k : a d d a n d r e m o v e f r o m t h e s a m e e n d D e q u e : a d d a n d r e m o v e f r o m e i t h e r e n d P r i o r i t y q u e u e : a d d , r e m o v e m i n i m u m
I m p l e m e n t i n g m a p s a n d s e t s A b i n a r y s e a r c h t r e e ● G o o d p e r f o r m a n c e i f y o u c a n k e e p i t b a l a n c e d ● H a s g o o d r a n d o m a n d s e q u e n t i a l a c c e s s : t h e b e s t o f b o t h w o r l d s A h a s h t a b l e ● V e r y f a s t i f y o u c h o o s e a g o o d h a s h f u n c t i o n A l i n k e d l i s t ? ? ● . . . p r e t t y b a d ● b u t u s e d i n t h e “ c h a i n s ” i n a h a s h t a b l e
I m p l e m e n t i n g q u e u e s , s t a c k s , p r i o r i t y q u e u e s Q u e u e s : ● a l i n k e d l i s t ● a c i r c u l a r a r r a y ● a p a i r o f l i s t s ( i n a f u n c t i o n a l l a n g u a g e ) S t a c k s : ● a l i n k e d l i s t ● a d y n a m i c a r r a y P r i o r i t y q u e u e s : ● a b i n a r y h e a p ● a l e f t i s t h e a p
W h a t w e h a v e s t u d i e d Tie d a t a s t r u c t u r e s a n d A D T s a b o v e + a l g o r i t h m s t h a t w o r k o n t h e s e d a t a s t r u c t u r e s ( s o r t i n g , D i j k s t r a ' s , e t c . ) + c o m p l e x i t y
D a t a s t r u c t u r e d e s i g n H o w t o d e s i g n y o u r o w n d a t a s t r u c t u r e s ? ● Tii s t a k e s p r a c t i c e ! S t u d y o t h e r p e o p l e ' s i d e a s : ● h t t p : / / e n . w i k i p e d i a . o r g / w i k i / L i s t _ o f _ d a t a _ s t r u c t u r e s ● B o o k : P r o g r a m m i n g P e a r l s ● B o o k : P u r e l y F u n c t i o n a l D a t a S t r u c t u r e s ● S t u d y y o u r f a v o u r i t e l a n g u a g e ' s s t a n d a r d l i b r a r y
D a t a s t r u c t u r e d e s i g n F i r s t , i d e n t i f y w h a t o p e r a t i o n s t h e d a t a s t r u c t u r e m u s t s u p p o r t ● O f t e n t h e r e ' s a n e x i s t i n g d a t a s t r u c t u r e y o u c a n u s e ● O r p e r h a p s y o u c a n a d a p t a n e x i s t i n g o n e ? Tie n d e c i d e o n : ● A r e p r e s e n t a t i o n ( t r e e , a r r a y , e t c . ) ● A n i n v a r i a n t Tie s e h o p e f u l l y d r i v e t h e r e s t o f t h e d e s i g n !
D a t a s t r u c t u r e d e s i g n F i n a l l y , r e m e m b e r t h e F i r s t a n d S e c o n d R u l e s o f P r o g r a m O p t i m i s a t i o n : 1 . D o n ’ t d o i t . 2 . ( F o r e x p e r t s o n l y ! ) : D o n ’ t d o i t y e t . K e e p t h i n g s s i m p l e ! ● N o p o i n t o p t i m i s i n g y o u r a l g o r i t h m s t o h a v e O ( l o g n ) c o m p l e x i t y i f i t t u r n s o u t n ≤ 1 0 ● P y o u r p r o g r a m t o fj n d t h e b o t t l e n e c k s a r e r o fj l e ● U s e b i g - O c o m p l e x i t y t o g e t a h a n d l e o n p e r f o r m a n c e b e f o r e y o u s t a r t i m p l e m e n t i n g i t
W h a t w e h a v e n ' t h a d t i m e f o r
A m o r t i s e d d a t a s t r u c t u r e s W e b r i e fm y m e n t i o n e d a m o r t i s e d c o m p l e x i t y : ● e . g . d y n a m i c a r r a y s ● a d d i n g a n e l e m e n t n o r m a l l y t a k e s O ( 1 ) t i m e ● b u t o c c a s i o n a l l y i t c a n t a k e O ( n ) t i m e ● b u t t h e O ( n ) c a s e h a p p e n s r a r e l y e n o u g h t h a t o n a d d i n g a n e l e m e n t t a k e s O ( 1 ) t i m e a v e r a g e ● a n d s o w e s a y t h a t i t t a k e s a m o r t i s e d O ( 1 ) t i m e
A m o r t i s e d c o m p l e x i t y S p l a y t r e e s a r e a b a l a n c e d B S T h a v i n g a m o r t i s e d O ( l o g n ) c o m p l e x i t y ● Tie t r e e s o m e t i m e s b e c o m e s u n b a l a n c e d b u t t h i s h a p p e n s r a r e l y e n o u g h t h a t t h e a v e r a g e t i m e p e r o p e r a t i o n i s s t i l l O ( l o g n ) S k e w h e a p s a r e a p r i o r i t y q u e u e h a v i n g a m o r t i s e d O ( l o g n ) m e r g e ● S i m i l a r t o l e f t i s t h e a p s b u t s i m p l e r , a n d f a s t e r i n p r a c t i c e ! S e e b o o k c h a p t e r s 2 1 ( s p l a y t r e e s ) a n d 2 2 ( s k e w h e a p s )
Recommend
More recommend