码迷,mamicode.com
首页 > 其他好文 > 详细

关于最长路

时间:2019-12-30 00:01:05      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:archive   spfa   mamicode   mic   更新   code   关于   max   arch   

首先我们要明白只有有向无环图(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最短路,结果取反。由上图,此法也并不科学。

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

关于最长路

标签:archive   spfa   mamicode   mic   更新   code   关于   max   arch   

原文地址:https://www.cnblogs.com/xuanmaiboy/p/12117026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!