给定无向和正加权图 G , G 的某些边具有未知权重。例如,
其中边缘(B,C)的重量未知。
从 A 遍历 B 会花费您 7 。 我们可以通过从 B 遍历 C 来获得未知重量 e =重量(B,C),反之亦然,并且您需要花费< strong> e ,最终成为一个已知的重量。从 A 走到 C 到 B 总共花费 e + 7 。
我的问题是,在给定起点时我们能以多快的速度获得所有未知重量?也就是说,从起点遍历所有未知重量边缘(例如 A 强大的>)尽可能小的成本。
未知重量的数量 1 的情况很简单。您可以先找到从起始点到所需边缘顶点的最短路径,然后遍历未知权重边缘。但是,当未知重量边缘的数量增加到大于1时,我不知道如何解决它。
任何人都可以知道如何做到这一点吗?
答案 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) != ?