动态规划与分治方法相似,都是通过组合子问题的解来求解原问题。分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。在这种情况下,分治算法会做许多不必要的工作,它会反复地求解那些公共子子问题。而动态规划算法对每个子子问题只求解一次,将其解保存在一个表格中,从而无需每次求解一个子子问题时都重新计算,避免了这种不必要的计算工作。
虽然动态规划算法对每个子子问题只求解一次,但某些子问题在对求解最优解的过程中并无影响,从而不必去求解这类子问题。这里,可以使用备忘录法。
大体思想是:先将每个子问题设为一特定值(如∞)。在求解最优解过程中,当要用到某个子子问题的解时,再去对其进行求解。这种方法可以避免对所有子问题都进行求解,从一定程度上节省了时间开销。
动态规划之备忘录法
最新推荐文章于 2022-06-07 21:00:54 发布