首页 > 其他 > 详细

关于最长路

时间:2019-12-29 23:25:42      阅读:71      评论:0      收藏:0      [点我收藏+]

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

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

关于最长路

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!