[算法导论] 邮递员问题

article/2025/10/8 8:22:13

邮递员问题

旅行商问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。(遍历点,回到起点)
哈密顿路径 哈密顿图
中国邮递员问题:邮差要设法找到一条最短路径,可以走过此地区所有的街道,且最后要回到出发点。 (遍历边,回到起点)
欧拉路径 欧拉图
旅行商问题是不能回头的,一个节点访问过了不能回来了,并不需要走完所有的路,但是中国邮递员问题可以多次访问一个节点,因为中国邮递员问题要求的是要访问所有的街道,即,每条街道必须访问到。

此问题是图遍历问题的一种。
无向图的中国邮路问题是容易解决的,是P问题;
有向图的中国邮路问题是NP完全问题。

欧拉回路

试想,假设每条路都走一次,最终恰好还能返回出发点,这样的拓扑图画出来应该满足怎样的结构呢?
每个节点要进去还要出去,所以,每个点的入度和出度必须相等(起始点也一样)。
每个节点的度应该是偶数个,满足这样的拓扑结构的图就是欧拉回路。

无向图的解决方法

G为欧拉图:
因为欧拉回路通过所有的边,因此任何一个欧拉回路即为此问题的解。
G的任意欧拉回路都是最优回路,从而可利用Floyd算法求解。

G不是欧拉图:
G的任意一个回路必定通过某些边不止一次。
其中必存在有奇数个边的端点,且这类的端点一定大于等于2个。
因此有些边需要再重复一次,使奇数边的端点变为偶数边的端点。
将边e的两个端点再用一条权为w(e)的新边连接时,称边e为重复的。

假设有一个镇有14条路及9个路口(路口分别编号为 1,2, …,9),其路和路口对应的图(右边第 1 图,边上的数字是各边的 cost)中有4个端点(编号 1, 3, 6 及9)有奇数个边通过,因此这个图不存在欧拉回路。
后续要作的在图中使几个边重复,使图中所有的端点均有偶数边通过
例如若图中 {1,3} 及 {6.9} 边重复,所有的端点均有偶数边通过。不过增加的长度不一定最少。
在这里插入图片描述
为了要确定重复哪个边可以使原图的端点都有偶数边通过,且增加长度最少。
先画出所有奇数边的端点的完全图K4 ,边上的数字是从一端点到另一端点(可以经过其他完全图K4 中省略的点)的最短长度。
奇数度的点为1,3,6,9。 增加边使得奇数度的点变成偶数度,使得增加边的权重和最小。
若选择边 {1,6} 及 {3,9},所有端点都经过一次,而总长度4+2=6最短。
在这里插入图片描述

求的最短的路径,而原有的路径一定都是,所以,构造欧拉回路的边决定了最终的结果。

判断是否为欧拉回路,
如果是欧拉回路,直接相加返回结果,
如果不是欧拉回路,那存在奇数度的节点一定有偶数个。
(无向图所有顶点的度之和一定是偶数,且等于2倍的边数。因为握手定理,一条边两个度(出度入度)。)

1、根据统计每个节点度的数目,标记出奇数度的节点。
2、奇数节点一定是有偶数个,因此,最终的距离应该是:两两点之间的最短距离,而两两点之间的最短距离可以用Floyd或者Dijkstra或者bellman-ford算法来得到。
个人建议使用Floyd算法,不容易出错。
3、遍历所有的组合情况,求出最短的组合方式,
例如比较 d(2,8)+d(4,6),d(2,6)+d(4,8), d(2,4)+d(6,8),
然后取最小值即为最终的优化方案:d(2,8)+d(4,6)。
求解该步骤的时候,可以使用DFS来寻找最短路径方案,也可以利用DFS的思想,改为动态规划来实现
构造一个dp表,行值为1,列值表示该集合中所含的元素,

方案步骤:

1、生成邻接矩阵,利用Floyd算法求出每两个点之间的最短距离。(Floyd)

2、判断整个过程是否是欧拉回路,如果不是构造欧拉回路。

3、利用动态规划或者DFS计算构造欧拉回路的最优方案。

4、计算原路径与新构造路径的长度总和即为最终结果。

详细代码见 Floyd算法求最短路径问题


http://chatgpt.dhexx.cn/article/8TLXh6kh.shtml

相关文章

中国邮递员问题的深入剖析与算法实现(附例题及MATLAB、LINGO代码)

中国邮递员问题的深入剖析与算法实现 一、研究背景1.1 哥尼斯堡七桥问题1.2 欧拉图1.3 中国邮递员问题 二、中国邮递员问题深入解读2.1 问题重述2.2 奇偶点图上作业法[^1]2.3 最小二分匹配法1) 针对无向图2) 针对有向图 2.4 $fleury$算法 三、经典中国邮递员问题的具体实现3.1 …

中国邮路算法(中国邮递员问题)(详细)

通路:在无向图中由点边交替组成的序列就是通路(如果这个图是简单的,那么也可以使用点的序列来表示),如果首尾的点相同,则称为一条回路 无向图的连通性:无向图中任意一对点之间均有通路 欧拉通路…

那些有趣的网站

之前分享过那些有意思的网站 ,这里继续分享一波,也许你用得上。 福利单词 一边背单词一边看妹子的网站,用电脑打开,配合ctrlw 关闭新窗口,不知不觉就背了百来个词了 https://easychen.gitee.io/foxdict/ 工资计算器 简…

常用又有趣的网站大合集

〇、【Python challenge】通关代码及攻略 一、PIECES 拼图 PIECES 拼图网站用 30 个 CSS 碎片进行拼图,向我们呈现了 30 种濒临灭绝的动物。 二、小甲鱼编程学习工作室 包含了各种编程语言学习以及计算机基本操作的教学与奇技淫巧 三、Wolfram Alpha 这是由Wol…

超酷的13个CSS有趣学习网站

13个CSS有趣学习网站 今天来给大家推荐13个辅助你学习巩固知识的网站,让你边玩边学边记! 因为这些网站大多都是国外的大佬们做的,所以网页大多都是英文,为了更好地使用,给你们推荐两个翻译的方式: 使用C…

电脑技巧:盘点10个非常实用且有趣的网站

目录 1、聆听大海的声音 2、在线生成Logo 3、今日热榜 4、十万个为什么(大人版) 5、视频创作导航 6、改图鸭 7、好看电影推荐 8、童年游戏合集 9、各种沙雕表情包 10、反向词典 今天给大家分享10个非常实用且有趣的网站,值得收藏&a…

科普:如何找到有趣的网站?

原址:http://shedingkong.lofter.com/post/302b9d_1943cf2# 其实我发各种网站的推荐,是为了给自己留用,也是因为现在的审查环境下,各种下载资源的分享十分痛苦。总有人问我怎么知道这么多网站,这里来介绍几种方法。 方…

你是否看到过如此有趣的AI网站?

1、营销文案:CopyAI: Create Marketing Copy In Seconds 2、美化ppt设计:https://www.beautiful.ai/ 3、图片修改:https://hotpot.ai 4、照片变视频:https://www.myheritage.com/deep-nostalgia 美化头像:Free Profil…

有趣好玩的python编程网站

✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:python 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 整理了一些非常有意思,适…

有趣的表白网站

今天看到一个傻瓜式的表白网址生成网站,觉得还挺有意思的,所以来分享一下。http://www.51bbw.cn/show/ 进入网址就会看到下面的界面: 然后就可以“量力而行”了,依据财力选择你想制作的模板,老白嫖怪一眼看中了“免费…

有趣的网站

黑客帝国文字雨生成器 AirPano 足不出户的旅行 创客贴 自媒体制图神器

实时查看Starlink在轨卫星、地面站数目和分布情况的有趣网站

记录一些SpaceX的Starlink相关的一些有趣有用小网站~ 一、实时查看Starlink在轨卫星数目和分布情况 https://satellitemap.space/ 除了可以看Starlink的,还可以看OneWeb和GPS的在轨卫星和分布情况; 截止到2022-4-23,共有卫星2283颗&#xf…

收藏全球最有趣的网站 (上)

在线玩转指尖陀螺-FFFFidget ←点击评分,有趣指数: 3.40星 风靡全球的指间小玩具!网站可以在线体验指尖陀螺的迷之旋转,同时支持PC和移动端,手机玩起来更带感! 传送门 http://ffffidget.com/ 继续阅读 →…

几个有创意有趣的网站推荐

几个有趣的网站推荐,这些网站很有创意,第一眼就很惊艳 都能打开,不过速度有点慢,一定要有耐心等待,因为有几个是国外的网站,如果是在手机上打开的,复制地址进浏览器 1、Marco Gomez &#xff0d…

记录一些有趣网站

https://css-tricks.com/ 2018.01.15更 腾讯游戏官方设计团队 http://tgideas.qq.com/?ADTAGmedia.gameweb.console 2018.01.16更 该文档库:http://tgideas.qq.com/doc/ 里面有个相关的一些干货 王者荣耀网站帮助管理平台 https://pvp.qq.com…

一个神奇的资源网站「有趣网站收藏家」共有186个站点资源-北忘山修改版

一个神奇的资源网站「有趣网站收藏家」共有186个站点资源-北忘山修改版 网站介绍 这个网站有点东西,目前收集了186个资源,小北当时拔下来之后发现都是作者纯html手写的,意思就是每每添加网站都是手动添加上去。小北整下来之后,做了…

有趣的网站合集

导航页面 1、有趣网址之家 – 收藏全球最有趣的网站 https://youquhome.com/ 一、电子图书及公开课程 1、国图公开课 依托国家图书馆宏富的馆藏资源,以服务国家战略、传播中华优秀传统文化、提高公众文化生活品质为主线。一方面整合多种文献资源,并结…

有趣网站盲盒项目设计

嗯,在这里再发一遍,期待有更多流量吧~ 2023-07-01:因docker误删,导致容器丢失,虽然gitee上有代码,数据库也有备份,重新恢复应该不是问题,但是博主二赛君不想折腾了,精力收敛&#xf…

9个超级有趣好玩的网站,打开就停不下来

分享9个让你玩了还想玩的小网站,涵盖上百个小游戏、听歌、绘画等,随便一个都能用来摸鱼打发时间,强烈建议大家收藏! 1、查找不动的表情包 一个找茬小游戏网站,在众多表情包中找出一直不动的表情包,然后点…

10个好玩到爆的网站,打开就能玩,个个超有趣

正所谓“你摸鱼,我摸鱼,老板奔驰变青桔”,上班太无聊想要玩一些好玩的网站来打发时间?那今天的分享可千万别错过!下面这10个超级有趣的网站,随便一个都可以玩一天。 1、世界名画在线拼图 一个加勒里克斯在…