The Power of Choice in Priority Scheduling
考虑以下随机过程:我们给出$n$队列,递增标签的元素随机均匀插入其中。为了删除一个元素,我们随机挑选两个队列,并删除其中标签较低(优先级较高)的元素。移除的成本是被移除的标签在任何队列中仍然存在的标签中的排名,也就是说,每一步与最优选择的距离。这种策略的变体在最先进的并发优先级队列实现中很流行。然而,不知道这样的实现是否提供任何等级保证,即使在顺序模型中也是如此。我们回答这个问题,表明这种策略提供了令人惊讶的强有力的保证:虽然单一的选择过程中,我们总是插入和删除一个随机选择的队列,有降低成本,去无穷大,因为我们增加的步骤数,在两个选择过程中,预期的排名被删除的元素是PDMATHAMN,而预期的最坏情况下的成本是$O( n \log n )$。这些边界是紧的,并且与我们运行过程的步骤数量无关。这个论点是基于一个新的技术连接之间的“重载”球到箱子的过程和优先级调度。我们的分析结果启发了一个新的并发优先级队列的实现,提高了最先进的实际性能。
2017-06-13 cs.DC cs.DS
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
Scalable Concurrent Queues for GPU
Virginia Tech(弗吉尼亚理工大学);Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室)
针对GPU的SIMT执行和巨大并行性,提出三种线性化并发队列(无锁到无等待),通过波批量快速路径和64位CAS打包共享状态,实现高吞吐和有限内存。
2026-06-01 cs.DC 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
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
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
Beyond a Single Queue: Multi-Level-Multi-Queue as an Effective Design for SSSP problems on GPUs
University of Science and Technology of China(中国科学技术大学);Tsinghua University(清华大学)
本文提出多级多队列设计,通过优化GPU上的SSSP问题,实现显著的速度提升。
2026-02-10 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
I/O-Efficient Planar Range Skyline and Attrition Priority Queues
在平面范围天际线报告问题中,我们将n个2D点的集合P存储在一个结构中,使得给定查询矩形Q = [a_1,a_2] x [b_1,b_2],skyline)的数据。如果Q的边接地,则查询是3边的,从而产生两个变体:顶开(b_2 = \infty)和左开(a_1 = - \infty)查询。我们所有的结果都在外部存储器中,在O(n/B)空间预算下,对于静态和动态设置:* 对于静态P,我们给出了在O中回答top-open查询的结构(log_B n + k/B),O(loglog_B U + k/B),当宇宙为R^2,一个U × U网格,一个秩空间网格[O(n)]^2时,I/O为O(1 + k/B),(其中k是报告点的数量)。查询复杂度在所有情况下都是最优的。* 我们证明了左开的情况更难,使得任何线性大小的结构必须为查询招致Ω((n/B)^e + k/B)I/O。我们证明了这种情况与一般的4边查询一样困难,为此我们给出了一个静态结构,其最优查询成本为O((n/B)^e + k/B)。* 我们给出了一个动态结构,支持在O(log_2B^e(n/B)+ k/B^1-e)的I/O的顶开查询,和O(log_2B^e(n/B))的I/O的更新,任何e满足0 \le e \le 1。这导致了4边查询的动态结构,其最优查询成本为O((n/B)^e + k/B),摊销更新成本为O(log(n/B))。作为…
2013-06-12 cs.DS
Priority-Flood: An Optimal Depression-Filling and Watershed-Labeling Algorithm for Digital Elevation Models
洼地(或坑)是数字高程模型中的低区域,被较高的地形包围,没有通往低区域的出口。填充它们使它们水平,因为如果地形是不可渗透的,流体将填充它们,这在预处理DEM时通常是必要的。这里提出的抑郁填充算法--称为Priority-Flood--统一并改进了许多以前发表过类似算法的作者的工作。该算法通过使用优先级队列从DEM的边缘向内泛洪来确定要泛洪的下一个单元。生成的DEM没有凹陷或数字堤坝:每个单元都保证排水。该算法对整数和浮点数据都是最优的,分别在O(n)和O(nlgn)时间内工作。它表明,通过使用一个普通的队列,以填补凹陷,一旦他们被发现,可以实现O(m lg m)的时间复杂度,其中m不超过细胞的数量n。这是任何已知的浮点凹陷填充算法中最低的时间复杂度。在测试中,这种改进的算法比原来的算法快了37%。此外,一个旧的,但广泛使用的凹陷填充算法的并行版本需要六个并行处理器来实现与新算法的改进变体在单个处理器上的运行时间相当的运行时间。Priority-Flood算法易于理解和实现:包含的伪代码只有20行,包含的C++参考实现不到100行。该算法可以处理不规则网格以及4-、6-、8-和n-连通网格。它也可以适用于标记流域,并通过增量高程变化或凹陷雕刻来确定流向。在增量高程变化的情况下,该算法包括先前工作中不存在的安全检查。
2015-11-13 cs.DS