首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Dijkstra算法寻找哈密顿路径?

问用Dijkstra算法寻找哈密顿路径?
EN

Stack Overflow用户
提问于 2013-06-07 11:43:26
回答 3查看 2.7K关注 0票数 4

Dijkstra算法能否找到从一个源顶点到所有其他顶点的所有最短路径,使得该路径访问一个无向对称图中的所有顶点一次且恰好一次?对称图有没有更快的算法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-09 05:14:32

您需要的是一种算法,用于查找从图中的单个节点到每个其他节点的最短Hamiltonian paths (哈密顿路径是指恰好经过图中每个节点一次的路径)。不幸的是,即使是确定无向图中两个节点之间是否存在哈密顿路径的问题也是NP完全的,因此没有已知的多项式时间算法来解决这个问题(除非P=NP,否则它们不存在)。由于Dijkstra的算法在多项式时间内运行,因此该算法没有已知的修改,可以找到到图中每个节点的哈密顿路径。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2013-06-07 13:06:10

是的,Dijkstra的算法将帮助你在有向图和无向图中找到最短路径。但当使用有向图时,它更有用。

Bellman-Ford算法比Dijsktra算法更快,但仅在极少数情况下,该算法适用于具有负圈的图。

Dijkstra算法的最简单实现导致O(|E|+|V|^2)的运行时间。[|E| & |V|表示图的边和顶点。

票数 1
EN

Stack Overflow用户

发布于 2013-06-07 11:59:44

Dijkstra算法找到从一个选定点到所有其他选定点的最短路径。它是为具有非负边的图(无论是有向图还是无向图)定义的。对于这种情况,没有更快的算法。

如果对边权重有约束,可能会有更快的算法。例如,如果权重限制为0,1 -可以使用BFS算法。

这可以推广到具有整数权重的情况,也可以使用更快的算法。(即,代替使用二进制搜索树,可以使用有限的数组集合)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16975896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档