arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv cs/0407023cs.DS
收藏

在两次内存访问中使用查找的高效散列

Efficient Hashing with Lookups in two Memory Accesses

Rina Panigrahy

摘要:

散列的研究与球和仓的分析密切相关。众所周知,如果我们将一个球随机地散列到两个箱子中并将其放置在两个箱子中较小的箱子中,而不是使用单个散列函数,那么这将大大降低箱子上的最大负载。这导致了双向散列的概念,其中最大的桶包含具有高概率的$O(\log\log n)$球。哈希查找现在将在项目哈希到的两个桶中进行搜索。由于一个项目可以放在两个桶中的一个,我们可以在最初放置项目后移动它以减少最大负载。我们表明,通过在插入过程中执行移动,最大负载2可以保持在线,具有很高的概率,同时支持散列更新操作。事实上,利用$n$桶,即使每个桶预分配两个项目的空间,如在硬件实现中可能期望的,也可以存储多于$n$的项目,从而给出高存储器利用率。我们还分析了在插入过程中执行的移动次数和桶上的最大负载之间的权衡。通过执行最多$h$移动,我们可以保持$O(\frac{\log \log n}{h \log(\log\log n/h)})$的最大负载。因此,即使只走一步,我们也比不走一步得到更好的边界。

英文摘要:

The study of hashing is closely related to the analysis of balls and bins. It is well-known that instead of using a single hash function if we randomly hash a ball into two bins and place it in the smaller of the two, then this dramatically lowers the maximum load on bins. This leads to the concept of two-way hashing where the largest bucket contains $O(\log\log n)$ balls with high probability. The hash look up will now search in both the buckets an item hashes to. Since an item may be placed in one of two buckets, we could potentially move an item after it has been initially placed to reduce maximum load. with a maximum load of We show that by performing moves during inserts, a maximum load of 2 can be maintained on-line, with high probability, while supporting hash update operations. In fact, with $n$ buckets, even if the space for two items are pre-allocated per bucket, as may be desirable in hardware implementations, more than $n$ items can be stored giving a high memory utilization. We also analyze the trade-off between the number of moves performed during inserts and the maximum load on a bucket. By performing at most $h$ moves, we can maintain a maximum load of $O(\frac{\log \log n}{h \log(\log\log n/h)})$. So, even by performing one move, we achieve a better bound than by performing no moves at all.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑