所有可以用贪心法解决的问题都可以用动态规划来解决吗

Y M*_*Y M 2 algorithm

如果问题的最优解可以通过贪心获得,那么是否也可以通过动态规划获得呢?既然贪心和dp都是在处理子问题的最优解,那么是否可以说dp可以解决所有贪心可以解决的问题呢?

dev*_*kit 5

比较 Greedy 和 DP 就像比较橙子和苹果一样。但一个简单的思考方法是

贪婪方法:选择您认为现在最佳的任何内容,并假设从长远来看它是最佳的。
例如,当您开车时看到一条道路交通拥堵,您可能会选择另一条看起来空荡荡的道路。这可能有效,但替代道路可能会在拐角处出现更严重的交通拥堵。

另一方面,动态编程使用内存来存储您之前完成的计算/结果,以在下次需要时节省时间。再次使用上述问题,DP 解决方案将计算每条道路上的交通量,然后选择提供最佳(最佳)时间的道路。

从这个意义上说,DP 更像是一种分而治之的方法,但具有记忆性。您不必一次又一次地计算子问题的结果。

并回答你的问题

可以肯定地说dp可以解决所有可以用贪心法解决的问题吗

我认为可以肯定地说 dp 可以解决分而治之可以解决的所有问题(尽管可能需要更多内存)

在我能想到的所有例子中,DP 可以为可以通过贪婪最优解决的问题提供最优解决方案(尽管 DP 可能需要指数时间,并且几乎在每种情况下 DP 都会占用更多内存)。