您能指出一些动态编程问题陈述吗,自下而上比自上而下更有利? (即简单的DP更自然地工作,但是难以实现备忘录吗?)
我发现通过回忆进行递归要容易得多,并且想解决自下而上是更好/也许唯一可行的方法的问题。
我了解理论上两者都是等效的,因此即使是易于实现的事情也可以算作是受益。
最佳答案
根据手头的问题,您将应用自下而上的备忘录或自上而下的递归备忘录。
例如,如果必须找到路径图的最小权重无关路径,则将使用自下而上的方法来解决所有可能的子问题。
但是,如果必须解决背包问题,则可能需要使用自上而下的递归自记忆,因为必须解决有限数量的子问题。自下而上地处理背包问题将导致算法解决许多在原始子问题中未使用的冗余问题。
关于dynamic-programming - 动态编程:自上而下与自下而上的比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13731612/