Computer >> Máy Tính >  >> Lập trình >> Lập trình

Băm kép trong cấu trúc dữ liệu


Trong phần này, chúng ta sẽ xem kỹ thuật Double Hashing trong lược đồ địa chỉ mở là gì. Có một hàm băm thông thường h´ (x):U → {0, 1 ,. . ., m - 1}. Trong lược đồ định địa chỉ mở, hàm băm thực tế h (x) đang sử dụng hàm băm thông thường h ’(x) khi không gian trống, sau đó thực hiện một hàm băm khác để có một số khoảng trống để chèn.

$$ h_ {1} (x) =x \:mod \:m $$

$$ h_ {2} (x) =x \:mod \:m ^ {\ prime} $$

$$ h (x, i) =(h ^ {1} (x) + ih ^ {2}) \:mod \:m $$

Giá trị của i =0, 1 ,. . ., m - 1. Vì vậy, chúng tôi bắt đầu từ i =0, và tăng điều này cho đến khi chúng tôi nhận được một không gian trống. Vì vậy, ban đầu khi i =0, thì h (x, i) giống với h´ (x).

Ví dụ

Giả sử chúng ta có một danh sách kích thước 20 (m =20). Chúng tôi muốn đưa một số yếu tố vào kiểu thăm dò tuyến tính. Các phần tử là {96, 48, 63, 29, 87, 77, 48, 65, 69, 94, 61}

$$ h_ {1} (x) =x \:mod \:20 $$

$$ h_ {2} (x) =x \:mod \:13 $$

x h (x, i) =(h1 (x) + ih2 (x)) mod 20

Băm kép trong cấu trúc dữ liệu

Bảng băm

Băm kép trong cấu trúc dữ liệu