动态规划入门讲解.ppt

上传人:xt****7 文档编号:5359813 上传时间:2020-01-27 格式:PPT 页数:31 大小:1.50MB
返回 下载 相关 举报
动态规划入门讲解.ppt_第1页
第1页 / 共31页
动态规划入门讲解.ppt_第2页
第2页 / 共31页
动态规划入门讲解.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
动态规划入门讲解 by张惜今 引入 我们用一个简单的例子来让大家了解什么是动态规划 灵梦的灵符 博丽灵梦是东方幻想乡中博丽神社的巫女 她跟幻想乡中最老资格的妖怪八云紫一起维护着隔绝幻想乡与现实世界的大结界 维护现实世界不被幻想乡中的妖怪侵害 幻想乡中的生物也可以自由自在的维持古老的生活方式 但不幸的是 每隔六十年 结界会有一次大异变 为了维护结界的完整 博丽灵梦必须将灵力注入灵符 让灵力以最好的方式游走来修复结界 灵梦的灵符是一个三角形 由一堆数字组成 每个数字表示灵力经过这个位置获得的修复值 三角形共n层 第i层有i个数字 从上方的最尖端注入灵力 灵力只能前往前位置的左下方或者右下方 最终走的下面的边的某个位置释放 问灵梦最多可以获得多少修复值 灵梦的灵符 USACO1 5 1 最容易想到的方法 回溯法 我们可以列举每一条可能的路线 分别累加比较每条路线的修复值进行比较 取得最大的一条作为答案 我们先不引入时间复杂度的计算 来用一个n较小的例子手工计算我们需要做的计算量 为什么会计算那么多次呢 因为这个算法有天然呆的属性 多次经过同一个点 太健忘了 到这个点为止的最大和其实已经算出来了 而回溯法在每次回溯时会重复计算 这样要计算多少次 我们先不引入时间复杂度的计算 来用一个n较小的例子手工计算我们需要做的计算量 n 4 共有2 4 1 8条路线每条两次加法和一次比较 共24次计算 但是如果n 100呢 n 1000呢 指数级的运算量将会飞快增长 无法接受 换一种方法 取当前和较大的一种路线记录下来 往下走的时候直接用这个数跟下面点的修复值相加 每一层都看做一个这样的问题 也就是到当前位置可以获得的最大值 依次类推 原问题答案 到最下面某个位置 也就是最后一层子问题的 当前位置 的最大修复值 这就是传说中的 动态规划 这样的计算次数 进行1次比较和1次加法 1 4 4 2 1 9个点共计算18次 虽然只少了6次 但n增长时与n 2成正比的计算量就可以接受了 动态规划的定义 动态规划是 运筹学的一个分支解决策过程最优化的数学方法把多阶段过程转化为一系列单阶段问题 动态规划 求解可以划分阶段的最优化问题的方法 效率高局限性必须可以划分阶段并满足几个条件指数级 多项式级 动态规划的适用条件 不是一个纯理论的知识看出来这个题题是考用动态规划求解感性的认识 1 最优子结构 当前取得了最优值 那么直接用这个值来参与计算后面的状态能使后面的也最优只要比较取一个值最优的保存 2 无后效性 当前作出决策只会影响后面的状态前面的决策的影响都在状态中被包含了顺序 3 重叠子问题 也就是有前所述的那种重复计算的减少 动态规划才能减少算法的运行时间 动态规划的要素 阶段状态决策 阶段 每个状态属于一个阶段有了前后关系保证最优子结构和无后效性比较明显 是前提也是一种特征比如 时间的前后 灵梦的灵符那种层次关系 状态 动态规划时操作的对象表示我们解到了哪一个子问题1维或者多维所属的阶段 一些相关信息 决策 是前面阶段的状态向后面的状态转移的操作是决策把各个阶段的状态依次求出 动态规划的求解模式和程序实现 划分阶段设计状态确定决策写出转移写出方程和边界递推 看作递推方程 用循环依次递推出每一个状态记忆化搜索 按搜索的方式写 但是对于已经搜索过的状态直接返回最优值 不再次搜索 按照方程的形态大致分类的几个例题 线性选择背包问题区间DPTreeDP 空的裂解原子核 POJ1887 灵乌路空有着特别姿态的鸦 左足是 分解之足 右足是 融合之足 还有制御两者的右手 第三足 她以这三足操控著究极的能源 空居住在地灵殿在无聊的时候经常控制原子核进行核裂解来练习自己的能力 她捕捉到了N个原子核 控制每个原子核进行裂解会获得Ci的能量值 她可以依次挑选一个序列进行裂变 不必连续 但是由于她能力的特殊性 她用来裂解的原子核的能量只能越来越低 否则会导致控制失败而造成核反应制御不能的后果 但是空是一个低智力的笨蛋 她想让你帮忙计算她最多可以控制几个原子核进行裂变 分析 经典的LIS模型 也就是线性选择型的DP阶段 按顺序处理到哪一个原子核状态 f i 表示处理到第i个 且选取第i个的最大序列长度决策 上一个原子核是哪一个 逆推 方程f i max f j 11 j if 1 1 帕秋莉的图书 POJ3624 帕秋莉诺蕾姬是幻想乡中红魔馆的图书馆管理员 管理着图书馆中10万本魔法书 她总是试图整理这些图书 把质量好的放在一个专门的书架上 这个专用书架承受的最大重量是M 总共有N本候选图书 编号1 n 每本有一个重量和知识值Wi和Ki 她想知道 在书架不会超过承重的情况下 图书的知识值最大 分析 阶段 物品随意排列 以做决定到了哪个物品作为阶段状态 f i j 表示处理到第i个物品 已经使用重量j得到的最大知识值决策与转移 决策就是对每个物品是否取用 分别转移 取较大的 方程 f i j max f i 1 j f i 1 j Wi Ki 1 i n0 j M后面部分要求Wi jf 0 0 萃香的的西瓜 伊吹萃香是被赶到幻想乡的鬼 位列鬼族四天王之一 据传为 怪力乱神 四天王中怪的代表 虽然看上去是一个少女 但其实已活了几百年 她有操纵密和疏的能力 可以任意合并和分解周围的东西 幻想乡的夏天的一天 萃香得到了N堆西瓜 她想把这些西瓜合并成一堆 每次只能合并相邻的两堆 合并的代价为这两堆西瓜的数量之和 合并后与这两堆西瓜相邻的西瓜将和新堆相邻 合并时由于选择的顺序不同 合并的总代价也不相同 找出一种合理的方法 使总的代价最小 分析 阶段 顺序排列的西瓜堆将随着合并逐渐减少从i到j的长为j i 1的区间可以认为是阶段状态 f i j 表示从i到j合并完成后的最小代价决策和转移 决策就是应该从区间选哪个点分别合并两边 也就是最后一次合并的位置 从i到J 1选一个位置分开合并方程 f i j min f i k f k 1 j sum i k sum k 1 j i k jf i i 0 美铃的看守方案 POJ1463 红美铃是一个来自中国的妖精 因为她会一些中国功夫 所以被红魔馆招募做看门人 红魔馆从外面看上去并不是很大 但是由女仆长咲夜控制时间和空间造成的混乱 馆里面空间很大不容易看守 红魔馆内部的建筑房间和道路可以简化成一棵无根树 也就是有N个房间 N 1条路连接这N个房间 并且没有环路 如果美铃在一个房间设置一个监控点 它就可以看守住与这个房间相邻的所有路 她想知道最少设置多少个看守点就能看住所有路 分析 状态 f t 0 1 表示对于t号节点 0表示在这个点上设置 看住子树的最数 1表示不在这个点设置 看着子树的最小数决策 设置在这个点或不设置在这个点 如果设置 对子节点设置或不设置取较小的来求和 最后再 1 如果不设置 则对子节点设置来求和 原因 方程 f t 0 sum min f j 1 f j 0 1f t 1 sum f j 0 j是t的子节点如果i是叶子节点 f i 0 1f i 1 0 其他 可行性计数自动机上的DP贪心DP集合DP多进程DP 好题推荐 CDOJ1503USACO2 3 4POJ3691CDOJ1510 小结 动态规划一般是想起来不容易写起来简单需要很多题目的练习来找到感觉动态规划是很优美的 YM各位神犇 谢谢 mfs6174
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!