在Graph中查找最小化两个其他节点之间距离的节点

时间:2012-11-13 04:44:15

标签: algorithm graph

我有一个有向加权图G,有V个顶点和E个边。给定图中的两个节点,假设A和B,并给出边缘AB的权重,表示为w(A,B),我需要找到一个节点C使得max(w(A,C),w (B,C))在所有可能性中都是最小的。可能性我指的是C可以采用的所有值。我不知道它是否完全清楚,如果不是,我会尝试更精确。

2 个答案:

答案 0 :(得分:2)

如果用w(A,C)你实际上只是指边缘的权重,那么依次检查直接连接到A的所有节点,最坏的总成本是图的大小,这与你可以期待,假设你总是需要阅读图表。

如果用w(A,C)表示从A到C的最低成本路径的成本,请注意大多数路径寻找算法,例如http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm,实际上计算了成本最低路径的成本。 A到每个其他节点。如果您同时拥有从A到每个节点的成本以及从每个节点到B的成本,您可以依次查看每个节点来解决您的问题。

因此,一次运行计算从A到每个其他节点的成本,然后反转节点中的边缘并执行另一次运行以计算从B到反转图中的每个其他节点的最低成本路径。然后,对于每个节点,您将获得成本最低的成本w(A,C)和最低成本w(C,B),以便您可以依次检查每个节点以查看哪个节点最佳。

如果您的图表包含周期,那么您需要http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm之类的内容。如果它有负循环,你就会遇到问题。

答案 1 :(得分:0)

不是很清楚你问的是什么,但这里有一种加权距离的方法: 将其视为R ^ n中的距离问题,其中任何维度中与C的实际直线距离乘以路径的该维度的权重以获得加权距离。使整个表达式成为加权距离的总和,并使用二阶导数检验来最大化此表达式。

干杯, 安德鲁