c++ - 在有向图中找到第二条最短路径

标签 c++ graph dijkstra

我需要一种在有向图中找到第二条最短路径的方法,而且第二条最短路径不能完全包含最短路径。我知道 dijkstra 算法,但我无法想出一种简单的方法来更改该算法以在合理的时间内给我第二条最短路径。算法、sudo 代码或 c++ 示例,三者之一将不胜感激。

最佳答案

不确定以下是否正确和有效,但这只是一个想法....

第二最短路径至少有一条边不同于最短路径。如果没有节点被访问两次,这也意味着,最短路径中至少有一条边未被第二最短路径使用。

如果那是正确的,你可以先搜索最短路径。然后对于最短路径中的每条边:将其权重设置为无穷大(即从图中排除)并在结果图中搜索最短路径。其中最短的路径应该是原始图中第二短的路径。

关于c++ - 在有向图中找到第二条最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773839/

相关文章:

c++ - 尝试在C++主函数内更改全局变量值时出现编译错误

c++ - 如何将 std::string 复制到 std::vector<char> 中?

python - 如何在 scipy 中读取稀疏有向图

mongodb - 保存图表(数据库)的好解决方案

c# - 通过 .Net 代码加载和使用 Mathematica 包

c++ - 为什么这个 Dijkstra(图形)实现不起作用?

algorithm - 当两条边具有相同权重时的 Dijkstra 算法

algorithm - 使用 Dijkstra 算法的最大利润

java - 数据包 : Effectively representing different packet types

c++ - 另一个 "OpenGL Not Drawing"问题