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

Băm hoàn hảo tĩnh (Static Perfect Hashing)

Định nghĩa Băm hoàn hảo (Perfect Hashing)

Băm hoàn hảo (Perfect hashing) được định nghĩa là mô hình băm mà bất kỳ tập n phần tử nào có thể lưu trong bảng băm (hash table) cùng kích thước và tra cứu (lookups) được thực hiện trong thời gian hằng số. Nó được phát minh và thảo luận cụ thể bởi Fredman, Komlos và Szemeredi (1984) và do đó được biệt danh là "FKS Hashing".

Định nghĩa Băm tĩnh (Static Hashing)

Băm tĩnh (Static Hashing) định nghĩa dạng khác của bài toán băm cho phép người dùng thực hiện tra cứu trên tập từ điển đã hoàn thiện (tức là tất cả đối tượng trong từ điển là cuối cùng và không thay đổi).

Ứng dụng

Vì băm tĩnh yêu cầu cơ sở dữ liệu, đối tượng và tham chiếu giữ nguyên, ứng dụng của nó bị hạn chế. Cơ sở dữ liệu chứa thông tin hiếm khi thay đổi cũng đủ điều kiện vì chỉ cần rehash toàn bộ cơ sở dữ liệu vào dịp hiếm. Các ví dụ: tập từ và định nghĩa ngôn ngữ cụ thể, tập dữ liệu quan trọng cho nhân sự tổ chức, v.v.

Cài đặt

Trong trường hợp tĩnh, ta được cung cấp tập hợp tổng cộng p mục, mỗi mục có khóa duy nhất, trước giờ. Fredman, Komlós và Szemerédi chọn bảng băm cấp một (first-level) với kích thước s = 2(p-1) bucket. Để xây dựng, p mục được phân chia vào q bucket bởi hàm băm cấp cao nhất, với q = 2(p-1). Sau đó, với mỗi bucket có r mục, bảng cấp hai (second-level table) được cấp phát với r2 ô, và hàm băm của nó được chọn ngẫu nhiên từ tập hàm băm phổ quát (universal hash function set) để trở nên không va chạm (collision-free) và lưu cùng bảng băm. Nếu hàm băm ngẫu nhiên tạo bảng có va chạm, hàm băm mới được chọn ngẫu nhiên cho đến khi đảm bảo bảng không va chạm. Cuối cùng, với hàm băm không va chạm, r mục được băm vào bảng cấp hai.