使用多个CPU查找最大数量的最短时间

时间:2013-05-16 17:11:17

标签: algorithm sorting max

例如,假设有32个数字(未排序,范围未知)和8个CPU,每个计算每分钟一次比较。

如果只有一个CPU,则需要进行31次比较。 但是对于8个CPU,我们可以每分钟比较16个数字。

计算最大数量所需的最短时间(以分钟为单位)是多少? (我的工作时间大约是6分钟,但我认为可以在5级完成,不确定算法是如何工作的。)

3 个答案:

答案 0 :(得分:3)

1) 32 numbers -> compare 8 pairs using 8 CPUs -> 24 numbers
2) 24 numbers -> compare 8 pairs using 8 CPUs -> 16 numbers
3) 16 numbers -> compare 8 pairs using 8 CPUs -> 8 numbers
4) 8 numbers  -> compare 4 pairs using 4 CPUs -> 4 numbers
5) 4 numbers  -> compare all numbers with each other using 6 CPUs (tetrahedron)

答案 1 :(得分:2)

(编辑)的 前4个步骤很容易

  1. 比较8对(16个数字) - > 8名获胜者1
  2. 比较8对(16个数字) - > 8名获胜者2
  3. 比较8对(8-winner1 vs 8-winner2) - > 8位获奖者,
  4. 比较4对 - > 4位获奖者

    假设4个数字为a, b, c, d

  5. 比较6对(a,b)(a,c)(a,d)(b,c)(b,d)(c,d) - >最大的数字将赢得3次

答案 2 :(得分:0)

把它想象成一个NCAA Bracket,让每个核心处理游戏/分钟。投入最后4个四面体逻辑,你可以节省1分钟。