中文

基于梅森素数的哈希之威力

数据结构与算法 2021-05-07 v2

摘要

计算 kk-通用哈希函数的经典方法是使用素数域 Zp\mathbb Z_p 上的随机 k1k-1 次多项式。为快速计算该多项式,素数 pp 常选为梅森素数 p=2b1p=2^b-1。本文中,我们展示了使用梅森素数还有其他良好优势。我们的视角是,哈希函数的输出是在 {0,,2b1}\{0, \dots, 2^b-1\} 中均匀分布的 bb 位整数,只是缺失了 pp(二进制全为 \texttt{1} 的值)。均匀比特串具有许多良好性质,例如拆分为子串可让我们以一份代价获得两个或更多哈希函数,同时保持强的理论性质。我们称此技巧为“二合一”哈希,并在经典 Count Sketch 算法用于二阶矩估计中展示了它在 4-通用哈希上的应用。我们还提供了一种用于梅森素数除法与取模的新的无分支快速代码。与我们的分析工作相对,该代码可推广到任意伪梅森素数 p=2bcp=2^b-c(其中 cc 较小)。

关键词

引用

@article{arxiv.2008.08654,
  title  = {The Power of Hashing with Mersenne Primes},
  author = {Thomas Dybdahl Ahle and Jakob Tejs Bæk Knudsen and Mikkel Thorup},
  journal= {arXiv preprint arXiv:2008.08654},
  year   = {2021}
}