动态规划算法的局限性

时间:2012-01-21 13:26:55

标签: algorithm dynamic-programming

在探索了这个question之后,我开始意识到动态编程算法不能用于解决knapsack problem非整数约束的类似问题。我对自己的认识是对的吗?动态编程算法还有其他限制吗?

2 个答案:

答案 0 :(得分:2)

基本上你可以说可能的分数(解决方案质量)需要有限且足够低以适应内存。非整数通常意味着非离散,并导致无限可能的解决方案得分。

如果只有N个可能的解决方案得分,你知道你最多需要找到N个才能得到最好的解决方案得分,而不是整个指数的方法来获得它们。这就是动态编程背后的理念。

答案 1 :(得分:1)

我认为另一个限制是,不知道动态编程是否是最好的可用技术,因为它的性能不知道是否与信息理论下界相匹配。

以下是an example problem from David Eppstein

  

给定n个实数的排序列表,找到最小的间隔   包含正好k个元素,对于1和n之间的所有k值。   有一种简单的动态编程算法可以解决这个问题   二次时间的问题,但最着名的下限是   线性的。要么描述更快的算法,要么证明更低的算法   绑定在一些合理的计算模型中。 (“动态编程”   不是一个合理的计算模型!!)