中文

ShockHash:超越暴力搜索的近最优空间极小完美哈希

数据结构与算法 2024-06-14 v2

摘要

极小完美哈希函数 (MPHF) 将含 n 个键的集合 S 无碰撞地映射到前 n 个整数。表示 MPHF 需要 n*log(e)=1.44n 比特的下界。这可由一个暴力算法达到:该算法期望尝试 e^n 个哈希函数种子,并存储首个产生 MPHF 的种子。以往空间效率最高的 MPHF 构造算法均以此暴力方法为基本构件。本文中,我们引入 ShockHash——用于极小完美哈希的小型、重度过载布谷鸟哈希表。ShockHash 使用两个哈希函数 h_0 与 h_1,期望存在函数 f : S->{0, 1} 使得 x -> h_{f(x)}(x) 是 S 上的 MPHF。随后它使用 1-bit 检索数据结构以 n + o(n) 比特存储 f。用图论术语说,ShockHash 生成 n 边随机图,直到偶然遇到伪森林——其中每个连通分量所含边数等于节点数。利用布谷鸟哈希,ShockHash 随后从伪森林线性时间导出 MPHF。我们表明 ShockHash 期望只需尝试约 (e/2)^n=1.359^n 个种子。这将存储种子所需空间减少约 n 比特(保持渐近最优空间消耗),并与暴力法相比将构造速度提升近 2^n 倍。二部 ShockHash 通过维护候选哈希函数池并检查所有可能配对,将期望构造时间再次降至 1.166^n。作为 RecSplit 框架内的构件,ShockHash 的构造可比竞争方法快至多 3 个数量级。它能在约半小时内为 1000 万个键构建每键 1.489 比特的 MPHF。若改在高效 k-perfect 哈希函数之后使用 ShockHash,则其空间用量与最佳竞争者相近,同时构造与查询显著更快。

关键词

引用

@article{arxiv.2310.14959,
  title  = {ShockHash: Near Optimal-Space Minimal Perfect Hashing Beyond Brute-Force},
  author = {Hans-Peter Lehmann and Peter Sanders and Stefan Walzer},
  journal= {arXiv preprint arXiv:2310.14959},
  year   = {2024}
}

备注

Expands arXiv:2310.14959v1 (Bipartite ShockHash) and contains content from arXiv:2308.09561v2 (Plain ShockHash). An earlier title of this article was "Bipartite ShockHash: Pruning ShockHash Search for Efficient Perfect Hashing". Now the article is a preprint of a journal version combining ShockHash and bipartite ShockHash