图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路)Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;

首先了解松弛技术,即给每个顶点设置到源点的最短距离,设置前驱.  在有限次的对边的松弛之后,可以将所有顶点的前驱与单源最短距离确定.

 

拓扑排序: 图的深度优先遍历的应用,对一个图进行深度优先的最后将该顶点头插到线性表中,那么线性表中只有自左至右的边,有边的两个的顶点的运行顺序一定是从左至右的,没有边相连的则无所谓.  这就给出了一个线性排序,它能够确定事情发展的先后次序.  从图上来看,就是一个单源的流程图,上部的事情肯定要比下部的事情先做,然后有些事情之间没有必要注意先后顺序 .  拓扑排序就是完成了一个事情发现先后顺序的排序,拓扑排序后对于松弛技术又有了进一步优化,只需要对拓扑序列做一趟松弛就完成了所有结点的单源最短路径问题,但是拓扑排序的适应范围仅限于有向的,没有回路的类似流程图的图,权可以为负,但不可以有回路。

 

Bellman-Ford算法是一种通用的单源最短路径做法 。  通过对所有的边松弛num-1次,就把除源点外的num-1个顶点的最短单源路径确定下来。 允许有回路,负权,负权回路(会自动判别,如果存在,则算法失败).

 

迪克拉斯算法就是对S集合与V-S集合之间操作,对每次选入S的顶点与V-S的顶点之间做松弛,n-1次后完成。

 

松弛算法对源点的minDist初始化为0,这也是为什么对边松弛有限次后有结果的原因.

    原文作者:Bellman - ford算法
    原文地址: https://blog.csdn.net/u012116229/article/details/44177949
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞