图论
文章平均质量分 52
番茄你个西红柿i
咸鱼一条.
展开
-
图论之floyed
为了巩(ying)固(fu)提(zuo)高(ye),我决定写几篇图论的博客。本人蒟蒻,如有不对,请狂喷我! ##弗洛伊德## floyed属于基本的图论算法之一。floyed用于求任意两点之间的最短距离,其原理比较简单,主要是迭代,相信大家都明白,那我就不说了。核心代码非常短,只有五行: for(int k=1;k for(int i=1;i for(int j=1;j i原创 2017-12-09 20:43:52 · 187 阅读 · 0 评论 -
图论之dijkstra
di’jkstra是由迪杰斯特拉提出的一种图论算法,用于求一个点到其他所有点的最短距离。 dijkstra的核心思想就是将所有的点分成两个集合A,B,从B集合中找到一个离A集合内的点最近的点,把他加入A集合,然后再用这个点去迭代其他所有点。 注意dijkstra不能用于有负权的图(要不然永远找不到最短路径,每次加一边就会变小) 核心代码;void dijkstra(int st)原创 2017-12-10 08:40:21 · 267 阅读 · 0 评论 -
图论之bellman-ford
如果边有负权的话,dijkstra就是错误的了。 针对这种情况,还有一种高级的算法叫做bellman-ford; bellman-ford也是用来求单源点到其他原点的最短距离。 bellman-ford可以用边表或者邻接表来搞。 算法过程: 1.首先初始化每个店到起点的距离为正无穷。 2.取所有边,用左端点迭代右端点。 3.若不能松弛,结束。 4,最多松弛n-1次,若第n次还可以松弛原创 2017-12-10 11:13:53 · 180 阅读 · 0 评论 -
图论之拓扑排序
拓扑排序是根据先后顺序排序,而不是根据大小来排序。 在有向无环图中,点与点之间有单向边相连,这表明一种约束关系。 例如A到B有一条边,那么A到B就有约束关系。 拓扑排序就是基于多个点之间的约束关系,生成一条线性序列。 首先要明白两个概念: 入度:进入某一点的边数。 出度:从某一点出发的边数。 A到B,B的入度加一,A的出度加一。 先来看一道例题: 有N个士兵(原创 2017-12-28 09:12:38 · 388 阅读 · 0 评论 -
图论之Kruskal
昨天图论考试里有一道最小生成树的题目,我用prim骗了40分。(我不太记得Kruskal是怎么写的了)所以今天来写一篇关于Kruskal的博客。 Kruskal要用到并查集的知识,如果不会并查集可以去这里看: http://blog.csdn.net/m20020910/article/details/78925363 或者http://blog.csdn.net/qq_39670434原创 2017-12-29 13:01:02 · 141 阅读 · 0 评论