只读数组中选择问题的时空权衡改进算法
在数据处理和基于比较的计算复杂度问题中,在全序集中查找给定排名的元素,如中位数,是一个基础且被广泛研究的问题。当数据存储在只读数组中时,由于数据不能在数组内移动,这就带来了有趣的时空权衡问题。接下来,我们将介绍一些新的算法,这些算法在不同的额外存储空间条件下,能更高效地解决这个问题。
问题背景与已有研究
在只读数组中查找给定排名元素的问题,在实际应用中具有重要意义,例如在 CD - ROM 数据库中,数据库可能按某个键排序,但我们可能需要按其他键选择特定排名的项目。
早期,Munro 和 Paterson 首先考虑了选择问题的时空权衡,他们设计的算法假设对输入进行顺序访问,以输入的遍历次数作为时间度量。后来,Frederickson 在随机访问模型下研究该问题,以比较次数衡量成本,并改进了一些上界。目前,当可用额外空间 $s$ 为 $\Omega(\lg^2 n)$ 时,最佳上界是 $O(n \lg n / \lg s + n \lg^* s)$。Munro 和 Raman 研究了可用额外单元非常少($O(\lg n)$)的情况,他们的算法在使用 $1 \leq s \leq O(\sqrt{\frac{\lg n}{\lg \lg n}})$ 个额外存储位置时,进行 $O(2^s s! n^{1 + 1/s})$ 次比较。在中间范围,已知的最佳算法复杂度为 $O(n^2 / s)$,而该问题已知的唯一下界是 $\Omega(n \lg n / \lg s)$。
使用 $\Theta(\lg n)$ 空间的选择算法
设 $A$ 是只读内存中包含 $n$ 个键的数组,我们要在其中找到第 $k$ 小的元
超级会员免费看
订阅专栏 解锁全文
1007

被折叠的 条评论
为什么被折叠?



