我在网上搜索并访问了wiki页面,找到了中位数算法的中位数。但似乎无法在我的问题中找到明确的陈述:
如果有一个非常大的整数列表(TB大小)并且想要以分布式方式找到该列表的中位数,那么会将列表分成不同大小的子列表(或者相等并不是真的问题),然后继续计算那些较小的子列表的中位数,然后计算这些中位数的中位数导致原始大型列表的中位数?
此外,此声明对于任何第k个统计数据也是正确的吗?我对这个领域的研究等方面感兴趣。
答案 0 :(得分:12)
你的问题的答案是否定的。
如果你想了解如何在并行设置中实际选择 k 顺序统计数据(包括当然的中位数)(分布式设置当然不是真的不同),看一看在最近的这篇论文中,我提出了一种改进以前的并行选择算法的新算法:
Deterministic parallel selection algorithms on coarse-grained multicomputers
在这里,我们使用两个加权的3中位数作为枢轴,并使用五向分区围绕这些枢轴进行分区。我们还使用MPI实现并测试了算法。结果是非常好的,考虑到这是一个利用最坏情况 O (n)选择算法的确定性算法。使用随机 O (n)QuickSelect算法可提供极快的并行算法。
答案 1 :(得分:7)
如果有一个非常大的整数列表(TB大小)并且想要以分布式方式找到该列表的中位数,那么会将列表分成不同大小的子列表(或者相等并不是真的问题),然后继续计算那些较小的子列表的中位数,然后计算这些中位数的中位数导致原始大型列表的中位数?
没有。整个列表的实际中位数不一定是任何子列表的中位数。
中位数中位数可以为您提供一个很好的枢轴选择,因为它比实际的中位数更接近于随机选择的元素,但你必须做其余的quickselect算法来确定实际的中位数更大的清单。