关于最长路

Posted xuanmaiboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于最长路相关的知识,希望对你有一定的参考价值。

首先我们要明白只有有向无环图(DAG)才有最长路
最近在重新看到最长路,总是能看到各种说法说SPFA,Floyd,Dijkstra等能做最短路,比如修改个符号,或者初始化时加个负号,但是前提是这个图必须是有向无环图。
在这个前提下,我们使用Floyd,SPFA都可以求最长路,我们给每个边加一个负号,求出的结果取个相反数就行。
但是!普通的Dijkstra并不能简单修改(简单修改是指修改更新条件的符号,初始化dis的值,或者键图是键负边)后正确求出最长路
https://www.cnblogs.com/gray035/archive/2013/03/21/2973902.html
Dijkstra最长路没有子结构,子段最长不一定总的最长。如此图:

技术图片

 

 

 

我们求1到其余各点的距离时,第一步:最长的是1->4=3我们将4标记并对其余顶点进行松弛,此时1到4的最长路就不会再更新了,即1->4的最长路为3.可是观察发现1到4的最长路为1->2->3->4为1+2+3=6;


有人说取出最大的边max,让所有边减去max,再跑Dijkstra最短路,结果取反。由上图,此法也并不科学。

本博客如有错误欢迎指出。

以上是关于关于最长路的主要内容,如果未能解决你的问题,请参考以下文章

树的直径(最长路) 的详细证明(转)

hiho_1050_树中的最长路

POJ 3592 Instantaneous Transference(强连通缩点+最长路)

2017CCPC中南地区赛 H题(最长路)

hdu 1317 SPFA+连通判断+最长路

POJ2240:Arbitrage(最长路+正环)