现在的位置: 首页 > 综合 > 正文

图的最长路径 图的最长路径

2018年02月17日 ⁄ 综合 ⁄ 共 556字 ⁄ 字号 评论关闭
 

图的最长路径

分类: 算法 1029人阅读 评论(3) 收藏 举报

1。 肯定不能用dijkstra算法,这是因为,Dijkstra算法的大致思想是每次选择距离源点最近的结点加入,然后更新其它结点到源点的距离,直到所有点都被加入为止。当每次选择最短的路改为每次选择最长路的时候,出现了一个问题,那就是不能保证现在加入的结点以后是否会被更新而使得到源点的距离变得更长,而这个点一旦被选中将不再会被更新。例如这次加入结点u,最长路为10,下次有可能加入一个结点v,使得u通过v到源点的距离大于10,但由于u在之前已经被加入到集合中,无法再更新,导致结果是不正确的。

     如果取反用dijkstra求最短路径呢,记住,dijkstra不能计算有负边的情况。。。


2.

可以用   Bellman-Ford   算法求最长路径,只要把图中的边权改为原来的相反数即可。也可以用Floyd-Warshall   算法求每对节点之间的最长路经,因为最长路径也满足最优子结构性质,而Floyd算法的实质就是动态规划。但是,如果图中含有回路,Floyd算法并不能判断出其中含有回路,且会求出一个错误的解;而Bellman-Ford算法则可以判断出图中是否含有回路。


3. 如果是有向无环图,先拓扑排序,再用动态规划求解。

抱歉!评论已关闭.