Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

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


Xem Double Hashing trong open addressing. Có hàm băm thường h'(x): U → {0,…,m-1}. Trong open addressing, hàm băm thực h(x) dùng h'(x), nếu ô không rỗng thì dùng hàm băm thứ hai để tìm chỗ chèn.

$$h_1(x)=x \bmod m$$

$$h_2(x)=x \bmod m'$$

$$h(x,i)=(h_1(x)+i h_2(x)) \bmod m$$

i = 0, 1, …, m-1. Bắt đầu i=0, tăng cho đến khi tìm thấy ô trống. Khi i=0, h(x,i) = h'(x).

Ví dụ

Danh sách kích thước 20 (m=20). Chèn {96, 48, 63, 29, 87, 77, 48, 65, 69, 94, 61}.

$$h_1(x)=x \bmod 20$$

$$h_2(x)=x \bmod 13$$

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

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

Bảng băm

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