《数学建模之图论模型讲解ppt课件.ppt》由会员分享,可在线阅读,更多相关《数学建模之图论模型讲解ppt课件.ppt(135页珍藏版)》请在三一办公上搜索。
1、图论模型,数学系 孙艳蕊,主要内容,图模型,最短路问题,最小生成树问题,旅行售货员问题,最大流问题,图论的基本概念,匹配问题,一、图模型,例1. 哥尼斯堡七桥问题(18世纪,1736年) (1) 问题 能否从一块陆地出发,走遍每座桥一次且仅一次然后回到出发地?,普瑞格尔河,(2)问题分析与模型假设 问题的本质是能否从一地无重复地一次走遍七桥, 与所走过的桥的大小、形状、长短、曲直等均无关,因此不妨将其视为一条弧线; 四块陆地可重复经历,至于陆地的大小、形状、质地等也与问题的无关,因而可视四块陆地为四个点 A、B、C、D。,对四个陆地 A、B、C、D,若其间有桥,则用一条弧线连接起来,有两座桥,
2、则连两条不重合的弧线,便得到一个图,并称代表陆地的四个点为顶点 ,代表桥的弧线为 边 。,A,B,C, D,问题变成了:能否从这个图上任一顶点出发,经过每条边一次且仅一次而回到出发顶点。-Euler-回路(圈)问题。,例2 药品存储问题,有8种化学药品A、B、C、D、P、R、S和T要放进贮藏室保管,出于安全原因,下列各组药品不能贮在同一室内:AR,AC,AT,RP,PS,ST,TB,BD,DC,RS,RB,PD,SC,SD,试为这8种药品设计一个使用房间数最少的贮藏方案。,AR,AC,AT,RP,PS,ST,TB,BD,DC,RS,RB,PD,SC,SD.,至少需用3个房间:A,S,B/D,T
3、,R/C,P,每种药品作为一个顶点,不能放在一起的连边。相邻顶点用不同颜色着色。,这一问题就是图论中的顶点着色问题。,例3 最短路问题(SPPshortest path problem) 一名司机奉命在最短的时间内将一车货物从甲地运往乙地。从甲地到乙地的公路网纵横交错,有多种行车路线,这名司机应选择哪条线路呢?假设车的运行速度是恒定的。 这一问题相当于找到一条从甲地到乙地的最短路。,甲地,乙地,例4 中国邮递员问题(chinese postman problem) 一名邮递员负责投递某个街区的邮件。如何为他(她)设计一条最短的投递路线(从邮局出发,经过投递区内每条街道至少一次,最后返回邮局)?
4、 这一问题是我国管梅谷教授1960年首先提出的,所以国际上称之为中国邮递员问题。,若将投递区的街道用边表示,街道的长度为边的权,邮局街道交叉口用点表示,则一个投递区构成一个赋权连通无向图中国邮递员问题转化为:在一个非负加权连通图中,寻求一个权最小的Euler回路.,例5 旅行商问题(TSPtraveling salesman problem) 一名推销员准备前往若干城镇推销产品。如何为他(她)设计一条最短的旅行路线(从驻地出发,经过每个城镇恰好一次,最后返回驻地)? 这一问题的研究历史十分悠久,通常称之为旅行商问题。,若用顶点表示城镇,边表示连接两城镇的路,边上的权表示距离(或时间、或费用),
5、于是旅行商问题就成为在加权图中寻找一条经过每个顶点至少一次的最短闭通路问题-Hamilton圈问题。,例6 人员分派问题 某公司准备分派n个工人X1,X2,Xn做n件工作Y1,Y2,Yn,已知这些工人中每个人都能胜任一件或几件工作。试问能否把所有的工人都分派做一件他所胜任的工作? 构造一个具有二分类(X,Y)的偶图G, 这里 X=x1,x2,xn,Y=y1,y2,yn ,且xi与yj相连当且仅当工人Xi胜任工作Yj.于是问题转化为G是否存在完美匹配的问题。,y1,x1,y2,x2,x5,y5,x3,x4,y4,y3,例7 最小费用最大流,一批货物要从工厂运至车站,可以有多条线路进行选择,在不同
6、的线路上每吨货物的运费不同,且每条线路的运输能力有限。怎样运输才能使费用最少? 用结点s代表工厂,t代表车站,线路为边,线路的交点为网络的结点,每条边都有两个权:容量c和单位费用a,于是构成网络流图N,问题变成求N的最小费用流。,过河问题:摆渡人Ferryman,狼wolf,羊sheep,卷心菜cabbage过河问题 . 如何摆渡使得它们不能互相伤害.考试安排问题:学校期末考试安排n门课的考试时间时,不能把同一位学生选修的两门课安排在同一时间考试,问学校考试最少要进行多长时间?信道分配问题:发射台所用频率从小到大编号为1,2, 称为信道。用同一信道的两个台站相距得少于一个常数d,问各台至少需同
7、时使用几个不同的信道?,指派问题(assignment problem) 一家公司经理准备安排名员工去完成项任务,每人一项。由于各员工的特点不同,不同的员工去完成同一项任务时所获得的回报是不同的。如何分配工作方案可以使总回报最大?,二、 图论的基本概念(略),1. 图的概念,V(G)中的元素称为图G的顶点;E(G)是V(G)中的无序,中的元素称为边.,|V(G)|:图的顶点数; |E(G)|:图的边的数。,表示边,是非空有限集,称为顶点集,,或有序的元素对,组成的集合,称为边集, E(G),一个图G 是指一个二元组 (V(G), E(G), 其中,平凡图:只有一个顶点的图。,图:无向图,有向图
8、和混合图。,V=A,B,C,D,,E=e1,e2,e3,e4,e5,e6,e7,V=v1,v2,v3,v4,,E=e1,e2,e3,e4,e5,e6,无向图,有向图,孤立结点:不与任何边关联的顶点.,零图:仅由一些孤立结点构成的图.,常用术语,1) 边和它的两端点称为互相关联.,2)与同一条边关联的两个端点称,为相邻的顶点,与同一个顶点,点关联的两条边称为相邻的边.,3) 端点重合的边称为环,,端点不相同的边称为连杆.,4) 若一对顶点之间有两条以上的边联结,则这些边,称为重边,5) 既没有环也没有重边的图,称为简单图,常用术语,6) 任意两顶点都相邻的简单图,称为完全图. 记为Kn.,,,,
9、,则称为二部图或偶图;若X中每一顶点皆与Y 中一切顶点相邻,称为完全二部图或完全偶图,,记为 (m=|X|,n=|Y|),7) 若,且两个点集X与Y的内部 任意两顶点不相邻,,2赋权图与子图,定义 若图 的每一条边e 都赋以,一个实数w(e),称w(e)为边e的权,G 连同边上的权,称为赋权图.,定义 设 和 是两个图.,1) 若 ,称 是 的一个子图,2) 若 , ,则称 是 的生成子图.,3) 若 ,且 ,以 为顶点集,以两端点,均在 中的边的全体为边集的图 的子图,称,为 的由 导出的子图,记为 .,4) 若 ,且 ,以 为边集,以 的端点,集为顶点集的图 的子图,称为 的由 导出的,边
10、导出的子图,记为 .,3) 若 ,且 ,以 为顶点集,以两端点,均在 中的边的全体为边集的图 的子图,称,4) 若 ,且 ,以 为边集,以 的端点,集为顶点集的图 的子图,称为 的由 导出的,边导出的子图,记为 .,为 的由 导出的子图,记为 .,3 图的矩阵表示,(1) 邻接矩阵:,1) 对无向图 ,其邻接矩阵 ,其中:,(以下均假设图为简单图),2) 对有向图 ,其邻接矩阵 ,其中:,(2)关联矩阵,1) 对无向图 ,其关联矩阵 ,其中:,2) 对有向图 ,其关联矩阵 ,其中:,4. 顶点的度,定义 在无向图G中,与顶点v关联的边的数目(环,算两次),称为顶点v的度,记为d(v).,在有向
11、图中,从顶点v引出的边的数目称为顶点,v的出度,记为d+(v),从顶点v引入的边的数目称为,v的入度,记为d -(v). 称d(v)= d+(v)+d -(v)为顶点v的,度,定理,推论 任何图中奇点的个数为偶数,5. 路和连通,定义 无向图G的一条途径(或通道或链)是指,一个有限非空序列 ,它的项交替,地为顶点和边,使得对 , 的端点是 和 ,称W是从 到 的一条途径,或一条 途径. 整,数k称为W的长. 顶点 和 分别称为的起点和终点 ,而 称为W的内部顶点.,若途径W的边互不相同但顶点可重复,则称W,为迹或简单链.,若途径W的顶点和边均互不相同,则称W为路,或路径. 一条起点为 ,终点为
12、 的路称为 路,记为,起点与终点重合的途径称为闭途径.,起点与终点重合的的路称为圈(或回路),长,为k的圈称为k阶圈,记为Ck.,若在图G中存在(u,v)路,则称顶点u和v在图G中连通.,图G中任意两点皆连通的图称为连通图,例 在右图中:,途径或链:,迹或简单链:,路或路径:,圈或回路:,三、最短路问题及算法,最短路问题是图论应用的基本问题,很多实际,问题,如线路的布设、运输安排、运输网络最小费,用流等问题,都可通过建立最短路问题模型来求解.,最短路问题的两种方法:Dijkstra和Floyd算法 .,1) 求赋权图中从给定点到其余顶点的最短路.,2) 求赋权图中任意两点间的最短路.,在赋权图
13、G中,从顶点u到顶点v的具有最小权的路,称为路 P(u,v)的权,若P(u,v)是赋权图G中从u到v的路,称,P*(u,v),称为u到v的最短路,把赋权图中一条路的权称为它的长,把(u,v)路的,最小权称为u和v之间的距离,并记作 d(u,v).,在赋权图中找出指定两点之间的最短路的问题称之为最短路问题。,赋权图中求给定点到各顶点的最短路的算法(Dijkstra算法,1959年),令图G=, 集合SiV ,Si=V-Si , 令|V|=n Si=u|从u0到u的最短路已求出 Si =u |从u0到u 的最短路未求出,基本思想: 若使 (u0,u1,u2,un-1,un)最短, 就要使(u0,u
14、1,u2,un-1)最短, 即保证从u0到以后各点的路都是最短的.,Dijkstra算法:(求从u0到各点u的最短路长)第一步. 置初值: d(u0,u0)=0 d(u0,v)= (其中v u0) i=0 S0=u0 S0 =V-S0 , 第二步.若 i=n-1 则停. 否则转第三步第三步. 对每个u Si 计算 d(u0,u )=mind(u0,u ), d(u0,ui)+c(ui,u ),ui Si,u Si ,计算 mind(u0,u ),并用ui+1记下达到该最小值的那个结点u ,置Si+1 =Siui+1, i=i+1 Si =V-Si , 转第二步.,例.求右图中从v1到v6的最短
15、路。,d(u0,v2)=3, 路u0v2,d(u0,v4)=4, 路u0v2v4,d(u0,v5)=5, 路u0v2v4v5,d(u0,v3)=7, 路 u0v2v4 v3,d(u0,v6)=10, 路u0v2v4v3v6,实例1 一个多阶段存储问题,某商场欲编制某商品未来n个月的进货计划。假设每月月初进货,当月不需附加存储费,若一个月后销售则需加存储费。设每月需求量、进货单价和存储单价如下表:,确定一个进货与存储的合理水平使总费用最少。,分析 : 第k月的需要量可在第1月,第2月,第k月的任何一个月进货,分别计算费用如下: 第1月进货总费用:a1=bk(c1+d1+ +dk-1) 第2月进货
16、总费用:a2=bk(c2+d2+ +dk-1) 第k月进货总费用:ak=bkdk 比较a1,a2, ,ak的大小即可确定哪一个月进货总费用更省。,在确定借贷与存储的合理水平时,仅考虑一个单位货物,而不考虑进货量。,模拟图:以顶点vi表示第i月,i=1,2,n,连结点vi,vi+1,得边vivi+1,给边vivi+1赋权di,i=1,2, ,n-1;附加顶点v0,连结顶点v0,vi,得边 v0vi, 给边 v0vi 赋权 ci,i=1,2, ,n,得到n+1个顶点的赋权有向图,如下:,问题:将边的权理解为距离,费用最小就是求距离最短。因此只要求出顶点v0到其余各点的最短路,即可确定每个月的需要量
17、该由哪个月进货最好,从而制定出总费用最少的n个月的进货与存储计划。,设备更新问题:企业使用一台设备,每年年初,企业领导就要确定是购置新的,还是继续使用旧的.若购置新设备,就要支付一定的购置费用;若继续使用,则需支付一定的维修费用.现要制定一个五年之内的设备更新计划,使得五年内总的支付费用最少.,该种设备在每年年初的价格(万元)为:,使用不同时间设备所需维修费(万元)为:,实例2 多阶段决策问题,构造加权有向图G (V,E),弧(Xi,Xj)的权W (Xi,Xj)代表第i年初到第i+1年初之间的费用.,四、最小生成树及算法,连通且不含圈的无向图称为树常用T表示.,树中的边称为树枝. 树中度为1的
18、顶点称为树叶.,1. 树的定义,2. 树的等价定义,1)G是树( G无圈且连通);,2) G无圈,且有n-1条边;,3) G连通,且有n-1条边;,4) G无圈,但添加任一条新边恰好产生一个圈;,5) G连通,且删去一条边就不连通了(即G为最,最小连通图);,6) G中任意两顶点间有唯一一条路.,设G是具有n个顶点的图,则下述命题等价,3. 生成树,定义 若T是包含图G的全部顶点的子图,它又是树,则称T是G的生成树. 图G中不在生成树的边叫做弦.,图G=(V,E)有生成树的充要条件是图G是连通的.,找生成树的方法:避圈法和破圈法.,4. 赋权图的最小生成树 一棵生成树中的所有边的权之和称为该生
19、成树的权. 具有最小权的生成树,称为最小生成树. 最小生成树很有实际应用价值. 例如 顶点是城市,边的权表示两个城市间的距离从一个城市出发走遍各个城市,如何选择最优的旅行路线. 城市间的通信网络问题,如何布线,使得总的线路长度最短. 求最小生成树一般有两种方法:,Kruskal算法(或避圈法)和破圈法.,A. Kruskal算法(或避圈法),步骤如下:,(1) 选择边e1,使得w(e1)尽可能小;,(2) 若已选定边 ,则从,中选取 ,使得:,i) 为无圈图,,ii) 是满足i)的尽可能小的权,,(3) 当第(2)步不能继续执行时,则停止.,B. 破圈法,算法2 步骤如下:,(1) 从图G中任
20、选一棵树T1.,(2) 加上一条弦e1,T1+e1中,生成一个圈. 去掉此圈中最大权边,得到新树T2,以T2代T1,重复(2)再检查剩余的弦,直到全部弦检查完毕为止.,例 n个城市,各城市之间的距离如下表(距离为,表示两个城市之间没有直接到达的线路)。从一个城市出发走遍各个城市,如何选择最优的旅行路线.,城市作为顶点,两个城市之间有直达的线路,则连边,且给边赋权距离,得一个赋权图。,问题就是求一棵最小生成树。,五、 旅行售货员问题,一个旅行售货员想去访问若干城镇,然后回,到出发地.给定各城镇之间的距离后,应怎样计划,旅行路线,使他能对每个城镇恰好经过一次而总,距离最小?,它可归结为这样的图论问
21、题:在一个赋权完,全图中,找出一个最小权的H圈.,但这个问题是NP-hard问题,即不存在多项式,时间算法.也就是说,对于大型网络(赋权图),目前还,没有一个求解旅行售货员问题的有效算法,因此,只能找一种求出相当好(不一定最优)的解.,定义设G=(V,E)是连通无向图,包含图G的每个,顶点的路称为G的哈密尔顿路(Hamilton路或H路).,包含图G的每个顶点的圈,称为G的哈密尔顿圈,(或Hamilton圈或H圈).,含Hamilton圈的图称为哈密尔顿图。,98年全国大学生数学建模竞赛B题,今年(1998年)夏天某县遭受水灾. 为考察灾情、,组织自救,县领导决定,带领有关部门负责人到,全县各
22、乡(镇)、村巡视. 巡视路线指从县政府,所在地出发,走遍各乡(镇)、村,又回到县政,府所在地的路线.,“最佳灾情巡视路线”,1)若分三组(路)巡视,试设计总路程最,短且各组尽可能均衡的巡视路线.,2)假定巡视人员在各乡(镇)停留时间T=2,小时,在各村停留时间t=1小时,汽车行驶速度V,=35公里/小时. 要在24小时内完成巡视,至少应分,几组;给出这种分组下最佳的巡视路线.,一个可行的方法 :,先求一个H圈,再适当修改,得到具有较小权的另一H圈.,定义 若对于某一对i和j,有,则圈Cij将是圈C的一个改进.,在进行一系列改进之后, 最后得一个圈,不能再,用此方法改进了,这个最后的圈可能不是最
23、优的,但是它是比较好的,为了得到更高的精度,这个,过程可以重复几次,每次以不同的圈开始. 这种方,法叫做二边逐次修正法.,例 对下图的K6,用二边逐次修正法求较优H圈.,较优H圈:,其权为W(C3)=192,六、网络与网络流,1. 网络流的基本概念 先来看一个实例。 现在想将一些物资从S运抵T,必须经过一些中转站。连接中转站的是公路,每条公路都有最大运载量。 每条弧代表一条公路,弧上的数表示该公路的最大运载量。最多能将多少货物从S运抵T?,定义6.1 若有向图满足下列条件: (1) 有且仅有一个入度为零的顶点s,称为源点; (2) 有且仅有一个出度为零的顶点t,称为汇点; (3) 每一条弧(v
24、i, vj)都有一个非负数cij ,称为该边的容量。如果vi,vj之间没有边,cij =0。 则称该有向图为网络,记为N = (V, E, C).,图6.1所给出的一个赋权有向图N就是一个网络,指定v1是源点,v4为汇点,弧旁的数字为cij。,图6.1,图6.2,网络流:是定义在弧集合E上一个函数f=f(vi,vj),并称f(vi,vj)为弧(vi,vj)上的流量(简记为fij)。如图6.2所示的网络N,弧上两个数,第一个数表示容量cij,第二个数表示流量 fij。,2.可行流与最大流,(1) 定义 在实际问题中,对于流有两个显然的要求:一是每个弧上的流量不能超过该弧的最大通过能力(即弧的容量
25、);二是中间点的流量为0,源点的净流出量和汇点的净流入量必相等。因此有定义如下。,定义6.2 网络N = (V, E, C)中如果每条边都给定一个非负实数fij满足下列条件 (1)容量约束:0fijcij,(vi,vj)E, (2)守恒条件 对于中间点:流入量=流出量,即,对于源点与汇 点:源点的净流出量=汇点的净流入量,即,那么这一组fij称为网络N上的可行流,w称为流量.,网络N中流值最大的流f*称为N的最大流.,(2) 可增广(流)路径,可增广路径,是指这条路径上的流可以修改,通过修改,使得整个网络的流值增大。定义6.3 设f是一个可行流,P是从源点s到汇点t的一条路,若P满足下列条件:
26、 (1)在P上的所有前向弧(vivj)都是非饱和弧,即0fijcij; (2)在P上的所有后向弧(vivj)都是非零弧,即0fijcij。则称P为(关于可行流f的)一条可增广路径。,(3) 割及其容量,定义6.4 如果S是V的一个子集,,,则称边集 为网络N的一个割。显然,若把某一割的弧从网络中去掉,则从s到t就不存在路。所以直观上讲,割是从s到t的必经之道。,定义5 给一割,,把其中所有弧的容量,之和称为这个割的容量,记为,,即,网络N中容量最小的割,称为N的最小割。,不难证明,任何一个可行流的流量w都不会超过任一割的容量,即,例如,图6.2中,若,定理1 网络的最大流量不超过最小的割的容量
27、,即,证明 设f是给定网络的任意可行流,由可行流的性质,任给一个割,即,所以,因,由于,所以,由于可行流和割的任意性,定理成立。,如果网络的可行流不是最大流,就一定存在从s到t的可增流路径。,令s,v1,v2,vk,t是一条s到t的路径Pst,其中每条边的方向都是vj到vj+1,称为向前边。如果这条路径上每条边eij都有fijcij,那么令,令Pst每条边的流都增加d,所得流分布仍然是网络的可行流分布,但流增加了d.,(5,3),(2,1),(6,2),(4,1),(5,2),s,v4,t,v1,v2,v3,(5,4),(2,2),(6,2),(4,2),(5,3),s,v4,t,v1,v2,
28、v3,d=1,图6.3 网络中的一部分,图 6.4,还可以包含向后的可增流路径Pst,要求向前边eij都有fij0,对前向边eij,后向边eji,图6.5,d=1,图6.5,d=1,(5,3),(2,1),(6,2),(4,1),(5,2),s,v4,t,v1,v2,v3,图6. 5,d=1,(5,4),(2,2),(6,1),(4,2),(5,3),s,v4,t,v1,v2,v3,(1,0),(2,0),(1,0),(2,0),(2,0),s,t,a,c,b,第1条可增路s,c,b,t.,d,(1,0),(1,0),(2,2),(1,0),(2,2),(2,2),s,t,a,c,b,d,(1
29、,0),d=2,第2条可增路s,a,b,c,d,t,(1,0),(1,0),(1,1),(2,2),(1,1),(2,1),(2,2),s,t,a,c,b,d,(1,1),(1,1),最大流w=3,图6.6,图6.7,图6.8,定理2 最大流最小割定理:在一个网络N中,最大流量等于最小割的容量。,证明 设网络的一个可行流f 为最大流,确定一个割如下:,是向前边且,,则,若,是后前边且,,则,若,则,,否则存在s到t的一条可增路,矛盾。,因此,,,则任意,的边(x,y)有,若,是向前边,,是后前边,,由定理1,,又,所以,最大网络流 最大流问题实际上是求一可行流fij,使得w达到最大。若给了一个
30、可行流f,只要判断N中有无关于f的增广路径,如果有增广路径,改进f, 得到一个流量增大的新的可行流;如果没有增广路径,则得到最大流。 设 是最小割,下面用顶点标号法来定义S*,在标号过程中,有标号的顶点表示是S*中的点,没有标号的点表示不是S*中的点。如 果t有标号,则说明找到了一条增广路;如果标号过程进行不下去,而t没有标号,则说明不存在增广路,于是得到了最大流,同时也得到了一个最小割集。,求最大流的标号法(Ford,Fulkerson) 从一个可行流(一般取零流)开始,不断进行以下的标号过程与增广过程,直到找不到关于f的可增广路径为止。 1. 标号过程A标记过程中每个结点给予3个标号,第一
31、个标号表示该点的先驱点,第二个标号为“+”或“-”,表示先驱点与该点连接的边在可增广路中是前向边还是反向边,第三个标号表示这条边上能增加或减少的流值。,stepA1 发点s标记为(s,+, ),此时称为已标记,未检查,其余点均称为未标记,未检查。stepA2 任选一已标记未检查的结点x,若结点y与x邻接且为标记,则当(1) 若(x,y)E且cxyfxy时,则y标记为(x ,+,dy),其中 dy= mindx, cxy-fxy之后,称y已标记未检查。(2) 若(y, x)E且fyx0时,则y标记为(x ,-,dy),其中dy= mindx, cxy-fxy之后,称y已标记未检查。,(3) 与结
32、点x邻接的所有结点都标记完之后,将x的标记的符号“+”或“-”加以标记,表示x已标记且已检查。StepA3 重复stepA2,直到收点t被标记,或者收点不能获得标记为止。如果是前者,转向增广过程,如果是后者,算法结束,所得流即是最大流。,2. 增广过程BstepB1 令 z=t stepB2 若z的标记为(q,+,dz),则,若z的标记为(q,-,dz),则,stepB3 若 q=s,则把全部标记去掉, 转向标记过程A, 否则令z=q,转到B2.,例 求图6.9所示的最大流。边上的数字表示容量。,设f是任意可行流,从零流开始,设每条边的流均为0 ,即,1. 找一条可增广路并增加其流值,A (标
33、记过程)发点s标记为(s,+, ) 考察与s邻接的点v1和v2。对点v1,,则,图6.9,s,t,8,0,v1,v4,v3,v2,7,0,5,0,2,0,9,0,6,0,10,0,5,0,9,0,于是,v1标记为(s,+,8),同样的方法v2得到标记(s,+,7)。与s邻接的点都已标记,s标记中的“+”写成,表示s已标记,已检查,如图6.10。,图6.10,(s, , ),(s,+,8),(s,+,7),(3) 重复stepA2,选一已标记、未检查的点,如选v1点,与v1邻接且未标记的点只有v3。因,v3标记为(v1,+,8)。点v1已标记、已检查,将其标记中的“+”写成,如图6.11。,s,
34、t,8,0,v1,v4,v3,v2,7,0,5,0,2,0,9,0,6,0,10,0,5,0,9,0,图6.11,(s, , ),(s, ,8),(s,+,7),则,(v1,+,8),(4) 重复stepA2,选一已标记、未检查的点,如选v3点,与v3邻接且未标记的点有v4和t。,对于点v4,因(v4,v3)E 且fv4v3=0,因此,不能用点v3去标记点v4.对于点t,因,s,t,8,0,v1,v4,v3,v2,7,0,5,0,2,0,9,0,6,0,10,0,5,0,9,0,图6.12,(s, , ),(s, ,8),(s,+,7),(v1,+,8),t标记为(v3,+,5)。如图6.12
35、。由于t已标记,转到增广过程B.,(v3,+,5),B. 增广过程,s,t,8,5,v1,v4,v3,v2,7,0,5,0,2,0,9,0,6,0,10,0,5,5,9,5,图6.13,至此,完成增广过程。如图6.13。,2.找一条可增广路并增加其流值,图6.14,A (标记过程)对图13重新标记得到图6.14。,s,t,8,5,v1,v4,v3,v2,7,0,5,0,2,0,9,0,6,0,10,0,5,5,9,5,(s, , ),(s,+,3),(s, ,7),(v2,+,7),(v4,+,7),图6.15,B. 增广过程。从标记过程得到一条可增广路:,s,t,8,5,v1,v4,v3,v
36、2,7,7,5,0,2,0,9,7,6,0,10,7,5,5,9,5,增值d=7,于是得到图6.15,至此又完成一次增广过程。,3.找一条可增广路并增加其流值,图6.16,对图6.15重新标记得到图6.16,得到一条可增广路:,s,t,8,5,v1,v4,v3,v2,7,7,5,0,2,0,9,7,6,0,10,7,5,5,9,5,(s, , ),(s,+,3),(v1, ,3),(v2,+,2),(v4,+,2),图6.17,s,t,8,7,v1,v4,v3,v2,7,7,5,0,2,0,9,9,6,0,10,9,5,5,9,5,增值d=2,于是得到图6.17。,图6.18,4. 对图6.1
37、7重新标记得到图18,v4和t均不能再获标记,算法结束。最大流为14。,s,t,8,7,v1,v4,v3,v2,7,7,5,2,2,0,9,9,6,0,10,9,5,5,9,5,(s, , ),(s, ,1),(v1, ,1),(v1, ,1),将获得标记的结点归为S,不能标记的结点归为,即,图6.18,s,t,8,7,v1,v4,v3,v2,7,7,5,2,2,0,9,9,6,0,10,9,5,5,9,5,(s, , ),(s, ,1),(v1, ,1),(v1, ,1),得到最小割为:,其容量为,七、 匹配问题,问题引出 m家公司到某校研究生院招聘经理,每家公司只招收一名,只要是该校毕业生
38、他们都满意。但毕业生每个人心目中有自己可以接受公司的一个清单,不是任何公司他们都会应聘。设有n名毕业生,问是否每位毕业生都可能得到他可以接受的岗位?如果不可能,最多可能有多少位毕业生满意?,某公司准备分派n个工人X1,X2,Xn做n件工作Y1,Y2,Yn,已知这些工人中每个人都能胜任一件或几件工作。试问能否把所有的工人都分派做一件他胜任的工作?,假设n个男孩和m个女孩,每个男孩认识几个女孩,问在什么条件下,每个男孩都能娶到一个他认识的女孩?,1. 匹配,设M是E的一个子集,它的元素都是G的边,并且这些边中的任意两个在G 中均不相邻,则称M为G的匹配(对集match)。,M中一条边的两个端点称为
39、在M下是配对的。若匹配M的某条边与顶点v关联,则称M 饱和顶点v,并且称v是M饱和的,否则,称v是M非饱和的。若G的每个顶点均为M饱和的,则称G为M的完美匹配。若G没有另外的匹配M1,使得M1|M|, 则M成为G的最大匹配;显然,每个完美匹配都是最大匹配。,设M是G的匹配,G的M交错路是指边在EM和M中交替出现的路。M可扩路是指其起点和终点都是M非饱和的M交错路。定理1 G的匹配M是最大匹配当且仅当G不包含M可扩路。 证明 设M是G的匹配,并假设G包含M可扩路 v0v1v2m+1。定义M1E,2. 偶图的匹配和覆盖,对于图G的任一顶点集合S,定义G中S的邻集为与S的顶点相邻的所有顶点的集,记为
40、NG(S),简记为N(S)。,问题:假设n个男孩和m个女孩,每个男孩认识几个女孩,问在什么条件下,每个男孩都能娶到一个他认识的女孩?,这个问题用一个偶图G=(X,Y,E)表示,X和Y其中分别表示男孩和女孩的集合,如果男孩认识女孩,则两个点之间连一条边。问题变成:偶图G应满足什么条件才能有一个饱和X中每个顶点的匹配?,显然,为了使每个男孩都能取到他认识的一个女孩,其必要条件是其中的任意k(1kn)个男孩都至少认识k个女孩。这个条件也是充分的。,定理2 设G为具有二分类(X,Y)的偶图,则G存在饱和X的每个顶点的匹配当且仅当 N(S)|S| 对所有SX成立 。 (1),推论 若G是k正则偶图(k0
41、),则G有完美匹配。,覆盖,图G的一个覆盖是指V的一个子集K,使得G的每条边都至少有一个端点在K中。一个覆盖K称为G的最小覆盖,如果G没有覆盖K1使得K1|K|,如图。,一个覆盖,一个最小覆盖,若K是G的覆盖,M是G的匹配,则至少包含M中每条边的一个端点。于是,对任何匹配M和任何覆盖K,均有M|K|。因此,若M*是最大匹配,是最小覆盖,则有,一般地,上式中的等号不成立,但对于偶图有,引理 设M是G的匹配,K是G的覆盖,如果M=|K|,则M是最大匹配,且K是最小覆盖。,定理3 设M*和 分别是偶图G的最大匹配和最小覆盖,则,练习1 矩阵的一行或一列统称为一条线。证明一个(0,1)矩阵中,包含所有
42、1元素的线的最小条数等于两两都不在相同线上的1的元素的最大个数。,X:行集合,Y:列集合.当且仅当两线有公共1时,两线两边,构成一个二分图.,X,最小覆盖等于最大匹配.,练习2 证明一个6x6方格棋盘移去其中对角上的两个1x1方格之后,不可能用1x2的长方形恰好填满。,做一二分图,证明其不存在完美匹配,1,3,2,4,6,5,7,9,8,10,11,12,13,15,14,16,17,18,19,21,20,22,23,24,25,27,26,28,29,31,32,34,33,35,2 7 4 9 28 34,1 3 8 5 10 35,3 . 完美匹配,图的分支根据它有奇数个或偶数个顶点分
43、别称为奇分支或偶分支。 o(G)表示G的奇分支个数。,Th(Tutte 1947) 图G有完美匹配当且仅当 o(G-S)S 对所有SV成立。,4. 应用,(1) 人员分派问题 某公司准备分派n个工人X1,X2,Xn做n件工作Y1,Y2,Yn,已知这些工人中每个人都能胜任一件或几件工作。试问能否把所有的工人都分派做一件他说胜任的工作? 构造一个具有二分类(X,Y)的偶图G, 这里 X=x1,x2,xn, Y=y1,y2,yn ,且xi与yj相连当且仅当工人Xi胜任工作Yj.于是问题转化为G是否存在完美匹配的问题。根据定理2,G或者存在完美匹配,或者存在X的子集S,使得N(S)S.,给定任意一个具
44、有二分类(X,Y)的偶图,或者找一个饱和X中每个顶点的匹配,或者找X的一个子集S,使N(S)S。,Hungarian Method以任一匹配M作为开始,可取M= 。,(1) 若M饱和X的每个顶点,停止(M为完美匹配)。否则,取X中M-不饱和顶点u,令Su ,T 。,(2) N(S)=T,停止(无完美匹配)。否则,(3) (此时N(S)T)取yN(S)T。若y为M饱和的,设yz M,则,SSz ,TT y Goto(2);否则(y为M-不饱和的),存在M-可扩路P,令,MME(P),Goto(1).,设M是G的匹配,u是X的一个M非饱和顶点。若树HG满足(1) uV(H);(2) 对H的每个顶点
45、v,H中唯一的(u,v)路是一条M交错路,则称树H是一条扎根于u的M交错路。,算法的关键就是找M-交错树。过程如下:,开始时H由一单点u组成。且按以下方式生长:除u外H的所有顶点是M饱和的,并且在M下匹配,图a,或者M包含不同于u的M非饱和顶点,图b.,图a,图b,如果情形(1)出现,则S=V(H)X, T=V(H)Y,有N(S)T;于是,或者N(S)=T或者N(S) T。若N(S)=T ,则N(S)=S-1, 这说明G没有饱和X所有顶点的匹配。 若N(S) T,则存在YT中的点y相邻于S中的顶点x,由于H的所有顶点,除了u外,都在M下配对,因此或者x=u,或者x和H的一个顶点配对,所以xyM
46、.,A,a,B,C,b,c,d,e,D,E,A,a,B,C,b,c,d,e,D,E,B,b,a,M交错树,图 G,图 G,S=a,b,T=B,A,a,B,C,b,c,d,e,D,E,B,b,a,M交错树,图 G,D,d,A,a,B,C,b,c,d,e,D,E,B,b,a,M交错树,图 G,D,d,A,S=a,b,d,T=B,D,S=a,b,d,T=A,B,D,B,a,c,M交错树,图 G,S=a,c,T=B,B,a,c,M交错树,D,d,S=a,c,d,T=B,D,N(S)=T,图G中无完美匹配。,(2) 最优分派问题,可以利用Hungarian Method 确定工人分派工作的可行方案,且是
47、一个有效的方法。把工人工作效率考虑进去,找一种分派方案使工人们总效率达到最大。寻找这种分派的问题称为最优分派问题。,考察一个具有二分类(X,Y)的偶图G, 这里X=x1,x2,xn, Y=y1,y2,yn ,边xiyj有权wij=w(xi,yj),表示工人Xi做工作Yj时的效率。于是问题转化为G是否存在完美匹配的问题。最优分派问题等价于在这个赋权图中寻找一个有最大权的完美匹配. 称这种匹配为最优匹配。,Kuhn and Munkras设计了一个求最优匹配的有效算法,将求最优匹配问题转化为可用算法求另一个图完美匹配的问题。,在顶点集合XY中的每个元素(顶点)定义满足下列条件的实值函数l:对所有的
48、xX, yY,均有,l(x)+l(y)w(x,y),则把这个函数定义为该偶图的一个可行顶点标号,实数l(v)称为顶点v的标号。,不管边的权是什么,总可以定义一个可行标号:,若l是可行标号,用El表示使l(x)+l(y)w(x,y)中等号成立的边的集合,即,具有边集El的G的生成子图称为对应于可行顶点标号l的相等子图,用Gl表示。,相等子图与最优匹配之间的联系:,定理:设l是G的可行性顶点标号,若Gl包含完美匹配M*,则M*是G的最优匹配。,问题的转换!,要求最优匹配,只需用Hungarian算法求Gl上的一个完美匹配。,首先给出任一可行顶点标号l,然后确定Gl,在Gl中选取任意匹配M,利用Hu
49、ngarian算法找Gl的完美匹配。若在Gl中找到一个完美匹配,则该匹配就是G的最优匹配。否则Hungarian算法将终止于非完美的匹配M1和一个既不包含M1的可扩路,又不能在Gl中进一步生长的M1交错树H。随后,把l修改为具有下述性质的另一个可行顶点标号 :M1和H都包含在 中,并且H能够在 中伸展。,必要时,不断地进行这种可行标号的修改,直到一个完美匹配在某个相等子图中找到为止。,1. 从任一可行顶点标号l开始,然后决定Gl,并且在Gl中选取任一匹配M。,2. 若X是M饱和的,则M是完美匹配,且是最优匹配;否则,令u是一个M非饱和顶点,令S=u,T=。,3. 若NGl(S)T,则转4;否则
50、, NGl(S)=T。计算,为可行顶点标号。,4. 在NGl(S)T中选择一个顶点y,若y已被M饱和,且yzM,则SSz, TTy,转3;否则,设P是Gl中的M可扩(u,y)路,设,转1.,例K5,5的权矩阵为W, W的元素,取可行顶点标号如下:,构造图Gl如下:,x1,x2,y2,y1,x5,y5,x3,y3,图Gl,M=x1y2, x2y1, x3y3, x5y5,Gl无完美匹配,其顶点标号需要修改。,0 0 0 0 0,5 2 4 1 3,x1,x2,y2,y1,x5,y5,x3,y3,图Gl,取未被M饱和的点x4, S=x4, x3, x1, T=y3, y2.,0 1 1 0 0,4