Professional Documents
Culture Documents
w10 Hashing
w10 Hashing
Ging vin: Hong Th ip Khoa Cng ngh Thng tin H Cng Ngh
KDLTT t in
Trng hp ring ca tp ng khi ta ch quan tm ti tm kim, xen, loi
L tp hp trong mi phn t l mt cp (kha, i tng) C th tm kim theo kha C th c sp hoc khng c sp
Cc php ton
find(k) tr v phn t c kha k. Nu khng tn ti phn t nh vy th tr v NULL. findAll(k) tr v danh sch cc phn t c kha k. insert(k, o) thm phn t (k, o) v tr v phn t ny remove(e) loi b phn t e entries() tr v danh sch tt c cc phn t size() tr v s lng phn t isEmpty() kim tra xem t in rng hay khng
INT2203
Phng php bm
Lu tp d liu trong mng T vi c l SIZE Hm bm: l hm ng vi mi gi tr kho k ca d liu vi mt ch s i (0 <= i <= SIZE-1)
D liu ny s c lu trong T[i] h : K {0,1,,SIZE-1} 0 1 Tnh a ch i Hm bm
Tp cc gi tr kho
SIZE-1
INT2203
Mng T
S va chm
Nu
c k1 k2 th h(k1) h(k2), v vic tnh ch s h(k) ng vi mi kho k ch i hi thi gian hng
INT2203
Hm bm
Hm bm tt
tnh nhanh v d dng m bo t va chm
Mt s hm bm
Kha l s nguyn khng m Phng php chia Phng php nhn Kha l xu k t: i xu thnh s nguyn khng m
INT2203
= 1 0,61803399
INT2203
Kho l xu k t
Trc tin, i cc xu k t thnh cc s nguyn, dng bng m ASCII
Xu k t c th xem nh mt s trong h m c s 128 Sau chuyn sang h m c s 10 V d
NOTE N.1283 + O.1282 + T.128 + E = = 78.1283 + 79.1282 + 84.128 + 69
Nhc im: xu di cho kt qu vt qu kh nng biu din ca my tnh Ci tin: Xu k t thng c to thnh t 26 ch ci v 10 ch s, v mt vi k t khc. Thay 128 bi 37 Tnh s nguyn ng vi xu k t theo lut Horner V d
NOTE 78.373 + 79.372 + 84.37 + 69= = ((78.37 + 79).37 +84).37 +69
INT2203
Cc phng php
Phng php nh a ch m (open addressing/probing) mi khi xy ra va chm, tin hnh thm d tm mt v tr cn trng trong bng v t d liu mi vo Phng php to dy chuyn (separate chaining) to ra mt CTDL lu gi tt c cc d liu c cng v tr i v gn CTDL ny vo v tr trong bng
INT2203
Phng php nh a ch m
Gi s v tr ng vi kho k l i, i=h(k)
T v tr ny chng ta ln lt xem xt cc v tr i0 , i1 , i2 ,, im , Trong i0 = i, im(m=0,1,2,) l v tr thm d ln th m. Dy cc v tr ny s c gi l dy thm d.
Xc nh dy thm d
Thm d tuyn tnh (linear probing) Dy thm d l i , i+1, i+2 , Thm d bnh phng (quadratic probing) Dy thm d l i , i + 12, i + 22, , i + m2, Bm kp (double hashing) Dy thm d l h1(k) + m h2(k), vi m = 0, 1, 2,
INT2203
Nhn xt
Thm d tuyn tnh
u im: cho php xt tt c cc v tr trong mng php insert lun thc hin c, tr khi mng y Nhc im: d liu tp trung thnh cc on tm kim tun t trong tng on
Bm kp
u im: trnh c nhc im ca thm d tuyn tnh Nhc im: khng cho php ta tm n tt c cc v tr trong mng php insert c th khng thc hin c nu c ca mng l s nguyn t, th thm d bnh phng cho php ta tm n mt na s v tr trong mng nu c ca mng v bc thm d h2(k) nguyn t cng nhau th phng php bm kp cho php tm n tt c cc v tr trong mng
INT2203
Cc php ton
Tm kim? Xen? Loi? Minh ha
SIZE = 11 Thm d tuyn tnh insert(388), insert(130), insert(13), insert(14), insert(926) find(47) remove(388), find(926)
INT2203
Hm bm h
u im
Cc php ton
N Tham s SIZE Bm /c m: mc y (load factor) tng th kh nng va chm tng Khi thit k, cn nh gi max ca N la chn SIZE khng nn vt qu 2/3 Bm dy chuyn: di trung bnh ca mt dy chuyn
Bm /c m, Thm d tuyn tnh Thi gian trung bnh Tm kim thnh cng Tm kim tht bi
1 1 1 + 2 1
Bm dy chuyn
1+
1 1 1 + (1 )2 2
1 1
INT2203
Chun b bi ti
c chng 10 (Hng u tin)
INT2203