SicHash -- Small Irregular Cuckoo Tables for Perfect Hashing
完美散列函数(Perfect Hash Function,PHF)是一种在给定输入集上没有冲突的散列函数。PHF可以用于阵列中数据的空间有效存储,或者用于确定集合中每个对象的紧凑表示。在本文中,我们提出了PHF构造算法SicHash -用于完美哈希的小不规则布谷鸟表。在其核心,SicHash使用一种已知的技术:它将对象放在布谷鸟哈希表中,然后将每个对象的最终哈希函数选择存储在检索数据结构中。我们将这个想法与不规则的布谷鸟散列相结合,其中每个对象都有不同数量的散列函数。此外,我们使用许多小表,我们超载超过其渐近最大负载因子。最节省空间的竞争对手通常使用蛮力方法来确定PHF。SicHash提供了一种更直接的构造算法,很少需要重新计算部分。我们的实现提高了最先进的空间利用率与建设时间方面的各种配置。同时,它提供了非常快速的查询。
2022-11-08 cs.DS
Separate Chaining Meets Compact Hashing
虽然在大多数教科书中,单独的链接是解决哈希表中冲突的常见策略,但紧凑哈希是一种不太常见的技术,用于在哈希域相对于问题大小相对较小的整数时节省空间。人们普遍认为,哈希表浪费了大量的内存,因为它们要么保持分配的空间不变(开放寻址),要么存储额外的指针(单独的链接)。对于前者,Cleary引入了紧凑散列技术,该技术仅存储密钥的一部分以节省空间。然而,从专注于开放寻址的紧凑哈希表的研究路线可以看出,恢复密钥需要额外的信息,称为位移。存在具有不同空间和时间权衡的该位移信息的若干表示。在本文中,我们介绍了一个单独的链式哈希表,它应用了紧凑哈希技术,而不需要位移信息。实际的评估表明,在此哈希表中的插入速度更快,或使用更少的空间比所有以前已知的紧凑的哈希表在现代计算机体系结构存储足够大的卫星数据时。
2019-05-01 cs.DS
Cascade hash tables: a series of multilevel double hashing schemes with O(1) worst case lookup time
本文提出了一系列多级双散列方案,称为级联哈希表。它们使用多级哈希表。在每个表中,我们使用常见的双哈希方案。较高级别的哈希表用作较低级别的哈希表的故障保护。通过该策略,可以有效地减少哈希插入中的冲突。因此,它获得了一个恒定的最坏情况下的查找时间与一个相对较高的负载因子(70%-85%)在随机实验。对级联哈希表的不同参数进行了测试。
2015-06-25 cs.AI cs.DS
Data structure for representing a graph: combination of linked list and hash table
在这篇文章中,我们讨论了一个数据结构,它结合了两种不同的方式来表示图的优点:邻接矩阵和邻接表的集合。这种数据结构可以快速添加和搜索边(邻接矩阵的优点),使用线性量的内存,让获得特定顶点的邻接表(邻接表集合的优点)。要理解本文,需要具备链表和哈希表的基本知识。本文包含Java上的实现示例。
2009-08-21 cs.DS
On the Optimal Time/Space Tradeoff for Hash Tables
近60年来,哈希表研究中的中心问题一直是确定时间和空间之间的最佳可实现折衷曲线。最先进的哈希表提供了以下保证:如果键/值都是Theta(log n)位,那么与信息论最优值相比,可以实现恒定时间的插入/删除/查询,而每个键只浪费O(loglog n)位空间。甚至在达到这个界限之前,每个密钥的O(loglog n)浪费比特的目标被认为是自然的最终目标,并且被证明对于许多密切相关的问题(例如,稳定散列、动态检索和动态调整大小的过滤器)。本文表明,O(loglog n)浪费每个键的位是不是行散列的结束。事实上,对于任何k个\in [log* n],都有可能实现O(k)时间的插入/删除,O(1)时间的查询,以及O(\log^{(k)} n)浪费每个键的位(所有这些都在n中具有高概率)。这意味着,每次我们将插入/删除时间增加一个\emph{additive constant},我们就减少了每个密钥\emph{exponentially}浪费的位数。我们进一步表明,这种权衡曲线是最好的实现任何一大类的哈希表,包括任何哈希表设计使用当前的框架,使恒定时间哈希表简洁。
2021-11-04 cs.DS
Quotient Hash Tables - Efficiently Detecting Duplicates in Streaming Data
本文提出了一种新的数据结构商哈希表(QHT),用于无界数据流中的重复检测。QHT源于流商过滤器(SQF)的校正分析,在相同的性能下减少了33%的内存使用。我们提供了一个新的和彻底的分析这两种算法,与其他现有的建设感兴趣的结果。我们还介绍了我们的新的数据结构的优化版本,被称为重复序列的QHT(QQHTD)。最后,我们讨论了对抗性输入对基于哈希的重复过滤器(类似于QHT)的影响。
2019-01-14 cs.DS
An Analysis of Brent's Insertion Method for Hash Tables
Carnegie Mellon University(卡内基梅隆大学)
本文对Brent哈希表插入方法展开形式化分析,解决其受损随机性问题,验证其100%填充时查询仍为O(1)的特性,可用于研究生随机算法教学。
2026-08-04 cs.DS
PaCHash: Packed and Compressed Hash Tables
我们引入PaCHash,一个哈希表,它将对象连续存储在一个数组中,即使对象的大小可变,也不需要插入空间。具体地,每个对象可以使用标准压缩技术来压缩。小的搜索数据结构允许在恒定的预期时间内定位对象。PaCHash最自然地被描述为静态外部哈希表,其中它需要每个外部存储器块的内部存储器的恒定位数。在这里,从某种意义上说,PaCHash击败了k-完美散列的空间消耗下限。快速SSD的实现需要每个外部存储器块大约5位的内部存储器,每个搜索操作仅需要一次磁盘访问(可变长度),并且与磁盘访问成本相比具有较小的内部搜索开销。我们的实验表明,即使考虑相同大小的对象,它的空间消耗也比之前所有方法都低。
2022-11-08 cs.DS
Multi-probe consistent hashing
我们描述了一个一致的散列算法,它执行多个查找每个关键的节点的哈希表。除了哈希表之外,它不需要额外的存储空间,并且每个键只需要1 + 1/2次查找,就可以实现1 + 1/2的峰值平均负载比。
2015-05-01 cs.DS
The Bathroom Model: A Realistic Approach to Hash Table Algorithm Optimization
针对现有哈希表探测方法的局限,提出受卫生间选位行为启发的Bathroom Model,通过观测占用模式动态调整探测策略,在低计算开销下显著提升搜索效率,为经典数据结构优化提供新思路。
2025-03-21 cs.DS
Hashing with Linear Probing and Referential Integrity
我们描述了线性探测哈希表的一个变体,它从不移动元素,因此支持引用完整性,即,当该元素在哈希表中时,指向元素的指针保持有效。这是通过民间传说的方法来实现的,即将一些表格条目标记为以前被占用(墓碑)。创新之处在于墓碑的数量被最小化。实验表明,与没有墓碑(和没有引用完整性)的线性探测相比,这允许无限数量的操作和有限的开销。
2018-08-14 cs.DS
On the Insertion Time of Cuckoo Hashing
Cuckoo hashing是一种用于创建大型哈希表的有效技术,具有高空间利用率和保证恒定的访问时间。在那里,每个项目可以放置在由k个不同哈希函数中的任何一个给定的位置。在本文中,我们进一步研究了随机游走启发式插入在一个在线的时尚新的项目到哈希表。假设k > 2,并且表中的项目数量低于(但任意接近)理论上可实现的负载阈值,我们显示了最大插入时间的多对数边界,该边界具有很高的概率。
2013-10-10 cs.DS
The Usefulness of Multilevel Hash Tables with Multiple Hash Functions in Large Databases
在这项工作中,试图选择三个好的散列函数,均匀分布的散列值,置换其内部状态,并允许输入位生成不同的输出位。这些函数用于不同层次的哈希表中,这些哈希表是用Java程序设计语言编写的,并且相当数量的数据记录作为测试性能的原始数据。结果表明,采用三种不同哈希函数的两级哈希表在减少冲突键和快速查找特定元素方面优于采用两种哈希函数的一级哈希表和采用一种哈希函数的零级哈希表.该结果有助于将查询语言中连接操作的复杂度从O(n2)降低到O(1),将较大的查询结果放置在具有多个哈希函数的多级哈希表中,生成较短的查询结果。
2009-05-26 cs.DB cs.DS
Fine-Grained Analysis of SIMD-Based Hash Table Implementations
Univ Gustave Eiffel, CNRS, LIGM(巴黎-东马恩拉瓦莱大学,法国国家科学研究中心,信息学与多学科实验室)
本文对基于SIMD的哈希表实现进行细粒度理论分析,采用Wormald的微分方程技术精确刻画动态,以高概率给出结果,并与实验高度吻合。
2026-10-05 cs.DS
Adaptive Hashing: Faster Hash Functions with Fewer Collisions
Google DeepMind(谷歌DeepMind)
本文提出了一种自适应哈希方法,通过在线调整哈希函数以减少碰撞并提高速度。
2026-02-05 cs.DS
Succinct and Fast Tiny Pointer Hash Tables
Cornell University(康奈尔大学);Carnegie Mellon University(卡内基梅隆大学);Cornell Tech(康奈尔科技)
本文提出微型指针哈希表(TPHT),含链式、扁平两种互补设计,在保持顶尖性能的同时大幅降低内存使用,推进了延迟-空间帕累托前沿。
2026-08-03 cs.DS
Analysing the Performance of GPU Hash Tables for State Space Exploration
在过去的几年中,通用图形处理器(GPU)已被用于显着加速许多应用程序。GPU最近带来显著加速的领域之一是模型检验。在模型检验中,状态空间,即,大的有向图,探索,以验证模型是否满足所需的属性。GPUexplore是一个基于GPU的模型检查器,它使用一个哈希表来有效地跟踪已经探索过的状态。由于在这种探索期间发现并存储了大量的状态,因此哈希表应该能够快速地并发处理许多插入和查询。在本文中,我们实验比较了两种不同的哈希表优化的GPU,一个是GPU探索哈希表,另一个使用布谷鸟哈希。我们使用从模型检验实验中获得的随机和非随机数据来比较两种哈希表的性能,以分析两种哈希表用于状态空间探索的适用性。我们得出的结论是,对于随机数据,Cuckoo哈希比GPU explore哈希快三倍,对于非随机数据,Cuckoo哈希快五到九倍。这表明在不久的将来进一步加速GPU探索的巨大潜力。
2017-12-27 cs.DC cs.DS
Cuckoo++ Hash Tables: High-Performance Hash Tables for Networking Applications
哈希表是用于许多联网应用的基本数据结构(例如,连接跟踪、防火墙、网络地址转换器)。其中,cuckoo哈希表通过允许以非常少的存储器访问(每次查找2到3次)来处理查找,提供了优异的性能。然而,对于大型表,cuckoo哈希表仍然受内存限制,并且每次内存访问都会影响性能。在本文中,我们提出了算法的改进,杜鹃哈希表允许消除一些不必要的内存访问,这些变化进行不改变原有的杜鹃哈希表的属性,使所有现有的理论分析仍然适用。在单个核上,我们的哈希表每秒实现37M的正查找(即,当查找的关键字存在于表中时),以及每秒60M次的负查找,比包括在DPDK中的实现提高了50%。在一个18核的,主要是积极的查找,我们的实现实现每秒496M查找,比DPDK提高了45%。
2017-12-27 cs.DB cs.DS cs.NI
Data-Parallel Hashing Techniques for GPU Architectures
哈希表是用于有效地存储和访问稀疏数据的最基本的数据结构之一,在从计算机图形到机器学习的领域中广泛使用。本研究调查的国家的最先进的研究数据并行哈希技术,新兴的并行,众核GPU架构。发现影响不同哈希方案性能的关键因素,并用于建议最佳实践和确定进一步研究的领域。
2018-07-11 cs.DC cs.DS
Robin Hood Hashing really has constant average search cost and variance in full tables
30年前,针对开寻址哈希表引入了罗宾汉冲突解决策略,并找到了其搜索成本分布的递归方程。虽然这种递归不能用解析法求解,但它允许数值计算,值得注意的是,这表明当表满时,搜索成本的方差接近$1.883$的值。此外,通过使用非标准的均值中心搜索算法,这将意味着即使在完整的表中也可以在预期的恒定时间内执行搜索。尽管提出这些意见已有一段时间,但在证明这些意见方面没有取得任何进展。在本文中,我们介绍了一种技术,而不是解决一个相关的微分方程的递归方程的棘手性。虽然这并没有提供一个精确的解决方案,但它足以证明方差的界,从而证明罗宾汉的方差是由负载因子任意接近1的一个小常数限制的。作为推论,这证明了均值中心搜索算法在预期的恒定时间内运行。我们还使用这种技术来研究罗宾汉哈希表的性能下的一个长序列的插入和删除,删除是通过标记为删除的元素。我们证明,在这种情况下,方差是有界的$1/(1-α)+O(1)$,其中$α$是负载因子。为了对这些哈希表的行为进行建模,我们使用了一种统一的方法,该方法也可以应用于研究先来先服务和后来先服务的冲突解决规则,包括删除和不删除。
2016-05-13 cs.DS
HashGraph -- Scalable Hash Tables Using A Sparse Graph Data Structure
哈希表是普遍存在的,并且在广泛的应用中用于对大型和未排序数据的有效探测。如果设计得当,哈希表可以使系数查找在一个常数的操作或通常被称为O(1)操作。随着数据大小的不断增长和数据结构化程度的降低(这在大数据应用程序中很常见),对高效和可扩展的哈希表的需求也在增长。在本文中,我们将介绍HashGraph,这是一种用于构建哈希表的新的可扩展方法,它使用了从稀疏图表示中提取的概念--因此命名为HashGraph。我们展示了HashGraph的两种不同变体,一种简单的算法概述了创建哈希表的方法,另一种先进的方法以更有效的方式(使用改进的内存访问模式)创建哈希表。HashGraph展示了一种处理哈希冲突的新方法,它不使用“开放寻址”或“链接”,但具有这两种方法的所有优点。HashGraph目前适用于静态输入,尽管动态图数据结构的最新进展表明HashGraph也可以扩展到动态输入。我们表明,哈希图可以处理大量的哈希值,每个条目没有损失的性能,因为大多数开放寻址和链接的方法。此外,我们证明了HashGraph对负载因子是无关紧要的。最后,我们展示了一个新的探测算法的第二阶段的值查找。综上所述,HashGraph非常快,并且优于几种最先进的哈希表实现。本文中的HashGraph实现是针对NVIDIA GPU的,尽管HashGraph不依赖于架构。使用NVIDIA GV 100 GPU,HashGra…
2019-07-05 cs.DB cs.DC cs.DS
Tight Thresholds for Cuckoo Hashing via XORSAT
我们解决了离线cuckoo hashing的严格阈值问题。这个问题可以表述如下:我们有n个键要被散列到m个桶中,每个桶都能容纳一个键。每个键具有k>= 3个(不同的)相关联的桶,这些桶是随机地均匀选择的,并且独立于其他键的选择。如果每个键都可以放入其中一个桶中,则可以成功构建哈希表。我们寻求阈值alpha_k,使得当n趋于无穷大时,如果对于某个alpha <alpha_k,n/m <= alpha,则哈希表可以以高概率成功构建,并且如果对于某个alpha> alpha_k,n/m>= alpha,则哈希表不能以高概率成功构建。在这里,我们考虑的是问题的离线版本,其中所有的键和哈希值都是给定的,因此这个问题相当于以前的多选择哈希模型。我们发现所有k> 2的值的阈值,表明他们实际上是相同的随机k-XORSAT问题的先前已知的阈值。然后,我们扩展这些结果的设置键可以有不同数量的选择,并提供证据的形式的算法的猜想扩展这一结果的布谷鸟哈希表存储多个键在一个桶。
2010-12-21 cs.DS
Dynamic External Hashing: The Limit of Buffering
哈希表是计算机科学中最基本的数据结构之一,无论在理论上还是在实践中都是如此。它们在外部存储器中特别有用,在外部存储器中,它们的查询性能接近仅一次磁盘访问的理想成本。Knuth给出了一个优雅的分析,表明使用一些简单的冲突解决策略(如线性探测或链接),查找的预期平均磁盘I/O数仅为$1+1/2^{Ω(b)}$,其中每个I/O可以读取包含$b$项的磁盘块。向哈希表中插入新项也会消耗$1+1/2^{Ω(b)}$ I/O,如果哈希表完全存储在磁盘上,这几乎是最好的方法。然而,这种假设是不现实的,因为任何在外部哈希表上运行的算法都必须有一些内部内存(至少是$Ω(1)$块)来工作。对于许多外部存储器数据结构,小的内部存储器缓冲区的可用性可以显著地减少对$o(1)$ I/O的摊销插入成本。在本文中,我们研究了固有的查询插入外部哈希表中存在的内存缓冲区的权衡。特别是,我们表明,对于任何常数$c>1$,如果查询成本是针对$1+O(1/b^{c})$ I/O,那么它是不可能的,以支持插入小于$1-O(1/b^{\frac{c-1}{4}})$ I/O摊销,这意味着内存缓冲区基本上是无用的。而对于任何常量$c<1$,如果将查询成本放宽为$1+O(1/b^{c})$ I/O,则存在具有$o(1)$插入成本的简单动态哈希表。这些结果也回答了Jensen和Pagh最近提出的一个悬而未决的问题。
2008-11-19 cs.DS
IcebergHT: High Performance PMEM Hash Tables Through Stability and Low Associativity
现代哈希表设计力求在最大化速度的同时最小化空间。速度方面最重要的因素是在更新和查询期间访问的缓存行的数量。这在PMEM上尤其重要,PMEM比DRAM慢,写入比读取更昂贵。本文提出了两个更强的设计目标:稳定性和低关联性。一个稳定的哈希表不会移动数据项,如果一个数据项只能存储在少数几个位置,那么哈希表的关联性就很低。低关联性确保查询只需要检查几个内存位置,而稳定性确保插入写入到很少的缓存行。稳定性还简化了缩放和碰撞安全。我们提出了IcebergHT,一个快速,崩溃安全,并发,和空间效率的哈希表的PMEM基于稳定性和低关联性的设计原则。IcebergHT将内存中的元数据与一种新的哈希技术结合起来,即冰山哈希,它具有(1)空间效率,(2)稳定,(3)支持低关联性。相比之下,现有的哈希表要么在插入期间修改多个高速缓存行(例如,布谷鸟哈希),要么在查询期间访问多个高速缓存行(例如,线性探测),要么浪费空间(例如,链接)。此外,(1)-(3)的组合产生了几个新的好处:IcebergHT比其他哈希表更好地扩展,支持崩溃安全,并且在PMEM上具有出色的性能(其中写入特别昂贵)。
2022-10-11 cs.DB cs.DS
WarpSpeed: A High-Performance Library for Concurrent GPU Hash Tables
本文提出WarpSpeed库,实现八种先进GPU哈希表设计,通过指纹元数据等优化降低并发开销,并在三个应用中验证其正确性、可扩展性与实际价值。
2025-10-23 cs.DC cs.DS
Optimal Non-Oblivious Open Addressing
本文构造完全装满时仍以高概率支持 O(1) 操作的非透明开放寻址哈希表,并可动态紧凑调整大小,从而突破透明开放寻址的 Ω(log log ε⁻¹) 下界。
2025-03-17 cs.DS
Hyperdimensional Hashing: A Robust and Efficient Dynamic Hash Table
大多数云服务和分布式应用程序都依赖于哈希算法,这些算法允许动态扩展健壮且高效的哈希表。例如AWS、Google Cloud和BitTorrent。一致性哈希和会合哈希是在调整哈希表大小时最小化键重新映射的算法。虽然大规模云部署中的内存错误很常见,但这两种算法都不能同时提供效率和鲁棒性。超维计算是一种新兴的计算模型,具有固有的效率,鲁棒性,非常适合矢量或硬件加速。我们提出了超维(HD)哈希,并表明它具有部署在大型系统中的效率。此外,现实水平的内存错误会导致一致性哈希超过20%的不匹配,而HD哈希则不受影响。
2022-05-16 cs.DC cs.DS cs.NI
Scalable Hash Table for NUMA Systems
哈希表用于大量的应用,包括数据库操作、DNA测序、字符串搜索等等。因此,存在许多针对多核、分布式和基于加速器的系统的并行化哈希表。在这项工作中,我们提出了一个多GPU哈希表的实现,可以处理密钥的吞吐量相当于分布式哈希表。分布式CPU哈希表比基于GPU的哈希表受到了更多的关注。我们发现,具有多个GPU的单个节点提供与基于500- 1,000核CPU的集群大致相同的性能。我们的算法的关键组成部分是我们使用多个稀疏图数据结构和装箱技术来构建哈希表。正如已经单独显示的那样,这些组件可以用适合GPU加速的大规模并行性来编写。由于我们关注的是单个节点,因此我们还利用了分布式环境中通常禁止的通信原语。我们表明,我们的新的多GPU算法共享许多相同的功能的单GPU算法-因此,我们有高效的冲突管理能力,可以处理大量的重复。我们在两个多GPU计算节点上评估我们的算法:1)具有16个GPU的NVIDIA DGX 2服务器和2)具有6个NVIDIA GPU的IBM Power 9处理器。使用32位密钥,我们的实现每秒处理8B密钥,与基于500- 1,000核CPU的集群相当,比以前的单GPU实现快4倍。
2021-04-01 cs.DC cs.DS
Insertion Time of Random Walk Cuckoo Hashing below the Peeling Threshold
大多数哈希表的插入时间为$O(1)$,可能符合预期和/或摊销。虽然插入到cuckoo哈希表中在实践中似乎确实需要$O(1)$预期的时间,但只有在最简单的实际相关情况下才能证明多对数保证。由于布谷鸟散列广泛用于实现紧凑字典和Bloom过滤器替代方案,缩小这一差距是理论家的一个重要问题。在本文中,我们表明,随机游走插入到布谷鸟哈希表$O(1)$预期摊销时间时,任何数量的$k \geq 3$的哈希函数被使用,负载因子低于相应的剥离阈值(例如,$\approx 0.81$为$k = 3$)。据我们所知,这是第一个对$k \in \{3,\dots,9\}$有效的cuckoo hashing的常数时间插入有意义的保证。除了本身的用处之外,我们希望我们的以键为中心的分析方法可以成为通往真正最终目标的垫脚石:对于低于负载阈值的所有负载因子,$O(1)$时间插入(例如,对于$k = 3$,$\approx 0.91$)。
2022-04-25 cs.DS
Non-Minimal $k$-Perfect Hashing: Tight Lower Bounds and an Application to Fast Static Hash Tables
Karlsruhe Institute of Technology(卡尔斯鲁厄理工学院)
研究非最小k完美哈希,给出其在加速静态哈希表方面的应用。通过理论分析确定k - PHF紧密空间下界,实践中基于PtrHash开发并调优k - PHF用于静态哈希表,实现大小略超下界,在查询速度上有显著提升。
2026-08-28 cs.DS
Sliding Block (Slick) Hashing: An Implementation & Benchmarks
本文实现了轻量级哈希表 Slick Hash,并通过基准测试分析其性能及条目删除中后院清理的影响,验证其在空间与速度间的实际平衡效果。
2024-09-30 cs.DS
Probabilistic behavior of hash tables
本文推广了Goldreich和Ron关于估计散列函数碰撞概率的一个结果。他们的估计有一个多项式尾部。我们证明了当负载因子大于某个常数时,估计量具有高斯尾。作为一个应用程序,我们找到了一个估计的上界的平均搜索时间在哈希与链接,对于一个特定的用户(我们允许整体的密钥分布是不同的密钥分布的特定用户)。估计量具有高斯尾。
2003-03-21 cs.DB cs.DS
Avoiding Rotated Bitboards with Direct Lookup
本文描述了一种不借助旋转位板而直接存取滑动块受攻击方格的方法。该技术涉及使用来自解释的高级语言的内置的散列数组来创建四个哈希表。首先通过掩蔽板的所需部分来隔离等级、文件和对角线占用。然后直接从哈希表中检索被攻击的方块。维护增量更新的旋转位板变得不必要,因为访问受攻击的方块所需的所有更新,映射和移位都是不必要的。最后,将旋转位板移动生成速度与直接哈希表查找方法进行了比较。
2007-07-23 cs.DS
Space-Efficient Lock-Free Linear-Probing Hash Table
Technion, Israel(以色列理工学院);Tel-Aviv University, Israel(特拉维夫大学)
提出一种免锁线性探测哈希表,具有无等待查找,在保持空间高效的同时优雅处理并发,使用少量元数据实现线性化、免锁操作。
2026-06-17 cs.DC cs.DS
Defending Hash Tables from Subterfuge with Depth Charge
本文提出Depth Charge算法,通过基于哈希表链深度的资源燃烧机制防御拜占庭攻击者,使防御成本渐近低于攻击成本。
2023-08-08 cs.CR cs.DC cs.DS
History-Independent Concurrent Hash Tables
Technion, Israel(以色列理工学院);Stony Brook University, USA(纽约州立大学石溪分校);New York University, USA(纽约大学);Tel-Aviv University, Israel(特拉维夫大学)
本文研究了与历史无关的并发字典,特别是哈希表,建立了其空间需求的内在界限。提出了一种无锁的与历史无关的并发哈希表,基于Robin Hood哈希,每个内存单元存储两个元素和两个位,并证明了其空间效率。
2025-03-26 cs.DC cs.DS
Hash in a Flash: Hash Tables for Solid State Devices
近年来,信息检索算法已经成为从越来越大的数据集中提取重要数据的中心。硬件技术的进步已经导致闪存设备的日益广泛的使用。这些设备在访问延迟、带宽和随机访问能力方面优于传统硬盘驱动器,特别是在读取数据时。然而,在利用这些设备的高级功能时,需要考虑一些有趣的权衡。在相对规模上,向这样的设备写入可能是昂贵的。这是因为典型的闪存设备(NAND技术)是以块为单位更新的。对给定块的较小更新需要擦除整个块,然后重写该块。另一方面,顺序写入可以比随机写入快两个数量级。此外,随机写入正在降低闪存驱动器的寿命,因为每个块只能支持有限数量的擦除。TF-IDF可以使用计数哈希表来实现。通常,哈希表对于闪存驱动器是特别具有挑战性的情况,因为该数据结构固有地依赖于哈希函数的随机性,而不是数据的空间局部性。这使得难以避免在构造用于TF-IDF的计数哈希表期间引起的随机写入。在本文中,我们将研究闪存设备的哈希表的发展设计景观。我们演示了如何有效地设计一个哈希表与两个相关的哈希函数,其中一个表现出的数据放置属性相对于其他。具体来说,我们专注于三个设计的基础上,这个一般的哲学和评估它们之间的权衡沿轴的查询性能,插入和更新时间和I/O时间,通过执行的TF-IDF算法。
2012-11-19 cs.DB cs.DS cs.IR
Lock-free dynamic hash tables with open addressing
我们提出了一个有效的无锁算法的并行访问哈希表与开放寻址,这承诺更强大的性能和可靠性比传统的基于锁的实现。“无锁”意味着保证总是至少有一个进程在有限的步骤数内完成其操作。对于单处理器架构,我们的解决方案与顺序哈希表一样有效。在多处理器体系结构上,当所有处理器都具有相当的速度时也是如此。该算法允许处理器具有广泛的不同速度或停止。它可以很容易地使用C类语言实现,并且平均只需要恒定的时间来插入,删除或访问元素。该算法允许哈希表在需要时增长和收缩。无锁算法很难正确设计,即使看起来很简单。在尽可能早的阶段确保设计的正确性是任何负责任的系统开发的主要挑战。鉴于算法的复杂性,我们转向交互式定理证明器PVS进行机械支持。我们采用标准的演绎验证技术来证明我们算法的约200个不变性,并描述了如何使用定理证明器PVS实现这一点。
2004-10-27 cs.DC cs.DS
Fast Insertion for Bucketized Cuckoo Hashing
Carnegie Mellon University(卡内基梅隆大学)
研究布谷鸟哈希的快速插入问题,提出新插入过程,能将哈希表填充到接近最优阈值的负载因子,有poly(ε^-1)插入时间界和强摊销保证,传统算法无法匹配,且查询算法能大概率猜出键所在桶,提升查询效率。
2026-07-28 cs.DS
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(清华大学计算机科学与技术系)
我们提出了一种基于GPU的局部敏感哈希(LSH)算法,以加快序列模型的束搜索。我们利用赢家通吃(WTA)哈希,这是基于隐藏的维度的相对排名顺序,从而弹性的数值扰动。我们的算法设计充分考虑了CUDA支持的GPU的底层架构(算法/架构协同设计):1)并行Cuckoo哈希表用于LSH代码查找(保证O(1)查找时间); 2)候选列表在波束之间共享以最大化并行性; 3)顶部频繁字合并到候选列表中以提高性能。在4个大规模神经机器翻译模型上的实验表明,该算法在softmax模块上可以获得4倍的加速比,在GPU上可以获得2倍的整体加速比,而不会损害BLEU。
2018-06-02 cs.AI cs.CL cs.DC
Fast Concurrent Cuckoo Kick-Out Eviction Schemes for High-Density Tables
Cuckoo hashing保证了恒定时间的查找,而不管表的密度如何,这使得它成为高密度表的可行候选者。然而,Cuckoo hashing插入在高表密度下表现不佳。在本文中,我们通过引入新的踢出驱逐算法来缓解这个问题。实验上,我们的算法减少了高达10倍的因素,每次插入高密度表查看箱的数量。我们还介绍了一个乐观的并发方案,事务多作家布谷鸟哈希表(不使用硬件事务内存)。对于轻删除工作负载,我们的kick-out算法避免了插入之间的所有竞争,并显着降低了事务中止频率。使用称为声明标志的新同步机制,将此结果扩展到任意工作负载。
2016-05-17 cs.DC cs.DS
Dynamic Space Efficient Hashing
我们考虑空间有效的哈希表,它可以动态地增长和收缩,并且总是高度空间有效的,即,它们的空间消耗总是接近下限,即使在增长时并且在考虑仅临时需要的存储时也是如此。传统上使用的哈希表都不具有此属性。我们展示了如何已知的方法,如线性探测和桶布谷鸟散列可以适应这种情况下,将它们细分为许多子表或使用虚拟内存超量。然而,这些相当直接的解决方案由于以小增量频繁重新分配而遭受缓慢的摊销插入时间。我们的主要结果是DySECT({ \bf Dy} dynamic { \bf S}pace { \bf E} efficient { \bf C}uckoo { \bf T}able),它避免了这些问题。DySECT由许多子表组成,这些子表的大小会增加一倍。由此产生的子表大小的不均匀性被桶布谷鸟散列中可用的灵活性所均衡,其中每个元素可以进入多个桶,每个桶包含多个单元格。实验结果表明,DySECT系统工作良好,负载率可达98%.性能比次佳解决方案高出2.7倍。
2017-05-02 cs.DS
The Power of Two-Choice Linear Probing
Northeastern University(东北大学);Stony Brook University(石溪大学);Carnegie Mellon University(卡内基梅隆大学)
本文研究双选择线性探测哈希表,证明贪心双选择策略优于单选择,且非贪心策略可实现期望查询时间 O(log ε^{-1}),允许驱逐时可达 O(1),揭示双选择现象的威力。
2026-10-02 cs.DS
Partial-Match Queries with Random Wildcards: In Tries and Distributed Hash Tables
考虑$m$位查询$q$到位trie $T$。$*$是$q$中的未指定位,查询会询问$*=0$和$*=1$这两种情况的成员资格。这种带有通配符的部分匹配查询通常在try中发出。假设$q$中的$w$通配符均匀随机出现,$T$中遍历步骤的平均数的明显上限是$2^w m$。我们表明,平均值不超过\[ \frac{m+1}{w+1} \left( 2^{w+2} - 2 w - 4 \right) + m = O \left( \frac{2^w m}{w} \right), \],等于值正好当$T$包括所有的$m$位键作为最坏的情况。这里,查询$q$使用$T$中的朴素回溯算法执行。它类似地表明,平均值是$O \left( \frac{k^w m}{w} \right)$在一个最大出度$k$的一般trie。我们的分析尝试扩展到分布式哈希表(DHT),这是最常用的分散的数据结构在网络中。我们证明,在最大类DHT的自然概率假设下,$m$位查询$q$到带有随机$w$通配符的DHT $D$所需的平均跳数满足相同的渐进界限。因此,在四个主要的DHT Chord、Pastry、Tapestry和Kademlia中,$q$的应答是平均$O \left( \frac{2^w m}{w} \right)$跳,而不是$Θ\left( 2^w m \right)$。此外,有足够多的条目的统一的密钥分布,我们证明了…
2016-01-25 cs.DS
Tight Bounds for Classical Open Addressing
本研究提出rainbow hashing经典开放寻址哈希表,证明其时间-负载因子权衡最优,且扩展动态调整大小无额外时间成本,解决了此前三类操作同时达o(ε⁻¹)时间界的开放问题。
2024-09-17 cs.DS
The Power of Simple Tabulation Hashing
随机算法通常因其简单性而受到欢迎,但用于产生所需理论保证的散列函数通常既不简单也不实用。在这里,我们表明,最简单的列表哈希提供了意想不到的强大保证。该计划本身可以追溯到卡特和韦格曼(STOC'77)。键被视为由C字符组成。我们初始化c个表T_1,.,T_c将字符映射到随机哈希码。密钥x=(x_1,...,x_q)被散列为T_1[x_1] xor.异或T_c[x_c]。虽然这个方案甚至不是4-独立的,但我们证明了它提供了许多通常通过更高的独立性获得的保证,例如,用于估计集合交集的最小散列和布谷鸟散列。
2011-05-07 cs.DS
Fast and Powerful Hashing using Tabulation
随机算法通常因其简单性而受到欢迎,但用于产生所需概率保证的散列函数通常过于复杂而不实用。在这里,我们调查最近的结果如何简单的哈希方案的基础上制表提供意想不到的强有力的保证。简单的列表散列可以追溯到Zobrist [1970]。键被视为由$c$字符组成,我们有预先计算的字符表$h_1,...,h_c$将字符映射到随机哈希值。密钥$x=(x_1,...,x_c)$被散列为$h_1[x_1] \oplus h_2[x_2].....\oplus h_c[x_c]$。这种方案在缓存中使用字符表时非常快。虽然简单的制表甚至不是4-独立的,但它确实提供了许多通常通过更高的独立性获得的保证,例如,线性探测和布谷鸟散列。接下来我们考虑扭曲制表,其中一个输入字符以简单的方式“扭曲”。由此产生的散列函数具有强大的分布特性:Hoff-Hoeffding类型的尾部边界和非常小的最小散列偏差。这也产生了一个非常快的伪随机数生成器,它被证明适用于许多经典的随机算法和数据结构。最后,我们考虑双重制表,其中我们组成两个简单的制表函数,将一个应用于另一个的输出,并表明这在Carter和Wegman [1977]的经典框架中产生非常高的独立性。事实上,惠普,对于与所消耗的空间的大小成比例的给定大小集,双重制表给出完全随机散列。我们还提到了一些更详细的制表计划,在给定的时间和空间获得接近最佳的独立性。虽然这些制表方案都…
2017-01-03 cs.DS
Local Density Estimation in High Dimensions
在研究从数据中学习的高维向量表示时出现的一个重要问题是:给定向量集$\mathcal{D}$和查询$q$,估计指定距离阈值$q$内的点的数量。我们开发了两个估计器,LSH计数和多探针计数,使用局部敏感哈希预处理数据,以准确和有效地估计这些问题的答案,通过重要性采样。一个关键的创新是能够通过预处理数据结构和从每个哈希表中的多个桶中采样的算法来维护少量的哈希表。我们给出了我们的方案的空间要求和样本复杂度的界限,并在标准词嵌入数据集上的实验中证明了它们的有效性。
2018-09-20 cs.DS
Locality in Open Addressing Hash Tables
Tel Aviv University(特拉维夫大学)
研究开放地址哈希表的局部性参数,证明无重排算法在各负载下无法同时实现\(o(1/\varepsilon^2)\)局部性等下限,给出预先知道目标负载时的上限及负载无关贪婪方案等上限,补充了相关性能界限。
2026-07-21 cs.DS
When to Treeify Hash Table Buckets: A Reproducible C Study of List, Hybrid, and Red-Black Tree Chaining
Rambler&Co(拉姆勒公司)
该研究针对 C 语言哈希表,对比列表、混合结构、红黑树链化策略,发现混合增量转换性能更优,转换开销远超阈值选择,树化内存更高,压力测试下性能提升显著。
2026-07-30 cs.DS
MultiTable: A Faster Hash Table at any Physical Load Factor up to and Including One
提出多表哈希表,在任意负载因子下性能优于 hashbrown,吞吐量提升至2.1倍,内存节省最多22%,且无需重新哈希即可增长。
2026-10-01 cs.CR cs.DS math.CO
Fast Cosine Similarity Search in Binary Space with Angular Multi-index Hashing
University of Waterloo(滑铁卢大学)
给定一个大的数据集的二进制代码和一个二进制查询点,我们解决如何有效地找到$K$代码的数据集,产生最大的余弦相似的查询。这个问题的直接答案是将查询与数据集中的所有项进行比较,但这只适用于小数据集。一种增强搜索时间并实现次线性成本的潜在解决方案是使用填充有数据集的二进制代码的哈希表,然后查找查询的附近桶以检索最近的邻居。然而,如果代码在余弦相似性而不是汉明距离方面进行比较,则主要问题是要探测的桶的顺序不明显。为了研究这个问题,我们首先详细说明汉明距离和余弦相似性之间的联系。这样做允许我们系统地在哈希表中找到探测序列。然而,用单个表解决最近邻搜索仅对短二进制码是实用的。为了解决这个问题,我们提出了角度多索引哈希搜索算法,它依赖于建立多个哈希表的二进制代码子串。所提出的搜索算法解决了精确的角度$K$最近邻问题的时间,往往是数量级快于线性扫描基线,甚至近似方法。
2018-04-18 cs.DB cs.DS cs.IR
On the Scalability of the GPUexplore Explicit-State Model Checker
图形处理器(GPU)的使用是一种很有前途的方法,可以加速模型检验,从而在开发期间立即验证软件系统变得可行。GPUexplore是一个显式状态模型检查器,它在GPU上运行所有计算。多年来,它已扩展了各种技术,并不断研究进一步提高其性能的可能性。在本文中,我们将讨论该工具的哈希表是如何工作的,这是其功能的核心。我们提出了一个改变的哈希表,在孤立的实验似乎很有前途,并分析其效果时,集成在工具中。此外,我们调查GPUexplore目前的可扩展性,通过实验与不同大小的输入模型和运行的工具上的NVIDIA最新的GPU之一。
2017-12-27 cs.DC cs.DS
Linear Probing Revisited: Tombstones Mark the Death of Primary Clustering
线性探测于1954年首次引入,是计算机科学中最古老的数据结构之一,由于其无与伦比的数据局部性,它仍然是实践中最快的哈希表之一。然而,人们普遍认为并教导,线性探测不应在高负载因子下使用;这是因为主聚类效应导致在负载因子$1 - 1 /x$下的插入花费预期的时间$Θ(x^2)$(而不是理想的$Θ(x)$)。主聚类的危险,首先由Knuth在1963年发现,已经被教导给几代计算机科学家,并影响了许多广泛使用的哈希表的设计。我们表明,主要集群是不是一个定局。我们证明,小的设计决策,在如何删除实施插入的渐近性能有显着的影响,因此,即使一个哈希表连续运行在一个负载因子$1 - Θ(1/x)$,每次操作的预期摊销成本是$\tilde{O}(x)$。这是因为由删除创建的墓碑实际上会导致对抗主聚类的反聚类效应。我们还提出了一种新的线性探测(我们称之为墓地哈希),完全消除了主集群上的\emph{any}操作序列:如果,当一个操作被执行,当前的负载因子是$1 - 1/x$的一些$x$,那么操作的预期成本是$O(x)$。一个推论是,在数据块大小为$B$的外部内存模型中,墓地哈希提供了以下显著的保证:在任何满足$x = o(B)$的负载因子$1 - 1/x$,墓地哈希实现了每次操作的$1 + o(1)$预期块传输。过去的外部存储器哈希表只能在块大小$B$至少为$Ω(x^2)$时提供$1 + o(1)$保证。
2021-07-02 cs.DS math.CO