每个迭代算法都可以变成动态编程吗?

时间:2013-12-13 16:07:59

标签: language-agnostic dynamic-programming

已经讨论过每个递归算法都可以转换为迭代算法。

但......可以将每个迭代算法转换为动态编程吗?

我开始学习动态编程......我遇到了很多问题..即使我能找到递归解决方案,而且我很专业地将它们转化为迭代算法,我仍然不能将这些迭代算法转化为动态编程......当然,确实知道每个迭代算法都可以转换为动态算法非常有用......

1 个答案:

答案 0 :(得分:4)

我希望通过动态编程你的意思是the same thing as Wikipedia does - 即将问题分解为更小的子问题的算法,并使用memoization来避免必须两次解决相同的问题。

动态编程无法有效地应用于所有迭代算法。要使动态编程有用,问题需要两个属性:

  1. 重叠子问题 - 当递归地解决问题时,你需要遇到相同的子问题,具有相同的参数,不止一次,否则记忆是浪费时间和内存。
  2. 最佳子结构 - 知道如果你有子问题的解决方案,整个问题的解决方案很容易计算。