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


11

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

该算法是:

给定长度为n的数组A:

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

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

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

Answers:


9

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

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


目标是找到时间的最大值,而不是O log nO(1)O(logn)
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.