1
B
B
NG BĂM
NG BĂM
(Hashing Table)
(Hashing Table)
Chương 5
2
Kh
Khá
ái ni
i ni
m
m
zGista có 100 snguyên có giá trbt k
nm trong khong t0. . 999
zNếu sdng mng agm 1000 phn t để
lưu trcác snguyên này sao cho a[i] = i
thì sln tìm kiếm snguyên bt ktrong
100 snày là 1 ln
zTuy nhiên, ch 1/10 bnh được s
dng, dn đến lãng phí bnh
zPhép biến đổi khóa là phương pháp tham
kho trc tiếp các phn ttrong mt bng
(bng băm) thông qua vic biến đổi shc
trên nhng khoá để được địa ch tương
ng ca nhng phn tửởtrong bng
3
Kh
Khá
ái ni
i ni
m
m
zPhép biến đổi khoá mt phương pháp gii
quyết tt vthi gian và vùng nh
zTchc dliu được dùng cho phép biến
đổi khoá cu trúc bng (bng băm)
zĐể thc hin phép biến đổi khoá ta cn hai
bước:
1. Bước 1:
Tính toán vic biến đổi s
hc
(hàm H() nào đó) để
biến đổi khoá
cn tìm
thành địa ch
trong bng. Trong bước này,
th
hai hay nhiu khoá
khác nhau
thông qua hàm H() s
cho cùng mt địa ch
trong bng
4
Kh
Khá
ái ni
i ni
m
m
2. Bước 2:
quá
trình gii quyết s đụng
độ
cho nhng khoá
khác nhau có
cùng mt
địa ch
trong bng
zVn đề trước tiên là phi chn hàm biến đổi
khoá (hàm băm) để biến đổi các khóa thành
các địa chtrong bng
zYêu cu ca hàm băm là phi đơn gin, d
tính, phi là hàm phân b đều tp khoá k
trên tp địa ch để vic đụng độ ít xy ra
z mt s phương pháp để xây dng hàm
băm như phương pháp chia, nhân, phân
đon. Tuy nhiên, phương pháp chia modulo
thường được sdng
5
Xây d
Xây d
ng h
ng hà
àm băm
m băm
zPhương pháp chia modulo:
Gi M
kích thước bng băm (thường
chn M
s
nguyên t để
ít có
bi s
-
xem trang 8), K
khóa và
H(k)
hàm
băm, thì:
H(k) = k % M
Hàm băm s
biến đổi các khoá
(là
s
nguyên, ch
cái hay chui) thành các s
nguyên tương ng trong đon [0 ... M-1]
Nếu khoá
s
nguyên thì
hàm băm H(k)
là: H(k)=k%M