数与图完美结合-差分约束系统.pptx

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

数与图的完美结合------浅析差分约束系统华中师大一附中冯威引言在面对多种多样的问题时,我们经常会碰到这样的情况:往往我们能够根据题目题面意思来建立一些简单的模型,但却面对这些模型无从下手。这时我们应该意识到,也许能够将这种模型与其他的模型之间搭起一座桥梁,使我们能够用更简单直接的方式解决它。这里我们介绍一种方法,它很好地将某些特殊的不等式组与图相联结,让复杂的问题简单化,将难处理的问题用我们所熟知的方法去解决,它便是差分约束系统。这里我们着重介绍差分约束系统的原理和其需要掌握的bellman-ford算法。然后通过zju1508和zju1420两道题目解析差分约束系统在信息学题目中的应用,并逐渐归纳解决这类问题的思考方向。Bellmanford算法算法简单介绍这个算法能在更一般的情况下解决最短路的问题。一般在:1.该算法下边的权值可以为负2.可以运用该算法求有向图的单元最长路径或者最短路径.3.…Bellmanford算法松弛技术:对每一个结点v,逐步减小从起点s到终点v最短路的估计量dist[v]直到其达到真正的最短路径值mindist[v]。以单元最短路径为例这个操作就是保证dist[v]<=dist[u]+w[u,v],即ifdist[v]>dist[u]+w[u,v]thendist[v]=dist[u]+w[u,v]如果是最长路径则是保证dist[v]>=dist[u]+w[u,v]Bellmanford算法伪代码如下:Fori=1to|V|G||-1Dofor每条边(u,v)Do更新操作(u,v,w(u,v))For每条边(u,v)Doif仍然有可更新内容thenreturnFalseReturnTrueBellmanford算法556MAXMAXMAX-2-266-3图例中,S为源节点,粗线段覆盖的边表示最近一次执行更新操作的边。算法执行|V|-1次操作,每次操作都对所有可以进行松弛操作的边进行扩展。-38787S0S022-4-477MAXT7MAXMAX2-266-3-38787S0S02-42-477T72T7299Bellmanford算法最终状态如下图。524-26-387S02-47T7-29Bellmanford算法证明算法的正确性1.设G=(V,E)为有向加权图,源节点为S,加权函数为w:E-〉R。如果有负权回路则Bellman-ford算法一定会返回布尔值false,否则返回TRUE。2.设G=(V,E)为有向加权图,源节点为S加权函数为w:E-〉R,并且G不含从s可达的负权回路,则算法Bellman-ford终止时,对所有从s可达的结点v有d[v]=mindist(s,v)。差分约束系统对于解决差分约束系统问题的操作过程和使用原理,我们通过下面一道简单的题目进行了解。引例:Zju1508Interval题目大意:有一个序列,题目用n个整数组合[ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai,bi]这个区间的整数至少有ci个。如果存在这样的序列,请求出满足题目要求的最短的序列长度是多少。如果不存在则输出-1。差分约束系统输入:第一行包括一个整数n,表示区间个数,以下n行每行描述这些区间,第i+1行三个整数ai,bi,ci,由空格隔开,其中0<=ai<=bi<=50000而且1<=ci<=bi-ai+1。输出:一行,输出满足要求的序列的长度的最小值。差分约束系统将问题数字化:定义数组T,若数字i出现在序列中,则Ti=1,否则Ti=0,那么本题约束条件即为建立不等式模型:这样的描述使一个约束条件所牵涉的变量太多,不妨设(i=1,2,…,n)差分约束系统约束条件即可用以下不等式表示值得注意的是,这样定义的S若仅仅满足约束条件的要求是不能完整体现它的意义的,S中的各个组成之间并不是相对独立的,他们存在着联系。由于T数组要么为1要么为0,则Si一定比Si-1大,且至多大1于是有差分约束系统那么如何找到满足要求的这样一组S,且使其个数最少呢?联想我们需要寻找一个满足以下要求的S数组而Bellman-Ford每次的更新操作为差分约束系统例INPUT3142363231于是做出如下的转化:1.我们将S0,S1。。。Sn看作n+1个点V0,V1,。。,Vn2.对诸如A-B>=C的形式,我们从A向B连一条有向边,权值为-C。1)Sbi-Sai-1>=Ci2)Si-Si-1>=03)Si-1-Si>=-1211S4-S0>=2S6-S2>=3S3-S1>=100131-10-3100样

文档评论(0)

136****1820 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档