27、只读数组中选择问题的时空权衡改进算法

只读数组中选择问题的时空权衡改进算法

在数据处理和基于比较的计算复杂度问题中,在全序集中查找给定排名的元素,如中位数,是一个基础且被广泛研究的问题。当数据存储在只读数组中时,由于数据不能在数组内移动,这就带来了有趣的时空权衡问题。接下来,我们将介绍一些新的算法,这些算法在不同的额外存储空间条件下,能更高效地解决这个问题。

问题背景与已有研究

在只读数组中查找给定排名元素的问题,在实际应用中具有重要意义,例如在 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$ 小的元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值