如何求连通图的最短遍历路径

cthliao 2008-08-28 03:44:28
有N个村庄,相互之间有道路连接,我们可以看作是一个带权的连通图(村庄为结点,道路为边)。
有个领导要下乡视察,要求每个村都至少走过一次。(结点或边都可以重复经过)
试求这个领导视察所有村庄要走的最短路程。

如果包含以下一个或多个条件(不冲突的话),同样求最短路程
1、出发的结点已经明确。
2、出发的结点可以任意选择。
3、所有的村庄都走一遍后要返回出发点才算路程结束。
4、最后可以停在任意一个点上。

大家注意,这个可不是最小生成树问题了,有点类似于一笔画。
...全文
3488 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
穷搜呗
先确定出所有排列
一一搜索
所到没有连接的就返回搜下一个
如果搜完一个,记录下值
然后。。。。。。
对任意给定的(顶点数不小于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分)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧