有向,未加权图形中的最短路径,在多条最短路径之间有选择标准?

时间:2011-12-22 23:19:37

标签: algorithm language-agnostic graph-theory shortest-path breadth-first-search

我正在寻找解决最短路径问题的最佳方法:

我有一个带有未加权边缘的有向图。如果存在这样的路径,我需要能够找到任意两个节点之间的最短路径。使这个问题与常规最短路径问题不同的是:如果存在具有最短长度的多个路径,我需要能够选择具有最高“权限”的路径。

每个节点都有一个数字权限,具有最高权限的路径只是具有最高节点权限总和的路径。

总结: 我需要有向图中一对节点之间的最短路径,但如果有多条路径具有相同的最小长度,我需要找到具有最高路径权限的路径。

这样做的最佳方法是什么?有没有办法将其转换为加权图,然后只使用Dijkstra's algorithm?有没有办法修改breadth-first search给我一组最短路径,然后我可以迭代找到最高权限路径?

2 个答案:

答案 0 :(得分:5)

边缘未加权,因此给eacn边缘加权1+auth(v,u)。 [auth在以下行中解释]

对于每个(v,u)集合auth(v,u) = max{authority} - authority(v)(*)[如果你使用从v离开的边缘,这是真的,你绝对访问它了。“

(*)max{authority}是图表中的最高权限。

将你的“auth rank”标准化为Sigma(auth(v,u),for each (v,u) in E) < 1 [通过除法,因此边缘的权限仍将与原始版本成比例]

现在,使用新修改的权重在图表上运行dijkstra

找到的最短路径必须最短,因为权威因素无法克服距离因素,因为它是“弱”[归一化到小于1]。
它是最高authority [对于顶点]的那个,因为它是auth [对于边缘]最低的那个,因为它是最小的。

答案 1 :(得分:1)

没有关于Djikstra算法的任何内容强迫您使用标量来表示路径成本。

一个简单的修改就是使用一对而不是一个值,例如(distance, authority)代表路径的费用。排序为< distance,然后是> authority,即较低的distance优先级较高,而较高的authority优先。