NOIP--搜索与动态规划-动态规划知识点分析

1.      概论:

 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。动态规划不是一种具体的算法,而是对解最优化问题的一种途径、一种方法。常见的动态规划有线性动态规划、区域动态规划、树型动态规划、背包问题等。        

2.      知识点梳理:

2.1 基本模型        

动态规划是解决一个多阶段决策过程的最优化问题的常用算法。所谓多阶段决策过程,指的是这样一类特殊过程,过程可以按照一定的顺序分解成若干个相互联系的阶段,在每一个阶段都需要作出决策。全部过程的决策是一个决策序列。而动态规划,就是解决这类过程的最优化问题。利用动态规划解决的多阶段决策过程,必须要有最优子结构特点。即对于一个最优的决策序列,其子序列也是最优的。

2.2  基本思想        

动态规划算法的基本思想是:将带求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解中得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,避免重复求解。该思想与记忆化搜索类似,即将计算步骤中的过程保存下来,避免重复运算。

2.3  基本步骤        

动态规划算法求解的基本步骤如下:

(1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。在划分阶段时,注意划分后的阶段一定要是有序的或者是可排序的,否则问题就无法求解。

(2)确定状态和状态变量:注意状态必须满足无后效性。

(3)确定决策:找到子问题是进行动态规划的重要一步。动态规划和递推更多应考虑本问题由哪些已解决子问题构成,而不是考虑本问题对将来哪些问题有贡献。(4)确定边界条件,写出状态转移方程。

(5)代码编程

2.4  常见动态规划类型       

 线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等

区域动规:石子合并,加分二叉树,统计单词个数等

树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等

背包问题:01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题等

2.5  动态规划的优化        

在NOIP中,动态规划很少需要优化。唯一较为常见的优化方式为“状态压缩”。由于动态规划实质上是一种以时间换空间的解题方式,因此,在空间复杂度上要非常注意。“状态压缩”根据题意找到一个更好的存储状态,避免朴素算法的空间复杂度过大。最经典的例子是NOIP2005中的题目“过河”。

 

NOIP信息学视频地址

视频地址

链接:https://pan.baidu.com/s/1tHo1DFMaDuMZAemNH60dmw 
提取码:7jgr

 

posted @ 2020-10-23 10:31  tianli3151  阅读(307)  评论(0)    收藏  举报