首先清楚什么是算法,算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
动态规划是什么:
动态规划是一种先从结果出发一步步推到开始,然后计算的时候从开始计算。动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。
什么时候用动态规划:
有最有子结构和重叠子问题的时候。
动态规划解题步骤:
(1)找出最优解的性质,并刻画其结构特征
(2)递归地定义最优解的值。
(3)以自底向上的方式计算出最优值
示例:
0-1背包问题思维导图,依次列出存在不存在的情况