如何找出动态编程的答案是否是最佳答案?

时间:2012-01-28 00:31:54

标签: algorithm dynamic-programming

我应该使用哪种算法来确定动态编程是否是最佳答案? 你能建议一些文件来帮助我找出答案吗?

3 个答案:

答案 0 :(得分:3)

对问题的动态编程方法通常会得到正确的答案 - 即找到真正的最低成本答案 - 但通常不能保证解决使用最小量的CPU或内存的问题。< / p>

在许多情况下,我们不知道我们解决问题的方法是否使用最小可能的cpu量。一个例子,动态程序是已知的更有效的方法之一,但未被证明是最有效的方法http://en.wikipedia.org/wiki/Knapsack_problem

答案 1 :(得分:2)

没有算法可以告诉您给定的动态编程解决方案是否最佳。

有关密切相关问题的研究,请参阅Halting Problem

答案 2 :(得分:0)

如果你的问题意味着:“如何正确实现我的动态编程?”您也可以通过回溯来解决问题,这很容易实现并始终提供最佳解决方案。您可以尝试对相同的小数据输入进行回溯和动态编程,如果输出相同,则可以强烈怀疑动态编程实现是否正确。 否则,动态编程总能给出最佳答案,但并非所有问题都可由DP解决,当然并非所有DP进程都可以使用相同的状态和/或同步来解决。