Graph 图的最长路径

Graph 图的最长路径,graph,Graph,如何在图形中找到最长路径?我想我可以使用深度优先搜索,但我找不到更简单的实现方法?正如评论中指出的,这是NP完全搜索。如果图是非循环的,则它是唯一的多项式。如果它是DAG,则它是偶数线性的。有关更多信息,请再次参阅。将每个节点之间路径的长度/权重保存为1/(整数/双精度/任意值),然后使用最短路径算法尝试对有向图使用拓扑排序。 它专门用于任务调度 如果是DAG G=(V,E),您可以简单地进行拓扑排序 然后将一些节点标记为s和t 然后可以使用动态规划,其中opt(I)=max(opt(j)+1)

如何在图形中找到最长路径?我想我可以使用深度优先搜索,但我找不到更简单的实现方法?

正如评论中指出的,这是NP完全搜索。如果图是非循环的,则它是唯一的多项式。如果它是DAG,则它是偶数线性的。有关更多信息,请再次参阅。

将每个节点之间路径的长度/权重保存为1/(整数/双精度/任意值),然后使用最短路径算法

尝试对有向图使用拓扑排序。 它专门用于任务调度

如果是DAG G=(V,E),您可以简单地进行拓扑排序

然后将一些节点标记为s和t

然后可以使用动态规划,其中
opt(I)=max(opt(j)+1)
其中
j
边(j,I)在E中

只需将opt(s)=0和其他设置为-inf,并在拓扑排序中忽略s之前和t之后的节点(不能从s访问此节点,并且在传递t之后,不能返回)

注意,它只适用于DAG(有向无环图)


还请注意,如果不是DAG,则可以将每条边乘以-1,然后使用Bellman Ford,但如果是负循环,(!)则不起作用。

确定不是指两个节点之间的最大距离吗?这可能取决于图形的规则和特征。是否允许重新访问节点?是否允许重新转换边?这个图形可以是不相交的吗?是导演的吗?这是非循环的吗?这似乎是旅行推销员的一个变种。这是可以解决的吗?看看这个问题:。它指的是它是一个未加权的无向图,很抱歉缺少信息对于一个非常简单的平面图,获取所有路径(=>获取最长路径)非常容易实现。请看这里(并且只使用最长的路径),这应该让你知道如何用一个一般的图形来做它:只需遍历当前顶点的所有边而不是4个NCELL CLE()Calsii,不要认为这会起作用。