多个目的地的最高加权路径



我有一个有向循环加权图。我想找到一条权重最高的路径,长度为X个顶点,我不在乎目标是什么。我只想找到成本最高的。

这可以通过类似动态编程的算法来解决。

因为你只有几百个节点,而X是第10轮。您可以为每个节点v分配一个大小为X的数组Fv,Fv[i]表示从源到长度为i的节点v的最大成本。

让我们作为来源。设置Fs[0]=0,并且所有其他Fs[i]=-无穷大。

所有其他数组都初始化为-无穷大数组。

现在,

对于每个节点v,执行以下更新:

Fv[i]=max{Fv[i],Fw[i-1]+成本(w,v)|其中w是v}的邻居

重复以上更新至少X次,然后检查所有v的Fv[X],以获得您想要的最大可能值。

你可以使用一些额外的信息来检索路径,这应该很容易做到

上述算法是Bellman-Ford算法的一个特例

您可以使用Bellman-Ford算法来执行您想要的操作。

最新更新