多个目的地的最高加权路径
highest weighted path for multiple destinations
我有一个有向循环加权图。我想找到一条权重最高的路径,长度为 X 个顶点,我不在乎目的地是什么。我只想找成本最高的
你可以使用 Bellman-Ford algorithm 做你想做的事。
这可以通过类似动态规划的算法来解决。
因为你只有几百个节点,X是第10轮,你可以给每个节点v分配一个大小为X的数组Fv,Fv[i]表示从源到节点v的最大成本长度为 i.
让我们成为消息来源。设置 Fs[0] = 0,所有其他 Fs[i] = -infinity.
所有其他数组被初始化为-infinity数组。
现在,
for each node v, do the following update:
Fv[i] = max{Fv[i], Fw[i-1] + cost(w, v) | where w is neighbor of v}
重复上述更新至少 X 次,然后检查所有 v 的 Fv[X] 以获得您想要的最大可能值。
您可以使用一些额外的信息来检索路径,这应该很容易做到。
的特例
我有一个有向循环加权图。我想找到一条权重最高的路径,长度为 X 个顶点,我不在乎目的地是什么。我只想找成本最高的
你可以使用 Bellman-Ford algorithm 做你想做的事。
这可以通过类似动态规划的算法来解决。
因为你只有几百个节点,X是第10轮,你可以给每个节点v分配一个大小为X的数组Fv,Fv[i]表示从源到节点v的最大成本长度为 i.
让我们成为消息来源。设置 Fs[0] = 0,所有其他 Fs[i] = -infinity.
所有其他数组被初始化为-infinity数组。
现在,
for each node v, do the following update:
Fv[i] = max{Fv[i], Fw[i-1] + cost(w, v) | where w is neighbor of v}
重复上述更新至少 X 次,然后检查所有 v 的 Fv[X] 以获得您想要的最大可能值。
您可以使用一些额外的信息来检索路径,这应该很容易做到。
的特例