动态规划选讲 JLU – WNJXYK 2018年8月5日.

Slides:



Advertisements
Similar presentations
模板的使用 教育学 江西教育学院教育系 冯芳 2012 - 10. 第二章 教育学的产生和发展 第一节 教育学的研究对象和任务 第二节 教育学的产生与发展 第三节 学习教育学的意义与方法.
Advertisements

用 藥 安 全 用 藥 安 全 護 理 師 張 嘉 芬. 前 言 前 言 正確用藥的方法 藥袋上的秘辛 為了減少重大疾病或是醫療處理、 用藥不當的相關事件發生。
阿尔伯特亲王 阿尔伯特亲王纪念碑 维多利亚女王夫妇 维多利亚女王一家 建造水晶宫 水晶宫初建时的照片.
《公路纵断面设计》 —— 纵断面设计的要求 道桥系 二○○七年五月. 纵断面设计的一般要求 1 .纵坡设计必须满足《公路工程技术标准》中的各项规定。 2 .为保证汽车能以一定的车速安全舒顺地行驶,纵坡应具有 — 定 的平顺性,起伏不宜过大及过于频繁。尽量避免采用极限纵坡 值.缓和坡段应自然地配合地形设置,在连续采用极限长度的.
梦想启航 ——大学生活与职业规划专题讲座.
河北保定外国语学校 高三家长会.
拉伸和收缩包装技术 1. 简 介 2. 主要特点 3. 常见收缩包装设备 4. 常见拉伸包装设备.
第13讲 世界现代化模式的调整 与创新——不同社会制度的探索.
窦娥冤 关汉卿 感天动地 元·关汉卿.
600年前,鄭和率領世界上最強大的艦隊,浩浩蕩蕩的駛入印度洋,展開一場「文化帝國」的海上大秀。
小规模纳税申报培训 广东省国家税务局 2016年6月.
以信息化带动教育现代化,打造教育的“南山质量”
我国政府受人民的监督 2.4.2权利的行使:需要监督 阜宁县东沟中学政治组 缪志玉.
× 第一课 神奇的货币 第二框 信用卡、支票和外汇 一、信用卡与支票 1、两种结算方式:P8-1 (1)现金结算: (2)转帐结算:
个体税收征管政策讲解 浏阳市地方税务局.
赤壁賦—蘇軾 游麗芳老師製作.
封面 2015易驾考最新分享: 科目二考试方法秘诀 文章来源:易驾考官网.
单元二 走向高峰的中华文明 ——秦汉至宋元时期
基于行业的 企业技术创新信息保障体系研究 刘 华 博士 中国科学技术信息研究所.
政府採購法規概要 報告人:杜國正 行政院公共工程委員會企劃處.
第四讲 1949—1991年的中苏关系 及其经验教训.
文化在继承中发展 温十五中.
关于高中地理高考复习的几点建议 北京教育科学研究院 北京市教育学会 钟作慈 2012年3月12日.
“鼠标加水泥”的百货公司——武汉中百 朱巧巧 陆嘉怡 田泽宇.
合理控制索道游客流量 确保景区可持续发展 云南丽江玉龙雪山索道 陈加林 二0一五年十一月.
水 钟 古代计时器 陈宁心.
千里挑一的“征途” ——浅谈中国“国考”热.
知其不可而为之.
中国画家协会理事、安徽省美术家协会会员、 工艺美术师、黄山市邮协常务理事余承平主讲
研修4组 学习简报(第3期) 主编:左文玲 2015年2月7日.
之 魔 析 妖 鬼 解 怪 大 沈家仪小组出品.
潘集小学英语班 学习简报(第5期) 主编:吴婷 2016年2月28日.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
与领导、下级、同事的 沟通技巧.
潜能宇宙平衡法则 ——启动11.11天地人合新生命工程(分类系统) 凛然智慧(北京)教育咨询有限公司.
失眠的饮食及调理 北京国济中医院
中餐烹調實習Ⅲ 第九章中國菜系介紹 林可薇 製作.
新高考研究介绍 湖北省教育考试院项目研究组.
如东中专 学校文化课现状及提升举措的思考
汉字的构造.
诵读欣赏 古代诗词三首.
第3讲 时间管理.
续班指导.
高等教育出版社 工作汇报 化学化工分社 翟怡.
******班班级学习简报(第*期) 主编:*** ****年**月**日.
采购控制程序 2008年9月.
第九章 长期资产及摊销 2017/3/21.
单位:十堰离退休职工服务中心 时间:2016年2月1日
关注经济发展.
第18课 新时期的理论探索 课程标准: 概述邓小平理论的主要内容,认识其对建设中国特色社会主义的指导意义。
中国家电企业如何打造全球化品牌 黄 辉.
四川信托-汇誉10号集合资金信托计划.
《现代大学 英语》 说课程 公共课部 臧朝晖 益阳医学高等专科学校.
保大人还是保小孩 ---产房里的伦理学问题 小组成员 蔡婷 基础医学系 郭灵飞 基础医学系
超星尔雅 tsk.erya100.chaoxing.com 网络通识课程学习指导.
中药学 第十一章 祛风湿药.
形势与政策 2016年上.
幼儿园班务管理实践.
中 医 内 科 学 第一章 第一节 感冒.
中共江西省委党史研究室 从井冈山斗争中汲取信念的力量 沈谦芳 (江西省委党史研究室主任,博士、教授)
撑支长篙 向语用题深处漫溯 ——2016年高考语文全国Ⅰ卷“语言 文字运用”备考解析 舒城千人桥中学 杜晓丽
贴近教学 服务师生 方便老师.
六年级 语文 下册 第四单元 指尖的世界.
第二单元 古代希腊罗马和近代 西方的政治制度.
(浙教版)四年级品德与社会下册 共同生活的世界 第四单元 世界之窗 第二课时.
赤壁賦—蘇軾 游麗芳老師製作.
網路遊戲版 幸福農場168號.
Xián 伯 牙 绝 弦 安徽淮南市八公山区第二小学 陈燕朵.
ACM 程序设计 计算机学院 刘春英 2019/5/23.
滿分的見証 (播道會恩福堂聖經學院校歌) 曲: 吳秉堅 詞: 梁沃厚
Presentation transcript:

动态规划选讲 JLU – WNJXYK 2018年8月5日

动态规划介绍 Introduction

动态规划 动态规划是针对于一类求最优解问题的算法,其核心是将一个问题 分解为形式相似若干子问题,通过不断利用子问题的最优决策求得 较高级问题的决策,最后求的原问题的最优觉得。 举一个例子,爬楼梯问题:面对一段有𝑁级台阶的楼梯,一次可以 跨{1,2,3}级台阶,问爬上第𝑁级有多少种不同的方法。 形式相似的问题:面对一段有𝑥(1≤𝑥≤𝑛),相同要求的方案数为 𝐷𝑃[𝑥]。 利用决策求得较高级决策:𝐷𝑃[𝑥]=𝐷𝑃[𝑥−1]+𝐷𝑃[𝑥−2]+𝐷𝑃[𝑥 −3]。

DP问题的三个要素 具有相同子问题:问题能够分解出几个子问题,并且能够 通过这些子问题的答案来解决这个原问题。 具有相同子问题:问题能够分解出几个子问题,并且能够 通过这些子问题的答案来解决这个原问题。 满足最优化原理(最优子结构) :一个最优决策的子决策也 是最优的。 无后效性:每一个问题的决策,不能够对解决其它未来的 问题产生影响。往往通过设计状态表示来消除决策的后效 性。

解题步骤 确定子问题 确定问题的状态表示 推导状态转移方程 优化状态表示与状态转移 确定初始状态与边界条件 实现!

如何学习动态规划 熟悉经典动态规划模型 了解动态规划类型 递推、树形、状态压缩、插头 了解相关动态规划优化 不断练习提升技能熟练度,努力提升人类智慧

经典动态规划例题 Classical Dynamic Programming Problem

子问题:从数塔的第i层第𝑗个元素走到数塔的底层的最大数字和是多少。(那么原问题即为从数塔的第1层第1个元素走到数塔的底层所能获得的最大数字和是多少) 状态表示:𝐷𝑃[𝑖][𝑗]表示从数塔的第𝑖层第𝑗个元素走到数塔的底层的最大数字和是多少。 状态转移方程:𝐷𝑃 𝑖 𝑗 = max 𝐷𝑃 𝑖+1 𝑗 , 𝐷𝑃 𝑖+1 𝑗+1 max 𝐷𝑃 𝑖+1 𝑗 , 𝐷𝑃 𝑖+1 𝑗+1 + 𝑛𝑢𝑚𝑏𝑒𝑟 𝑖 𝑗 。 每位置只访问一次,故时间复杂度为:𝑂( 𝑛 2 )。复杂度合理,无需优化。 数塔问题 给定一个𝑁层的数塔,公有 𝑁× 𝑁+1 2 个元素。 试问,从数塔的顶层走到数 塔的底层,每次只能走相邻 节点,所能达到的最大数字 和是多少。 http://acm.hdu.edu.cn/showproblem.php?pid=2084

最长上升子序列 子问题:从第一个元素到第𝑝个元素的序 列的最长上升子序列长度是多少。(当𝑝 =𝑛时,子问题变为原问题) 状态表示:𝐷𝑃[𝑥]表示从第一个元素到第x 个元素的最长上升子序列的大小。 状态转移方程 𝐷𝑃 𝑥 = 1+ max 1≤𝑖<𝑥, 𝑛𝑢𝑚 𝑖 <𝑛𝑢𝑚[𝑥] 𝐷𝑃[𝑖 ] 时间复杂度:𝑂( 𝑛 2 ) 给定一个长度为𝑛的序列 𝑎 1 , 𝑎 2 , …, 𝑎 𝑛 ,现在要求一 个子序列 𝑎 𝑃 1 , 𝑎 𝑝 2 , …, 𝑎 𝑝 𝑘 , 使得 𝑎 𝑃 1 < 𝑎 𝑝 2 < …< 𝑎 𝑝 𝑘 且 𝑝 1 < 𝑝 2 <…< 𝑝 𝑘 。 试问最大的𝑘是多少。 http://acm.hdu.edu.cn/showproblem.php?pid=1950

采药问题 有𝑇秒时间,𝑁个任务。 每个任务花费 𝑡 𝑖 时间, 获得 𝑣 𝑖 的收益,问合理 利用时间的最大收益是 多少。 子问题:有𝑡的时间,完成前𝑛个任 务中的若干个的最大收益是多少。 状态表示:𝐷𝑃[𝑛][𝑡]表示使用不超 过𝑡的时间,完成前𝑛个任务中的若 干个所能获得的最大收益。 状态转移方程: 𝐷𝑃[𝑛+1][𝑡]=𝐷𝑃[𝑛][𝑡− 𝑡 𝑖 ]+ 𝑣 𝑖 时间复杂度:𝑂(𝑁𝑇) https://vijos.org/p/1104 采药问题 有𝑇秒时间,𝑁个任务。 每个任务花费 𝑡 𝑖 时间, 获得 𝑣 𝑖 的收益,问合理 利用时间的最大收益是 多少。

最长公共子序列 给定两个长度分别为 𝑛,𝑚的字符串𝐴, 𝐵,问 这两个字符串的最长 公共子序列的长度是 多少。 子问题:两个字符串的前缀 𝐴 1…𝑝 , 𝐵 1…𝑞 的 最长公共子串长度是多少。 状态表示:DP[p][q]表示两个字符串的前 缀 𝐴 1…𝑝 , 𝐵 1…𝑞 的最长公共子串长度。 状态转移方程: 𝐷𝑃[𝑖][𝑗]=max⁡{𝐷𝑃[𝑖−1][𝑗], 𝐷𝑃[𝑖][𝑗 −1], 𝐷𝑃[𝑖−1][𝑗−1] + [𝐴[𝑖]==𝐵[𝑗]]} 时间复杂度:𝑂(𝑛𝑚) http://www.joyoi.cn/problem/tyvj-1050 给定两个长度分别为 𝑛,𝑚的字符串𝐴, 𝐵,问 这两个字符串的最长 公共子序列的长度是 多少。 例如: abccd与aecd的 最长公共子序列为acd, 长度为3

区间动态规划

区间动态规划特点 原问题是询问一个区间上的某种最优决策。 某个区间的最优值可以由几个子区间的最优值合 并得到。 某个区间的最优值可以由几个子区间的最优值合 并得到。 区间可以不断地划分一直到划分为一个单点区间, 可以立即获得答案,然后我们就可以通过枚举一 个区间如何分解成子区间合并他们的最优值,然 后自下而上合并区间最优决策进行动态规划。 区间动态规划特点

石子合并 子问题:将这𝑁堆石子中第𝑖堆到第𝑗堆合并的最小代价 是多少(原问题即为将N堆石子中第1堆到第𝑁堆合并的 最小代价是多少) 状态表示:𝐷𝑃[𝑖][𝑗]表示将这𝑁堆石子中第𝑖堆到第𝑗堆合 并的最小代价。 状态转移方程: 𝐷𝑃 𝑖 𝑗 = min 𝑖≤𝑘≤𝑗 (𝐷𝑃 𝑖 𝑘 +𝐷𝑃[𝑘][𝑗]) + 𝑆𝑈𝑀 𝑖 𝑗 时间复杂度:𝑂 𝑛 3 https://vjudge.net/problem/CSU-1592 有排成一排的𝑁堆石子,现要 将石子有序的合并成一堆,规 定如下:每次只能移动相邻的 2堆石子合并,合并花费为新 合成的一堆石子的数量。求将 这𝑁堆石子合并成一堆的总花 费最小。

石子合并 Input 4 5 1 2 3 4 3 5 2 1 4 Output 19 33 DP[1 ,2]=3 DP[1 ,2]=8

区间动态规划一般代码

树形动态规划

树形动态规划基本概念 如果出现这样的问题:给一棵树,要求以最少的代价(或取得最大收益)完成给定的 操作。考虑使用 树形动态规划。 如果出现这样的问题:给一棵树,要求以最少的代价(或取得最大收益)完成给定的 操作。考虑使用 树形动态规划。 1. 确立状态: 几乎所以的问题都要保存以某结点为根的子树的情况,但是要根据 具体问题考虑是否要加维,加几维,如何加维。 2. 状态转移: 状态转移的变化比较多,要根据具体问题具体分析。 3. 算法实现: 由于树的结构,使用记忆化搜索比较容易实现。   由于模型建立在树上,即为树型动态规划,顾名思义,树型 动态规划就是在“树”的数据结构上的动态规划。 树型动态规划是建立在树上的,一般有两个方向: 1. 根---> 叶: 既根传递有用的信息给子节点,完后根得出最优解的过程。 2. 叶---> 根: 既根的子节点传递有用的信息给根,完后根得出最优解的过程。

树上距离 Input Output 5 3 2 1 1 2 3 2 1 4 3 1 4 5 1 1 给定一颗带权树,求每一个结 点到其最远结点的距离是多少。

数位动态规划

数位动态规划概念 有这样一类问题:求给定区间中,满足给定条件的某个 D 进制数或此 类数的数量。 所求的限定条件往往与数位有关,例如数位之和、指定数码个数、 数的大小顺序分组等等。题目给定的区间往往很大,无法采用朴素 的方法求解。此时,我们就需要利用数位的性质,设计 log(n) 级别 复杂度的算法。解决这类问题最基本的思想就是“逐位确定”的方法。 1. 状态确定:我们需要根据题目的要求合理地确定能够完整 表示数位 信息的状态 2. 状态转移:枚举每一位,用记忆化搜索来实现动态规划的过程。

状态压缩动态规划

状态压缩动态规划 一些题目,它们具有 DP 问题的特性,但是状态中所包含的 信息过 多,如果要用数组来保存状态的话需要四维以上的数组。 于是,我 们就需要通过状态压缩来保存状态,而使用状态压缩来 保存状态的 DP 就叫做状态压缩 DP。 我们可以把我们需要的若干信息压入一个 int 内部,通常的状态压缩 DP 是将若干了 01 状态压缩 状态压缩 DP 的特点:状态中的某一维会比较小,一般不会超过 15, 多了的话状态数会急剧上升而无法压缩,一般来说需要状态压缩的 也就是这一维。

前置技能:位运算 (x>>i)&1 去x的第i位 x|(1<<i) 给x第i为设置为1 (x|(1<<j))^(1<<j) 将x的第i位设置为0 x&-x 获得x的lowbit __builtin_popcount(x) x中1的个数 __builtin_ctz(x) x中最后一个1后面有多少0

动态规划优化

各种玄学优化方法 线段树查询最值优化 DP http://acm.hdu.edu.cn/showproblem.php?pid=5324 朴素 DP 方程:𝐷𝑃[𝑖]=max⁡{𝐷𝑃[𝑗]+1},𝑗 <𝑖,𝐿𝑗 ≥𝐿𝑖,𝑅𝑗 ≤𝑅𝑖 受限于题目的形式,这题必须使用 CDQ 分治消除一维无序 影响 + 线段树快速查 找最值 当然如果在某些限制条件少的题目里,这样的形式在某些情 况下还可以用 单调队列优化成 O(n) 线段树合并优化 DP http://codeforces.com/contest/750/problem/E 有一个长度为 n 的数字串,给你 q 个询问,每个询问 [l,r], 问这个区间内的字符 串,经过多少次变换可以使其只存在 2017 的子序列,不存在 2016 的子序列。 DP 转移方法符合卷积过程,使用 FFT+CDQ 分治将 O(N2)DP 优化到 O(nLogn)

Coda Thanks