1. 程式人生 > >hash function/ hash table 背後的數學基礎(二)

hash function/ hash table 背後的數學基礎(二)

perfect hashing(完美雜湊)

給定 n 個鍵,構建一個靜態表(static hash table,也即沒有插入和刪除),表的大小是 m=O(n),使得在最壞的情況下,查詢的時間是 O(1)

思路是使用一個二級結構(two-level scheme),在每一級上都使用全域雜湊(universal hash),如下圖所示:


這裡寫圖片描述

如果 ni 個項被雜湊到 level-1 上的 第 i 個slot(有 ni 個鍵發生碰撞),例如(i=6,n6=3 有三個元素,也即40,37,22,在第一次雜湊中均被雜湊到第6個槽,也即發生collision),然後使用 mi=n2i 數目的槽(m

6=n26=9)在level-2,構成 S6

也即將 ni 個碰撞的項分別雜湊到 n2i 個位置上 ,也因此第二級表將會變得非常稀疏。