动态规划与分治方法相似,都是通过组合子问题的解来求解原问题。分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。在这种情况下,分治算法会做许多不必要的工作,它会反复地求解那些公共子子问题。而动态规划算法对每个子子问题只求解一次,将其解保存在一个表格中,从而无需每次求解一个子子问题时都重新计算,避免了这种不必要的计算工作。
虽然动态规划算法对每个子子问题只求解一次,但某些子问题在对求解最优解的过程中并无影响,从而不必去求解这类子问题。这里,可以使用备忘录法。
大体思想是:先将每个子问题设为一特定值(如∞)。在求解最优解过程中,当要用到某个子子问题的解时,再去对其进行求解。这种方法可以避免对所有子问题都进行求解,从一定程度上节省了时间开销。
动态规划之备忘录法
原文作者:递归与分治算法
原文地址: https://blog.csdn.net/Thare_Lam/article/details/49643337
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/Thare_Lam/article/details/49643337
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。