4 Graph
最长路
最长路
最长路是与最短路相对应的概念,最短路是指路径长度最短的路径,最长路则是路径长度最长的路径。
最长路的求解方法主要有两种:SPFA算法和拓扑排序算法。拓扑排序算法的执行效率通常显著高于SPFA算法。需要说明的是,尽管SPFA算法存在容易被特殊数据构造卡时间的情况,但该算法在处理负边权问题上具有独特价值,建议学习者掌握该算法。
SPFA算法
SPFA算法能够处理包含负边权的图结构。由于负数的特性,数值越小其绝对值越大,因此可以将最长路问题转化为最短路问题求解。具体方法为:在存储边权时取其相反数,通过最短路算法求解后,再将结果取相反数即可得到最长路的数值。
拓扑排序算法
拓扑排序算法的应用存在一定限制,仅适用于有向无环图,无法直接处理无向图等结构。该算法需要结合动态规划(DP)思想实现,具体思路可通过代码实现进行理解。以下通过例题进行讲解:
题面:最长路
SPFA求最长路示例代码
拓扑排序求最长路示例代码
例题:
Status
Problem
Tags