【发布时间】:2014-01-03 12:24:10
【问题描述】:
假设我们在一组顶点上有两个有向和正加权图(例如,第一个图代表铁路,第二个代表公交车道;顶点是公交车站或火车站或两者兼而有之)。我们需要找到从 A 到 B 的最短路径,但是我们不能改变传输类型超过 N 次。
我试图修改 Dijkstra 的算法,但它只适用于一些“不那么平均和复杂”的图表,我想我需要尝试一些不同的东西。
如何最好地表示“双图”以及如何管理遍历图时的有限更改?有没有可能在这个中调整 Dijkstra 的算法?任何想法和线索都会有所帮助。
编辑:好吧,我忘了一件事(我认为这很重要):N = 0,1,2,...;我们可以想出任何我们喜欢的图形表示,当然每两个节点之间最多可以存在 4 条边(一个方向有 1 条公交专用道和 1 条铁路,第二方向有 1 条公交专用道和 1 条铁路)。
【问题讨论】:
-
"digraph" 也是一个像 "ae" 的字母对,重新标记。
-
两张图有什么关系? 是它们是两个图吗?
-
我认为修改 Dijkstra 没有任何问题。您只需向 Dijkstra 添加一个分支定界组件,从路径列表中永久删除那些超过允许更改数量的路径。
-
或者一开始就不在后继函数中添加这样的邻居。
-
@arne 除非我遗漏了什么,否则没有明显的天真的方法可以修改 Dijkstra 以合理的时间复杂度。如果你真的有这样的修改,你介意简单描述一下吗?更详细的?
标签: c++ c dijkstra shortest-path directed-graph