BẢNG BĂM ADT (HASHTABL E ADT)

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 27 - 28)

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àị

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 27 - 28)

Tải bản đầy đủ (PDF)

(121 trang)