社区
数据结构与算法
帖子详情
如何求连通图的最短遍历路径
cthliao
2008-08-28 03:44:28
有N个村庄,相互之间有道路连接,我们可以看作是一个带权的连通图(村庄为结点,道路为边)。
有个领导要下乡视察,要求每个村都至少走过一次。(结点或边都可以重复经过)
试求这个领导视察所有村庄要走的最短路程。
如果包含以下一个或多个条件(不冲突的话),同样求最短路程
1、出发的结点已经明确。
2、出发的结点可以任意选择。
3、所有的村庄都走一遍后要返回出发点才算路程结束。
4、最后可以停在任意一个点上。
大家注意,这个可不是最小生成树问题了,有点类似于一笔画。
...全文
3601
8
打赏
收藏
如何求连通图的最短遍历路径
有N个村庄,相互之间有道路连接,我们可以看作是一个带权的连通图(村庄为结点,道路为边)。 有个领导要下乡视察,要求每个村都至少走过一次。(结点或边都可以重复经过) 试求这个领导视察所有村庄要走的最短路程。 如果包含以下一个或多个条件(不冲突的话),同样求最短路程 1、出发的结点已经明确。 2、出发的结点可以任意选择。 3、所有的村庄都走一遍后要返回出发点才算路程结束。 4、最后可以停在任意一个点上。 大家注意,这个可不是最小生成树问题了,有点类似于一笔画。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wode447815936
2009-06-13
打赏
举报
回复
请问这个算法找到了没?
Tippisum
2009-06-13
打赏
举报
回复
我记得这东西叫做TSP,
典型的NP问题。
可以考虑空间换时间,用宽度优先搜索。
设有k个村庄。
设一个队列,从某个出发点开始,执行宽度优先搜索,最多走2k步(可以证明,如果图是联通的,不会超过2k步)
每个节点记录路径和长度。注意路径中的环不重复进入。
2k步结束后,查找队列中所有访问了全部村庄的路径,计算最优解。
bigbug9002
2009-06-13
打赏
举报
回复
用非递归的深度优先遍历,遍历过程中找出所有的环,算出最短的环。
0、设一栈,用来存放访问过的顶点,设一标志数组来标记顶点是否访问过,设一变量max存放最短长度的环,max=MAX_INT。设一队列存放路径,
1、从顶点x开始,如果x没有被访问过,访问这个顶点,即在标志数组中对应元素打标志,如果访问过,转3.
2、x入栈。
3、找一没有访问过的x的邻接点,如果找到,x=x的邻接点,转1。如果没有找到转4。
4、从栈底开始向栈顶方向扫描一遍,看栈内的点有没有和x邻接的点。如果有,设这个点是y,表明从y到x构成了一个环,计算 y到x路长,如果比max小,存入max,并清空队列,把栈中从y到x中连续存放的顶点放入队列。转5.
5、如果栈不空,出栈。
6、如果栈内还有元素,就把栈顶赋给x 。转1.否则算法结束。
队列中存放的顶点,都可以是出发点。
da00xiong1985
2009-03-16
打赏
举报
回复
找过好像没有哦~
superxiaomm
2008-10-14
打赏
举报
回复
1
我觉得可以用贪心算法来算,先一看以为是最小欧拉,原来不是
我觉得可以这样做,每次从起点去到他能到达的最小路径下个顶点,用floyd算法很容易得到每两个顶点的最小路径,从最小的出发,每次取最短路径的最小顶点。
wangyunfei921
2008-10-11
打赏
举报
回复
《算法引论》,有类似的题
wenzituo
2008-10-11
打赏
举报
回复
四个小条件的解法一样
都是一个np问题,旅行商问题的变种,可以用遗传算法,或者是模拟退火来实现,如果是小数据穷举也是不错的选择
还有推荐一本书叫《算法引论》,上面有详细讲解以上几种算法。
或者你级别高也可以看《计算机编程艺术》,那几本书很变态,什么都有。
xiaozha007
2008-10-11
打赏
举报
回复
穷搜呗
先确定出所有排列
一一搜索
所到没有连接的就返回搜下一个
如果搜完一个,记录下值
然后。。。。。。
图
的
遍历
,最小生成树,单源最
短
路径
图
5.1
遍历
:深度优先搜索、广度优先搜索; 5.2 最小生成树: Kruskal算法:每次取当前最小权值的边,如果这条边连接的两个节点不在同一个
连通
分量中,则添加到最小生成树中,直到所有顶点被覆盖。 Prim算法:从任意根顶点开始,每次取到树中任意一个顶点权值最小的边,加入到树中,直到所有顶点被覆盖。 5.3 有向
图
单源最
短
路径
: Dijkstra算法(要
求
所有权值非负):算法给定一个源点,每次从剩余顶点中选择具有最
短
路径
估计的顶点u,将其加入集合S,并对u的所有出边进行松弛。
图
的最
短
路径
,
遍历
,最小生成树
图
等价类 数据结构 堆 BFS DFS Prim KrustalDijkstra Floyd 的实现
tu-table-DFS.rar_dfs_tu_
图
的
遍历
_
连通
_非
连通
图
遍历
本程序采用深度优先的方法完成
图
的
遍历
,包括
连通
图
和非
连通
图
。
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
图
的
遍历
(java)
(1)
图
的深度广度
遍历
(2)最
短
路径
的算法 (3)数据结构(java)
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章