我有一棵树,其中每条边都被分配了一个权重(一个可以是正数或负数的实数)。我需要一种算法来找到最大总权重的简单路径(即路径中边的权重之和最大的简单路径)。路径开始或结束的节点没有限制。
我有一个可能的算法,但我不确定它是否有效,我正在寻找一个证据。这里是:
- 选择任意节点u并运行 DFS( u ) 以找到从u开始的最大权重简单路径。让 ( u , v ) 成为这条路径。
- 运行 DFS( v ) 以找到从v开始的最大权重简单路径。让这条路径是(v,z)。
那么 ( v , z ) 是最大权重的简单路径。该算法在图的大小上是线性的。谁能告诉我它是否有效,如果有效,请提供证据?
注意:对于具有循环的一般图,最长路径问题是 NP-Hard。但是,我在这里只考虑树。