algorithm - 使用并行处理器运行时哪种算法最好?

标签 algorithm divide-and-conquer

如果我有一台带有多个处理器的机器并试图解决一个巨大的问题,哪种算法最适合解决这个问题?

动态规划,贪心算法还是分而治之算法?

最佳答案

这是一个非常广泛的问题,很多事情都取决于您要解决的具体问题,但您要寻找的是算法是否可以并行运行其步骤。只有当一个步骤的结果不依赖于另一步骤的结果时,才能这样做。

  • 我们不能在这里谈论贪心算法。他们仅被定义为采取本地最好的下一步。
  • 分而治之将问题分成不同的部分,每个部分都可以单独解决,因此这通常是并行运行事物的好选择。
  • 动态编程可以被视为一种分而治之的方法,但现在,您正在解决问题的一小部分,然后用它来解决更大的部分,依此类推。例如,背包问题经常被用作动态规划的用例。您可以从一个非常小的背包开始解决问题,然后从那里构建您的解决方案。这里的问题是每个解决方案都取决于较小问题的解决方案。除非各个步骤可以在线程之间划分,否则无法并行化。

所以一般来说,分而治之似乎是并行运行事物的最佳选择。

关于algorithm - 使用并行处理器运行时哪种算法最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236049/

相关文章:

algorithm - 文本搜索算法

algorithm - 返回错误输出的最大和子数组

java - 使用归并排序对数组索引进行排序

algorithm - 在平面上找到 3 个最近的点

algorithm - 如果基本情况不是在恒定运行时而是在多项式运行时运行,那么主定理是否适用?

algorithm - 平方矩阵和运行时间

python - 无法实现计数排序算法

algorithm - PostScript 的读取字符串 : Is there a more efficient way to parse lines?

c++ - 在堆数据结构中环绕问题

algorithm - 更快地构建直方图