ctdl-hash
DESCRIPTION
CTDLTRANSCRIPT
-
5/28/2018 CTDL-Hash
1/13
11/24/
Bi ging Cu trc d liu 1
Ging vin:Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin
Kenneth H.Rosen, Ton ri rc ng dngtrong Tin hc, ltb. 5, nxb. Gio Dc, 2007,tr. 131 -143.
Mark A. Weiss, Data Structures &Algorithm Analysis in C++, 2nd edition,
Addision Wesley, 1998, p. 41 67. Nguyn Tri Tun, Hash table, Bi ging
Cu trc d liu, i hc Khoa hc Tnhin, 2007.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 2
-
5/28/2018 CTDL-Hash
2/13
11/24/
Gii thiu
Hm bm
Gii quyt ng
Bi tp
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 3
Gi s ang lm vic vi h thng qun lInternet cho 10 triu ngi dng.
Mi ln tm kim mt ngi chi phl bao nhiu?
Dung lng b nh cn s dng lbao nhiu?
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 4
Gii thiu Hm bm Gii quyt ng
-
5/28/2018 CTDL-Hash
3/13
11/24/
S php ton trung bnh s dng l baonhiu? Gi s di tn l 8. Ln 1: So snh 1 k t u Ln 2: So snh 1 k t u Ln 23: So snh ton b 8 k t
Cng gn vi kt qu, cng phi so snhnhiu k t trong chui tn.
S php so snh: 23
184 (= 23 x 8). Vi php hash, ch cn 8 php ton!
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 5
Gii thiu Hm bm Gii quyt ng
Gi s kch thc ti a d liu l c nh.
Cch lm thng thng: ghi tun t dliu. Mi thao tc tm kim, sp xp thchin trn d liu tun t ny (c th lmtrn index).
Liu c cch no xc nh trc c vtr ca mt entry mi? Hash!
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 6
Gii thiu Hm bm Gii quyt ng
-
5/28/2018 CTDL-Hash
4/13
11/24/
Vn : Cho trc 1 tp S gm cc phnt c c trng bi gi tr kha. Trngi tr cc kha ny c quan h th t. Tchc S nh th no tm kim 1 phn tc kha k cho trc c phc tp t nhttrong gii hn b nh cho php?
tng: Bin i kha k thnh mt s
(bng hm hash) v s dng s ny nhl a ch tm kim trn bng d liu.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 7
Gii thiu Hm bm Gii quyt ng
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 8
Gii thiu Hm bm Gii quyt ng
1
2
999
1000
405
406
VCNam
NTHNhung
NTin
VCNam
NTHNhung
NTin
+84.91.2345678
+84.90.9345678
+84.95.8345678
-
5/28/2018 CTDL-Hash
5/13
11/24/
Chi ph tm kim trung bnh: O(1)
Chi ph tm kim trong trng hp xunht: O(n) (rt t gp).
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 9
Gii thiu Hm bm Gii quyt ng
nh ngha: l hm bin i kha k caphn t thnh a ch trong bng bm.
V d: H(k) = k mod M.
Tng qut v php bin i kha: L 1nh x thch hp t tp cc kha U votp cc a ch A.
H: UA
k a = h(k)
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 10
Gii thiu Hm bm Gii quyt ng
-
5/28/2018 CTDL-Hash
6/13
11/24/
Tp cc gi tr kha (U) c th ln hn rtnhiu so vi s kha thc t (K) rt nhiu.
V d: Qun l danh sch 1000 sinh vin,m sinh vin gm 7 ch s.
C U = 107 kha so vi K = 1000.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 11
Gii thiu Hm bm Gii quyt ng
Tp U
Tp K
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 12
Gii thiu Hm bm Gii quyt ng
1. 2.3
.10.9. 8.7.
6. 5.4
.
1
2
3
4
5
6
7
8
9
10
3
4
8
10
T
Key Data
-
5/28/2018 CTDL-Hash
7/13
11/24/
k1, k
2 K:
k1 k2, H(k1) = H(k2)
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 13
Gii thiu Hm bm Gii quyt ng
Tp U
Tp K
1.
2
.
3.10.
9.
8.
7.6. 5.
4.
T
H(3)
H(4)
H(2) = H(8)
H(10)
Tnhton
nhanh.
Cc khaphn b u.
t xy rang.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 14
Gii thiu Hm bm Gii quyt ng
-
5/28/2018 CTDL-Hash
8/13
11/24/
Xt li v d v danh sch sinh vin:
Vi kch thc bng l M = 1000, ta cth chn hm bm nh sau:
H(k) = k mod M.
Kha ny tha mn yu cu tnh tonnhanh v tri u trn bng.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 15
Gii thiu Hm bm Gii quyt ng
Mc ch ban u ca bm (hash) chnh l sinh ra cc gi tr ngu nhin.
tng: bm nh cc gi tr v trn lnvi nhau c trng thi hn lon, t s c c gi tr ngu nhin.
Ln u tin c a ra bi Hans PeterLuhn IBM vo nm 1953.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 16
Gii thiu Hm bm Gii quyt ng
-
5/28/2018 CTDL-Hash
9/13
11/24/
Phng php ni kt (chaining)
Phng php a ch m (Open-addressing)
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 17
Gii thiu Hm bm Gii quyt ng
ng vi mi a ch ca bng, ta c mtdanh sch lin kt cha cc phn t ckha khc nhau m c cng a ch .
Ta s c danh sch (bng bm) gm Mphn t cha a ch u ca cc danh
sch lin kt.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 18
Phng php XL ng PP Ni kt
PP a ch m Bi tp
-
5/28/2018 CTDL-Hash
10/13
11/24/
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 19
Phng php XL ng PP Ni kt PP a ch m
Bi tp
1
2
999
1000
405
406
VCNam
NTHNhung
NTin
VCNam
NTHNhung
NTin
+84.91.2345678
+84.90.9345678
+84.95.8345678
TMHuTMHu +84.95.6543210
Tn gi khc: Phng php d
Phng php th
tng: Khi ng xy ra, ta s th tm n v tr k
tip no trong bng cho n khi tm thy vtr no cn trng.
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 20
Phng php XL ng PP Ni kt
PP a ch m Bi tp
-
5/28/2018 CTDL-Hash
11/13
11/24/
Phng php d tuyn tnh (linear probing)
Phng php d bc 2 (Quadratic probing)
Phng php bm kp (Double hashing)
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 21
Phng php XL ng PP Ni kt PP a ch m
Bi tp
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 22
Phng php XL ng PP a ch m
PP d tuyn tnh D bc 2 & bm kp
VCNam
NTHNhung
NTin
VCNam
NTHNhung
NTin
+84.91.2345678
+84.90.9345678
+84.95.8345678
TMHu TMHu +84.95.6543210
1
2
406
407
405
999
1000
tng:
H(k, i) = (H(k) + i) mod M
-
5/28/2018 CTDL-Hash
12/13
11/24/
Phng php d bc 2:
H(k, i) = (H(k) + i2) mod M
Phng php bm kp:
H(k, i) = (H1(k) + i*H2(k)) mod M
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 23
Phng php XL ng PP a ch m
D bc 2 & bm kp
Bi tp
n gin khi ci t.
S dng cu trc d liu c bn.
Phng php a ch m gii quyt cng nhng li c th gy ra ng mi.
Phng php ni kt khng b nh hngv tc khi mng gn y.
t tn b nh khi mng tha (t phn t).
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 24
Phng php XL ng Bi tp
-
5/28/2018 CTDL-Hash
13/13
11/24/
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 25
Phng php XL ng Bi tp
HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 26