数学建模中的图论方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模中的图论方法
一、引言
我们知道,数学建模竞赛中有问题A和问题B。一般而言,问题A是连续系统中的问题,问题B是离散系统中的问题。由于我们在大学数学教育内容中,连续系统方面的知识的比例较大,而离散数学比例较小。因此很多人有这样的感觉,A题入手快,而B题不好下手。
另外,在有限元素的离散系统中,相应的数学模型又可以划分为两类,一类是存在有效算法的所谓P类问题,即多项式时间内可以解决的问题。但是这类问题在MCM中非常少见,事实上,由于竞赛是开卷的,参考相关文献,使用现成的算法解决一个P类问题,不能显示参赛者的建模及解决实际问题能力之大小;还有一类所谓的NP问题,这种问题每一个都尚未建立有效的算法,也许真的就不可能有有效算法来解决。命题往往以这种NPC问题为数学背景,找一个具体的实际模型来考验参赛者。这样增加了建立数学模型的难度。但是这也并不是说无法求解。一般来说,由于问题是具体的实例,我们可以找到特殊的解法,或者可以给出一个近似解。
图论作为离散数学的一个重要分支,在工程技术、自然科学和经济管理中的许多方面都能提供有力的数学模型来解决实际问题,所以吸引了很多研究人员去研究图论中的方法和算法。应该说,我们对图论中的经典例子或多或少还是有一些了解的,比如,哥尼斯堡七桥问题、中国邮递员问题、四色定理等等。图论方法已经成为数学模型中的重要方法。许多难题由于归结为图论问题被巧妙地解决。而且,从历年的数学建模竞赛看,出现图论模型的频率极大,比如:
AMCM90B-扫雪问题;
AMCM91B-寻找最优Steiner树;
AMCM92B-紧急修复系统的研制(最小生成树)
AMCM94B-计算机传输数据的最小时间(边染色问题)
CMCM93B-足球队排名(特征向量法)
CMCM94B-锁具装箱问题(最大独立顶点集、最小覆盖等用来证明最优性)
CMCM98B-灾情巡视路线(最优回路)
等等。这里面都直接或是间接用到图论方面的知识。要说明的是,这里图论只是解决问题的一种方法,而不是唯一的方法。
本文将从图论的角度来说明如何将一个工程问题转化为合理而且可求解的数学模型,着重介绍图论中的典型算法。这里只是一些基础、简单的介绍,目的在于了解这方面的知识和应用,拓宽大家的思路,希望起到抛砖引玉的作用,要掌握更多还需要我们进一步的学习和实践。
二、基本概念和性质
首先给出图论中的一些基本概念。
1.一个图G由一个顶点集V和一个边的集E组成。E中每个元素e是连接顶点集V中两个顶点u和v的边,称e与u,v关联。我们规定连接两个顶点u、v至多有一条边,且一条边的两个顶点不重合,这种图称为简单图。
2.顶点集为V,边集为E的图G通常记为G=(V,E)。图G1=(V1,E1)称为G的子图,如果V 1V,E1E。
3.顶点v的度(或“次”)是指与v相关联的边的个数。图G的度数之和为边数的两倍。
4.若图G中任意两个顶点u、v之间都存在连接它们的路,称G为连通图。
5.W=v0e1v1e2……ekvk,其中ei∈E,vj∈V,ei与vi-1,vi关联,称W是图G的一条道路。v0是起点,vk是终点;各边相异的道路叫做行迹,各顶点相异的道路叫做轨道;起点和终点重合的道路为回路;起点和终点重合的轨道为圈;包含图中每条边的回路称为Euler回路;含Euler回路的图称为Euler图。
6.一个无圈的连通图称为树。树是最简单而最重要的一类图。树有下列重要性质:
性质:
1)在树中去掉任意一条边,所得的图是不连通的。
2)在树中任意两个不相邻的顶点u、v之间添加一条新的边,所得的图恰有一个圈。
下述定理是树的判断定理:
定理:若图G具有下列性质中的两条,则它是树,且也具有第三条性质。
(1).G是连通图;
(2).G没有圈;
(3).G的顶点数=G的边数+1。
7.如果图G=(V,E)的子图G t=(V t,E t)是一个树,且V t=V,称G t是G的生成树。G连通的充要条件是G有生成树。生成树一般而言数量很大。
8.设对图G=(V,E)的每一条边e赋予一个实数W(e),称为e的权,G称为赋权图(加权
图)。假设G是连通的赋权图,要找G的连通子图G *=(V,E*),使得W(G*)=∑
∈E
e
e W) (为最
小。显然G*应为G的一个生成树。G的权最小的生成树称为G的最小生成树。
三、算法介绍
3.1 最短轨道问题
背景:给定连接若干城市的铁路网,寻求从指定城市v0到各城v去的最短道路。
数学模型:图G为一赋权图,对任给的v∈V(G),寻求轨道P(v0,v),使得
W(P(v0,v))=min{W(P),P取自所有v0到v的轨道集合}
其中W(P)是轨道P上各边权之和。
这一问题可用迪克斯特拉(Dijkstra)算法解决。
基本思想:从起点v0开始,逐步寻找到达各点的最短路,在每一步都对顶点记录一个数,称之为该点的标号,它表示v0到该点的最短距离的上界,或就是v0到该点的最短距离。实际上每一步都通过把至少一个具有T标号的点变成P标号(即把一个不是最短距离标号的顶点变成是最短距离标号的顶点),这样最多经过|V(G)|-1步就可完成。
步骤:记l(v)为v0到v的距离。
(1) l(v0)=0,l(v) = ∞,(v≠v0);S0={v0},i=0。
(2) 对v∉Si,min{l(v),l(vi)+w(viv)}代替l(v);这样找到点vi+1使得l(v)取最小值,v(i+1)∈(Si的余集)。令S(i+1)=Si+{v(i+1)}。
(3) i=|V(G)|-1时停止,否则,i+1,转到(2)。
实例:CMCM94A-公路选址问题。
3.2 求最小生成树
1.克罗斯克尔(Kruskal)算法(1956年),俗称“避圈法”
背景:筑路选线问题欲修筑连接n个城市的铁路,已知i城与j城之间的铁路造价为Cij。设计一个线路图,使总造价最低。
分析:选线问题的数学模型是在连通加权图上求权最小的连通生成子图。显然,权最小的连通生成子图是一个生成树,即求取连通加权图上的权最小的生成树,这就归结为最小生成树问题。这个问题可由克罗斯克尔(Kruskal)算法解决。
思路:从“边”着手选最小生成树。
步骤:设G为由m个节点组成的连通赋权图。
(1) 先把G中所有的边按权值大小由小到大重新排列,并取权最小的一条边为树T中的边。即选e1∈E,使得w(e1)=min。
(2) 从剩下的边中按(1)中的排列取下一条边。若该边与前面已取进T中的边构成一个回路,则舍弃该边,否则也把它取进T中。若e1,e2,…,ei已经选好,则从E-{e1,e2,…,ei}中选取ei+1,使得G[{e1,e2,…,ei,ei+1}]中无圈,且w(ei+1)=min。
(3) 重复步骤(2),直到T中有m-1条边为止。则T为G的最小生成树。