我有一个有向循环加权图。我想找到一个权重最高的路径,X个顶点的长度,我不在乎目的地是什么。我只想找到最高的成本。
答案 0 :(得分:1)
这可以通过类似动态编程的算法来解决。
由于您只有几百个节点而X是第10轮。您可以为每个节点分配一个大小为X的数组Fv,而Fv [i]表示从源到节点v的最大成本岛
让我们成为源头。设置Fs [0] = 0,以及所有其他Fs [i] = -infinity。
所有其他数组都初始化为 -infinity 数组。
现在,
对于每个节点v,执行以下更新:
Fv [i] = max {Fv [i],Fw [i-1] + cost(w,v)|其中w是v}的邻居
重复上述更新至少X次,然后检查所有v的Fv [X]以获得所需的最大值。
您可以使用一些额外的信息来检索路径,这应该很容易做到。
的特例答案 1 :(得分:0)
您可以使用Bellman-Ford algorithm做您想做的事。