Concurrent Double-Ended Priority Queues
本文首次提出并发双端优先队列实现,通过组合两个单消费者优先队列并引入锁合并方案,在保持无锁性和线性化特性的同时支持多消费者并发操作。
2025-08-18 cs.DS
The Lock-free $k$-LSM Relaxed Priority Queue
优先级队列是数据结构,其以有序的方式存储密钥以允许对最小(最大)密钥的有效访问。优先级队列对于许多应用是必不可少的,例如,Dijkstra的单源最短路径算法、分支定界算法和优先排序算法。高效的多处理器计算需要实现基本的数据结构,这些数据结构可以并发使用,并可以扩展到大量的线程和内核。无锁数据结构通过避免阻塞同步原语保证了卓越的可伸缩性,但\emph{delete-min}操作是并发优先级队列中固有的可伸缩性瓶颈。最近的工作集中于通过简化操作或通过放宽对\emph{delete-min}操作的要求来减轻这一障碍。我们提出了一个新的,无锁的优先级队列,放宽了\emph{delete-min}的操作,使它可以删除\emph{any}的$ρ+1$最小的键,其中$ρ$是一个运行时可配置的参数。此外,对于由同一线程添加和移除的项,该行为与非松弛优先级队列相同。优先级队列是以类似于日志结构的合并树的方式从对数数量的排序数组中构建的。我们实验比较我们的优先级队列最近的国家的最先进的无锁优先级队列,无论是放松和非放松的语义,表现出高性能和良好的可扩展性,我们的方法。
2015-03-19 cs.DS
Engineering MultiQueues: Fast Relaxed Concurrent Priority Queues
针对并行环境中经典优先队列的吞吐量瓶颈问题,提出基于多内部顺序队列的MultiQueue松弛并发优先队列方法,通过缓冲、批量操作和缓存优化提升可扩展性,实验表明其在多基准测试中优于竞品,且可灵活平衡吞吐量与质量。
2025-04-15 cs.DC cs.DS cs.PF
Retroactive Monotonic Priority Queues via Range Searching
Institute of Computing - UFAM(UFAM计算研究所)
本文研究了回溯单调优先队列,证明其最小值查找是范围搜索问题的特例,并设计出时间空间复杂度与标准优先队列相同的回溯单调优先队列。
2026-04-14 cs.CG cs.DS
Multiresolution Priority Queues
优先级队列是许多高性能计算(HPC)应用程序所必需的容器数据结构。在本文中,我们介绍了多分辨率优先级队列,一个数据结构,提高了性能的标准堆为基础的实现,通过权衡了可控量的分辨率在空间的优先级。新的数据结构可以将插入元素的最坏情况性能从O(log(n))降低到O(log(r)),其中n是队列中的元素的数量,r是优先级空间中的解析组的数量。最坏的情况下,删除顶部元素的代价是O(1)。当表中的元素数量很大时,插入一个元素的摊销成本变为O(1)。
2017-08-10 cs.DS
Strictly Implicit Priority Queues: On the Number of Moves and Worst-Case Time
Williams(1964)的二进制堆是一个简单的优先级队列,其特征在于只存储一个包含元素和元素数$n$的数组-这里表示严格隐式优先级队列。我们引入了两个新的严格隐式优先级队列。第一种结构支持摊销的$O(1)$时间插入和$O(\log n)$时间提取最小值操作,其中两个操作都需要摊销的$O(1)$元素移动。以前没有任何具有$O(1)$时间的隐式堆插入支持具有$O(1)$移动的这两个操作。第二个结构支持最坏情况的$O(1)$时间插入和$O(\log n)$时间(和移动)提取最小值操作。以前的结果要么被摊销,要么在操作之间需要$O(\log n)$位的附加状态信息。
2015-05-01 cs.DS
Priority Queues with Multiple Time Fingers
提出了一个优先级队列,它支持在最坏情况下的常数时间内插入和查找min,在最坏情况下的O(lg(min{w_x,q_x}+2))时间内删除和删除min,其中w_x(q_x)分别是在x之后(x之前)插入并在删除x时仍然存在的元素数.我们的优先级队列则同时具有工作集和非工作集属性,并且在最坏情况下更强地满足这些属性。我们还定义了一个新的分布敏感的属性-时间指针属性,它封装和推广的工作集和优先级属性,并提出了一个优先级队列,满足此属性。此外,我们证明了一个强的含义,工作集属性是等价的统一界(这是最小的静态手指,静态最优性,和工作集界之间的操作)。后一个结果本身就具有极大的意义,因为自从Sleater和Tarjan [JACM 1985]引入这样的边界以来,它一直没有被注意到。因此,我们的优先级队列满足其他分布敏感的属性,静态手指,静态最优性,和统一的界限。
2010-09-28 cs.DS
Exploring Monotone Priority Queues for Dijkstra Optimization
本文全面概述了单调优先队列在Dijkstra等最短路径算法中的演进与应用,探讨了源自Dial算法的多级桶和基数堆等关键数据结构,并分析了其理论复杂度与实际考量。
2024-10-16 cs.DS
Worst-Case Optimal Priority Queues via Extended Regular Counters
我们考虑的经典问题,表示下的操作\Findmin{},\Insert{},\Decrease{},\Meld{},\Delete{},和\Deletemin{}的优先级队列的集合。在基于比较的模型中,如果要在恒定时间内支持前四个操作,则最后两个操作必须至少花费对数时间。Brodal证明了他的最坏情况有效优先级队列达到了这些最坏情况的界限。不幸的是,这个数据结构被涉及并且时间界限隐藏了大的常数。我们描述了一个新的变种的最坏情况下的有效的优先级队列,依赖于扩展的定期计数器,并提供了相同的渐近时间和空间界限的原始。由于常规计数器上的操作和所有其他操作在概念上是分离的,因此我们的数据结构更简单,更易于描述和理解。此外,时间和空间边界中的常数较小。此外,我们给出了我们的结构上的指针机器上的实现。对于我们的指针机器实现,\Decrease{}和\Meld{}是渐进较慢的,需要$O(\lg\lg{n})$最坏情况的时间,其中$n$表示存储在结果优先级队列中的元素的数量。
2011-12-05 cs.DS
A Faster External Memory Priority Queue with DecreaseKeys
优先级队列是一种基本的数据结构,它维护一组动态的(键,优先级)对,并支持插入、删除、提取最小值和减少键操作。在外部存储器模型中,当前最佳优先级队列支持摊销$O(\frac{1}{B}\log \frac{N}{B})$ I/O中的每个操作。如果不需要支持DecreaseKey操作,则可以设计支持Insert的更有效的数据结构,最近的一个结果表明,通过证明$O(\frac{1}{B}\log \frac{N}{B}/ \log \frac{M}{B})$ I/O的下界,性能下降是不可避免的。具有DecreaseKeys的优先级队列的OS。在本文中,我们提出了一个新的优先级队列,它支持DecreaseKey操作,并具有预期的摊销I/O复杂度为$O(\frac{1}{B}\log \frac{N}{B}/\log\log N)$,从而缩小了下限和上限之间的差距。我们的研究结果在十多年来首次改进了DecreaseKeys的外部存储器优先级队列,并给出了最快的外部存储器单源最短路径算法。
2018-06-20 cs.DB cs.DS
DecreaseKeys are Expensive for External Memory Priority Queues
外部存储器数据结构中最大的公开问题之一是DecreaseKey操作的优先级队列问题。如果仅需要支持插入和提取最小值操作,则可以设计基于比较的优先级队列,其在一系列$N$操作上执行$O((N/B)\lg_{M/B} N)$ I/O,其中$B$是以字数表示的磁盘块大小,而$M$是以字数表示的主存储器大小。这与基于比较的排序的下限相匹配,因此对于基于比较的优先级队列是最佳的。但是,如果我们还需要支持DecreaseKeys,那么最知名的优先级队列的性能仅为$O((N/B) \lg_2 N)$ I/O。最大的问题是是否真的有必要降低性能。我们肯定地回答这个问题,证明了一个下界的$Ω((N/B) \lg_{\lg N} B)$ I/O处理一个序列的$N$混合插入,ExtraxMin和DecreaseKey操作。我们的下界证明了在细胞探测模型,因此也适用于非比较为基础的优先级队列。
2016-11-03 cs.CC cs.DS
A Bulk-Parallel Priority Queue in External Memory with STXXL
我们提出了一个大容量并行外部存储器优先级队列的设计和实现,以利用共享存储器的并行性和高外部存储器传输速度并行磁盘。为了通过解耦项插入和提取来实现更高的性能,我们提供了两个并行化接口:一个使用“批量”序列,另一个通过定义“限制”项。在设计中,我们讨论了如何使用多个堆并行插入,以及如何计算一个动态预测序列来预取块和应用并行多路合并提取。我们的实验结果表明,在选定的基准的优先级队列达到75%的旋转磁盘和65%的固态硬盘的全并行I/O带宽,或在外部存储器中的排序速度时,由计算限制。
2015-04-02 cs.DS
Adaptive Cache-Friendly Priority Queue: Enhancing Heap-Tree Efficiency for Modern Computing
提出一种自适应缓存友好的优先队列,通过三个可调参数在缓存友好性与CPU指令数间权衡优化堆树结构,显著减少缓存未命中并提升性能,且支持动态增长与自动参数搜索。
2023-11-24 cs.DS
PIPQ: Strict Insert-Optimized Concurrent Priority Queue
PIPQ提出一种以插入并行性为核心的严格可线性化并发优先队列,通过工作层与领导层两级结构加速插入操作,在插入主导负载下显著优于现有方案。
2025-08-22 cs.DS
Priority Queue Based on Multilevel Prefix Tree
树结构是非常常用的数据结构。在有序树中有许多变种,它们的基本操作如插入、删除、搜索、删除-min都具有对数时间复杂度。在这篇文章中,我将介绍一个结构,它的时间复杂度为$O(\frac{M}{K} + K)$,其中M是数据类型的大小,K是适当匹配数据类型大小的常数。适当匹配的K将使结构作为一个非常有效的优先级队列。结构大小线性地取决于元素的数量和大小。PTrie巧妙地结合了前缀树Trie的思想、插入和删除操作的对数时间复杂度结构、双向链表和队列。
2007-08-21 cs.DS
Learning-Augmented Priority Queues
ENSAE, Ecole polytechnique(法国国立统计与经济行政学校、巴黎综合理工学院);University of Oxford(牛津大学)
本文探讨了在学习增强框架下优先队列的设计,通过利用可能不准确的预测来提升最坏情况性能,考察了三种预测模型并证明了所提解决方案的最优性。
2024-11-17 cs.AI cs.DS cs.LG
A rearrangement step with potential uses in priority queues
基于链接的数据结构,例如链表和二叉搜索树,具有许多公知的重排步骤,允许插入、删除和其他操作的有效实现。我们描述了一个重排原语设计的基于链接的,堆排序的优先级队列中的比较模型,如那些类似于斐波那契堆或二项式堆。在其最基本的形式中,原语重新排列堆有序的完美二叉树的集合。这样做提供了一种数据结构,可以控制这样一个集合中涉及的树的数量,特别是保持这个数量在元素数量上是对数。重排步骤是免费的摊销复杂性的观点(使用适当的潜在功能)。
2012-03-01 cs.DS
On Solving Floating Point SSSP Using an Integer Priority Queue
我们解决单源最短路径规划问题(SSSP)的情况下,浮点边的权重。我们展示了如何基于任何整数的Dijkstra解决方案,依赖于一个单调的整数优先级队列,以创建一个完整的顺序在路径长度,以解决整数SSSP可以被用作一个预言解决浮点SSSP与积极的边缘权重(浮点P-SSSP)。浮点P-SSSP是机器人社区特别感兴趣的。这立即为浮点P-SSSP产生了一些更快的运行时间;例如,${O({m + n\log \log \frac{C}δ})}$,其中$C$是图中最大的权重,而$δ$是图中最小的边权重。它还确保了整数SSSP的许多未来进步将转移到浮点P-SSSP。
2016-06-02 cs.DS
An Empirical Study of Cache-Oblivious Priority Queues and their Application to the Shortest Path Problem
近年来,外部存储器计算的Cache-Oblivious模型为海量数据集上的算法分析提供了一个有吸引力的理论基础。在发现渐近最优或接近最优的算法方面已经取得了很大的进展。然而,迄今为止,成功的实验研究仍然相对较少。在本文中,我们比较了两种不同的基于漏斗和桶堆的Cache-Oblivious优先级队列,并将它们应用于具有正边权重的图上的单源最短路径问题。我们的研究结果表明,当RAM是有限的,数据交换到外部存储,缓存不经意的优先级队列实现了数量级的加速比标准的内部存储器技术。然而,对于模拟和真实世界的图形数据上的单源最短路径问题,由于访问图形邻接列表本身所需的时间,这些加速比明显较低。
2008-02-07 cs.DS cs.SE
A parallel priority queue with fast updates for GPU architectures
提出一种面向GPU的并行桶堆数据结构,支持快速批量更新,用于高效解决大直径图的单源最短路径问题,在NVIDIA GPU上比现有最先进实现快达5.4倍。
2023-05-12 cs.DC cs.DS
The Logarithmic Funnel Heap: An Efficient Priority Queue For Extremely Large Sets
提出 Logarithmic Funnel Heap 索引优先队列,支持完整优先级操作,insert/delete/decrease 期望 O(log* n),空堆构造与空间均为 O(n),适用于超大规模图分析与化学模拟。
2023-12-06 cs.DM cs.DS
Streaming Complexity of Checking Priority Queues
本文的工作是在设计有效的检查器来测试一些大规模数据结构的可靠性。给定对这样的结构的插入/提取操作的顺序存取,人们想要仅后验地决定它是否对应于可靠结构的演化。在大量数据的上下文中,人们希望最小化检查器的可靠内存量和操作序列上的传递次数。Chu、Kannan和McGregor发起了在这种情况下检查优先级队列的研究。他们表明,使用时间戳允许检查一个优先级队列与一个单一的通行证和内存空间O(N^(1/2)),直到一个多对数因子。后来,Chakrabarti,Cormode,Kondapally和McGregor删除了时间戳的使用,并证明了更多的通行证没有帮助。我们表明,即使在时间戳的存在下,更多的通行证没有帮助,解决了以前开放的问题。另一方面,我们证明了第二遍,但在相反的方向,将内存空间缩小到O((log N)^2),扩展了Magniez,Mathieu和Nayak第一次观察到的现象,用于检查带括号的表达式。
2012-09-22 cs.CC cs.DS
Relaxed Schedulers Can Efficiently Parallelize Iterative Algorithms
在理解迭代顺序算法固有的并行性方面已经取得了重大进展:对于许多经典算法,现在已经很好地理解了依赖结构的深度,并且已经开发了调度技术来利用这种浅层依赖结构进行高效的并行实现。一个相关的应用研究链已经研究了一些方法,通过这些方法,某些迭代的基于任务的算法可以通过放松的并发优先级排序器有效地并行化。这些允许在插入和删除任务时实现高并发性,但由于调度程序的语义宽松,因此会以执行多余的工作为代价。在这项工作中,我们采取了统一这两个研究方向的一步,通过显示,存在一个家庭的放松优先级排序,可以有效地和确定性地执行经典的迭代算法,如贪婪的最大独立集(MIS)和匹配。我们的主要结果表明,给定一个随机调度程序与预期的松弛因子$k$在任务上的最大允许的优先级反转,和$n$顶点上的任何图形,调度程序是能够执行贪婪的MIS,只有一个附加因子的聚($k$)预期额外的迭代相比,一个确切的(但不可扩展)调度程序。这个反直觉的结果表明,在计算MIS时,松弛的开销不依赖于输入图的输入大小或结构。实验结果表明,由于高度可扩展的调度器,这种开销可以明显抵消性能的增益。总之,我们提出了一个有效的方法来确定性并行化迭代顺序算法,可证明的运行时间保证方面的执行任务完成的数量。
2018-08-13 cs.DS
Oblivious Sorting and Queues
本文提出了确定性的不经意LIFO(Stack)、FIFO、双端和双端优先级队列以及不经意归并排序和快速排序算法。我们的技术和思想包括端到端连接队列,多个数组的大小平衡,一个数组的多个多级分区。我们的队列是第一个在不改变数据结构(由参数控制)的情况下实现pop和push操作的队列。这使得有趣的应用程序在计算加密数据,如隐藏机密表达式。合并排序成为实际使用我们的后进先出队列,即。在所有实际相关队列大小的比较方面,它将先前的工作(STOC '14)改进了(超过)1000倍。我们是第一个提出双端(优先级)和后进先出队列以及遗忘快速排序,这是渐近最优的。除了理论分析,我们还提供了所有队列的经验评估。
2016-12-10 cs.DS
A Back-to-Basics Empirical Study of Priority Queues
理论界最近提出了几种新的堆变体,但这些变体在很大程度上尚未经过实验测试。我们把这个领域带回到绘图板上,只使用标准的、众所周知的优化来直接实现经典和新颖的结构。我们研究了每个结构在各种输入上的行为,包括人工工作负载,在真实地图数据上运行算法产生的工作负载,以及最近系统网络研究中使用的离散事件模拟器的工作负载。我们提供的意见,哪些特点是最相关的性能。例如,我们发现L1缓存未命中率似乎与挂钟时间密切相关。我们还提供了有关输入序列如何影响不同堆变体的相对性能的观察结果。例如,我们表明(理论上和实践中),某些随机插入-缺失序列是简并的,可能导致误导性的结果。总的来说,我们的研究结果表明,虽然传统智慧在某些情况下成立,但在其他情况下却大错特错。
2014-03-02 cs.DS
Cache-Oblivious Priority Queues with Decrease-Key and Applications to Graph Algorithms
我们提出了优先级队列中的缓存无关外部存储器模型与块大小$B$和主存储器大小$M$,支持$N$元素,操作\textsc{UPDATE}(\textsc{INSERT}和\textsc{DECREASEKEY}的组合)在$O \left(\frac{1}{B}\log_{\fracλ{B}} \frac{N}{B}\right)$分期I/O和操作\textsc{EXTRACT-MIN}和\textsc{DELETE}在$O \left(\lceil \frac{λ^{\varepsilon}}{B} \log_{\fracλ{B}} \frac{N}{B} \rceil \log_{\fracλ{B}} \frac{N}{B}\right)$分期I/O,使用$O \left(\frac{N}{B}\log_{\fracλ{B}} \frac{N}{B}\right)$块,为用户定义的参数$λ\in [2, N ]$和任何真正的$\varepsilon \in (0,1)$。我们的结果改进了以前的I/O高效缓存无关和缓存感知优先级队列[Chowdhury和Ramachandran,TALG 2018],[Brodal等人,SWAT 2004],[Kumar和Schwabe,SPDP 1996],[Arge等人,SICOMP 2007],[Fadel等人,TCS 1999]。我们还提出了缓…
2020-08-04 cs.DS
Optimal Offline ORAM with Perfect Security via Simple Oblivious Priority Queues
该研究提出一种具有完美安全性的简单不经意优先级队列构造,首次实现了最优的离线ORAM,还给出了缓存感知与缓存无关场景下的高效外存实例及对应I/O复杂度。
2024-12-13 cs.CR cs.DS
Selectable Heaps and Optimal Lazy Search Trees
我们证明了有效优先队列的$O(\log n)$时间提取最小函数可以推广到$O(k \log(n/k))$时间内$k$最小元素的提取(我们定义$\log(x)$为$\max(\log_2(x), 1)$ .),我们证明最优的比较为基础的优先级队列与$o(\log n)$时间插入。我们展示了堆排序树选择(Kaplan等人,SOSA '19)可以分别在$O(k \log(n/k))$摊销时间和最坏情况时间下应用于经典Fibonacci堆和Brodal队列的堆序树。我们还显示了删除$k$元素或选择而不提取可以在两个堆上执行,也是在$O(k \log(n/k))$时间。令人惊讶的是,所有的操作都是可能的,而不需要修改原始的Fibonacci堆和Brodal队列数据结构。然后,我们将结果应用于惰性搜索树(Sandlund & Wild,FOCS '20),创建一个基于可选堆的新间隔数据结构。这给出了最佳的$O(B+n)$时间惰性搜索树性能,将插入间隙$Δ_i$的复杂度从$O(\log(n/|Δ_i|) + \log \log n)$时间降低到$O(\log(n/|Δ_i|))$时间。当用作优先级队列以及其它情况时,也可以进行$O(1)$时间合并操作。如果使用Brodal队列,则可以使惰性搜索树的所有运行时都是最坏情况。
2022-01-10 cs.DS
A Grouped Sorting Queue Supporting Dynamic Updates for Timer Management in High-Speed Network Interface Cards
School of Microelectronics, Xidian University(西安电子科技大学微电子学院);State Key Laboratory of Integrated Service Networks, Xidian University(西安电子科技大学综合业务网理论及关键技术国家重点实验室)
本文提出两种新型优先队列操作——更新和分组排序,用于实现硬件定时管理。通过一维脉冲阵列和移位寄存器的混合架构,设计了一种支持更新操作的硬件优先队列,提高了定时精度和效率。
2026-01-14 cs.DS cs.NI
Tight Analysis of Priority Queuing Policy for Egress Traffic
近年来,交换机和路由器的性能评估问题已被转化为在线问题,并取得了大量的成果。在本文中,我们专注于管理传出数据包(称为{ \em出口流量})的交换机,支持服务质量(QoS),并分析了性能的最基本的调度策略之一{ \em优先级优先级}($PQ$)使用竞争分析。我们制定的问题,管理出口队列如下:输出接口配备了$m$队列,其中每个队列有一个缓冲区的大小$B$。数据包的大小为单位,每个缓冲区可以同时存储多达个$B$数据包。每个分组与$m$优先级值$α_{j}$($1 \leq j \leq m$)中的一个相关联,其中$α_{1} \leq α_{2} \leq \cdots \leq α_{m}$、$α_{1} = 1$和$α_{m} = α$,并且在线算法的任务是在每个调度步骤中选择$m$队列中的一个。这个问题的目的是最大化调度数据包的值之和。对于任何$B$和任何$m$,我们证明了$PQ$的竞争比正好是$2 - \min_{x \in [1, m-1] } \{ \frac{ α_{x+1} }{ \sum_{j = 1}^{x+1} α_{j} } \}$ .也就是说,我们使用最差情况分析对$PQ$的性能进行了全面分析。此外,我们表明,没有确定性的在线算法可以有一个竞争比小于$1 + \frac{ α^3 + α^2 + α}{ α^4 + 4 α^3 + 3 α^2 + 4 α+ 1 …
2014-08-30 cs.DS
A Simple yet Exact Analysis of the MultiQueue
本文通过识别底层马尔可夫链稳定分布,精确分析 MultiQueue 的长期秩误差,得到期望为 5/6n−1+1/(6n),并推广至 c 个随机队列取最优的删除方案。
2025-02-19 cs.DS