选择问题的时空权衡算法
1. 基本引理与定理
在只读内存中处理选择问题时,有一些重要的引理和定理。
- 引理 8 :给定只读内存中的一个包含 $n$ 个元素的列表,其中 $m$ 个为活跃元素。可以在 $O(m \lg m + n \lg m / \lg p)$ 时间内,使用 $O(p^2 \lg m / \lg p)$ 额外空间,找到列表中长度为 $2p - 2$ 的元素序列,使得每个桶中的元素数量最多为 $\lceil m / p \rceil$,其中 $p \geq 2$ 是一个整数参数。
- 证明思路 :在引理 6 的证明中,只需将活跃元素与块的分割器进行比较。但在最坏情况下,需要进行 $2n$ 次比较(与过滤器)来识别活跃元素。时间和空间的递归关系满足 $T(m) = pT(m/p) + O(n + m \lg p)$,解得时间复杂度为 $O(n \lg m / \lg p + m \lg m)$;空间需求 $S(m)$ 满足 $S(m) = S(m/p) + O(p^2)$,解得空间复杂度为 $O(p^2 \lg m / \lg p)$。在找到列表的 $2p - 2$ 个分割器后,将所有活跃元素与分割器进行比较,确定递归的桶并适当修改过滤器。由于最多有 $\lceil n / p \rceil$ 个活跃元素,选择过程可以在 $O(\lg n / \lg p)$ 次迭代内完成。
- 定理 3 :对于只读内存中的一个包含 $n$ 个元素的列表,可以使用 $O(n \lg n + n \lg^2 n / \lg^2 p)$ 时间和 $O(p^2 \lg n / \lg p)
超级会员免费看
订阅专栏 解锁全文

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



