【问题标题】:Where does the constant 5 come from in the median-of-medians algorithm?中位数算法中的常数 5 来自哪里?
【发布时间】:2013-11-10 23:26:18
【问题描述】:
我一直试图了解the Median of Medians algorithm 中“5”的来源,但似乎无法找到一个简单的描述来说明它是如何派生的以及为什么它是最佳的。
例如,为什么说 7 不是一个可行的选择?
我能看到 5 的唯一优势是它在中间的每一侧都有 2 个项目,这使得对 5 个项目的排序成为不超过 3 次交换的简单案例。
【问题讨论】:
标签:
algorithm
computation-theory
median-of-medians
【解决方案1】:
选择 5 是因为它是递归求解 O(n) 的最小值。 7 也可以,但速度较慢。
更具体地说:如果你将输入分成大小为 5 的块,你会得到这个循环:
T(n) ≤ T(n/5) + T(7n/10) + O(n)
这解决了 O(n),因为工作在每个级别都会几何衰减。
如果我们使用大小为 3 的块,我们得到
T(n) ≥ T(n/3) + T(2n/3) + O(n)
求解为 Ω(n log n)。
选择大小为 7 的块会得到
T(n) ≤ T(n / 7) + T(5n / 7) + O(n)
这也解决了 O(n),因为工作以几何方式衰减。但是,big-O 项中的常数大于 5 的情况,因为排序和取 n/7 个大小为 7 的块的中位数比排序和取 n/5 个大小为 5 的块的中位数要多。因此,五人一组的情况更常用。
希望这会有所帮助!