欧拉回路与中国邮递员问题_第1页
欧拉回路与中国邮递员问题_第2页
欧拉回路与中国邮递员问题_第3页
欧拉回路与中国邮递员问题_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、16欧拉回路与中国邮递员问题、欧拉回路所谓欧拉回路与哥尼斯堡 7桥问题相联系的. 在哥尼斯堡7桥问题中,欧拉证明了不存在这样的回路,使它经过图中每条边且只经过一次又回到起始点.与此相反,设G (V, E)为一个图,若存在一条回路,使它经过图中每条边且只经过一次又回到起始点,就称这种回路为欧拉回路,并称图G为欧拉图.在一个图中,连接一个节点的边数称为该节点的度数.对欧拉图,我们有下列结果:定理1对连通图G ( V , E),下列条件是相互等价的:(1)G是一个欧拉图;(3)证明G的每一个节点的度数都是偶数;G的边集合E可以分解为若干个回路的并.:(1)= (2) 已知G为欧拉图,则必存在一个欧拉

2、回路.回路中的节点都是偶度数.(2)= (3) 设G中每一个节点的度数均为偶数.若能找到一个回路C1使G=C1,则结论成立.否则,令G 1=GC 1,由C1上每个节点的度数均为偶数,则G1中的每个节点的度数亦均为偶数.于是在G1必存在另一个回路C2.令G2=G1C2,.由于G为有限图,上述过程经过有限步,最后必得一个回路Cr使Gr=Gr-1Cr上各节点的度数均为零,即Cr=Gr-1 .这样就得到G的一个分解G=C1UC2UUCr .二(1) 设G=CiUc2U”UCr,其中Ci (1=1,2,r)均为回路.由于 G为连通图,对任意回路Ci,必存在另一个回路 Cj与之相连,即Ci与Cj存在共同的

3、节点.现在我们从图G的任意节点出发,沿着所在的回,这样一直走下去就可走遍G的每条边且只走过一次,路走,每走到一个共同的节点处,就转向另一个回路, 最后回到原出发节点,即 G为一个欧拉图.利用定理1去判断一个连通图是否为欧拉图比较容易,但要找出欧拉回路,当连通图比较复杂时就不太容易了.下面介绍一种求欧拉回路的算法.、弗罗莱算法算法步骤如下:(1)任取起始点V0,V0 T R;(2)设路R =ei(V0,Vii ),e2(Vii匕),: (v, )已选出,则从e,;ej中选出边,使吋与Vir相连,除非没有其它选择,Gr er 41仍应为连通的.(3)重复步骤(2),直至不能进行下去为止.定理2连通

4、的有向图存在欧拉回路的充分必要条件是对任意节点,进入该节点边数(进数)与离开该点 的边数(出数)相等F面给出此算法的 matlab程序:function myeuler%求出一个图的欧拉回路n=input(输入起点)result=n;a=load(D:data.txt);% 边权矩阵while length(result)=length(find(aO &av99999999)n=result(length(result);temp=a(n,:);p=find(tem p0& av99999999);if length( p)=0sprintf(不是 euler 图)breakend resu

5、lt=result ,p (1);a(n, p(1)=0;endresult三、中国邮递员问题一名邮递员带着要分发的邮件从邮局出发, 少一次走过他管辖范围内的每一条街道, 学家管梅谷先生(山东师范大学数学系教授)在经过要分发的每个街道,送完邮件后又返回邮局. 如果他必须至如何选择投递路线,使邮递员走尽可能少的路程.这个问题是由我国数 佃62年首次提出的,因此在国际上称之为中国邮递员问题.用图论的述语,在一个连通的赋权图G(V,E)中,要寻找一条回路,使该回路包含G中的每条边至少一次,且该回路的权数和最小.也就是说要从包含G的每条边的回路中找一条权数和最小的回路.如果G是欧拉图,则很容易由弗罗莱

6、算法求出一个欧拉回路,但是若G不是欧拉图,即存在奇度数的节点,则中国由递员问题的解决要困难得多.本节的主要目标是给出在有奇度数节点的连通图中寻找最小权数的回路的 方法.首先注意到,若图 G有奇数度节点,则 G的奇数度节点必是偶数个(握手定理).把奇数度节点分为若干对,每对节点之间在 G中有相应的最短路,将这些最短路画在一起构成一个附加的边子集El令G/ =G+E/,即把附加边子集E/叠加在原图G上形成一个多重图 G,这时G,中连接两个节点之间的边不止一条.显然G/是一个欧拉图,因而可以求出 G/的欧拉回路该欧拉回路不仅通过原图G中每条边,同时还通过 E,中的每条边,且均仅一次邮递员问题的难点在

7、于当G的奇数度节点较多时,可能有很多种配对方法,应怎样选择配对,能使相应的附加边子集 E,的权数03 (E,)为最小?为此有下列定理.定理3设G (V, E)为一个连通的赋权图,则使附加边子集E,的权数o (E,)为最小的充分必要条件是G+E,中任意边至多重复一次,且 G+E,中的任意回路中重复边的权数之和不大于该回路总权数的一半.程序实现步骤如下:(1) 求出奇数度的点和它们之间任意两点之间的最短距离Matlab 程序:function s,S=m ypo stman a=load( D:data.txt );%也可以直接给出%为了方便我假设我将边权矩阵保存在D盘中 %具体情况可以相应修改

8、b=sparse(a);%构造稀疏矩阵Dist=graphallshortestpaths(b);%求出途中任意两点的最短距离s=;%奇数度的点 for k=1:size(a,1)p1=find(a(k,:)0 &a(k,:)v99999);p2=find(a(:,k)0 &a(:,k)v99999);%找出每一个点的出度和入度if mod( p1+ p2,2)=1s=s,k;endendS=Dist(s,s);(2)求出奇数点两两组合权和最小的组合因为使用lingo求解此问题相对简单,因此使用此软件求解Lingo参变量约束条件如下:mix陆轉* Xq = 0 或 l;i = 1,2 夠=巧i

9、: 右 i = 0;aZ无产1:Lingo程序如下:model : sets :6个奇数度的点;!这里假设有!具体问题作岀相应调整即可city/1.5/; citys(city,city):x,w;en dsetsdata : w=ole CD:data.xls,w);!将边权矩阵保存在以上地址en ddata min =sum(citys:w*x);forforfor(citys: bin (x);for(city(i):sum(city(j):x(i,j)=1;sum(city(j):x(j,i)=1;);(city(i):x(i,i)=0;); (citys(i,j):x(i,j)=x(j,i););3) 利用弗洛来算法求解欧拉回路Matlab 程序:function mypostman1 x=load(D:data1.txt);%由lingo软件得到 s,S=mypostman;a=load(D:data.txt);% 边权矩阵m,n=find(x=1);for k=length(s)a(s(m(k),s(n(k)=S(m(k),n(k);path=graphshortpath(s(m(k),s(n(k),sparse(a)end n=in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论