最快的方式遍历具有多个未知权重边的图

时间:2012-11-08 12:36:55

标签: algorithm graph shortest-path graph-traversal

给定无向和正加权图 G G 的某些边具有未知权重。例如,

enter image description here

其中边缘(B,C)的重量未知。

A 遍历 B 会花费您 7 。 我们可以通过从 B 遍历 C 来获得未知重量 e =重量(B,C),反之亦然,并且您需要花费< strong> e ,最终成为一个已知的重量。从 A 走到 C B 总共花费 e + 7

我的问题是,在给定起点时我们能以多快的速度获得所有未知重量?也就是说,从起点遍历所有未知重量边缘(例如 A )尽可能小的成本。

未知重量的数量 1 的情况很简单。您可以先找到从起始点到所需边缘顶点的最短路径,然后遍历未知权重边缘。但是,当未知重量边缘的数量增加到大于1时,我不知道如何解决它。

任何人都可以知道如何做到这一点吗?

2 个答案:

答案 0 :(得分:3)

无法提供完整的解决方案,但它看起来与旅行商问题相关,其中未知边缘是要访问的节点。

但我认为你无法先验地找到最佳解决方案。考虑这个例子

a-b = 1
b-c = ?
b-d = ?
a-d = 10

如果b-c权重较低(比方说1),则从a开始的最短路径为a-b-c-b-d,其遍历b-c两次。如果b-c具有较高权重(例如100),则最短路径变为a-d-b-c,而选择较便宜的连接a-d优先于遍历b-c两次。

答案 1 :(得分:1)

您可以创建第二个图形G',它将是相同的 - 但没有“未知边缘” 1 。然后,您可以使用所有最短路径算法,并使用算法中的数据填写空白。

Floyd Warshall algorithm向所有最短路径提供O(n3)


(1)正式:G'=(V,E',w')其中:
E' = { e | e is in E and w(e) != ? }
w'(e) = w(e) if w(e) != ?