【问题标题】:Dynamic Programming vs Greedy Approach? [closed]动态编程与贪婪方法? [关闭]
【发布时间】:2023-04-03 23:42:01
【问题描述】:

我看到人们倾向于 DP 方法而不是贪婪方法,因为它可以解决优化问题。大家觉得哪一个更可取呢?我需要收集有利于与我的伙伴争论的更好技术的论据。哈哈。好的,DP用于解决具有最优子结构和最优性原理的问题。但是DP比贪婪的方法更好吗?

【问题讨论】:

    标签: algorithm dynamic-programming greedy


    【解决方案1】:

    不知道你要解决什么问题,你的问题毫无意义。

    动态编程是一种工具。它对于解决某一类问题很有用。

    贪心算法是另一种工具。它们在其他情况下也很有用。

    这就像问“哪个更好 - 锤子或锯子”?

    The answer will be very different depending on what you are trying to do.
    

    【讨论】:

    • Hmmm.. 表示两者都有各自的用途,具体取决于问题的性质。感谢您的澄清 sdtom。
    【解决方案2】:

    让我们选择Coin change example。如果您采用贪婪方法,大多数时候您可能无法得到正确的结果,但如果您采用 DP 方法,您将始终得到正确的结果。事实上,解决问题的唯一方法就是使用DP。

    要回答您的问题,请忘记最优性,但使用 Greedy 您可能一开始就无法针对某些类型的问题获得正确的解决方案。

    【讨论】:

    • 认真的吗? “如果你想得到错误的答案,就使用贪婪”比无用的建议更糟糕。 Greedy 为您提供近似答案,DP 是获得准确答案的众多方法之一。你需要哪一个完全取决于你,程序员;不准确的答案可以解决很多问题,因为无论如何程序很少能完美地模拟现实世界。
    • 我没有这么说,但如果您想这样解释,请继续。顺便说一句,贪婪并不总是为您提供大致的答案。它为某些类型的问题提供了准确的答案。
    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多