Nội dung
- Mụ tả cấu trỳc bảng băm tổng quỏt (thụng qua hàm băm, tập
khúa, tập địa chỉ…)
- Cỏc phộp toỏn trờn bảng băm như thờm phần tử (insert), loại
bỏ (remove), tỡm kiếm (search), …
(i). Mụ tả dữ liệu
K: tập cỏc khoỏ (set of keys)
M: tập cỏc dịa chỉ (set of ađresses).
HF(k): hàm băm dựng để ỏnh xạ một khoỏ k từ tập cỏc khoỏ
K thành một địa chỉ tươngứng trong tập M.
(ii). Cỏc phộp toỏn trờn bảng băm
Khởi tạo (Initialize): Khỏi tạo bảng băm, cấp phỏt vựng nhớ
hay quiđịnh số phần tử (kớch thước) của bảng băm
Kiểm tra rỗng (Empty): kiểm tra bảng băm cú rỗng hay
khụng?
Lấy kớch thước của bảng băm (Size): Cho biết số phần tử
hiện cú trong bảng băm
Tỡm kiếm (Search): Tỡm kiếm một phần tử trong bảng băm
theo khoỏ k chỉ định trước.
Thờm mới phần tử (Insert): Thờm một phần tử vào bảng
băm. Sau khi thờm số phần tử hiện cú của bảng băm tăng
thờm một đơn vị.
Loại bỏ (Remove): Loại bỏ một phần tử ra khỏi bảng băm, và số phần tử sẽ giảm đi một.
Sao chộp (Copy): Tạo một bảng băm mới tử một bảng băm
cũ đó cú.
Duyệt (Traverse): duyệt bảng băm theo thứ tự địa chỉ từ nhỏ đến lớn. * * * * * o o o o o Tập khoỏ K Hàm băm Tập địa chỉ M HF(k) Hỡnh 2.2Bảng băm
(iii). Cỏc bảng băm thụng dụng
Với mỗi loại bảng băm cần thiết phải xỏc định tập khúa K, xỏc định
tập địa chỉ M và xõy dựng hàm băm HF cho phự hợp.
Mặt khỏc, khi xõy dựng hàm băm cũng cần thiết phải tỡm kiếm cỏc
giải phỏp để giải quyết sự xung đột, nghĩa là giảm thiểu sự ỏnh xạ
của nhiều khoỏ khỏc nhau vào cựng một địa chỉ (ỏnh xạ nhiều-một).
Bảng băm với phương phỏp nối kết trực tiếp: mỗi địa chỉ của
bảng băm(gọi là một HASHTABLE) tươngứng một danh sỏch liờn kết.
Cỏc phần tử bị xung đột được nối kết với nhau trờn một danh sỏch
liờn kết.
Bảng băm với phương phỏp nối kết hợp nhất: bảng băm loại
này được cài đặt bằng danh sỏch kề, mỗi phần tử cú hai trường:
trường key chứa khúa của phần tử và trường next chỉ phần tử kế bị
xungđột. Cỏc phần tử bị xung đột được nối kết nhau qua trường nối
kết next.
Bảng băm với phương phỏp dũ tuyến tớnh: vớ dụ khi thờm phần
tử vào bảng băm loại này nếu băm lần đầu bị xung đột thỡ lần lượt
dũđịa chỉ kế… cho đến khi gặp địa chỉ trống đầu tiờn thỡ thờm phần
tử vàođịa chỉ nàỵ
Bảng băm với phương phỏp dũ bậc hai: vớ dụ khi thờm phần tử
vào bảng băm loại này, nếu băm lần đầu bị xung đột thỡ lần lượt dũ
đến địa chỉ mới, lần dũ i ở phần tử cỏch khoảng i2
chođến khi gặp địa chỉ trống đầu tiờn thỡ thờm phần tử vàođịa chỉ nàỵ
Bảng băm với phương phỏp băm kộp: bảng băm loại này dựng hai hàm băm khỏc nhau, băm lần đầu với hàm băm thứ nhất nếu bị
xungđột thỡ xộtđịa chỉ khỏc bằng hàm băm thứ haị
(iv).Ưuđiểm của cỏc bảng băm
Bảng băm là một cấu trỳc dung hũa giữa thời gian truy xuất và dung lượng bộ nhớ:
- Nếu khụng cú sự giới hạn về bộ nhớ thỡ chỳng ta cú thể xõy dựng
bảng băm với mỗi khúa ứng với một địa chỉ với mong muốn thời
gian truy xuất tức thờị
- Nếu dung lượng bộ nhớ cú giới hạn thỡ tổ chức một số khúa cú
cựngđịa chỉ, lỳc này thời gian truy xuất cú bị suy giảm đụi chỳt.
Bảng băm được ứng dụng nhiều trong thực tế, rất thớch hợp khi tổ
chức dữ liệu cú kớch thước lớn vàđược lưu trữ ở bộ nhớ ngoàị