Graph Dijkstra图中的最长路径

Graph Dijkstra图中的最长路径,graph,graph-theory,graph-algorithm,dijkstra,longest-path,Graph,Graph Theory,Graph Algorithm,Dijkstra,Longest Path,我只是在想:你能把图中所有的权重倒数,然后做Dijkstra吗?当我们最小化权重的倒数值时,得到的路径将使其最大化,对吗? 这样,我们就可以用Dijkstra得到图中的最长路径! 这似乎太容易了,我错了吗?请告诉我。这是不可能的,因为最长路径问题没有像最短路径问题那样的最优子结构问题 你说你可以考虑任何路径作为最长的路径(因此它可以有循环),但是如果有一个循环并且权重是正的,算法将永远不会结束,因为它总是能够通过循环循环来改善最长路径。p> 现在假设我们只希望有简单路径(没有循环)作为最长路径的

我只是在想:你能把图中所有的权重倒数,然后做Dijkstra吗?当我们最小化权重的倒数值时,得到的路径将使其最大化,对吗? 这样,我们就可以用Dijkstra得到图中的最长路径!
这似乎太容易了,我错了吗?请告诉我。

这是不可能的,因为
最长路径问题
没有像
最短路径问题那样的最优子结构问题

<>你说你可以考虑任何路径作为最长的路径(因此它可以有循环),但是如果有一个循环并且权重是正的,算法将永远不会结束,因为它总是能够通过循环循环来改善最长路径。p> 现在假设我们只希望有简单路径(没有循环)作为最长路径的候选。在不损失一般性的情况下,考虑所有边具有酉权的下图:

A------B
|      |
|      |
C------D

并考虑从<代码> A<代码>到<代码> d>代码>的最长路径(<代码> a> b> d>代码>。为了使问题具有最优的子结构性质,从

A
B
的最长路径必须是
A->B
,但显然不是因为路径
A->C->D->B
更长。对于从
B
D
的路径,也可以使用类似的参数。所以我们可以看到为什么这个问题不能用Dijkstra算法来解决。事实上,这个问题是NP,没有一个合理的时间复杂度解决方案

用一个简单的示例图很容易理解

假设你想从A点到D点。为了最小化权重的倒数值,你将通过C。但是A->B->D更大

编辑:也许我至少应该包括一些数学知识

假设一个正数序列的和是s

a1+a2+a3+…+an=s

倒数和的最小值是多少

1/a1+1/a2+1/a3+…+1/an


玩这个游戏会给你一些直觉。

你说的反向是什么意思?@NiVeR如果我有x1/yb,但我说过要反转权重,然后找到最短的路径,实际上最长的路径,因为我们使用的是倒数!!再慢慢读一遍,它不能回答我的问题。我在考虑一个套利问题。在这里,为了找到汇率最高的序列,我考虑将不全是单一值的值反转。@alienflow,这只是一个简单的例子。您可以放置其他值,如
(A,B)=1/2,(B,D)=1/4,(A,C)=1/3,(C,B)=1.4