中位数算法理解的中位数

时间:2011-12-12 02:04:02

标签: algorithm computer-science complexity-theory median-of-medians

我在网上搜索并访问了wiki页面,找到了中位数算法的中位数。但似乎无法在我的问题中找到明确的陈述:

如果有一个非常大的整数列表(TB大小)并且想要以分布式方式找到该列表的中位数,那么会将列表分成不同大小的子列表(或者相等并不是真的问题),然后继续计算那些较小的子列表的中位数,然后计算这些中位数的中位数导致原始大型列表的中位数?

此外,此声明对于任何第k个统计数据也是正确的吗?我对这个领域的研究等方面感兴趣。

2 个答案:

答案 0 :(得分:12)

你的问题的答案是否定的。

如果你想了解如何在并行设置中实际选择 k 顺序统计数据(包括当然的中位数)(分布式设置当然不是真的不同),看一看在最近的这篇论文中,我提出了一种改进以前的并行选择算法的新算法:

Deterministic parallel selection algorithms on coarse-grained multicomputers

在这里,我们使用两个加权的3中位数作为枢轴,并使用五向分区围绕这些枢轴进行分区。我们还使用MPI实现并测试了算法。结果是非常好的,考虑到这是一个利用最坏情况 O (n)选择算法的确定性算法。使用随机 O (n)QuickSelect算法可提供极快的并行算法。

答案 1 :(得分:7)

  

如果有一个非常大的整数列表(TB大小)并且想要以分布式方式找到该列表的中位数,那么会将列表分成不同大小的子列表(或者相等并不是真的问题),然后继续计算那些较小的子列表的中位数,然后计算这些中位数的中位数导致原始大型列表的中位数?

没有。整个列表的实际中位数不一定是任何子列表的中位数。

中位数中位数可以为您提供一个很好的枢轴选择,因为它比实际的中位数更接近于随机选择的元素,但你必须做其余的quickselect算法来确定实际的中位数更大的清单。