You are on page 1of 18

N i dung

1 2 3 4 5

Cc c u trc d" li%u c( b)n C u trc cy Tree Structure Cy nh+ phn tm ki-m Binary Search Tree Cc d*ng cy nh+ phn tm ki-m cn b.ng B)ng b/m Hash Table
168/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Autumn 2009

B$ng b'm Hash Table

Gi)i thi,u Direct-address table B$ng b'm .0ng 2


(xung 2 t)

Hm b'm Cc ph3*ng php x4 l 20ng 2


Autumn 2009 169/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Gi)i thi,u [1/2]

Bi ton:
Cho m t t$p cc ph&n t( (key). C&n t+ ch-c l)u tr/ v tm ki1m sao cho hi4u qu5 (chi ph th6p) ?

Autumn 2009

170/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Gi)i thi,u [2/2]

Cc ph3*ng php c5:


Danh sch lin k1t, cy ch7 y1u 9):c t<o v truy xu6t b=ng cch so snh l&n l):t cc ph&n t( th?i gian truy xu6t khng nhanh v phA thu c kch th)Bc c7a c6u trc

Cy b7c 3 chi ph tm ki8m O(log3N)


Autumn 2009 171/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Direct-address table [1/3]

Gi$ s4 c m

t t7p kho U:

Kch th)Bc khng qu lBn Cc gi trC kho phn bi4t VD. U = {0, 1, 2, , 9}

M hnh minh h9a dng direct-address table T[m] 2: l3u tr; cc kho trong t7p U
Autumn 2009 172/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Direct-address table [2/3]

Direct-address table:
M t m5ng T[m] (T[0],,T[m-1]) 9E ch-a cc kho trong t$p U |T| = |U| MFi vC tr T[k] (slot) sH ch-a:
Kha k, hay NULL n1u kho k khng c trong t$p h:p

L3u :
U (Universe of keys): t$p cc gi trC kha K (Actual keys): t$p cc kho thIc sI 9):c dng

Chi ph thao tc: O(1)


Autumn 2009 173/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Direct-address table [3/3]

Cc gi)i h<n c=a direct-address table:


Kch th)Bc t$p U qu lBn khng thE t<o b5ng T vBi sJ slot t);ng -ng vBi |U| Kch th)Bc c7a t$p K qu nhK so vBi U r6t nhiLu slot bC bK trJng

Autumn 2009

174/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

B$ng b'm [1/5]

Khi t7p kha K nh> h*n nhi?u (VD) so v)i t7p U Do 2, khng th: p d0ng nh x< trDc ti8p
T[k] k 23Ec n;a
m = (|K|)

ta ch@ dng m$ng T[m] v)i kch th3)c vBa 2= cho t7p K

Thay v nh x< trDc ti8p T[k] k, ta dng hm b'm h 2: nh x< T[h(k)] k


Autumn 2009 175/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

B$ng b'm [2/5]

Hm b

m h: dng 2: nh x< cc kho c=a t7p U vo nh;ng slot c=a b#ng b m T[0..m-1]

h(k): gi trF b'm (hash value) c=a kho k

Autumn 2009

176/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

B$ng b'm [3/5]

.Fnh nghHa b$ng b'm:


B5ng bMm l m t c6u trc d/ li4u, s( dAng m t hm b m (hash function) 9E nh x< kho (key) vBi m t 9Ca chN l)u tr/ Hm b m c tc dAng bi1n 9+i kho thnh ch# s& *+a ch# (index) t./ng 0ng v2i kho

B$ng b'm l cIu trc rIt ph hEp 2: ci


2Jt cho bi ton tB 2i:n (dictionary)
Dictionary: d<ng bi ton chN ch7 y1u s( dAng thao tc chn thm (Insert) v tm ki3m (Search)
Autumn 2009 177/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

B$ng b'm [4/5]

Hm b'm bi 8n 2Ki kho thnh 2Fa ch@ index


Autumn 2009 178/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

B$ng b'm [5/5]

Cc tnh chIt:
C6u trc l)u tr/ dng trong Hash table th)?ng l danh sch 9Pc: m5ng hay file Thao tc c; b5n 9):c cung c6p bQi Hash table l tm ki3m (lookup) Chi ph trung bnh l O(1) Chi ph tm ki1m x6u nh6t (t gPp) c thE l O(n)

Autumn 2009

179/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

.0ng 2 (collision) [1/2]

t cch l t3Lng, hm b'm sM nh x< mNi kho vo m t slot ring bi,t c=a b$ng T

Tuy nhin, 2i?u ny trong thDc t8 kh 2<t


23Ec, v:
m << |U| Cc kho l khng bi1t tr)Bc

Autumn 2009

180/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

.0ng 2 (collision) [2/2]

HOu h8t cIu trc b$ng b'm trong thDc t8 2Ou

chIp nh7n m%t t) l+ nh- cc kho ./ng .% v xy dDng ph3*ng n gi$i quy8t sD 20ng 2 2

Minh h9a sD 20ng 2 v ph3*ng n gi$i quy8t chaining (mc xch)


Autumn 2009 181/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [1/6]

Thnh phOn quan tr9ng nhIt c=a b$ng b'm l


hm b'm

Nhi,m v0 c=a hm b'm l bi8n 2Ki kha k c=a


phOn t4 thnh 2Fa ch@ trong b$ng b'm.
Kha c thE l d<ng sJ hay d<ng chuFi

Ph3*ng n x4 l chnh c=a hm b'm l xem cc


kho nh3 l cc sP nguyn
Kha l chuFi key x( l vBi 3 thnh ph&n 107 (k), 101 (e), 121 (y)

Autumn 2009

182/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [2/6]

t hm b'm tPt l y8u tP tin quy8t 2: t<o ra b$ng b'm hi,u qu$

Cc yu cOu c* b$n 2Pi v)i hm b'm:


Tnh ton nhanh, dR dng Cc kha 9):c phn bJ 9Lu trong b5ng t x5y ra 9Ang 9

Autumn 2009

183/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [3/6]

Cc ph3*ng php xy dDng hm b'm:


Ph);ng php chia Ph);ng php nhn

Autumn 2009

184/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [4/6]

Xy dDng hm b'm ph3*ng php chia:


h(k) = k mod m VD. h(k) = k mod 11

Ch9n m nh3 th8 no ?


m khng 9):c l lSy thTa c7a 2. N1u m = 2p th h(k) = k mod m chnh l p bit th6p c7a k m khng nn l lSy thTa c7a 10, v khi 9, hash value sH khng s( dAng t6t c5 ch/ sJ thnh ph&n c7a k Nn chUn m l sJ nguyn tJ nh)ng khng qu g&n vBi gi trC 2n
Autumn 2009 185/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [5/6]

Xy dDng hm b'm ph3*ng php nhn:


h(k) = m * (k*A mod 1) Trong 9: 0<A<1 (k*A mod 1) l ph&n th$p phn c7a k*A x l floor(x) V ph);ng php ny, gi trC m khng quan trUng, ta th)?ng chUn m = 2p Knuth 9 phn tch v 9)a ra m t gi trC A tJi )u:

Autumn 2009

186/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Hm b'm [6/6]

V d0 ph3*ng php nhn:


Gi5 s( ta c k = 123456; m = 10000; A nh) trn

Autumn 2009

187/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

10

Cc ph3*ng php x4 l 20ng 2

Ph3*ng php nPi k8t (Separate chaining) Ph3*ng php 2Fa ch@ mL (Open
addressing)

Autumn 2009

188/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Separate chaining [1/5]

.3a tIt c$ cc kha 20ng 2


thnh m t linked-list

vo m t slot, l3u

M hnh cch x4 l 20ng 2 bQng ph3*ng php chaining


Autumn 2009 189/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

11

Separate chaining [2/5]

Ph3*ng php chaining b$ng T ch@ l3u con tr> c=a linked-list

Autumn 2009

190/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Separate chaining [3/5]

Ph3*ng php chaining b$ng T l3u phOn t4 2Ou tin + con tr> c=a linked-list
Autumn 2009 191/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

12

Separate chaining [4/5]

Cc thao tc c* b$n trn hash table:

Autumn 2009

192/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Separate chaining [5/5]

Chi ph cc thao tc:


Insert: chi ph x6u nh6t l O(1) Search v Delete: chi ph trung bnh l (1+X) X = n/m (load factor: sJ ph&n t( trung bnh l)u tr/ trong m t slot)

Cc cIu trc d; li,u khc:


Ngoi linked-list, ta c thE p dAng cc c6u trc khc hi4u qu5 h;n (khi tm ki1m) nh): cy cn b=ng (AVL, Red-Black, AA), hay m5ng c6p pht 9 ng,

Autumn 2009

193/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

13

Open addressing [1/4]

Cc phOn t4 ch@ l3u trong b$ng T, khng dng


thm b nh) mL r ng (nh3 chaining) Thu7t ton chung:

Autumn 2009

194/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Open addressing [2/4]

Ph3*ng php Open addressing Linear probing


Autumn 2009 195/203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

14

Open addressing [3/4]

Thu7t ton chung:

Autumn 2009

196/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Open addressing [4/4]

Tn g9i open addressing mang nghHa l 2Fa

ch@ (address) c=a phOn t4 khng ph$i ch@ 23Ec xc 2Fnh bQng duy nhIt hash value c=a phOn t4 2, m cn c sD can thi,p c=a php d tm (probing)

C 3 ph3*ng php d tm phK bi8n:


Ph);ng php d tu&n tI (Linear probing) Ph);ng php d b$c 2 (Quadratic probing) Ph);ng php bMm kp (Double hashing)

Autumn 2009

197/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

15

Linear probing

M t$:
h(k, i) = (h(k) + i) mod m
i: th- tI c7a l&n th( (i = 0, 1, 2,) h(k): hm bMm m: sJ slot c7a b5ng bMm h(k, i): 9Ca chN c7a kha k t<i l&n th( th- i

Autumn 2009

198/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Quadratic probing

M t$:
h(k, i) = (h(k) + i2) mod m
i: th- tI c7a l&n th( (i = 0,1,2,) h(k): hm bMm m: sJ slot c7a b5ng bMm h(k, i): 9Ca chN c7a kha k t<i l&n th( th- i

Autumn 2009

199/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

16

Double hashing

M t$:
h(k, i) = (h(k) + i*h(k)) mod m
i: th- tI c7a l&n th( (i = 0,1,2,) h(k) v h(k) : hm bMm m: sJ slot c7a b5ng bMm h(k, i): 9Ca chN c7a kha k t<i l&n th( th- i

Autumn 2009

200/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Bi t7p

Hy so snh cc 3u, khuy8t 2i:m c=a

ph3*ng php chaining v open addressing

Autumn 2009

201/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

17

V d0

Bi t7p:
C 1 b5ng bMm T, chiLu di m = 11; hm bMm h(k) = k mod m Cho m t dy ph&n t( theo th- tI nh) sau: 10, 22, 31, 4, 15, 28, 17, 88, 59 Hy trnh by k1t qu5 khi thm cc ph&n t( trn vo b5ng bMm, vBi l&n l):t tTng ph);ng php x( l 9Ang 9 :
NJi k1t (Chaining) D tu&n tI (Linear probing) D b$c 2 (Quadratic probing) BMm kp (Double hashing), vBi h(k) = 1 + (k mod (m 1))

Autumn 2009

202/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

Q&A

QL?

AJ

Autumn 2009

203/203

(C) Nguyen Tri Tuan - DH.KHTN Tp.HCM

18

You might also like