前N个允许重复的分布式数据算法

时间:2019-06-11 18:03:45

标签: algorithm parallel-processing language-agnostic distributed-computing

前N个和前N个之间的差异允许重复:

input: 1, 9, 7, 9, 5, 10, 7
top 3: 10, 9, 9
top 3 allow duplicates: 10, 9, 9, 7, 7 

前N个分布式算法很直观。所有机器都运行前N个算法,一个机器将所有结果同时获取并运行前N个算法。

machine A: 1,9, 
machine B: 9, 5,10, 7, 7

step 1: each machine runs top 3
machine A: 9, 1
machine B: 10, 9, 7

step 2: machine C get all results and runs top N 
input to machine C: 9, 1, 10, 9, 7
run top 3 again: 10, 9, 9

每台机器上运行的前N个算法可以使用堆来实现,时间复杂度为O(MlogN)(M =输入行数)

前N名允许重复的人可以应用类似的分发算法,但是我不知道如何证明这一点。我想不出一个反例。

machine A: 1,9
machine B: 9, 5,10, 7, 7

step 1: each machine runs top 3 allow duplicates
machine A: 9, 1
machine B: 10, 9, 7, 7

step 2: machine C get all results and runs top N allow duplicates 
input to machine C: 9, 1, 10, 9, 7, 7
run top 3 again: 10, 9, 9,7,7

前N个允许每台机器上重复运行的操作可以使用堆+映射(以进行重复操作)实现,并且时间复杂度也将为O(MlogN)(M =输入行数)

如何证明这是正确的?还是有什么反例来证明其不正确?

0 个答案:

没有答案