冯威《数与图的完美结合浅析差分约束系统》.ppt
- 文档编号:2639549
- 上传时间:2022-11-04
- 格式:PPT
- 页数:29
- 大小:498KB
冯威《数与图的完美结合浅析差分约束系统》.ppt
《冯威《数与图的完美结合浅析差分约束系统》.ppt》由会员分享,可在线阅读,更多相关《冯威《数与图的完美结合浅析差分约束系统》.ppt(29页珍藏版)》请在冰豆网上搜索。
数与图的完美结合-浅析差分约束系统华中师大一附中华中师大一附中冯威冯威引言引言v在面对多种多样的问题时,我们经常会碰到这样的情况:
往往我们能够根据题目题面意思来建立一些简单模型,但却面对这些模型无从下手。
这时我们应该意识到,也许能够将这种模型与其他的模型之间搭起一座桥梁,使我们能够用更简单直接的方式解决它。
这里我们介绍一种方法,它很好地将某些特殊的不等式组与图相联结,让复杂的问题简单化,将难处理的问题用我们所熟知的方法去解决,它便是差分约束系统差分约束系统。
这里我们着重介绍差分约束系统差分约束系统的原理和其需要掌握的bellman-ford算法。
然后通过zju1508和zju1420两道题目解析差分约束系统在信息学题目中的应用,并逐渐归纳解决这类问题的思考方向。
Bellmanford算法算法v算法简单介绍算法简单介绍这个算法能在更一般的情况下解决最短路的问题。
一般在:
1.该算法下边的权值可以为负2.可以运用该算法求有向图的单元最长路径或者最短路径.3.Bellmanford算法算法v松弛技术松弛技术:
对每一个结点v,逐步减小从起点s到终点v最短路的估计量distv直到其达到真正的最短路径值mindistv。
以单元最短路径为例这个操作就是保证distvdistu+wu,vthendistv=distu+wu,v如果是最长路径则是保证distv=distu+wu,vBellmanford算法算法v伪代码如下伪代码如下:
Fori=1to|V|G|-1Dofor每条边(u,v)Do更新操作(u,v,w(u,v)For每条边(u,v)Doif仍然有可更新内容thenreturnFalseReturnTrueBellmanford算法算法MAXMAXMAXMAX06785-2-4-3792ST6MAX7MAX06785-2-4-3792ST647206785-2-4-3792ST247206785-2-4-3792ST图例中,S为源节点,粗线段覆盖的边表示最近一次执行更新操作的边。
算法执行|V|-1次操作,每次操作都对所有可以进行松弛操作的边进行扩展。
Bellmanford算法算法v最终状态如下图。
247-206785-2-4-3792STBellmanford算法算法v证明算法的正确性证明算法的正确性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有dv=mindist(s,v)。
差分约束系统差分约束系统v对于解决差分约束系统问题的操作过程和使用原理,我们通过下面一道简单的题目进行了解。
v引例:
Zju1508Interval题目大意:
有一个序列,题目用n个整数组合ai,bi,ci来描述它,ai,bi,ci表示在该序列中处于ai,bi这个区间的整数至少有ci个。
如果存在这样的序列,请求出满足题目要求的最短的序列长度是多少。
如果不存在则输出-1。
差分约束系统差分约束系统v输入:
第一行包括一个整数n,表示区间个数,以下n行每行描述这些区间,第i+1行三个整数ai,bi,ci,由空格隔开,其中0=ai=bi=50000而且1=ci=C的形式,我们从A向B连一条有向边,权值为-C。
1)Sbi-Sai-1=Ci2)Si-Si-1=03)Si-1-Si=-1这样图就能完整地描述本题了!
用Bellman-ford求解!
201345611111000000-1-3-2例1S4-S0=2S6-S2=3S3-S1=1差分约束系统差分约束系统v这样如果我们从V0出发,求出结点V0到Vn的最短路径,则Sn-S0为满足要求情况下的最小值。
相反如果我们发现在Bellman-ford算法执行的过程中存在有负权回路,则说明不存在满足要求的式子。
v于是通过合理的建立数学模型,将不等式图形化,用Bellmanford作为武器,最终此题得到了圆满的解决!
差分约束系统v线性程序设计线性程序设计:
我们为线性程序设计问题制定一个严格的数学描述:
给定一个m*n矩阵A,维向量b和维向量c,我们希望找出由n个元素组成的向量x,在由Ax=b所给出的m个约束条件下,使目标函数达到最大值。
差分约束系统差分约束系统v其实很多问题都可以通过这样一个线性程序设计框架来进行描述。
在实际的问题中,也经常要对其进行分析和解决。
上述例题使我们对这一类线性程序设计问题提供了一个多项式时间的算法。
它将一类特殊的线性不等式与图论紧密联系在了一起。
这类特殊的线性不等式,我们称它为差分约差分约束系统束系统,它是可以用单元最短路径来求解的。
差分约束系统差分约束系统v差分约束系统差分约束系统:
差分约束系统是一个线性程序设计中特殊的一种,线性程序设计中矩阵A的每一行包含一个1和一个-1,A的所有其他元素均为0。
由Ax=b给出的约束条件形成m个差分约束的集合,其中包含n个未知单元。
每个约束条件均可够成简单的不等式如下:
xj-xi=bk(1=i,j=n,1=k=m)差分约束系统差分约束系统v简单举例:
差分约束系统差分约束系统v找出未知量x1,x2,x3,x4,x5,并且满足以下差分约束条件:
x1-x5=-1x2-x5=1x3-x1=5x4-x1=-1x4-x3=-1x5-x3=-3x5-x4=-3需要注意的是,用Bellmanford求出的具体答案只是众多答案中的一种,答案并不唯一,但答案之间却也有着联系。
这里我们并不对其进行专门的探讨。
差分约束系统差分约束系统v例题三zju1420CashierEmployment出纳员问题vTehran的一家每天24小时营业的超市,需要一批出纳员来满足它的需要。
超市经理雇佣你来帮他解决他的问题超市在每天的不同时段需要不同数目的出纳员(例如:
午夜时只需一小批,而下午则需要很多)来为顾客提供优质服务。
他希望雇佣最少数目的出纳员。
经理已经提供你一天的每一小时需要出纳员的最少数量R(0),R
(1),.,R(23)。
R(0)表示从午夜到上午1:
00需要出纳员的最少数目,R
(1)表示上午1:
00到2:
00之间需要的,等等。
每一天,这些数据都是相同的。
有N人申请这项工作,每个申请者I在没24小时中,从一个特定的时刻开始连续工作恰好8小时,定义tI(0=tI=23)为上面提到的开始时刻。
也就是说,如果第I个申请者被录取,他(她)将从tI时刻开始连续工作8小时。
你将编写一个程序,输入R(I)(I=0.23)和tI(I=1.N),它们都是非负整数,计算为满足上述限制需要雇佣的最少出纳员数目。
在每一时刻可以有比对应的R(I)更多的出纳员在工作。
差分约束系统差分约束系统v输入输入文件的第一行为测试点个数(=20)。
每组测试数据的第一行为24个整数表示R(0),R
(1),.,R(23)(R(I)=1000)。
接下来一行是N,表示申请者数目(0=N=1000),接下来每行包含一个整数tI(0=tI=23)。
两组测试数据之间没有空行。
输出对于每个测试点,输出只有一行,包含一个整数,表示需要出纳员的最少数目。
如果无解,你应当输出“NoSolution”。
差分约束系统差分约束系统v我们按刚才所讲到的方法对此题进行处理。
这题很容易想到如下的不等式模型:
设numi为i时刻能够开始工作的人数,xi为实际雇佣的人数,那么xI=rI设sI=x1+x2+xI,得到0=sI-sI-1=numI,0=I=rI,8=I=rI,0=I=连接的式子差分约束系统差分约束系统vsI-sI-1=0(0=I=-numI(0=I=rI(8=I=rI-s23(0=I=C的式子我们从节点B引出一条有向边指向A边的权值为C(这里注意由于左右确定,式子又是统一的=的不等式,所以A和B是相对确定的,边是一定是指向A的),图就建成了。
最后枚举所有s23的可能值,对于每一个s23,我们都进行一次常规差分约束系统问题的求解,判断这种情况是否可行,如果可行求出需要的最优值,记录到Ans中,最后的Ans的值即为所求。
总结v对于许多复杂的问题,我们通常选择将不够清晰、难以处理的模型转化为容易理解、易于处理的模型。
就像用已知的知识作为工具去探索未知领域一样,联想、发散、转化将成为相当有用的武器。
本文选择了差分约束系统这样一个平台,通过介绍差分约束系统的相关知识和其在信息学问题中的应用以小见大,为读者提供一个解题的思路和技巧。
v谢谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数与图的完美结合浅析差分约束系统 冯威 完美 结合 浅析 约束 系统