Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 使用多个CPU查找最大数量的最短时间_Algorithm_Sorting_Max - Fatal编程技术网

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

Algorithm 使用多个CPU查找最大数量的最短时间,algorithm,sorting,max,Algorithm,Sorting,Max,例如,假设有32个数字(未排序,范围未知)和8个CPU,每个CPU每分钟计算一次比较 如果只有一个CPU,那么需要进行31次比较。 但是有了8个CPU,我们每分钟可以比较16个数字 计算最大数量所需的最小时间(分钟)是多少? (我的计算结果是6分钟左右,但我认为可以在5分钟内完成,不确定算法是如何工作的。)把它想象成一个NCAA括号,让每个核心每分钟处理一场比赛。在最后4分钟加入四面体逻辑,你就节省了1分钟。(编辑) 前4步很简单 比较8对(16个数字)->8个winners1 比较8对(16个

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

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

计算最大数量所需的最小时间(分钟)是多少?
(我的计算结果是6分钟左右,但我认为可以在5分钟内完成,不确定算法是如何工作的。)

把它想象成一个NCAA括号,让每个核心每分钟处理一场比赛。在最后4分钟加入四面体逻辑,你就节省了1分钟。

(编辑) 前4步很简单

  • 比较8对(16个数字)->8个winners1
  • 比较8对(16个数字)->8个winners2
  • 比较8对(8个赢家1对8个赢家2)->8个赢家
  • 比较4对->4个优胜者

    假设4个数字是
    a、b、c、d

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

  • 我们是否可以假设有一个中央程序,在获得之前的比较结果后,立即决定将哪些比较委托给8个CPU?或者8个CPU都必须完全完成它们的指令集,然后我们才能聚合和输出答案吗?这是一个缓慢的CPU:)@torquestomp CPU必须完成它们的比较。假设这是一个简单的系统;b=d=f=h=2。有四个赢家。我假设所有数字都是唯一的,但这四个赢家案例是一个特殊案例,在第5步中我们只有两个赢家。即使有唯一的条目,您也有四个赢家(
    20,21,22,23
    ),这似乎是正确的。这让我想起;-)当我第一次读到他的答案时,我实际上并没有得到答案,所以我开始思考自己:p由于在第4步中有4个CPU被浪费,您可能会随机选取不同对的附加值进行比较,如果这些值在各自对中达到最大值,则不需要第5步就可以知道结果。
    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)