中国邮递员问题ppt课件
- 格式:ppt
- 大小:1.26 MB
- 文档页数:38
中国邮路问题中国邮递员问题⼀个邮递员送信,要⾛完他负责投递的所有街道(所有街道都是双向通⾏的且每条街道能够经过不⽌⼀次),完毕任务后回到邮局,应按如何的路线⾛,他所⾛的路程才会最短呢?解决⽅式1、图论建模因为街道是双向通⾏的,我们能够把它看成是赋权⽆向连通图,将路⼝模型为点,街道模型为边,街道的长度就是每条边的权值,问题转化为在图中求⼀条回路,使得回路的总权值最⼩。
1.1最理想的情况若图中有欧拉回路,由于欧拉回路通过全部的边,因此不论什么⼀个欧拉回路即为此问题的解。
1.2若G仅仅有两个Vi,Vj则有从Vi到Vj的欧拉迹,从Vj回到Vi则必须反复⼀些边,使反复边的总长度最⼩,转化为求从Vi到Vj的最短路径。
算法:1)找出奇点Vi,Vj之间的最短路径P;2)令G’ = G + P;3)G’为欧拉图,G’的欧拉回路即为最优邮路。
1.3普通情况,奇点数⼤于2的时,邮路必须反复很多其它的边。
Edmonds算法(匈⽛利算法)思想:步骤:1)求出G全部奇点之间的最短路径和距离;2)以G的全部奇点为结点(必为偶数),以他们之间的最短距离为节点之间边的权值,得到⼀个全然图G1;3)将M中的匹配边(Vi,Vj)写成Vi与Vj之间的最短路径经过的全部边集合Eij;4)令G’ = G U { Eij | (Vi,Vj)属于M},则G’是欧拉图,求出最优邮路。
2、详细模块实现2.1最短路径⽤ Dijkstra算法计算Dijkstra算法是⼀种最短路径算法,⽤于计算⼀个节点到其他全部节点的最短路径。
2.1.1算法思想:按路径长度递增次序产⽣最短路径算法: 把V分成两组: 1)S:已求出最短路径的顶点的集合 2)V-S=T:尚未确定最短路径的顶点集合将T中顶点按最短路径递增的次序增加到S中,保证:1)从源点V0到S中各顶点的最短路径长度都不⼤于从V0到T中不论什么顶点的最短路径长度 2)每⼀个顶点相应⼀个距离值 S中顶点:从V0到此顶点的最短路径长度 T中顶点:从V0到此顶点的仅仅包含S中顶点作中间顶点的最短路径长度2.1.2求最短路径步骤 1)初始时令 S={V0},T={ 其余顶点},T中顶点相应的距离值 若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值;若不存在<V0,Vi>,d(V0,Vi)为∝ 2)从T中选取⼀个其距离值为最⼩的顶点W且不在S中,增加S 3)对S中顶点的距离值进⾏改动:若加进W作中间顶点,从V0到Vi的距离值缩短,则改动此距离值;反复上述步骤2、3,直到S中包括全部顶点,即W=Vi为⽌2.2图的连通性測试检測⽤户输⼊的图是否是连通图,不是的话没办法求解,提醒⽤户⼜⼀次输⼊。
§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 的边重复一次。
中国邮递员数学问题
中国邮递员数学问题是一个著名的数学问题,也称为"中国邮递员问题"。
这个问题源于邮递员在担任邮递员工作时,需要沿着不同的街道进行投递。
邮递员必须走遍每一条街道至少一次,然后回到出发地点。
问题的目标是寻找一条最短的路径,使得邮递员能够满足投递的要求。
具体问题描述如下:给定一个城市的街道网络图,每条街道上都有一个正整数表示街道的长度。
邮递员需要从一个特定地点出发,沿着街道网络进行投递,然后回到出发地点。
要求邮递员经过的路径总长度最短。
这个问题属于旅行商问题的变种,是一个NP-完全问题。
因为问题规模较大,难以找到一个最优解。
因此,通常采用近似算法进行求解,如TSP(Traveling Salesman Problem)等。
邮递员问题在实际中有很多应用,比如快递员的路线规划、物流配送等。
解决这个问题可以提高物流效率,减少成本。