例如,假设有 32 个数字(未排序,范围未知)和 8 个 CPU,每个 CPU 每分钟计算一次比较。
如果只有一个 CPU,则需要进行 31 次比较。但是使用 8 个 CPU,我们每分钟可以比较 16 个数字。
计算最大数量所需的最少时间(以分钟为单位)是多少?(我计算出来大约需要 6 分钟,但我认为可以在 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)
(已编辑)第 4 步很简单
比较 4 对 -> 4 个获胜者
可以说4个数字是a, b, c, d
把它想象成一个 NCAA Bracket,你让每个核心每分钟处理一场比赛。加上最后 4 个的四面体逻辑,你可以节省 1 分钟。