图论---算法篇
小书匠 Graph 图论 声明: 图论中的算法基本都是提出后,经过检验的.我就不讨论算法很基础的原理,只是从看懂一个算法的角度去学习.本着不花时间去重复别人优秀工作的原则,本文中很多部分引用了别人的工作,甚至是照搬过来,因为我觉得算法这东西已经类似 真理 ,证明不需要你,你可以看得懂,别人也可以,只是表达方式不同,别人有优秀的表达方式,我为什么不用呢! 如认为侵权,可联系删除! 目录: 二.算法类 1.戴克斯特拉算法(D.A) 2.最短路径快速算法(SPFA) 3.弗洛伊德算法(Floyd-Warshall) 3.克鲁斯卡尔算法(K.A) 4.普里姆算法(P.A) 5.拓扑排序算法(TSA) 6.关键路径算法(CPA) 7.广度优先搜索算法(BFS) 8.深度优先搜索算法(DFS) 二.算法类 1.戴克斯特拉算法(D.A) 描述: 又译 迪杰斯特拉算法 ,使用了 广度优先搜索 解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。 原理: 迪杰斯特拉算法主要特点是 以起始点为中心向外层层扩展,直到扩展到终点为止. 迪杰斯特拉算法算法图示 结合上图,详细解释迪杰斯特拉算法: 通过维护一个两个集合来实现: 1.一个集合内存储已经找到的最短距离及其路径(假设为D) 2.另一个是未找到的最短距离的点到起始顶点的路径(假设为U) 下面更新U的过程也是如此 图示目标