社区
数据结构与算法
帖子详情
如何求连通图的最短遍历路径
cthliao
2008-08-28 03:44:28
有N个村庄,相互之间有道路连接,我们可以看作是一个带权的连通图(村庄为结点,道路为边)。
有个领导要下乡视察,要求每个村都至少走过一次。(结点或边都可以重复经过)
试求这个领导视察所有村庄要走的最短路程。
如果包含以下一个或多个条件(不冲突的话),同样求最短路程
1、出发的结点已经明确。
2、出发的结点可以任意选择。
3、所有的村庄都走一遍后要返回出发点才算路程结束。
4、最后可以停在任意一个点上。
大家注意,这个可不是最小生成树问题了,有点类似于一笔画。
...全文
3488
8
打赏
收藏
如何求连通图的最短遍历路径
有N个村庄,相互之间有道路连接,我们可以看作是一个带权的连通图(村庄为结点,道路为边)。 有个领导要下乡视察,要求每个村都至少走过一次。(结点或边都可以重复经过) 试求这个领导视察所有村庄要走的最短路程。 如果包含以下一个或多个条件(不冲突的话),同样求最短路程 1、出发的结点已经明确。 2、出发的结点可以任意选择。 3、所有的村庄都走一遍后要返回出发点才算路程结束。 4、最后可以停在任意一个点上。 大家注意,这个可不是最小生成树问题了,有点类似于一笔画。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的所有出边进行松弛。
数据结构
求
最小生成树、最
短
路径
、关键
路径
对任意给定的
图
(顶点数不小于20,边数不少于30,
图
的类型可以是有向
图
、无向
图
、有向网、无向网),能够输入
图
的顶点和边(或弧)的信息,并存储到相应存储结构(邻接矩阵、邻接表、十字链表、邻接多重表,任选其中两种类型),对自己所创建的
图
完成以下操作: 1、 对无向
图
求
每个顶点的度,或对有向
图
求
每个顶点的入度和出度(5分) 2、 完成插入顶点和边(或弧)的功能(5分) 3、 完成删除顶点和边(或弧)的功能(5分) 4、 两种存储结构的转换(5分),如果其中一种存储结构为十字链表或邻接多重表则增加5分。 5、 输出
图
的深度优先
遍历
序列或广度优先
遍历
序列(5分) 6、
求
图
的深度优先或广度优先的生成树(或生成森林)(存储结构为孩子-兄弟链表),并对生成树进行
遍历
(15分) 7、 判断
图
的
连通
性,输出
连通
分量的个数(5分) 8、 判断
图
中是否存在环,无向
图
5分,有向
图
10分 9、 给出顶点u和v,判断u到v是否存在
路径
(5分) 10、
求
顶点u到v的一条简单
路径
(10分) 11、
求
顶点u到v的所有简单
路径
(15分) 12、
求
顶点u到v的最
短
路径
(10分) 13、
求
顶点u到其余各顶点的最
短
路径
(15分) 14、
求
任两个顶点之间的最
短
路径
(15分) 15、
求
最小生成树(15分) 16、对于有一个源点和一个汇点的有向网,
求
关键
路径
(20分)
数据结构;最小生成树;最
短
路径
;关键
路径
1、 对无向
图
求
每个顶点的度,或对有向
图
求
每个顶点的入度和出度(2、 完成插入顶点和边(或弧)的功能3、 完成删除顶点和边(或弧)的功能 4、 两种存储结构的转换,如果其中一种存储结构为十字链表或邻接多重表则增加 5、 输出
图
的深度优先
遍历
序列或广度优先
遍历
序列(6、
求
图
的深度优先或广度优先的生成树(或生成森林)(存储结构为孩子-兄弟链表),并对生成树进行
遍历
(7、 判断
图
的
连通
性,输出
连通
分量的个数8、 判断
图
中是否存在环,无向
图
9、 给出顶点u和v,判断u到v是否存在
路径
10、
求
顶点u到v的一条简单
路径
11、
求
顶点u到v的所有简单
路径
12、
求
顶点u到v的最
短
路径
13、
求
顶点u到其余各顶点的最
短
路径
14、
求
任两个顶点之间的最
短
路径
15、
求
最小生成树 16、对于有一个源点和一个汇点的有向网,
求
关键
路径
数据结构-
图
-最小生成树-最
短
路径
图
的基本概念
图
的存储表示
图
的
遍历
与
连通
性 最小生成树 最
短
路径
活动网络
17 7
图
5-最
短
路径
1
第七章
图
7.1
图
的定义和术语7.2
图
的存储结构7.3
图
的
遍历
7.4
图
的
连通
7.5 有向无环
图
及其应用7.6 最
短
路径
一.最
短
路径
q 若用带权
图
表示交通
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章