如何找到最高成本的路径

时间:2012-03-12 22:08:34

标签: java graph-algorithm

我有一个有向图,其顶点有成本。我想在两个顶点之间找到最大成本的路径,但我只找到了以最低成本解决路径的算法。

另外,我正在使用Java。

3 个答案:

答案 0 :(得分:5)

  1. 规范化所有成本,使最低成本大于0.
  2. 将所有费用更改为(1 /费用)。
  3. 运行最低成本算法。
  4. 生成的路径是原始图表上的最大成本路径。

答案 1 :(得分:2)

只需修改所用算法的评估函数即可。如果对于最短路径,函数会为较短路径返回更大的值,在您的情况下,您希望为较短路径返回较小的值。

答案 2 :(得分:0)

这是Longest path problem,它(假设您正在寻找简单路径,即多次未访问任何节点的路径)是NP难的,这意味着没有算法可以除非P = NP,否则以多项式计算存在。证明与Hamiltonian path problem有关,this也是NP-hard。寻找不简单的路径没有多大意义,因为您可以不断以正成本循环遍历一个循环,从而产生无限的总成本。

如果您为此感到难过,请听Critical path method

但是,您有向无环图(DAG),有一种使用拓扑排序的方法,相关链接的Wikipedia文章对此进行了说明。这个问题与用于安排一组项目活动的would not propagate to the parent containers有关。

相关问题