最长路径问题

在图论和理论计算机科学中，最长路径问题是指在给定的图中找出长度最长的道路。一条不具有任何重复顶点的路径被称为简单路径。无权图中路径的长度就是边的数量，而有权图中路径长度是边权重之和。不同的是，与此相反的最短路径问题（不含负权环）可以在多项式时间内解决。而最长路径问题是NP困难的，这意味着除非P = NP，否则对应于任意的图，没有办法在多项式时间内解决该问题。更强的结果表明这个问题也難以近似地得出答案。但是，有一个线性时间的方法可以用于有向无环图，这对于发现调度问题中的关键路径有重要的作用。

NP-困难性 
可以从哈密顿路径问题规约到未加权最长路径问题，这显示出后者屬於NP-困难類別：当且仅当图G的最长路径的长度是n−1时（n是圖中顶点的数量），图G有哈密顿路径。 由于哈密顿路径问题是NP完全的，此规约表明最长路径问题的决定版本也是NP完全的。在该决定问题中，输入是图G和数k；如果G中存在至少一條由k条或更多条边的路径，则输出为“是”，否则为“否”。

如果可以在多项式时间内解决最长路径问题，则可以通过找到最长路径，然后将其长度与数k进行比较来将其用于解决该决定问题。因此，最长的路径问题是NP难的。问题“在给定图中是否存在具有至少k条边的简单路径”是NP完全的。

在具有非负边权的加权完全图中，加权最长路径问题与旅行推销员问题相同，因为最长路径总是包括所有顶点。

无环图 
在加权图G中两个给定顶点s和t之间的最长路径，与通过将G中每个权重改变为其相反数所导出的图-G中的最短路径相同。因此，如果在-G中找到最短路径，则在G中也可以找到最长路径。

对于大多数图而言，此变换并无用途，因为它在-G中产生了负环。但是如果G是有向无环图（DAG），则不会有负环，并且通过对-G中的最短路径应用线性时间算法，可以在线性时间里找到G的最长路径，因-G也是有向无环图。

对于给定DAG中的每个顶点v，可以通过以下步骤获得以v结尾的最长路径的长度：

 找到给定DAG的拓扑排序。
 对于DAG的每个顶点v，在拓扑排序中，通过检查连入的邻接点，并将这一个邻接点记录的最大长度加1来计算以v结尾的最长路径的长度。如果v没有连入的邻接点，则将以v结尾的最长路径的长度设置为零。在所有情况下，记录下这个数，以便算法的后续步骤访问它。

完成此操作后，可以从记录值最大的顶点v开始，然后向后找记录值最大的连入邻接点，最后反转这条路径就是结果。这和在-G上运行最短路算法等价。

关键路径 
关键路径方法是進行工程項目計劃時常用的一種估算項目所需時間的方法。使用時，需要构造有向无环图，其中顶点表示项目里程碑，边表示達到某一个里程碑之后，要通向另一个里程碑所必須的活动；通过估计完成相应活动将花费的时间，算出每条边的边权。在这样的图中，从第一个里程碑到最后一个里程碑的最长路径是关键路径，它描述了完成项目的总时间。

有向无环图的最长路径也可以用于：将有向无环图G的每个顶点v分到层数是以v结尾的最长路径长度的层，这种层分配使G的层数最小。

图的特例 
迪杰斯特拉在20世纪60年代提出了一种用于在树中找到最长路径的线性时间算法，而该算法的正式证明于2002年出版。此外，最长路径可以在加权树上，上，上，二分上，和上以多项式时间计算。

对于，已知 时间的算法，其使用动态规划方法。这种动态规划方法已被用于获得和可比性补图（即的补图，也包含）的多项式时间算法，两者具有相同的运行时间 。后一种算法基于可比性补图的词典深度优先搜索（LDFS）顶点排序的特殊属性。对于共同可比性图，还已知有较高运行时间 的另一种多项式时间算法，其基于由输入的可比性补图的补图定义的偏序关系的哈斯图。

此外，最长路径问题可以在树宽有界或团宽有界的任何图上在多项式时间内解决，例如。最后，在哈密顿路径问题是NP难的所有图上显然最长路径问题也是NP难的，例如在，和平面图上。

参数化复杂性 
当通过路径长度参数化时，最长路径问题是固定参数易处理的。例如，可以通过执行以下步骤的算法，以输入图大小的线性时间求解最长路径问题（但对于路径长度呈指数时间）：

 对图进行深度优先搜索。设是得到的的深度。
 使用深度优先搜索树的根到叶路径的顺序，按照搜索遍历的顺序，构建图的，路径宽度为。
 将动态规划应用于此路径分解以找到最长的路径 ，时间是，其中是图中顶点的数量。

由于输出路径的长度至少与一样大，因此运行时间也受 的限制，其中是最长路径的长度。

参见 
 ，最长路径与图着色的对偶关系
 
 问题中，中的最长

参考文献

外部链接 
 "Find the Longest Path ", song by Dan Barrett
图算法
NP完全问题