双堆选择算法:高效、固有并行且略显神秘
数据结构与算法
2007-06-15 v1 计算复杂性
分布式、并行与集群计算
摘要
提出了一种固有并行的算法,用于高效执行选择操作:即在 个元素的集合中查找第 大的元素。选择是许多更复杂算法的常见组成部分,因此是一个被广泛研究的问题。所提出的双堆选择算法并无太多新意:堆数据结构源自 J.W.J. Williams,自底向上的堆构建源自 R.W. Floyd,而双堆数据结构的概念则源自 J.W.J. Williams 和 D.E. Knuth。该算法的创新仅限于少数相对次要的实现技巧:1) 两个堆的根位于划分值处,而非最小值和最大值处;2) 其中一个堆(较小值堆)的编码采用了负索引;3) 算法的交换阶段类似于自底向上的堆构建,但使用后序树遍历来导航堆。在单处理器上运行时,双堆选择算法的性能与带有中值估计的 quickselect(C.A.R. Hoare 快速排序算法的一种常见变体)具有竞争力。在并行处理器上运行时,由于其子任务易于划分且天生平衡,双堆选择算法表现更优。
引用
@article{arxiv.0706.2155,
title = {Dualheap Selection Algorithm: Efficient, Inherently Parallel and Somewhat Mysterious},
author = {Greg Sepesi},
journal= {arXiv preprint arXiv:0706.2155},
year = {2007}
}
评论
5 pages, 6 figures