中国邮递员问题的应用
- 格式:doc
- 大小:177.00 KB
- 文档页数:12
基于中国邮递员问题的物流配送线路优化[摘要]:针对物流配送的线路优化问题,以配送总路程最小为目标,在充分考虑中国邮递员问题的基础上,寻求求解优化方案以及建立线路优化模型。
[关键词]:线路优化中国邮递员问题最小树法优化模型1.引言随着市场竞争的日益加剧、世界经济一体化的程度的加快和科学技术的飞速发展,许多企业已经把物流作为提高竞争力和提升核心的竞争能力的重要手段,将先进的物流理论和物流技术引入企业的生产和经营管理中。
这一产业在我国现今还处于发展阶段,与国外物流业相比,我国物流业自身存在的一些问题逐渐对企业自身的发展和盈利造成了瓶颈。
在众多的问题中,物流效率问题是较为突出的一个。
而物流网络是否科学健全又是决定物流效率的关键一环,作为实现物流合理化的重要内容和手段,研究物流配送路径有助于企业降低物流成本,提高运作效率,全面提高顾客满意度,使企业在现今物流业服务竞争逐渐激烈的环境下站稳脚跟,让企业获得更多的利润和更为长远的发展。
用图的语言来描述物流线路优化问题,就是给定一个连通图G,在每条边上有一个非负的权,要寻求一个圈,经过G的每条边至少一次,并且圈的权数最小。
这个问题是由我国管梅谷同志于1962年首先提出来的,因此国际上称它为中国邮递员问题。
2.问题描述中国邮递员问题的描述:一个邮递员送信,在邮局里挑选出他所有负责的街区的各条街道的邮件,并按一定的次序排列,然后按一定路线投递这些邮件,最后返回邮局。
自然邮递员必须走过他负责的街区的每一条街道至少一次,并希望选择一条总路程最短的投递路线。
下面我们介绍一下图论问题中的定义和定理。
定义1:在一个多重边的连通图中,从某个顶点出发,经过不同的线路,又回到原出发点,这样的线路称为欧拉图。
定义2:设G是一个无向连通图,若存在一个回路,经过G中的每一条边一次且仅一次,则称这个同路为欧拉回路:定义3:设G足一个无向连通图,若在G中通过某顶点的弧的个数为偶数时,这个顶点被称为偶点,否则被称为奇点。
中国邮递员问题摘要:一名邮递员带着要分发的邮件从邮局出发,经过要分发的每个街道,送完邮件后又返回邮局.如果他必须至少一次走过他管辖范围内的每一条街道,如何选择投递路线,使邮递员走尽可能少的路程.这个问题是由我国数学家管梅谷先生(山东师范大学数学系教授)在1962年首次提出的,因此在国际上称之为中国邮递员问题本文主要介绍了中国邮递员问题的基本分析、求解中国邮递员问题的方法以及有关欧拉回路的算法实现。
关键词:中国邮递员欧拉图欧拉回路一、中国邮递员问题的分析中国投递员问题是1960年我们从生产实际中提出的一个数学问题,它是从下述实际问题中抽象出来的:“一个投递员应该怎么选择一条线路,才能既把所有由他负责的信件都送到,而所走的路程又最短”。
在我们开始研究中国投递员问题以前,国外有人研究过所谓旅行售货员的问题,即:“一个售货员要到n个城市去售货,问他应该选择怎样的一条线路,才能既走遍所有城市,并且走的路程最短”。
这是一个著名的难题.当n较大时,即使使用大型电子计算机,也很难解决。
投递员面临的问题显然可以归纳为旅行售货员问题,事实上,只要把投递员必须送的每一个地点看成是一个城市就行了.但是一般来说,投递员每次要到约二、三百个地点送信,如果归纳为旅行售货员问题来解决,将是一个规模很大的问题,是无法解决的.但是,在仔细分析了投递员面临的问题后,我们发现这个问题具有一定的特点,即需要送信的地点一般都是比较密集的排列在街道上的,因此,实际上,我们称这个问题为“最短投递线路问题”,1965年后国外称之为“中国投递员问题”(这个问题是我国数学家管梅谷先生在20世纪60年代提出来的)用图论的语言来描述就是在一个带权图G中,能否找到一条回路C,使C包含G的每条边至少一次且C的长度最短?如若他所管辖的街道构成一欧拉回路,则这欧拉回路便是所求路径。
如若不然,即存在度数为奇数的顶点,必然有些街道需要多走至少一遍,这时用中国邮路问题算法可求出最短路径。
邮差问题算法【实用版】目录1.邮差问题的定义与背景2.邮差问题的数学模型3.邮差问题的算法解决方案4.邮差问题算法的应用案例5.总结正文1.邮差问题的定义与背景邮差问题,又称为邮递员问题,是图论中的基本问题之一。
这个问题可以追溯到 1960 年,当时我国数学家管梅谷首次对其进行了研究。
邮差问题的背景是这样的:假设有一个邮递员从邮局出发,他需要将信件送到辖区内的每条街道,并且每条街道至少要经过一次,最后再返回邮局。
那么,在这个条件下,如何选择一条最短的路线呢?这个问题就是邮差问题。
2.邮差问题的数学模型为了更好地理解邮差问题,我们可以将其抽象为一个图论模型。
在这个模型中,邮局作为图的一个顶点,每条街道作为图的一条边,而邮递员需要经过的街道就是图中的路径。
目标是找到一条从邮局出发,经过所有街道一次后返回邮局的最短路径。
3.邮差问题的算法解决方案针对邮差问题,有多种算法可以求解。
这里我们介绍两种常用的算法:欧拉回路算法和 Hamilton 回路算法。
欧拉回路算法:欧拉回路是指在一个图中,经过每条边一次且回到起点的路径。
欧拉回路算法可以解决邮差问题,其基本思想是:从任意一个顶点出发,尝试遍历所有顶点,如果遇到已经访问过的顶点,则尝试回溯,直至找到一条欧拉回路。
Hamilton 回路算法:Hamilton 回路是指在一个图中,经过每条边恰好一次且回到起点的路径。
与欧拉回路算法类似,Hamilton 回路算法也是从任意一个顶点出发,尝试遍历所有顶点。
不同之处在于,当遇到已经访问过的顶点时,算法会尝试通过一个尚未访问的顶点回到起点,以形成一个 Hamilton 回路。
4.邮差问题算法的应用案例邮差问题算法在实际生活中有很多应用,例如物流配送、DNA 测序、无线通信等。
以物流配送为例,假设有一个物流公司需要在若干个仓库之间运送货物,每个仓库至少要经过一次,那么如何规划路线才能使得总路程最短呢?这时,邮差问题算法就可以派上用场。
§4.中国邮递员问题(Chinese Postman Problem)1.问题的提出例5. 一个邮递员从邮局出发投递信件, 然后再返回邮局, 如果他必须至少一次地走过他负责投递范围内的每条街道, 街道路线如下图所示, 问选择怎样的路线才能使所走的路为最短?5 6 78问题的图论表述:在赋权G=[V, E]上找一条经每条边至少一次的权最小的圈。
1960年山东师范学院管梅谷教授首先提出此问题,并设计了一个“奇偶点表上作业法”,后来发现此法不是多项式算法,1973年,Edmonds和Johnson给出一个多项式算法。
2.哥尼斯堡七桥问题18世纪在哥尼斯堡城(今俄罗斯加里宁格勒)的普莱格尔河上有7座桥,将河中的两个岛和河岸连结,如下图所示。
城中的居民经常沿河过桥散步,于是提出了一个问题:能否一次走遍7座桥,而每座桥只许通过一次,最后仍回到起始地点。
3.Euler圈Euler圈:经图G的每条边的简单圈Euler图:具有Euler圈的图Euler图非Euler图下面讨论的图G允许有重边,且重边被认为是有区别的边。
伪Euler 圈:经图G 的每条边至少一次的圈点v 的次:与点V 关联的边的数目奇(偶)点:该点的次为奇(偶)数命题1:G 的奇点个数为偶数命题2:G 中有伪Euler 圈 ⇔ G 无奇点中国邮递员问题可表述为:在图G 中找一条权最小的伪Euler 圈。
对于邮递员来说,有些街道可能会重复走,原问题便转化为尽可能少走重复的 街道。
我们将这些重复的边组成的集合称可行集,即找最小的可行集。
命题3:E *是最小可行集 ⇔ωωμμμ()()()()*()*()e e e E E E e E E ≤∑∑∀μ∈∩∈∩\初等圈重复的边 非重复的边4.算法思路由命题1,简单图G 的奇点个数为偶数,可设为v 1 , v 2 , …, v 2k , 对每个1≤ i ≤k, 找v 2i − 1 至v 2i 的链p i ,将p i 的边重复一次。
中国邮递员问题摘要:一名邮递员带着要分发的邮件从邮局出发,经过要分发的每个街道,送完邮件后又返回邮局.如果他必须至少一次走过他管辖范围内的每一条街道,如何选择投递路线,使邮递员走尽可能少的路程.这个问题是由我国数学家管梅谷先生(山东师范大学数学系教授)在1962年首次提出的,因此在国际上称之为中国邮递员问题本文主要介绍了中国邮递员问题的基本分析、求解中国邮递员问题的方法以及有关欧拉回路的算法实现。
关键词:中国邮递员欧拉图欧拉回路一、中国邮递员问题的分析中国投递员问题是1960年我们从生产实际中提出的一个数学问题,它是从下述实际问题中抽象出来的:“一个投递员应该怎么选择一条线路,才能既把所有由他负责的信件都送到,而所走的路程又最短”。
在我们开始研究中国投递员问题以前,国外有人研究过所谓旅行售货员的问题,即:“一个售货员要到n个城市去售货,问他应该选择怎样的一条线路,才能既走遍所有城市,并且走的路程最短”。
这是一个著名的难题.当n较大时,即使使用大型电子计算机,也很难解决。
投递员面临的问题显然可以归纳为旅行售货员问题,事实上,只要把投递员必须送的每一个地点看成是一个城市就行了.但是一般来说,投递员每次要到约二、三百个地点送信,如果归纳为旅行售货员问题来解决,将是一个规模很大的问题,是无法解决的.但是,在仔细分析了投递员面临的问题后,我们发现这个问题具有一定的特点,即需要送信的地点一般都是比较密集的排列在街道上的,因此,实际上,我们称这个问题为“最短投递线路问题”,1965年后国外称之为“中国投递员问题”(这个问题是我国数学家管梅谷先生在20世纪60年代提出来的)用图论的语言来描述就是在一个带权图G中,能否找到一条回路C,使C包含G的每条边至少一次且C的长度最短?如若他所管辖的街道构成一欧拉回路,则这欧拉回路便是所求路径。
如若不然,即存在度数为奇数的顶点,必然有些街道需要多走至少一遍,这时用中国邮路问题算法可求出最短路径。
题目:姓名:学号:班级:前 言我们在生活中都与中国邮递员有了一定的接触,那么什么是中国邮递员?中国邮递员问题产生于1960年,它讨论的主要内容是:“一个投递员应该如何选择线路,才能把所有的由他负责的信件都送到,而且所走的路线又是最短的。
我国管梅谷教授1962变首先并提出了中国邮递员问题的原始模型。
然而在我们研究中国邮递员以前,国外有很多人士研究了所谓的旅行售货员问题:“一个售货员要到n 个城市去售货,问其应该如何的选择路线才能一条路的走完所有的城市,且路程是最短的。
”当n 增大到一定程度的时候我们将难以解决。
所以我们这里的中国投递员的问题也相当于旅行售后员一条线走完所有城市的问题,只要将所有的城市的点换成了我们所要投递的点就可以了。
事实上就是告诉你几个点和几条边及其权重,就其求出某点到某点的最短路的问题。
摘 要图论在各个领域都有着广泛的应用,在单循道路的寻早上早已经开始应用。
对于中国邮递员等的问题,我们可以用边着色理论和Euler 理论来解决,这里本文将应用于实践,将理论性问题用到福建省漳平市的邮递员发送派件的应走得道路方式。
本文将应用Fluery 算法来求解最终得到与本文所要寻找的问题的结果。
关键词:图论;EULER ;FLEURY 算法;邮递员1.知识简介EULER 环游]1[:一条闭途径如果通过图中每条边至少一次就称为环游,图中的每条边恰一次的比途径就称之为EULER 环游,有EULER 环游的图称之为EULER 图。
FLEURY 算法]1[(过河拆桥,尽量不走独木桥):(1)任取一点0v ,令00w v =。
(2)若迹k k k v e v e 110v w =已经取定,选},,,{e \E e 211k k e e ∈+使得①1e +k 与k v 相关联。
②除非无奈,选1e +k 使它不是},,,{G 21k k e e e G -=的割边。
(3)若(2)不能再进行下去,那么就终止。
2.实际应用2.2.1问题综述福建省漳平市全市辖有2个街道、8个镇、6个乡:菁城街道、桂林街道、新桥镇、双洋镇、永福镇、溪南镇、和平镇、拱桥镇、象湖镇、赤水镇、芦芝乡、西元乡、南洋乡、官田乡、吾祠乡、灵地乡,在这16个地点里每个地点都有一个邮局。
我们将这些地点分别用1~16表示,于是我们通过调查每个地方的距离可以的到如下的简略图(实际距离是下面数值的五倍,单位:/公里)。
图1.各镇关系和距离图2.2.1模型构建根据上面的图形我们可以得到权值矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=08.3000000000006008.30000006.8000000000000010000007000000005.309009.3008.80000005.3000000000008.20010000000000002.100009000000002.300006.800000000200000000000000002.80002.40009.3000000005.1202.13.1000000020000007.70007000002.800000000008.8002.3005.120005.4006000000000005.4000000002.10002.17.700008.000008.20002.43.100008.00D 2.2.3结果用MATLAB 编程得到如下结果:T =1 72 1 8 5 14 11 2 6 9 15 1634 10 13 4 7 13 128 5 14 11 2 6 9 15 16 3 4 10 13 4 7 13 12 1 7 2 1C=110.22.2.4结论所有当市邮局总部派某邮递员派送的时候,此邮递员可以按照:菁城街道->和平镇->桂林街道->菁城街道->>拱桥镇->永福镇->官田乡->芦之乡->桂林街道->溪南镇-->象湖镇->吾池乡->灵地乡->新桥镇->双洋镇->赤水镇->南洋镇->双洋镇->和平镇->南洋镇->西元乡->菁城街道(既是出发点也是终点) 可以从结果看出邮递员所要走得路线为551公里。
4.结束语当今我国正处于高速发展的阶段,信息产业日新月异,在这其中电子商业突起,网上购物人数的数量也不断的处于上升阶段。
对于与之相关的产业也是提出了更为严峻性的考验,对于如何设计才能使得邮递员少走弯路,用最快的方式将派件送到客户手中成了一个关键性的问题。
应用于图论的相关理论,我们可以很好的解决这个问题。
参考文献:[1].孙惠泉.图论及其应用.北京东黄城根北街16号:科学出版社.2005年3月附录jisuan.md=[0 0.8 0 0 0 0 1.3 4.2 0 0 0 2.8 0 0 0 0;0.8 0 0 0 0 7.7 1.2 0 0 0 1.2 0 0 0 0 0;0 0 0 4.5 0 0 0 0 0 0 0 0 0 0 0 6;0 0 4.5 0 0 0 7.5 0 0 3.2 0 0 8.8 0 0 0;0 0 0 0 0 0 0 8.2 0 0 0 0 0 7 0 0;0 7.7 0 0 0 0 0 0 2 0 0 0 0 0 0 0;1.3 1.2 0 12.5 0 0 0 0 0 0 0 03.9 0 0 0 ;4.2 0 0 0 8.2 0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 2 0 0 0 0 0 0 0 0 8.6 0;0 0 0 3.2 0 0 0 0 0 0 0 0 9 0 0 0 ;0 1.2 0 0 0 0 0 0 0 0 0 0 0 10 0 0 ;2.8 0 0 0 0 0 0 0 0 0 0 03.5 0 0 0 ;0 0 0 8.8 0 0 3.9 0 0 9 0 3.5 0 0 0 0 ;0 0 0 0 7 0 0 0 0 0 10 0 0 0 0 0;0 0 0 0 0 0 0 0 8.6 0 0 0 0 0 0 3.8;0 0 6 0 0 0 0 0 0 0 0 0 0 0 3.8 0];fleufl.m[T c]=fleuf1(d)function [T c]=fleuf1(d)%d表示图的权值矩阵%T表示边集合%c表示权重和n=length(d);b=d;b(b==inf)=0;b(b~=0)=1;m=0;a=sum(b);eds=sum(a)/2;ed=zeros(2,eds);vexs=zeros(1,eds+1);matr=b;for i=1:nif mod(a(i),2)==1m=m+1;endendif m~=0fprintf('there is not exist Euler path.\n'); T=0;c=0;endif m==0vet=1;flag=0;t1=find(matr(vet,:)==1);for ii=1:length(t1)ed(:,1)=[vet,t1(ii)];vexs(1,1)=vet;vexs(1,2)=t1(ii);matr(vexs(1,2),vexs(1,1))=0;flagg=1;tem=1;while flagg[flagg ed]=edf(matr,eds,vexs,ed,tem);tem=tem+1;if ed(1,eds)~=0 & ed(2,eds)~=0T=ed;T(2,eds)=1;c=0;for g=1:edsc=c+d(T(1,g),T(2,g));endflagg=0;break;endendendEndEdf.mfunction [flag ed]=edf(matr,eds,vexs,ed,tem) flag=1;for i=2:eds[dvex f]=flecvexf(matr,i,vexs,eds,ed,tem)if f==1flag=0;break;endif dvex~=0ed(:,i)=[vexs(1,i) dvex];vexs(1,i+1)=dvex;matr(vexs(1,i+1),vexs(1,i))=0;elsebreak;endendFlecvex.mfunction [dvex f]=flecvexf(matr,i,vexs,eds,ed,temp) f=0;edd=find(matr(vexs(1,i),:)==1);dvex=0;dvex1=[];ded=[];if length(edd)==1dvex=edd;elsedd=1;dd1=0;kkk=0;for kk=1:length(edd)m1=find(vexs==edd(kk));if sum(m1)==0dvex1(dd)=edd(kk);dd=dd+1;dd1=1;elsekkk=kkk+1;endendif kkk==length(edd)tem=vexs(1,i)*ones(1,kkk);edd1=[tem;edd];for l1=1:kkklt=0;ddd=1;for l2=1:edsif edd1(1:2:l1)==ed(1:2:l2)lt=lt+1;endendif lt==0ded(ddd)=edd(l1);ddd=ddd+1;endendendif temp<=length(dvex1)dvex=dvex1(temp);elseif temp>length(dvex1)&temp<=length(ded) dvex=ded(temp);elsef=1;endend说明:本论文属个人成果,如有错误的地方,请谅解。