04第四章 图论方法建模2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 图论方法建模
20 第四章 图论方法建模
图论是离散数学的重要分支,是研究离散问题的重要手段,已经建立起来了一些重要的理论和算法,虽然这些理论还不系统、不完备,但是能解决许多的实际问题。不系统就没有太强的连贯性,这就使得学习起来较为方便,可以随意挑选适宜的内容去学习。
如果将要解决的实际问题归结为图论中的某些概念或某些算法,就可以利用图论中已有的理论,这样就可以较快的解决问题。
在国内外的大学生数学建模竞赛中,利用图论知识去建立数学模型的机会还是很多的。限于时间与篇幅,我们在本章先学习一些图论知识,愿意深入学习的可以参阅有关的资料。然后学习一个较为完整的数学建模例子。
§4.1 有关的图论知识——图、算法与矩阵
一.图的定义
例1.城市之间的运输通路问题
A 城与
B 城间有通路,为2公里,B 城与
C 城间有通路,为1公里,C 城与
D 城间有通路,为5公里,D 城与F 城间有通路,为3公里,F 城与A 城间有通路,为7公里,B 城与F 城间有通路,为6公里。问A 城到D 城的最短路程为多少?
用这么长的一段话来表述,听起来太累,想起来也不清楚。若换一种方式,用下面的图4.1来描述该问题,看起来就清楚多了。
C
图4.1
由此我们引进图的定义。 定义1:称}),(),({G G E G V G ψ=为一个图,其中φ≠)(G V 叫做顶点集合,E(G)
第四章 图论方法建模 21
叫做边集合,φ=)()(G E G V I ,而G ψ是关联函数,使G的每条边对应于G的无序顶点对。若,而,使得)(G E e ∈)(,G V v u ∈uv e G =)(ψ,则称与u 、相关联。顶点和称为的端点,此时也称和相邻。
e v u v e u v 一个图常常简记为G=(V,E )或G (V,E ),这是因为边集E 中的任一 元素总是和某二顶点相连接的,所以V 、E 确定了,就可以了。
上述例子的图即为:G(V,E),其中V={A,B,C,D,F },E={e 1,e 2,e 3,e 4,e 5,e 6}
,e 1=AB, e 2=BC, e 3=CD, e 4=DF, e 5=FA, e 6=BF 。
说明:①这里用图表述城市间的运输通路问题很清楚,说明对这类问题,用图来表述是恰当的,“图”是一个强有力的表述工具。
②数学里有“图论”这门学科,一个问题用图表达后,可用图论的知识、算法等来解决此问题。关于图论方面的知识可参阅有关的书籍、资料。
③若A为一集合,其元素个数记为:|A|。如上例中的顶点集合和边集的元素个数分别为:|V|=5,|E|=6。
例2.哥尼斯堡(königsberg )七桥问题
1736年以前,哥尼斯堡市民热中于一有趣的游戏,在如下图4.2所示的该市桥河图中,从A,B,C,D四块陆地某一处出发,通过每座桥恰好一次,再回到出发地,是否可能?
1736年,欧拉(Euler )发表了图论的第一篇论文,证明了七桥问题无解.欧拉就是把A,B,C,D四陆地抽象成为四个点,桥用连接两点的线段表示,于是就得到一个图G(V,E)。, },,,{D C B A V =},,,,,,{7654321e e e e e e e E =, 这里,e 1=AD, e 2=BD, e 3=CD, e 4=BC, e
5=BC, e 6=AB, e 7
=AB 。
定义2:图G(V , E)中顶点的度数是指顶点所连的边数。图G 的度数为图G 中各顶点度数中的最大者。记为或V v ∈)(v d v Δ)(G Δ。
说明:①七桥问题可归结为一笔画问题。
②关于一笔画问题有如下的结论:
若图中每个顶点的度数都为偶数,则可从某点画完每条边,且回到起点。
第四章 图论方法建模
22 若图中顶点的度数为奇数的顶点仅仅有两个,则可从此二点中的一个起始,画完每条边到达另一顶点(即不能回到起始点)。
③七桥问题的图中4个顶点的度数为奇数,由上面的结论知,不可能从出发点走完每条边恰好一次,又回到出发点。
定义3:一个图中任意两顶点之间至多有一边,则称之为简单图。
定义4:若图G(V ,E)中边有头尾之分,即E uv ∈vu uv ≠,则称之为有向图。
以后说“图”皆指无向图,要指有向图应特别说明。并且若无特别说明,我们所说的图皆指简单图。每对顶点都相邻的图称为完全图。
定理:对于简单图,有:
),(E V G ∑∈=)(||2)(G V v E v d 。
二.最短路问题及其算法
定义5:在G 中, 其中,...2110k k e v e v e v w =)(G E e i ∈,k i ≤≤1;)(G V v i ∈,;与、关联,称是从到的一条途径,也记为或。若途径中的边,,……,互不相同,称为迹。若的顶点,,…,也互不相同,则称为路。
k i ≤≤0i e 1−i v i v w 0v k v ),(0k v v w ),(0k v v 1e 2e k e w w 0v 1v k v w 上述例1中问题的一般提法为:给定连接若干城市的铁路网,寻找两个指定城市间的最短路。
这个问题用图论的语言来描述就是:已知图及每条边的权,对于任意指定的二点、,寻找路,使得
),(E V G )(e w 0v )(0G V u ∈),(00u v P )}({)),((min 00P w u v P w P Ω
∈=
其中是从到的所有路的集合,是路Ω0v 0u )(P w P 上的各边权之和。
解决这一问题可用下面的Dijkstra 算法:
(1):令;,;0)(0=v l ∞=)(v l 0v v ≠}{00v S =;0=i ;
(2):对每个,用i S v ∉)}()(),(min{v v w v l v l i i +代替,计算
)(v l )}({min v l i
S v ∉,并把达到这个最小值的一个顶点记为,置1+i v }{11++=i i i v S S U 。 (3):若1−=V i ,则停止。若1− i 说明:①当算法结束时,从到的距离(最短路的长度)由标号的终值给出。即算法求出了至其它所有顶点的最短路的长度。 0v v )(v l 0v ②Dijkstra 算法仅确定了从到所有其它顶点的距离,而并未给出实际最短路。实际最短路可以很容易确定。 0v ③若只是想计算某指定两点、的最短路(或最短距离)也较为容易求出。 0v 0u