书签 分享 收藏 举报 版权申诉 / 75
上传文档赚钱

类型动态规划专题讲义解读课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5182894
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:75
  • 大小:702.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《动态规划专题讲义解读课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    动态 规划 专题 讲义 解读 课件
    资源描述:

    1、动态规划专题讲义解读动态规划专题讲义解读|本文只是个人对动态规划的一些见解本文只是个人对动态规划的一些见解,理论性并不一定能保证正确理论性并不一定能保证正确,有不足有不足和缺漏之处请谅解和及时地指出和缺漏之处请谅解和及时地指出.|是信息学竞赛中选手必须熟练掌握的一种算法是信息学竞赛中选手必须熟练掌握的一种算法,他以其多元性广他以其多元性广受出题者的喜爱受出题者的喜爱.|什么是动态规划什么是动态规划|状态状态 阶段阶段 决策决策|一种确立状态的方法一种确立状态的方法|两种简单的动规武器两种简单的动规武器|三种特殊的动态规划三种特殊的动态规划|在学习动态规划之前你一定学过搜索在学习动态规划之前你一

    2、定学过搜索.那么搜索与动态规划有什么关系那么搜索与动态规划有什么关系呢呢?我们来下面的一个例子我们来下面的一个例子.|给你一个数字三角形给你一个数字三角形,形式如下形式如下:1 2 3 4 5 67 8 9 10找出从第一层到最后一层的一条找出从第一层到最后一层的一条路路,使得所经过的权值之和最小或使得所经过的权值之和最小或者最大者最大.|无论对与新手还是老手,这都是再熟悉不过的题了,很容易地,我们写无论对与新手还是老手,这都是再熟悉不过的题了,很容易地,我们写出状态转移方程:出状态转移方程:f(i,j)=ai,j+minf(i-1,j)+f(i-1,j+1)|对于动态规划算法解决这个问题,我

    3、们根据状态转移方程和状态转移方对于动态规划算法解决这个问题,我们根据状态转移方程和状态转移方向,比较容易地写出动态规划的循环表示方法。但是,当状态和转移非向,比较容易地写出动态规划的循环表示方法。但是,当状态和转移非常复杂的时候,也许写出循环式的动态规划就不是那么简单了。常复杂的时候,也许写出循环式的动态规划就不是那么简单了。|解决方法:解决方法:|我们尝试从正面的思路去分析问题,如上例,不难得出一个非常简单我们尝试从正面的思路去分析问题,如上例,不难得出一个非常简单的递归过程的递归过程:|f1:=f(i-1,j+1);f2:=f(i-1,j);|if f1f2 then f:=f1+ai,j

    4、 else f:=f2+ai,j;|显而易见,这个算法就是最简单的搜索算法。时间复杂度为显而易见,这个算法就是最简单的搜索算法。时间复杂度为2n,明显,明显是会超时的。分析一下搜索的过程,实际上,很多调用都是不必要的,是会超时的。分析一下搜索的过程,实际上,很多调用都是不必要的,也就是把产生过的最优状态,又产生了一次。为了避免浪费,很显然,也就是把产生过的最优状态,又产生了一次。为了避免浪费,很显然,我们存放一个我们存放一个opt数组:数组:|Opti,j-每产生一个每产生一个f(i,j),将,将f(i,j)的值放入的值放入opt中,以后再中,以后再次调用到次调用到f(i,j)的时候,直接从的

    5、时候,直接从opti,j来取就可以了。来取就可以了。|于是动态规划的状态转移方程被直观地表示出来了,这样节省了思维于是动态规划的状态转移方程被直观地表示出来了,这样节省了思维的难度,减少了编程的技巧,而运行时间只是相差常数的复杂度,而的难度,减少了编程的技巧,而运行时间只是相差常数的复杂度,而且在相当多的情况下,递归算法能更好地避免浪费,在比赛中是非常且在相当多的情况下,递归算法能更好地避免浪费,在比赛中是非常实用的实用的.记忆化的功效|可以看出动态规划的实质就是可以看出动态规划的实质就是|这也就是为什么我们常说动态规划必须满足重叠子问题的原因这也就是为什么我们常说动态规划必须满足重叠子问题的

    6、原因.记忆化记忆化,正符合了这个要求正符合了这个要求.|或许有一种对动态规划的简单称法或许有一种对动态规划的简单称法,叫分阶段决策叫分阶段决策.其实我认为这个称法并其实我认为这个称法并不是很能让人理解不是很能让人理解.那么下面我们来看看阶段那么下面我们来看看阶段,状态状态,决策这三者间得关系决策这三者间得关系吧吧.|状态是表现出动态规划核心思想的一个东西状态是表现出动态规划核心思想的一个东西.而分阶段决策这个东西有而分阶段决策这个东西有似乎没有提到状态似乎没有提到状态,这是不科学的这是不科学的.|阶段阶段,有些题目并不一定表现出一定的阶段性有些题目并不一定表现出一定的阶段性.数字三角形的阶段就

    7、是每数字三角形的阶段就是每一层一层.这里我们引入一个概念这里我们引入一个概念-以前状态以前状态.但阶段不是以前状态但阶段不是以前状态,状态是状态是阶段的表现形式阶段的表现形式.数字三角形的以前状态就是当前层的前一层数字三角形的以前状态就是当前层的前一层.|那什么是决策呢那什么是决策呢?我们看看下面一张图就知道了我们看看下面一张图就知道了.显然,从上图可以看出,当前状态通过决策,回到了以前状态.可见决策其实就是状态之间的桥梁。而以前状态也就决定了当前状态的情况。数字三角形的决策就是选择相邻的两个以前状态的最优值。|我们一般在动规的时候所用到的一些数组,也就是用来存储每个状态我们一般在动规的时候所

    8、用到的一些数组,也就是用来存储每个状态的最优值的。的最优值的。|我们就从动态规划的要诀,也就是核心部分我们就从动态规划的要诀,也就是核心部分“状态状态”开始,来逐步了开始,来逐步了解动态规划。解动态规划。|拦截导弹(拦截导弹(Noip2002Noip2002)|某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统导弹拦截系统 有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高但是以后每一发炮弹都不能高 于前一发的高度。于前一发的高度。某天,

    9、雷达捕捉到敌某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以国的导弹来袭。由于该系统还在试用阶段,所以 只有一套系统,因此只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度,计算这套系有可能不能拦截所有的导弹。输入导弹依次飞来的高度,计算这套系统最多能拦截多少导弹。统最多能拦截多少导弹。|状态的表示状态的表示fi,表示当第,表示当第i个导弹必须选择时,前个导弹必须选择时,前i个导弹最多能拦个导弹最多能拦截多少。截多少。|每个导弹有一定的高度,当前状态就是以第每个导弹有一定的高度,当前状态就是以第i个导弹为最后一个打的导个导弹为最后一个打的导弹。以前状态就是在这个导弹

    10、以前打的那个导弹。弹。以前状态就是在这个导弹以前打的那个导弹。|显然这是十分能够体现状态间的联系的题目。显然这是十分能够体现状态间的联系的题目。|给出两个字符串序列。求出这样的一个最长的公共子串:子串中的每给出两个字符串序列。求出这样的一个最长的公共子串:子串中的每个字符都能在两个原串中找到,而且每个字符的顺序和原串中的顺序个字符都能在两个原串中找到,而且每个字符的顺序和原串中的顺序一致。一致。|交错匹配(最长公共子串的改编)交错匹配(最长公共子串的改编)给你两排数字给你两排数字,只能将两排中数字相同的两个位置相连只能将两排中数字相同的两个位置相连,而每次相连必须有而每次相连必须有两个匹配形成

    11、一次交错两个匹配形成一次交错,交错的连线不能再和别的交错连线有交点交错的连线不能再和别的交错连线有交点.问这问这两排数字最多能形成多少个交错匹配两排数字最多能形成多少个交错匹配.2 3 3 2 4 1 5 1 3 5 103 1 2 3 2 4 12 1 5 5 3 状态的表示状态的表示fi,jfi,j表示前表示前i i个第一排的数字和前个第一排的数字和前j j个第二排的数字搭配个第二排的数字搭配的最优值。的最优值。当前的状态就是当前你枚举到的一组交错的后面两个位置当前的状态就是当前你枚举到的一组交错的后面两个位置.例如上图中当例如上图中当前状态是前状态是3 3和和1(1(第一组交错第一组交错

    12、),),枚举他的以前状态就有枚举他的以前状态就有1 3.1 3.这样在这样在1 31 3之前之前会有一个最优值存在会有一个最优值存在,因此可以由此得到因此可以由此得到3 13 1的最优值的最优值.|买车票买车票(Ural1031)(Ural1031)Ekaterinburg Ekaterinburg城到城到SverdlovskSverdlovsk城有直线形的铁路线。城有直线形的铁路线。两城之间还有其他一些停靠站两城之间还有其他一些停靠站,总站数为总站数为N N。各站按照离各站按照离EkaterinburgEkaterinburg城的距离编号。城的距离编号。EkaterinburgEkateri

    13、nburg城编号为城编号为1 1,SverdlovskSverdlovsk城编号为城编号为N N。某两站之间车票价格由这两站的距离某两站之间车票价格由这两站的距离X X决定决定.当当0X=L10X=L1时,票价为时,票价为C1C1元元.当当L1X=L2L1X=L2时,票价为时,票价为C2C2元元.当当L2X=L3L2X=L3时,票价为时,票价为C3C3元元.当两站距离大于当两站距离大于L3L3时没有直达票,所以有时候要买几时没有直达票,所以有时候要买几次票做几次车才行。次票做几次车才行。比如,在上面的例图中,比如,在上面的例图中,2-62-6没有直达票,有几种买票没有直达票,有几种买票方法可以

    14、从方法可以从2-62-6,其中一种是买,其中一种是买C2C2元的元的2-32-3车票,再买车票,再买C3C3元的元的3-63-6车票。车票。给定起点站和终点站还有给定起点站和终点站还有L1,L2,L3,C1,C2,C3L1,L2,L3,C1,C2,C3,求出要从,求出要从起点到终点最少要花多少钱起点到终点最少要花多少钱.怎么办怎么办当前所在的某个车站这一题的以前状态其实只有这一题的以前状态其实只有3种种.即满足即满足3种距离种距离(收费收费)情况情况的的3个车站个车站.要知道这要知道这3个车站可以先做一个预处理个车站可以先做一个预处理.显然这显然这3个车站在满足距离限制的条件下应该越远越好个车

    15、站在满足距离限制的条件下应该越远越好.|预处理预处理 很容易想出一个很容易想出一个N2的预处理的预处理,但是那样是会超时的但是那样是会超时的.由于尽量要让车站离得远由于尽量要让车站离得远(费用是一样的啊费用是一样的啊 )因此在每种收费情况下因此在每种收费情况下,每个车站的以前状态车站一定每个车站的以前状态车站一定是递增的序列是递增的序列.这里是只要这里是只要O(N)的程序的程序:for j:=1 to 3 do begin k:=en-1;for i:=en downto be do begin while(wayi-wayk=be)do dec(k);pij:=k+1;end;end;数组数

    16、组Pij表示的是表示的是I状态的第状态的第j种以前状态种以前状态.动态规划的部分动态规划的部分for i:=be+1 to en do 枚举当前状态枚举当前状态 begin costi:=maxlongint;for j:=1 to 3 do 枚举以前状态枚举以前状态 beginif (piji)and(costi costpij+cj)then costi:=costpij+cj;end;end;|有时候当前状态确定后有时候当前状态确定后,以前状态就已经确定以前状态就已经确定,则无需枚举则无需枚举.|TomTom是一个非常有创业精神的人,由于大学学的是汽车制造专业,所以是一个非常有创业精神的

    17、人,由于大学学的是汽车制造专业,所以毕业后他用有限的资金开了一家汽车零件加工厂,毕业后他用有限的资金开了一家汽车零件加工厂,专门为汽车制造商专门为汽车制造商制造零件。由于资金有限,他只能先购买一台加工机器。现在他却遇制造零件。由于资金有限,他只能先购买一台加工机器。现在他却遇到了麻烦,多家汽车制造商需要他加到了麻烦,多家汽车制造商需要他加 工一些不同零件(由于厂家和零工一些不同零件(由于厂家和零件不同,所以给的加工费也不同),而且不同厂家对于不同零件的加件不同,所以给的加工费也不同),而且不同厂家对于不同零件的加工时间要求不同(有些加工时间要求甚至是冲突的,但开始和结束时工时间要求不同(有些加

    18、工时间要求甚至是冲突的,但开始和结束时间相同不算冲突)。间相同不算冲突)。TomTom当然希望能把所有的零件都加工完,以得到更当然希望能把所有的零件都加工完,以得到更多的加工费,但当一些零件的加工时间要求有冲突时,在某个时间内多的加工费,但当一些零件的加工时间要求有冲突时,在某个时间内他只能选择某种零件加工(因为他只有一台机器),为了赚得尽量多他只能选择某种零件加工(因为他只有一台机器),为了赚得尽量多的加工费,的加工费,TomTom不知如何进行取舍。不知如何进行取舍。|Tom的烦恼的烦恼 按结束时间排序,枚举结束时间作为当前状态按结束时间排序,枚举结束时间作为当前状态,以前状态就是该结束时间

    19、对应以前状态就是该结束时间对应的起始时间,这是已经确定的的起始时间,这是已经确定的.|文字游戏文字游戏(fairfox(fairfox邀请赛邀请赛1)1)给你一份单词表,和一个句子。求出该句子能有多少中不同的划分方法给你一份单词表,和一个句子。求出该句子能有多少中不同的划分方法.例如例如:单词是单词是ab cd a b c dab cd a b c d 句子是句子是abcdabcd 他共有他共有4 4种完全划分方案种完全划分方案:ab/cd a/b/c/d a/b/cd ab/c/d;ab/cd a/b/c/d a/b/cd ab/c/d;当前状态就是单词在句子中向后靠的位置当前状态就是单词在

    20、句子中向后靠的位置,以前状态就是确定这个单词位以前状态就是确定这个单词位置以后置以后,除掉这个单词长度后的一个位置除掉这个单词长度后的一个位置.状态转移方程状态转移方程是是:Fi:=Fi+Fi-length(wordj):Fi:=Fi+Fi-length(wordj)IOI IOI中有一题中有一题前缀前缀也是类似的题目也是类似的题目.|状态转移方程的构造无疑是动态规划过程中最重要的一步状态转移方程的构造无疑是动态规划过程中最重要的一步,也是最难的一也是最难的一步步.对于大多数的动态规划对于大多数的动态规划,寻找状态转移方程有一条十分高效的通道寻找状态转移方程有一条十分高效的通道,就是就是寻找变

    21、化中的不变量寻找变化中的不变量.定量处理的过程也就是决策实施的过程定量处理的过程也就是决策实施的过程.|最佳加法表达式最佳加法表达式|有一个由有一个由1.91.9组成的数字串组成的数字串.问如果将问如果将m m个加号插入到这个数字串中个加号插入到这个数字串中.使使得所形成的算术表达式的值最小得所形成的算术表达式的值最小.或许你不明白我在说什么,那么我们通过题目来说明吧|这一题中的定量是什么呢这一题中的定量是什么呢?因为是添入加号因为是添入加号,那么添完加号后那么添完加号后,表达式的最表达式的最后一定是个数字串后一定是个数字串,这就是定量这就是定量.从这里入手从这里入手,不难发现可以把以前状态认

    22、不难发现可以把以前状态认为是在前为是在前i个字符中插入个字符中插入k-1个加号个加号(这里的这里的i是当作决策在枚举是当作决策在枚举),然后然后i+1到最后一位一定是整个没有被分割的数字串到最后一位一定是整个没有被分割的数字串,第第k个加号就添在个加号就添在i与与i+1个个数字之间数字之间.这样就构造出了整个数字串的最优解这样就构造出了整个数字串的最优解.而至于前而至于前i个字符中插入个字符中插入k-1个加号个加号,这又回到了原问题的形式这又回到了原问题的形式,也就是回到了以前状态也就是回到了以前状态,所以状态所以状态转移方程就能很快的构造出来了转移方程就能很快的构造出来了.|用用fi,j,表

    23、示的是在前表示的是在前i个字符中插入个字符中插入j个加号能达到的最小值个加号能达到的最小值,最后的答案也最后的答案也就是就是Flength(s),m.|于是就有一个动规的方程于是就有一个动规的方程:Fi,j:=min(fi,j,fk,j-1+numk+1,i)numk+1,i表示表示k+1位到位到i位所形成的数字位所形成的数字.这里显然是把加号插入了第这里显然是把加号插入了第k+1个位置上个位置上.|知道了这一题怎么做以后知道了这一题怎么做以后,乘积最大的一题也是完全一样的形式乘积最大的一题也是完全一样的形式,谁还会去谁还会去用搜索用搜索?|现在大概大家已经了解了定量是什么现在大概大家已经了解

    24、了定量是什么,那么我们下面通过几道题目来了那么我们下面通过几道题目来了解一下定量的威力解一下定量的威力.|游戏游戏(Noip2003普及组普及组)|这一题的描述简单说一下这一题的描述简单说一下:在一个圈的周围有在一个圈的周围有n个石子个石子,将他们划分成将他们划分成m堆堆(每堆中的石子必须连续相邻每堆中的石子必须连续相邻),每一堆石子计算出他们的总重量每一堆石子计算出他们的总重量mod10的值的值,然后将这些值相乘然后将这些值相乘,求得到的结果最大最小值是多少求得到的结果最大最小值是多少.|这一题作者其实是根据最佳加法表达式改编的这一题作者其实是根据最佳加法表达式改编的.但是他加了一个在圈上的

    25、但是他加了一个在圈上的条件条件,怎么办呢怎么办呢?寻找定量!|可想而知可想而知,因为至少要分成因为至少要分成1堆堆,那么至少有两个石子之间是会被分隔开那么至少有两个石子之间是会被分隔开的的.这就是定量这就是定量!当划分数当划分数1时时,一定有两个相邻石子被划分到不同的堆一定有两个相邻石子被划分到不同的堆里去里去!|于是这个圈被这样的理解断成了一条线于是这个圈被这样的理解断成了一条线,解法就和最佳加法表达式一样解法就和最佳加法表达式一样了了.|当然这个断开的位置是需要枚举的当然这个断开的位置是需要枚举的,然后保留下一个最优值然后保留下一个最优值.显然这个断显然这个断开的操作对整个过程没有影响开的

    26、操作对整个过程没有影响,因为这是必然的情况因为这是必然的情况,这是定量这是定量!|问题描述问题描述|给定一具有给定一具有N N(N50N50)个顶点)个顶点(从从1 1到到N N编号)的凸多边形,每个顶点的权均编号)的凸多边形,每个顶点的权均已知。问如何把这个凸多边形划分成已知。问如何把这个凸多边形划分成N-2N-2个互不相交的三角形,使得这些个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小?三角形顶点的权的乘积之和最小?|这一题大概搜都是十分麻烦的这一题大概搜都是十分麻烦的,可是这一题可是这一题Dp的话的话,比搜索要容易实现和容比搜索要容易实现和容易理解得多易理解得多.|先得表示一下

    27、状态先得表示一下状态,我们用我们用fi,j表示以第表示以第i个点开头个点开头,顺时针长度为顺时针长度为j的一块子的一块子多边形多边形.如上图中如上图中f1,5表示的子多边形表示的子多边形(黑色虚线划开黑色虚线划开)|如果没有红色虚线的部分如果没有红色虚线的部分,或许你会认为决策应该是枚举子多边形内的或许你会认为决策应该是枚举子多边形内的两点连线两点连线,然后分成两个子多边形然后分成两个子多边形.这显然是不行的这显然是不行的,因为计算机已经无因为计算机已经无法再表示分割出来的子多边形了法再表示分割出来的子多边形了(不能用不能用fi,j来表示了来表示了).|那么我们该如何决策呢那么我们该如何决策呢

    28、?寻找定量寻找定量!|显然可以发现显然可以发现,fi,j表示的子多边形有一条边是在内部的表示的子多边形有一条边是在内部的(黑色虚线黑色虚线),而这而这一条边在该子多边形内必定属于某个三角形一条边在该子多边形内必定属于某个三角形,因为我们选择了该子多边形因为我们选择了该子多边形作为一种状态作为一种状态,那么就一定存在那条虚线黑边那么就一定存在那条虚线黑边,所以一定存在所说的三角形所以一定存在所说的三角形.于是我们枚举这个三角形的另外一个点在子多边形的位置于是我们枚举这个三角形的另外一个点在子多边形的位置,则可以把子问则可以把子问题还原到原问题题还原到原问题(因为该三角形把多边形划成了两个可以用表

    29、示的多边形因为该三角形把多边形划成了两个可以用表示的多边形和一个三角形和一个三角形).这些再次分割出的子多边形就是以前状态这些再次分割出的子多边形就是以前状态,而刚才的多边形而刚才的多边形则是当前状态则是当前状态.|其实定量的作用就是为了写出状态转移方程其实定量的作用就是为了写出状态转移方程,即让人能迅速找出状态之即让人能迅速找出状态之间的关系间的关系(决策决策).通过定量的处理通过定量的处理,当前状态又回到了以前状态当前状态又回到了以前状态,选手就可选手就可以知道以知道,这一题就是要用动态规划来求解了这一题就是要用动态规划来求解了.|我们来看看刚才的一些题目的定量我们来看看刚才的一些题目的定

    30、量.|交错匹配交错匹配:一定存在最后一组交错一定存在最后一组交错(这好像是废话这好像是废话),所以枚举这个最后的所以枚举这个最后的交错的位置作为状态交错的位置作为状态,这样就回到以前状态这样就回到以前状态.|买车票买车票:定量定量1:一定有最后一个车站一定有最后一个车站(这个作为状态这个作为状态);定量定量2:某个车站一某个车站一定是由某个前面的车站到达的定是由某个前面的车站到达的.(导弹拦截也是这样导弹拦截也是这样)|数字三角形数字三角形:某个点一定是由他上面的相邻两点到达的某个点一定是由他上面的相邻两点到达的.(过河卒也是这过河卒也是这样样)定量很不错啊!|在动规的操作过程中在动规的操作过

    31、程中,或者是操作过程前或者是操作过程前,有一些很常用的武器有一些很常用的武器,这里简要介这里简要介绍两种绍两种:|武器一武器一:排序排序|遇到过很多需要排序的动态规划题目遇到过很多需要排序的动态规划题目,如果不排序如果不排序,动规的思想很难体现动规的思想很难体现.|Tom的烦恼的烦恼 这是大家熟知的一题这是大家熟知的一题,如果不排序的话如果不排序的话,复杂度便是复杂度便是N2,按起始时间排序复按起始时间排序复杂度也是杂度也是N2,二按结束时间排序之后复杂度降为了二按结束时间排序之后复杂度降为了NlogN.|巴比伦塔巴比伦塔|问题描述问题描述:有很多的不同种类的立方体有很多的不同种类的立方体(长

    32、宽高不同长宽高不同),每一类有无限多个每一类有无限多个.将他们一层层将他们一层层的叠加起来的叠加起来,要求上面的一块立方体的下底面一定要比下面的一块立方体要求上面的一块立方体的下底面一定要比下面的一块立方体的上底面要小的上底面要小,就是长和宽都要小于就是长和宽都要小于.问最多能建成多高的塔问最多能建成多高的塔.|经过研究可以发现经过研究可以发现,每一种类的立方体有每一种类的立方体有3种不同的摆放方式种不同的摆放方式,而每种摆放而每种摆放方式最多用方式最多用1次次,所以可以分离出所以可以分离出3*N块块“不同不同”的立方体的立方体,接下来接下来,或许你或许你仍然不知道如何动规仍然不知道如何动规,

    33、那么就试试排序那么就试试排序.列出所有的石块的所有摆放方式列出所有的石块的所有摆放方式xi,yi,zi.xi,yi,zi.必须全部保证必须全部保证xiyixiyi.xiyi.然后按关键字然后按关键字xi,yi,zixi,yi,zi的大小的大小顺序排序顺序排序.这样就可以进行十分简单的类似与导弹拦截的一个动态规划这样就可以进行十分简单的类似与导弹拦截的一个动态规划的处理了的处理了.限制条件是限制条件是xixi和和yi,yi,代价值是代价值是zi(zi(高度高度).).|滑雪滑雪(上海上海2002)|题目的大意是给出一个矩阵题目的大意是给出一个矩阵,如如:对于所给出的矩阵找出一条最长的递减链,满足

    34、链中相邻的两个元素间都是在矩阵中相邻的.上图中所给出的矩阵中的最长链是1 2 3 425.|对于有给出的数字进行递减排序对于有给出的数字进行递减排序,然后两重循环就搞定问题然后两重循环就搞定问题.动态转移方动态转移方程是程是:Fi:=max(Fi,Fj+1);满足条件是满足条件是i与与j在原矩阵中相邻在原矩阵中相邻.|试想试想,如果你不知道要排序如果你不知道要排序,你能想到这题是用动态规划吗你能想到这题是用动态规划吗?|武器二武器二:填鸭填鸭|这个思想带有枚举的感觉这个思想带有枚举的感觉.就是开个大数组就是开个大数组,把代价值一个个填进去把代价值一个个填进去.|硬币问题(经典问题)硬币问题(经

    35、典问题)就是给出就是给出n种硬币的面值种硬币的面值,问面值问面值 M有多少种不同的表示方法有多少种不同的表示方法.动态转移方程是动态转移方程是Fi:=Fi+FI-costj.当前状态是当前状态是i,以前状态是以前状态是i-costj.|多米诺骨牌(某题的简化)多米诺骨牌(某题的简化)有有N张多米诺骨牌张多米诺骨牌,每张的两端有两个数字每张的两端有两个数字,范围在范围在1.6之间之间.每张骨牌可以正每张骨牌可以正放放,也可以反放也可以反放.求出一种摆放的情况求出一种摆放的情况,使得所有的骨牌上端数字之和与下使得所有的骨牌上端数字之和与下端数字之和的差值最小端数字之和的差值最小.求出最小差值求出最

    36、小差值.可以这么考虑这个问题可以这么考虑这个问题:我们把每一个骨牌的上下差值记我们把每一个骨牌的上下差值记下。接下来的任务便是将这些值下。接下来的任务便是将这些值分成两组,使得他们的和的差值分成两组,使得他们的和的差值最小。动规过程如下:最小。动规过程如下:f0:=true;for i:=1 to n do for j:=sum downto ai do fj:=fj or fj-ai;Sum表示所有差值的和表示所有差值的和.ai表示第表示第i块骨牌块骨牌的差值的差值.J是当前状态是当前状态,j-ai是以前状态是以前状态.fj表示表示j这个差值能否通过组合得到。这个差值能否通过组合得到。接下来

    37、的程序就不用我多说了。接下来的程序就不用我多说了。|商店购物商店购物(IOI)(IOI)这一题更是需要开一个五维这一题更是需要开一个五维boolbool型数组型数组.还需要通过递归求出组合形还需要通过递归求出组合形式式.动规的方程我就不写了动规的方程我就不写了.|讲完了比较实用的两种种动规的武器之后,我们来看看一些大家可能不太会做的动规类型|这里我讲讲三种特殊的动态规划这里我讲讲三种特殊的动态规划:图状动规图状动规,树状动规树状动规,二次动规二次动规.|城堡城堡|某国聪明美丽的公主要找一位如意郎君,她希望未来的夫君是一个聪某国聪明美丽的公主要找一位如意郎君,她希望未来的夫君是一个聪明善良,节俭

    38、但又不吝啬的人。为了找到理想的人选,她的爸爸明善良,节俭但又不吝啬的人。为了找到理想的人选,她的爸爸国国王,给她修建了一座城堡,这个城堡有很多房间,房间之间有走廊连王,给她修建了一座城堡,这个城堡有很多房间,房间之间有走廊连接,但每进入一个房间必须要花费一定数量的钱币,公主就在某个房接,但每进入一个房间必须要花费一定数量的钱币,公主就在某个房间中等待。开始,国王给每个候选人一样多的钱币,候选人从同一个间中等待。开始,国王给每个候选人一样多的钱币,候选人从同一个地点出发,直到找到美丽的公主为止,如果这时哪个人找到了公主,地点出发,直到找到美丽的公主为止,如果这时哪个人找到了公主,并且钱币刚好用完

    39、,那么他将会赢得公主的芳心。并且钱币刚好用完,那么他将会赢得公主的芳心。|乍看此题乍看此题,似乎就是搜没得说了似乎就是搜没得说了,是吗是吗?|如果告诉你这一题是动态规划的话如果告诉你这一题是动态规划的话,你会怎么做你会怎么做?状态是什么动态转状态是什么动态转移方程是什么移方程是什么?|既然是问我们能不能到达既然是问我们能不能到达,所以想想就应该知道所以想想就应该知道,动规的数组是动规的数组是bool型的型的.一开始时一开始时,只有出发的房间记为只有出发的房间记为true.|但是但是,并不是以每个房间作为状态并不是以每个房间作为状态,因为还存在一个把钱用光的问题因为还存在一个把钱用光的问题.到达

    40、到达同一个房间时同一个房间时,如果剩余的钱不一样如果剩余的钱不一样,也就会有不同的决策也就会有不同的决策.|所以状态就是在剩余所以状态就是在剩余j个钱币的时候能否到达第个钱币的时候能否到达第i个房间个房间.用用fi,j来表示来表示.于是动态转移方程也就出来了于是动态转移方程也就出来了K表示的是和I连接的一个房间,ci表示进入I号房间的花费.|没有上司的晚会没有上司的晚会|某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的上司,要不然他们会很扫兴。加晚会的人都不希望在晚会中见到他的上司,要不然

    41、他们会很扫兴。现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人来能使得晚会的总活跃指数最大。请哪些人来能使得晚会的总活跃指数最大。|按照要求构建一张关系图,可见这是一棵树。对于这类最值问题,向按照要求构建一张关系图,可见这是一棵树。对于这类最值问题,向来是用动态规划求解的。来是用动态规划求解的。|任何一个点的取舍可以看作一种决策,那么状态就是在某个点取的时任何一个点的取舍可以看作一种决策,那么状态就是在某个点取的时候或者不取的时候,以他为跟的子树能有的最大活跃总值。分别可以候或者不取的时候,以他为跟的子树能有的最大

    42、活跃总值。分别可以用用fi,1和和fi,0表示。表示。|当这个点取的时候,他的所有儿子都不能取,所以当这个点取的时候,他的所有儿子都不能取,所以fi,1:=sum(fj,0,j为为i的儿子的儿子)i的权值。的权值。|不取的时候,他的所有儿子取不取无所谓,不过当然应该取价值最大不取的时候,他的所有儿子取不取无所谓,不过当然应该取价值最大的一种情况。所以的一种情况。所以fi,0:=sum(max(fj,1,fj,0),j为为i的的i儿子)。儿子)。|这就是树状动规的基本形态。这就是树状动规的基本形态。|在动规的基础上再进行动规,就叫做二次动规。在动规的基础上再进行动规,就叫做二次动规。|买票买票|

    43、有一座有一座n层的楼房,某个人要到第层的楼房,某个人要到第n层的任何一个房间买票。每层楼都有层的任何一个房间买票。每层楼都有m个房间。而如果要到第个房间。而如果要到第i层的第层的第j个房间买票,那么必须先在第个房间买票,那么必须先在第i-1层的层的第第j个房间买票或者在第个房间买票或者在第i层的与这个房间相邻的房间买过票才行层的与这个房间相邻的房间买过票才行.而每个而每个房间所要收取的票费是不同的房间所要收取的票费是不同的,给定每个房间内买票需要的费用给定每个房间内买票需要的费用,问要在第问要在第n层的任意一间房间内买到票的最小消费是多少层的任意一间房间内买到票的最小消费是多少.|显然不能写这

    44、样的状态转移方程显然不能写这样的状态转移方程:fi,j:=min(fi-1,j,fi,j-1,fi,j+1)+wj.因为无法有一种处理顺序使得在因为无法有一种处理顺序使得在fi,j之前同时求得之前同时求得fi,j-1和和fi,j+1的最的最优值优值.|所以动规分两次进行所以动规分两次进行.第一次用状态转移方程第一次用状态转移方程fi,j:=min(fi,j-1,fi-1,j)+wi求出一个不一定是最优的解求出一个不一定是最优的解.再用再用fi,j:=min(fi,j,fi,j+1,j from m-1 downto 1)+wi求出最终的最优解求出最终的最优解,可以证明这样的能够求出可以证明这样

    45、的能够求出真正的最优解真正的最优解.|要注意的是这两次动规不能分开做要注意的是这两次动规不能分开做,而要在处理每一层的时候都要做而要在处理每一层的时候都要做,要要不然显然无法求得最优值。不然显然无法求得最优值。|网络(网络(Ural1056,求树的中心)求树的中心)|题目大意是:题目大意是:有一棵有有一棵有N个结点的树,给出每个结点的父亲(即给出个结点的树,给出每个结点的父亲(即给出这棵树),边的权都是这棵树),边的权都是1。每个结点延树的边可以走到树的任意一个。每个结点延树的边可以走到树的任意一个结点,令结点,令Ai为第为第i个结点最远能走的距离,求出个结点最远能走的距离,求出Ai最小的结点

    46、有哪些。最小的结点有哪些。如有多个最小的如有多个最小的Ai,则都要输出。这里,则都要输出。这里N=10000N=10000|枚举每个点,然后枚举每个点,然后DFS复杂度复杂度O(N2),超时是显然的事情。,超时是显然的事情。|可以发现其实有很多可以发现其实有很多DFS都重复做了同样的工作,产生了浪费,所以应都重复做了同样的工作,产生了浪费,所以应该选择动态规划解决这个问题。该选择动态规划解决这个问题。|树上的动规,是否直接可以写出下面的状态转移方城呢?树上的动规,是否直接可以写出下面的状态转移方城呢?|fi:=max(fson,ffather)+1|废话,显然是不行的,废话,显然是不行的,so

    47、n和和father的值不可能同时得到。的值不可能同时得到。|但是不要放弃,解决这个冲突的方法,就是采用二次动规。但是不要放弃,解决这个冲突的方法,就是采用二次动规。|第一次动规做第一次动规做fi:=max(fson)+1,第二次动规做,第二次动规做fi:=max(fi,ffather+1)。|但是存在一个问题就是如果但是存在一个问题就是如果ffather的值是从的值是从i那里得到的,这样计算那里得到的,这样计算显然就错了。显然就错了。|不要放弃,在实际操作过程中,不要放弃,在实际操作过程中,f需要记下两个值,一个是最优值,一需要记下两个值,一个是最优值,一个是次优值,这两个值必须由不用的子结点

    48、得到。这样当最优值发生个是次优值,这两个值必须由不用的子结点得到。这样当最优值发生矛盾的时候,次优值一定不会矛盾。问题就解决了。复杂度矛盾的时候,次优值一定不会矛盾。问题就解决了。复杂度O(N)O(N)十分十分的理想。的理想。|动态规划有很多东西还需要我们更加努力地去探索和学习动态规划有很多东西还需要我们更加努力地去探索和学习.总体上说来总体上说来,动动态规划是个既简单又不简单的算法态规划是个既简单又不简单的算法,熟练地掌握了动态规划熟练地掌握了动态规划,也就熟练地控也就熟练地控制了比赛制了比赛.Thats all!Thank you for listening.|垃圾陷阱(垃圾陷阱(USAC

    49、O&TJU1087)|卡门卡门农夫约翰极其珍视的一条农夫约翰极其珍视的一条Holsteins奶牛奶牛已经落了到已经落了到“垃圾井垃圾井”中。中。“垃圾井垃圾井”是农夫们扔垃圾的地方,它的深度为是农夫们扔垃圾的地方,它的深度为D(2=D=100)英尺。卡门想把垃圾堆起来,等到堆得与井同样高英尺。卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的生命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。假设卡门预先知道了每

    50、个垃圾扔下的时间的时间。假设卡门预先知道了每个垃圾扔下的时间t(0 t=1000),以及每个垃圾堆放的高度,以及每个垃圾堆放的高度h(1=h=25)和吃进该垃和吃进该垃圾能维持生命的时间圾能维持生命的时间f(1=f=30),要求出卡门最早能逃出井,要求出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续外的时间,假设卡门当前体内有足够持续10小时的能量,如果卡门小时的能量,如果卡门10小时内没有进食,卡门就将饿死。小时内没有进食,卡门就将饿死。|字符串距离(字符串距离(TJU1086)|设有字符串设有字符串X,我们称在,我们称在X的头尾及中间插入任意多个空格后构成的新的头尾及中间插入任意多个

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:动态规划专题讲义解读课件.ppt
    链接地址:https://www.163wenku.com/p-5182894.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库