第六章 图论方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章图论方法
§1 图论中图的概念
在人们从事的各种活动中,为了反映事物之间的关系,常在纸上用点和线画出各种各样的示意图。
例如,为了反映某地区的铁路交通、公路网分布情况,画出铁路、公路交通图。
在这些图中以点表示城镇,用点与点之间的连线表示城镇之间的铁路或公路的沟通情况。
诸如此类的图还有电缆线分布图、供水道及下水道分布图、航空线图等等。
再如,在一场有5支球队参加的球类比赛中,比赛情况也可以用图表示出来,如图6-1,我们用点代表各个球队,某两个队比赛过一次,就在两个点之间画一条箭线。
从图中可以看出A队与其他各队都比赛过,只有一场败给C 队。
而B队和E队各比赛过两场,成绩都是一胜一负,等等。
图6-1
从上述例子中可以看出,图的最基本要素是:点、以及点与点之间的一些连线。
通常用点表示我们所要研究的对象(如城市、运动队、状态等等),用线表示研究对象间的某种特定关系(如两个城市之间有铁路,两个运动队之间已经比赛过等)。
因此可以说,图是反映对象之间关系的一种工具。
如果两个对象之间有某种特定关系,那么就用一条线连接这两个点。
必须指出:上述图中点的相对位置如何,点与点之间连线的长短曲直,对于反映研究对象之间的关系并不很重要,因此,图论中的图与几何图、工程图本质上是不同的。
另外在许多情况下,我们要研究的“关系”只用一条线反映还是不够完全。
比如说比赛,我们关心的如果不只是两个队是否比赛过,还要了解比赛的胜负情况,我们可以用一条箭线(有向线)来表示,如果A队胜了B队,就表示为
A→B。
如图6-1所示,从图中可以看出A队三胜一负,D队三场全负等。
类似的情况在生产和生活中也是常见的,例如交通运输中的“单行线”、部门之间的领导与被领导关系、一项生产活动中各工序之间的先后次序关系等等。
图论中把不带箭头的连线叫做边,把带箭头的连线叫做弧。
如果一个图是由点和边所构成的,则称之为无向图,记作G=(V,E),其中V表示图G中的所有点组成的点集合,E表示图G中所有边组成的边集合。
如,交通图。
如果一个图是由点和弧所构成的,则称之为有向图,记作G=(V,A),其中V表示图G中的点集合,A表示图G中所有弧组成的弧集合(如上图)。
其次,为了反映两个城市之间铁路线的公里数(或运行时间等),就要在这两个城市之间的连线旁边写上里程数(或运行时间等)。
这就是说,根据问题的需要,还可以在图的点旁或连线旁标上数,统称为权数。
权数在不同的场合可以有不同的含义,如距离(长度),时间、费用、容量等等。
如果给图中每一条连线赋予一个数,则称这样的图G为赋权图,所谓网络就是指定了起点(发点)和终点(收点)的赋权图。
对要研究的问题确定具体对象及各对象间的关系,并用图的形式表示出来,这样的图就是对研究问题建立的图模型。
用建立图模型的方法往往能帮助我们解决一些用其他方法难以解决的问题。
例1、有甲、乙、丙、丁、戊、已六名运动员报名参加A、B、C、D、E、F六个项目的比赛。
表中打√的是各运动员报名参加的比赛项目。
问六个项目的比赛顺序应如何安排,才能保证每名运动员都不连续地参加两项比赛。
解:把比赛项目作为研究对象,用点表示。
如果两个项目有同一名运动员参加,就在代表这两个项目的点之间连成一条线,可得一图。
在该图中只要找出一个点的序列,使依次排列的两个点间没有连线,就能保证每名运动员不会
连续参加两项比赛。
例如,从图上可看出,按照A、C、B、F、E、D顺序安排比赛,即可满足要求。
书P136练习6.3
有十名研究生要参加六门课程的考试。
由于选修的课程不同,考试门数也不一样。
表6-4给出了每个研究生应参加考试的课程(打△号的)。
规定考试应在三天内结束,每天上下午各安排一门。
研究要求每人每天最多考一门,又课程A必须安排在第一天上午考,课程F安排在最后一门考,课程B只能安排在下午考试,试列出一个满足各方面要求的考试日程表。
表6-4
解:把考试课程作为研究对象,用点表示。
如果两门课程有同一名研究生参加考试,就在代表这两门课程的点之间连成一条线,可得一图如下。
这个图就是练习6.3问题的图模型。
在该图中第一天上午写入A,第三天下午写入F,因B课程与课程A和F有联系,故只能排入第二天下午,剩下的课程C、D、E要找出两个点间没有连线,例如,从图上可看出,按照A点与E 点间无连线,故E课程可排第一天下午,同理C、D课程安排第二天与第三天上午,即可满足要求。
§2 树和图的最小生成树
在各式各样的图中,有一类简单而且十分有用的图,即所谓树图(简称树,记作T(V,E))。
树图就是无圈(即回路)的连通图。
这类图与大自然中树的特征相似,因而得名为树图。
铁路专用线、管理组织机构、学科分类往往都可以用树图的形式表示。
例如,下面图(1)就是树图,而图(2)因为图中有圈(回路),所以它不是树;图(3)因为不连通,所以也不是树图。
可见,树必须是连通的而且是不含圈的图。
任一树图中的连线数一定比其点数少一。
V1 V1 V1 V8
V2 V3 V2 V3 V2 V9
V6
V5 V4 V4 V5 V3 V4
V8
V7 V6
V8 V9 V7 V5 V7图(1)图(2)图(3)
从一个给定的无向图G=(V,E)中,去掉图G中一些连线,保留图G中的所有点,所得的树图被称为图G的生成树。
由一个图G可以生成若干树图,但不同生成树的连线总长度也是不同的,其中连线总长度最小的生成树就称为最小生成树。
§3 最小生成树的算法
求图的最小生成树问题就是在一个网络中,从一个起点出发到所有结点,找出一条或几条路线,构成线路总长度最小的一个树问题。
为了解决这个问题,我们用一个在住宅小区安装供水管道的例子来用说明求图的最小生成树的普赖姆算法。
图6-2是各座住宅楼之间可以安装供水管道的距离图,图中圆圈代表住宅楼,连线上的数字代表距离(以米为单位)。
图6-2 各座住宅楼之间可以安装供水管道的距离图
最小生成树的普赖姆算法就是把最近的未连接点连接到那些已经连接的结点上去,连接的方法如下:
1.从始点出发,我们来查找与始点1最近的结点,发现结点3与1的距离最近,为100米,于是把1——3连接好,见图6-3。
2.从已连接点1、3出发,查找与结点1、3最近的结点,发现结点4与1的距离最近,为300米,于是把1——4连接好,见图6-3。
3.从已连接点1、3、4出发,查找与始点1、3、4最近的结点,发现结点7与1的距离最近,为400米,于是把1——7连接好,见图6-3。
4. 从已连接点1、3、4、7出发,查找与始点1、3、4、7最近的结点,发现结点5与3的距离最近,为500米,于是把3——5连接好,见图6-3。
5.用同样的方法查到5与6的距离最近,为200米,7与2的距离最近,为900米,于是把5——6、7——2连接好,见图6-3。
必须指出:在查找与连接过程中,要避免出现回路,即圈(否则就不是要
求的树图),直到所有结点都被连接到起点为止。
图6-3 各座住宅楼之间供水管道的最小生成树
图6-3就是各座住宅楼之间供水管道的最小生成树。
为了给各座住宅楼供水,总共需要2400米水管。
关于最小生成树问题,我们再举例一个例子如下:
已知连接5个城市的公路交通图6-4,图中连线旁边数字是距离(单位:公里)。
现在要在这5个城市之间架设有线电视电缆,为了便于维修,要求电缆必须沿公路架设,而且电缆线的总长度要最少。
我们用普赖姆法(也称选线避圈法)计算如下:
1.开始时,从图选出最小的连线1——4,并将加粗,表示1、4点被连
接;
2.再从图选出次最小的连线1——5,并将加粗,表示1、5点被连接;
3.再从图选出第三最小的连线1——3,并将加粗,表示1、3点被连接,注意这里选择了连线1——3,而未选择连线4——5,是因为连线4——5与连线1——4、连线1——5构成了圈,有圈就不再是要求的树了,所以在选连线时,必须注意避免形成圈;
4.再从图选出第四个最小的连线2——3,并将加粗,表示2、3点被连接,至此最小生成树图已求得,如图6-5。
其连线数一定比结点数少1。
由所求最小生成树图可知架设的电缆线总长度为54公里。
图6-4 图6-5 网络图的最小生成树算法的应用范围十分广泛,凡是各地区之间架设输电线、电缆线、输油管道、修建上下水管道等等,都可应用这个算法,从而能规划出长度最小的网络。
又如书P137习题6.6:某公司有八口海上油井,相互间距离如表所示,单位:海里。
1号井离海岸最近为4.8海里。
问:从海岸经1号井铺设油管,把各油井连接起来,应如何铺设可使管道总长度最少(为便于计量和检修,油管只准在各井位处分叉连接)?
各油井间的距离(单位:海里)Array
解:依题意可得最小生成树如下:
§4最短路线问题
下面我们用例子来介绍最短路线问题。
例1 赵某是A市一家运输公司的卡车调度员。
他的公司已经签订了一份运输合同,要把A市的一批货物运送到B市。
赵某看了这个城市之间可以选择的行车路线,并绘制了下面的公路网络。
图6-6中,圆圈也称结点,代表起点、目的地和途中要经过的其他城市。
箭线代表各城市之间的公路,每条公路上标着里程。
赵某的任务是找出从A市到B市的最短路线。
图6-6
一、最短路线的手工计算方法为:
1.从起点开始逐步向前推算:若经过结点2,因结点1到2只有一条路线,没有选择的余地,所以边1——2就是结点1到2的最短路线,其里程是100,将其写在结点2上方括号中。
同理,在结点3、4上方标上175和150。
2.再看结点6,因到达结点6有两条路线可以选择,若选择边2——6到达结点6,其里程是100+300=400,若选择边4——6到达结点6,其里程是150+200=350,所以从起点1到达结点6的最短路线的里程是350,将其写在结点6上方括号中。
同理,在结点5、7上方标上325和425。
3.再看结点9,因到达结点9有两条路线可以选择,若选择边6——9到达结点6,其里程是350+200=550,若选择边5——9到达结点9,其里程是325+400=725,所以从起点1到达结点9的最短路线的里程是550,将其写在结点9上方括号中。
同理,在结点8上方标上550。
4.再看结点10,因到达结点6也有两条路线可以选择,若选择边9——
10到达结点10,其里程是550+100=650,若选择边9——10到达结点10,其里程是550+150=700,所以从起点1到达结点10的最短路线的里程是650,将其写在结点10上方括号中。
最后我们可以根据结点1到10的最短路线里程反向找出最短路线,见图6-7中加粗的箭线组成的路线1——4——6——9——10。
图6-7
求网络图的最短路线方法可以应用于公路运输、铁路运输、电缆架设、管道铺设以及企业设备更新等方面。
二、最短路问题的应用(见书P138习题6.10)
例2某人购买一台摩托车,准备在今后四年内使用。
他可在第一年初购买一台新车连续使用四年,也可于任何一年年末卖掉,于下一年初换一台新车。
已知各年初的新车购置价见表6-7。
不同役龄车的年使用维护费及年末处理价见表6-8。
要求确定此人使用摩托车的最优更新策略,使四年内用于购买、更换及使用维护的总费用为最省。
表6-8 单位:万元
例3 某公司在六个城市A、B、C、D、E、F设有分公司。
各城市间的
求A城市到各城市间票价最低的航线。
答案:由表知从A到B、C、D、E、F票价最低的航线分别为:
A 10 F 25 B; A 25 E 20 C;A 25 E 10 F;
A 25 E;A 10 F 。
三、选址问题
选址问题通常是针对服务性单位或企业选择合适地址,如邮电局、洗浴中心、商场等地址的选择。
选址问题的标准一般有两种。
(1)使所选地址到最远的服务对象距离尽可能小——中心点;
(2)使所选地址到各服务对象的总距离最小——中位点。
对于有时间限制的服务性单位或企业的选址问题多用中心点;对于有总资源限制的服务性单位或企业的选址问题多用中位点。
1.中心点选址
中心点选址的原则:位置在结点上,定点在距最远结点距离最近的结点。
确定中心点的方法是以结点到结点的最短距离为基础,按大中取小的原则确定。
例4 求下面网络图的中心点。
图中数字为两个结点间的直接距离。
解:利用Excel规划求解,求出各结点到其他结点的最短距离,列出最短距离矩阵如下:
max
⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡03
303
62
54
43601
32510244320 4min 46654⇒⎪
⎪⎭⎪⎪⎬⎫ 利用最大最小原则确定中心点,可知其中心点为结点①或⑤。
2. 中位点选址 中位点选址的原则:位置在结点上,它到其他结点的最短距离的总和最小。
确定中位点的方法是以结点到结点的距离为基础,按某结点到其他结点最短距离的总和中取小原则确定。
例5 求图6-8的中位点。
图中数字为两个结点间的直接距离。
解:利用Excel 规划求解,求出各结点到其他结点的最短距离,列出最短距离矩阵 如下:
sum
⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡03
303
62
54
43601
32510244320 10min 1218131013⇒⎪
⎪⎭⎪
⎪⎬⎫
按总和中取小原则确定中位点,可知其中心点为结点②。
§5 容量网络的最大流问题
在有一个起点和一个终点的网络中,求最大流量问题就是企图找出,在单位时间内,从起点出发,通过该网络到达终点的最大流量(它可以车流、液体、飞机等等)。
一、最大流量问题的手工算法
下面我们举一个实际例子来说明最大流量问题的算法。
例1 某市从北往南的交通,平时是利用有5号路通行,由于5号路要道路维修,有一个星期,车辆不能通行,因此交通管理部门需要计算在这个星期内,该市从北往南是否有把握每小时通过6000车辆,这些车辆在正常情况下是要利用5号路行驶的。
图6-8
图6-8中标出了穿过该市从北往南的几条路线,结点旁边的数字是该行车道上的车流容量(即每小时能通过的最大千车辆数)。
最大流量的手工算法
以图6-8为例,图中各条道路上每小时车辆流动能力依次为:
1——2线:6千辆; 1——3线:5千辆; 1——4线:3千辆;
2——5线:4千辆; 2——3线:7千辆; 3——5线:5千辆;
3——4线:3千辆; 4——6线:7千辆; 5——6线:2千辆。
1.任意选择从起点到终点的第一条路线。
这里,选择路线1→2→5→6。
我们用三个步骤来完成。
首先,在1→2→5→6路线上找出允许流量最小的连线5→6,其最小流量能力为每小时2千辆,用2表示。
这表明,5→6连线是这条路线上的瓶颈,沿1→2→5→6路线行驶的车辆,每小时最大车流量只能是2千辆。
为此,在其中三条连线的终结点,即结点2、5、6处标上2(1),见图6-9,表示在第一条路线1→2→5→6上的流量能力为每小时2千辆汽车。
然后,将路线1→2→5→6上每条连线的允许流量减去最小流量能力“2”,把差数写在相应连线的起始点处圆括号内,如,2→5点连线上的允许流量是“4”,则在点2处标出4(4-2),即4(2),其中(2)表示剩余流量能力为4。
这样,在1→2、2→5、5→6三条连线的起始点1、2、5处标出6(4),4(2),2(0),见图6-9。
2.再选择从起点到终点的第二条路线。
如1→4→6。
同样,首先在该路线上找出流量能力最小的连线1→4,其最小允许流量为每小时3千辆,用3表示。
然后按上述方法,在连线1→4,4→6的终结点4和6处均标出3(2),见图6-9,在连线1→4,4→6的起始点1和4处均标出3(0)和7(4),见图6-9。
表示在第二条路线1→4→6上的流量能力为每小时3千辆汽车。
3.再选择从起点到终点的第三条路线。
如1→3→4→6。
同样,首先在该
路线上找出流量能力最小的连线3→4,其最小流量能力为每小时3千辆,用3表示。
然后按上述方法,在连线1→3,3→4,4→6的终结点3、4、6处均标出3(3),见图6-9,在连线1→3,3→4,4→6的起始点1、3、4处均标出5(2),3(0)和7(4)(1),见图6-9。
在连线4→6起始点4旁边标出7(4)(1),见图6-9,其中(4)是减去第二条路线的最小流量能力3后的第一次剩余流量能力为4,此时又减去第三条路线的最小流量能力3,其第二次剩余流量能力为1。
所以我们在结点4旁边标出7(4)基础上,又标出了(1),见图6-9。
第三条路线的流量能力也是每小时3千辆汽车。
4.从起点到终点已经找不到这样一条路线。
在这条路线上,所有连线的流量能力全为正数。
如在连线1→2→3→5→6上,连线1→2、2→3、3→5都还有流量能力4千辆、7千辆、5千辆,但在连线5→6上已无剩余的流量能力,导致这条路线的流量能力为0。
在这个交通网络中,成为瓶颈的连线还有1→4、3→4,要想提高整个网络的流量能力,就得改进这些薄弱环节的状况。
综上,我们已经求出了这个网络的最大流量:即第一条路线上的2千辆,第二条路线上的3千辆,第三条路线上的3千辆,共计为8千辆。
计算结果表明,该市从北往南有把握每小时通过6千车辆。
计算网络最大流量问题,对规划铁路、公路的运输工作以及城市交通流量等方面都一定用途。
图6-9
注:1.对于多发点和多收点的容量网络问题,可以虚设一个发点和一个收
点再用上述方法求其最大流,求解过程中将虚设的发点和收点与原发点和收点之间的弧容量取无穷大。
求解后再去掉虚设的发点和收点。
2.对于图中已经存在初始流的容量网络最大问题,可先不考虑其初始流,即去掉其初始来求其最大流,但要注意最大流可能并不是唯一的,而最大流量是相同的。
如书上P132的例7。
例2 用标号法求下面网络图的最大流,图中弧旁数字为),(ij ij f c 。
图6-10
去掉图6-10中初始流后的容量网络图为图6-11.
图6-11
求得最大流如图6-12所示。
图6-12
最大流量为14单位。
但最大流不唯一,因经调整还可得另一个最大流图6-13。
图6-13
二、最大流量问题的数学模型
例2 下面图6-14是某石油公司输油管道的一部分,该管道网络可把石油从开采地①输送到销售地⑦。
图中每条弧上标出的数字就是容量(即单位时间内能通过的最大流量),单位:万加仑/小时。
问从开采地①输送到销售地⑦每小时最多可送多少万加仑的成品油。
图6-14
设f ij 为弧(i,j )是的流量,即单位时间内的实际通过量。
v(f)为单位时间内的通过该网络上的总流量。
则有
⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≤≤
=+=++=+++=+=+=可行条件对所有弧平衡条件
)
(0)(max
674636573525363543234746431425
2312
1412ij
ij c f f f f f f f f f f f f f f f f f f f f f v
在该LP 模型中,前5个约束条件是中间结点平衡条件,每个中间点的流入应等于流出。
而约束条件ij ij c f ≤≤0是每条弧必须满足的可行条件。
我们把满足中间点平衡条件的每条弧可行条件的一组流{f ij }称为可行流(即上述LP 的可行解),使开采地①部流出量最大的可行流称为最大流(即上述LP 的最优解),最优目标函数值max v(f)是单位时间内的通过该网络上的最大流量。
一般的求网络最大流问题的数学模型可归结为:
()
⎪⎪⎪
⎩
⎪
⎪⎪⎨⎧≥≤==
∑∑∑
===)
(0)()(max 1
11
1对所有弧对所有弧代表所有中间结点
ij ij ij n
j mj
n
i im n
j j
f c f m
f f f f v
实际中,网络流问题往往带有费用,若设通过弧(i,j )的单位流量费用为b ij ,则求网络的最小费用流问题的数学模型为:
()
()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥≤===∑∑∑∑∑=====)
(0
)(k min 111
11
1对所有弧对所有弧不能超过最大流量
,为指定发点发出的流量
代表所有中间结点
ij
ij ij n j j n
j mj
n
i im n
i n
j ij
ij
f c f k k f m
f f f b
F
三、网络最大流问题的计算机解法 以例2为例来说明计算机解法如下。
我们把图6-14中每条弧的容量ij c 代入模型用计算机求解,即在Excel 工作表上建立容量矩阵表(C ij )、和变量(f ij )表,如图6-15所示。
图6-15 容量矩阵表和变量表
将工作表的B11:H16区域作为可变单元格,在单元格I11中输入目标函数表达式“=SUMPRODUCT(B11 :H11)”。
在单元格I12 :I16中输入表示各结点流出量的表达式“=SUM(B12:H12)”,┄“=SUM(B16:H16)”,在单元格C17 :G17中输入表示各结点流入量的表达式“=SUM(C11:C16)”,┄,“=SUM(G11:G16)”,添加约束条件后进行规划求解,“规划求解”对话框如图6-16所示。
图6-16 规划求解对话框
用Excel规划功能求解结果如图6-17所示。
图6-17 求解结果
即最大流方案为:
f12=5, f14=5, f23=2, f25=3, f35=2, f36=2,
f43=2, f46=1, f47=2, f57=5, f67=3,
最大流量为10万加仑。
练习:P139 习题6.13(C)或(D)。