动态编程:概念

时间:2015-11-06 10:53:19

标签: algorithm time-complexity dynamic-programming

判断对错:

  

使用动态编程可以解决的任何问题都有一个多项式时间相对于其输入大小的最坏情况时间复杂度。

是否存在非多项式的DP解决方案?

谢谢。

2 个答案:

答案 0 :(得分:2)

Knapsack problem有一个动态编程算法,最坏情况复杂度为O(Wn),其中W是背包的容量,n是数字的项目。这样的运行时界限被称为伪多项式(作为在实例中编码的值)并且不能被视为输入大小中的多项式。所以,简短回答:错误。

此外,原来的问题制定有点误导;运行时复杂性是指特定的算法,而不是问题本身。

答案 1 :(得分:0)

有很多。上面的例子是一个。另一个流行的例子是旅行商问题的动态编程解决方案,该问题在O(n2 ^ n)时间内运行。请注意,与动态编程解决方案相比,Travel Salesman的强力解决方案需要O(n!)时间。