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.
Fast Locality Sensitive Hashing for Beam Search on GPU
Department of Computer Science, University of Southern California(南加州大学计算机科学系);Department of Computer Science and Technology, Tsinghua University(清华大学计算机科学与技术系)
SHIP: A Scalable High-performance IPv6 Lookup Algorithm that Exploits Prefix Characteristics
由于新的网络应用的出现,当前的IP查找引擎必须支持高带宽、低查找延迟和IPv6网络的持续增长。然而,现有的解决方案并没有被设计为共同解决这三个要求。本文介绍了一种IPv6查找算法SHIP,该算法利用前缀的特性建立了一个两级数据结构,以满足未来的应用需求。SHIP首先利用前缀长度分布和前缀密度对前缀进行聚类,然后为每个前缀组建立一个混合tri-tree。构建的紧凑且可扩展的数据结构可以存储在片上低延迟存储器中,并且允许遍历过程在每个级别上并行化和流水线化,以便支持高分组带宽。评估真实的和合成的前缀表持有高达580 k IPv6前缀,SHIP有一个对数缩放因子方面的内存访问的数量,和一个线性的内存消耗缩放。使用最大的合成前缀表,模拟表明,与其他众所周知的方法相比,SHIP每个前缀使用的内存至少减少44%,同时减少了61%的内存延迟。
A Faster Algorithm for Cuckoo Insertion and Bipartite Matching in Large Graphs
哈希表在计算机科学中无处不在,用于有效地访问大型数据集。然而,总是需要提供紧凑的存储器利用率而不显著降低查找性能的方法。Cuckoo hashing是一种创建哈希表的有效技术,具有高空间利用率,并提供有保证的恒定访问时间。我们将获得$n$位置和$m$项。每个项目必须放置在由$k$随机哈希函数选择的$k\ge2$位置之一。通过允许单个项目有多个选择,布谷鸟哈希类似于多选择分配方案。此外,它还支持在可能的位置中动态更改项目的位置。我们提出并分析了一种在\emph{linear time}中以高概率和期望运行的布谷鸟哈希插入算法。以前的工作总分配时间分析广度优先搜索,它被证明是线性的,只有在\emph{expectation}。我们的算法发现一个分配(概率为1),只要它存在。相比之下,另一种已知的插入方法,称为\emph{random walk insertion},即使对于可解实例也可以无限地运行。我们还提出了实验结果比较我们的算法与随机游走方法的性能,也为情况下,每个位置可以容纳一个以上的项目。作为推论,我们得到了在一类特殊的稀疏随机二部图中寻找完美匹配的线性时间算法(具有高概率和期望)。我们支持这一点,通过在现实世界的大型数据集上进行实验,在一般的大型二分图中找到最大匹配。我们报告了一个数量级的改善,在运行时间相比,\emph{Hopkraft-Karp}匹配算法。