您如何判断练习是否具有动态编程解决方案?如果它有,那么你如何开发算法来解决它?

时间:2011-12-17 13:51:38

标签: logic dynamic-programming

为了通过动态编程解决,编程问题需要满足哪些条件?为了找到答案,你做了什么推理?

一旦你得出它确实有DP解决方案的结论,那么你将如何继续创建解决它的DP算法?创建此类算法背后的逻辑是什么?

1 个答案:

答案 0 :(得分:0)

问题必须满足两个条件才能通过动态编程解决。引用Introduction to Algorithms,第15章:

  

最佳子结构如果问题的最优解包含在其中的子问题的最优解。

     

当递归算法重复重复同一问题时,我们说优化问题有重叠的子问题

The Algorithm Design Manual第8章中,作者描述了通过动态编程解决问题所涉及的三个步骤:

  
      
  1. 将答案表示为递归关系或递归算法。
  2.   
  3. 显示您的重现所采用的不同参数值的数量受(希望很小的)多项式的限制。
  4.   
  5. 指定重复评估的顺序,以便在您需要时始终可以获得所需的部分结果。
  6.   

与往常一样,wikipedia包含对该主题的广泛讨论,如果您想深入挖掘。