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

Bảng băm cho các khóa số nguyên trong cấu trúc dữ liệu


Ở đây chúng ta sẽ thảo luận về bảng Hash với các khóa số nguyên. Ở đây các giá trị chính 𝑥 đến từ vũ trụ 𝑈 sao cho 𝑈 ={0, 1,…, 𝑢 - 2, 𝑢 - 1}. Một hàm băm là ℎ. Miền của hàm băm này là 𝑈. Phạm vi nằm trong tập hợp {0, 1,…, 𝑚 - 1} và 𝑚 ≤ 𝑢.

Hàm băm h được cho là một hàm băm hoàn hảo cho tập 𝑆 ⊆ 𝑈 nếu với mọi 𝑥 ∈ 𝑆, ℎ (𝑥) là duy nhất. Một hàm băm hoàn hảo ℎ cho 𝑆 là cực tiểu nếu 𝑚 =| 𝑆 |. Vì vậy, ℎ là lưỡng phân giữa S và {0, 1,…, 𝑚 - 1}. Rõ ràng là một hàm băm hoàn hảo tối thiểu là mong muốn vì điều này cho phép chúng ta lưu trữ tất cả các phần tử của S trong một mảng duy nhất có độ dài n.

Thật không may, các hàm băm hoàn hảo là rất hiếm, ngay cả khi m lớn hơn n rất nhiều. Nếu mỗi phần tử trong S được ánh xạ đồng nhất và độc lập với một phần tử ngẫu nhiên trong {0, 1,…, 𝑚 - 1}, thì theo nghịch lý sinh nhật nếu m nhỏ hơn nhiều n 2 thì gần như chắc chắn sẽ tồn tại hai phần tử của S, có cùng giá trị băm.