【发布时间】:2012-08-11 15:00:06
【问题描述】:
我们得到一个未加权的无向图 G = (V, E) 其中 |V| 和 |E| 6。我们还给出了四个顶点a、b、a'、b'。有没有办法找到两个节点不相交的路径 a -> a' 和 b -> b' 使得它们的长度之和最小?
我的首先想到的是先找到最短路径a -> a',从图中删除,然后找到最短路径b -> b'。我认为这种贪婪的方法行不通。
注意:在整个应用程序中,a和b是固定的,而a'和 b' 在每次查询时都会发生变化,因此使用预计算以提供高效查询的解决方案会更可取。另请注意,只需要最小长度总和,而不是实际路径。
非常感谢任何帮助、想法或建议。提前非常感谢!
【问题讨论】:
-
它不会起作用,因为最短路径 a->a' 可能会通过一个节点,这是从 b' 到达 b 的唯一途径。作为预处理阶段,您可以存储图中每个节点与 a 和 b 的最小距离
-
@Gir 是的,确实有道理。
-
可能没有那么有用,但我要指出,即使任何一对节点之间存在路径,也可能没有解决方案(想象 2 个图,一个包含 & b,另一个 a' & b',以及一个额外的节点,这是在两个图之间获取的唯一方法)。
-
有一本书Survivable Networks: Algorithms for Diverse Routing,对这些问题做了很多很好的介绍和解决方案。这是谷歌书上的a link。
标签: algorithm math optimization graph-theory