使用处理器在时间中找到最大值的并行算法


11

我们在课堂上介绍了一种算法,该算法可在台计算机上以时间复杂度并行查找数组中的最大值。n 2O(1)n2

该算法是:

给定长度为n的数组A:

  1. 制作一个长度为n的标志数组B,并在台计算机上将其初始化为零。n
  2. 比较每2个元素,并使用台计算机以最小值的索引在B中写入1 。n2
  3. 在台计算机的A中找到带有0的索引。n

讲师嘲笑我们可以使用计算机和时间复杂度来完成。登录nnlog⁡nlog⁡n

经过一番思考,我不知道该怎么做。任何的想法?

Answers:


9

把你的原来的数组长度的块。由每个处理器负责每个块,并使用常规算法在时间找到最大值。现在,我们需要计算长度为的数组的最大值。配对元素并计算成对最大值以将数组的大小减小一半。重复次以查找整个数组的最大值。日志n 日志n n /日志n 日志nn/log⁡nlog⁡nlog⁡nn/log⁡nlog⁡n

同样的想法还表明,对于每一个,您都可以使用计算机在恒定时间内并行计算最大值。(行使。) ε > 0n1+ϵϵ>0


目标是找到时间的最大值,而不是O (log n)O(1)O(log⁡n)
— NightRa 2014年

用自己来证明计算机数量乘以时间复杂度的的下限。Ω(n)
— Yuval Filmus 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.