【发布时间】:2012-03-29 08:25:19
【问题描述】:
我有一个顶点有成本的有向图。我想找到两个顶点之间成本最高的路径,但我只找到了解决成本最低的路径的算法。
另外,我正在使用 Java。
【问题讨论】:
-
你的图有负边权重吗?还是零成本的边权重?
标签: java graph-algorithm
我有一个顶点有成本的有向图。我想找到两个顶点之间成本最高的路径,但我只找到了解决成本最低的路径的算法。
另外,我正在使用 Java。
【问题讨论】:
标签: java graph-algorithm
生成的路径是原始图上的最大成本路径。
【讨论】:
只需修改所用算法的评估函数即可。如果对于最短路径,该函数为较短的路径返回较大的值,在您的情况下,您可能希望为较短的路径返回较小的值。
【讨论】:
这是Longest path problem,它(假设您正在寻找简单路径,即没有节点被多次访问的路径)是NP-hard,这意味着没有计算它的算法在多项式时间内存在,除非 P = NP。证明与Hamiltonian path problem 相关,这也是NP 难的。寻找不简单的路径没有多大意义,因为您可以一直循环通过具有正成本的循环,从而导致总成本无限。
如果您对这个事实感到难过,请听this。
但是,您有一个有向无环图 (DAG),有一种使用拓扑排序的方法,在链接的 Wikipedia 文章中对此进行了说明。这个问题与用于安排一组项目活动的Critical path method 有关。
【讨论】: