如果我的机器有多个处理器并试图解决一个大问题,哪种算法最适合解决这个问题?
动态编程,贪婪还是分而治之算法?
答案 0 :(得分:1)
这是一个非常广泛的问题,许多事情将取决于您尝试解决的具体问题,但您正在寻找的是算法是否可以并行执行其步骤。只有当一步的结果不依赖于另一步的结果时才能这样做。
所以一般来说,分而治之似乎是并行运行的最佳选择。
答案 1 :(得分:0)
动态编程使用数组,必须在线程之间进行同步,这些线程正在搜索各个解决方案。
贪婪是一种单线程。可以做多线程,但不是一个巨大的优势imo。无论如何,你可以用一个线程池来拍摄最好的5场比赛...这将是最容易实现的。
分而治之是一种递归。如果你要生成一个新线程仍然需要同步,但它可以清楚地利用多个处理器。我认为这将是实现多线程的第二种更简单的方法。
问题的本质,你需要解决它将决定你应该使用哪种编程方法,而不是处理器核心数。
请考虑在线程之间切换上下文的时间成本!