从一类单调性问题看算法及优化.pptVIP

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从一类单调性问题看算法及优化

从一类单调性问题看算法的优化 长沙市一中 汤泽 充分挖掘数据关系,灵活运用数据结构,往 往是构造出优秀算法的关键因素 一般队列: 一端插入,另一端删除 特殊队列: 尾端插入,两端删除 单调性: 帮助优化一类单调性问题 问题1 锯木厂选址 2=N=20000,1=Wi=10000,1=Di=10000 问题1 锯木厂选址 最优方案中,锯木厂必定建在有树的位置 问题1 锯木厂选址 问题1 锯木厂选址 分析: C[I]: 在第I棵树处建立一个锯木厂,并且将第1到第I棵树全部运到这个锯木厂所需的费用 W[J,I]: 在第I棵树处建立一个锯木厂,并且将第J+1到第I棵树全部运往这个锯木厂的费用 问题1 锯木厂选址 分析: F[I]表示在第I棵树处建立第二个锯木厂 的最小费用,则: 问题1 锯木厂选址 问题1 锯木厂选址 证明: 令S[K,I]表示决策变量取K时F[I]的值 设K1K2I, S[K1,I]-S[K2,I]0 问题1 锯木厂选址 证明: 设K1K2I, S[K1,I]-S[K2,I]0 令g[K1,K2]=上面不等式的左边 因为D[K] ≥ 0,因此Sd序列不下降 问题1 锯木厂选址 分析: 维护一个特殊队列K,K1K2…Kn, g[K1,K2]g[K2,K3]…g[Kn-1,Kn]: 计算状态F[I]前,若g[K1,K2]=Sd[I],表示决策K1不比K2优,删除K1,重复该步骤 问题1 锯木厂选址 分析: 计算F[I], F[I]=C[K1]+W[K1,I]+W[I,n+1] 若g[Kn-1,Kn]g[Kn,I], Sd[I’]g[Kn-1,Kn]g[Kn,I] Kn比Kn-1优之前I就将比Kn优, 删除Kn,重复该步骤, 最后将I插入队列 算法总复杂度O(N) 问题2 旅行问题 问题描述: 一个环形跑道上有n个加油站,按顺时针编号 为1到n(3n10^6) 第i号加油站有Pi(0=Pi10^9)升汽油, 每升汽油可供行驶一千米 第i号车站到其下一站的距离为Di (0di10^9) 问题2 旅行问题 一个例子: N=5 P[1]=3; D[1]=1 P[2]=1; D[2]=2 P[3]=5; D[3]=2 P[4]=0; D[4]=1 P[5]=5; D[5]=4 问题2 旅行问题 一个例子: N=5 P[1]=3; D[1]=1 P[2]=1; D[2]=2 P[3]=5; D[3]=2 P[4]=0; D[4]=1 P[5]=5; D[5]=4 问题2 旅行问题 一个例子: N=5 P[1]=3; D[1]=1 P[2]=1; D[2]=2 P[3]=5; D[3]=2 P[4]=0; D[4]=1 P[5]=5; D[5]=4 问题2 旅行问题 一个例子: N=5 P[1]=3; D[1]=1 P[2]=1; D[2]=2 P[3]=5; D[3]=2 P[4]=0; D[4]=1 P[5]=5; D[5]=4 问题2 旅行问题 一个例子: N=5 P[1]=3; D[1]=1 P[2]=1; D[2]=2 P[3]=5; D[3]=2 P[4]=0; D[4]=1 P[5]=5; D[5]=4 算法 一 分析: 直接模拟刚刚的演算过程 总的时间复杂度为O(N^2) 但是N最大可以达到10^6! 算法 二 分析: 假定只能按顺时针方向行驶. 令A[I]=P[I]-D[I] A[I+N]=A[I] A[0]=0 设SA[I]表示A序列中前I项的和 算法 二 算法 二 分析: SA[I]到SA[I+N-1]都不小于SA[I-1] SA[I]到SA[I+N-1]中的最小数不小于SA[I-1] 求N个数中的最小数,很自然地想到了堆! 算法 二 算法 三 分析: 给定一个序列SA和N个区间 求出每个区间中的最小值,对其作相应判定 这是一个标准的RMQ问题! 时间复杂度降为O(N) 算法 四 分析: 给定的N个区间不存在包含关系,满足单调性! 算法 四 预处理: 维护一个特殊队列K, K1K2…Kn Sa[k1]Sa[k2]…Sa[Kn] 将1,2…n-1依次插入队列K.插入前,如果Sa[i]=Sa[kn],将Kn删除.反复该步骤,最后将i插入队列 算法 四 求解并更新K: 若K1=i-1,将K1删除出队列 插入新

您可能关注的文档

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档