中文

种子(Seed)的组合搜索与编码及其在最小完美哈希函数中的应用

数据结构与算法 2025-07-03 v2

摘要

随机化算法常常采用可失败的方法,并通过独立随机性重试直至成功。因此,随机化数据结构通常存储成功尝试的索引,称为种子。如果需要存储n个种子(例如,用于独立子结构),标准做法是为每个i∈[n]计算最小成功种子S_i并存储向量S=(S_1,…,S_n)。本文的核心观察是,这种方法并非空间最优。我们提出了另一种算法,计算序列S'=(S_1',…,S_n')的成功种子,使得S'在大多数情况下相对于S的熵下降了Ω(n)位。为实现OPT+εn的内存消耗,被检查的种子数量增加了一个O(1/ε)因子。我们通过一种新型的最小完美哈希函数构造演示了我们的发现的有用性。对于n个关键字和任意ε∈[n^{-3/7},1],该函数的空间需求为(1+ε)OPT,构建时间为O(n/ε)。所有之前的方法仅支持ε=ω(1/log n),或构建时间随1/ε指数增长。我们的实现在ε≤3%时,以超过两个数量级的速度超过了最新方法的构建吞吐量。

关键词

引用

@article{arxiv.2502.05613,
  title  = {Combined Search and Encoding for Seeds, with an Application to Minimal Perfect Hashing},
  author = {Hans-Peter Lehmann and Peter Sanders and Stefan Walzer and Jonatan Ziegler},
  journal= {arXiv preprint arXiv:2502.05613},
  year   = {2025}
}