网站大量收购独家精品文档,联系QQ:2885784924

2015.12.18动树形动规与优化方法态规划(二).ppt

2015.12.18动树形动规与优化方法态规划(二).ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2015.12.18动树形动规与优化方法态规划(二)

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 简化方程 用一个二叉堆来维护S(i-k),每次求F(i)之前的操作如下: 算法二——堆 求F(i-1)时,求min{S(i-m-1), ……,S(i-2)} 求F(i)时, 求min{S(i-m),……,S(i-1)} ☆在堆中删除元素S(i-m-1),插入元素S(i-1).复杂度O(2log2n) ☆从堆中取出当前最小值.复杂度O(1) 所以计算的总复杂度为O(nlog2n) 队列优化 在算法二中,考虑用队列来维护决策值S(i-k)。每次只需要在队首删掉S(i-m-1),在队尾添加S(i-1) 。但是取最小值操作还是需要O(n)时间复杂度的扫描。 考察在添加S(i-1)的时候,设现在队尾的元素是S(k),由于ki-1,所以S(k)必然比S(i-1)先出队。若此时S(i-1)=S(k),则S(k)这个决策永远不会在以后用到,可以将S(k)从队尾删除掉(此时队列的尾部形成了一个类似栈的结构) 队列优化 同理,若队列中两个元素S(i)和S(j),若ij且S(i)=S(j),则我们可以删掉S(i)(因为S(i)永远不会被用到)。此时的队列中的元素构成了一个单调递增的序列,即: S1S2S3……Sk 算法三 我们来整理在求F(i)的时候,用队列维护S(i-k)所需要的操作: ☆若当前队首元素S(x),有xi-m,则S(x)出队;直到队首元素S(x)有x=i-m为止。 ☆若当前队尾元素S(k)=S(i-1),则S(k)出队;直到S(k)S(i-1)为止。 ☆在队尾插入S(i-1) ☆取出队列中的最小值,即队首元素。 算法三 由于对于求每个F(i)的时候,进队和出队的元素不止一个。 但是我们可以通过分摊分析得知,每一个元素S(i)只进队一次、出队一次,所以队列维护的时间复杂度是O(n)。而每次求F(i)的时候取最小值操作的复杂度是O(1),所以这一步的总复杂度也是O(n)。 综上所述,该算法的总复杂度是O(n) * * * * * * * * * * * * * * * * * * * * * * * * * * 双向规划与双向搜索的主要思想类似:在状态空间十分庞大,而初始状态和目标状态又都已确定,为了减少状态的规模,分别从初始状态和目标状态两个方向进行扩展,并在两者的交汇处得到问题的解。 例题4:Divide (Merc`2000) 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值和相等,问是否可以实现。其中大理石的总数不超过20000。 动态规划时间效率的优化 令S=∑(i*a[i]),若S为奇数,则不可能实现,否则令Mid=S/2, 问题转化为能否从给定的数中中选取部分数,使其和为Mid。 设m[i, j]表示能否从价值为1..i的大理石中选出部分大理石, 使其价值和为j,若能,则用true表示,否则用false表示。 则状态转移方程为: m[i, j]=m[i-1, j] OR m[i-1,j-i*k] (1≤k≤a[i]) 规划的边界条件为:m[i,0]=true; 0≤i≤6 若m[i, Mid]=true,0≤i≤6,则可以实现题目要求,否则不可 能实现。 算法分析 上述算法每个状态转移的状态数为a[i],每次状态转移的时间为O(1),状态总数是所有值为true的状态的总数。 本题在i较小时,值为true的状态也较少,但随着i的增大, 值为true的状态也急剧增多,影响了算法的时间效率。 我们分别求出从价值为1..3的大理石中选出部分大理石所能 获得的所有价值和,和从价值为4..6的大理石中选出部分大 理石所能获得的所有价值和。再判断是否存在和为Mid的价 值和,从而得出问题的解。 算法优化 状态转移方程改进为: 当i≤3时:m[i, j]=m[i-1, j] OR m[i-1,j-i*k] (1≤k≤a[i]) 当i3时:m[i, j]=m[i+1, j] OR m[i+1,j-i*k] (1≤k≤a[i]) 规划的边界条件为:m[i,0]=true; 0≤i≤7 若存在k,使得m[3,k]=true, m[4,Mid-k]=true,则 可以实现题目要求,否则无法实现。 回顾本题的优化过程可以发现:本题的实际背景与双向

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档