![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
yqdjl6
这个作者很懒,什么都没留下…
展开
-
最短路之Floyd算法
Floyd算法之最短路算法中行数最少也是最简单的算法,首先介绍一下什么是最短路:最短路就是计算一个节点到其他所有节点的最短路径。 假设一共有n个点,m条边,每条边上都有不同的边权(走这条路需要花费的费用),那么我们的目的就是寻找一条确定起点s和重点t的最短路的费用 第一步:我们先建立一个图,图上的点dp [ i ][ j ]表示点i到点j的最短路径,我们先初始化把所有点到其他点的距离设为INF(原创 2017-06-13 01:02:04 · 191 阅读 · 0 评论 -
最短路之Bellman-Ford算法
这都是好早以前看的东西了…..好久不用来刷题都忘了啥意思了….. 第一,初始化所有点。每一个点保存一个值,表示从原点到达这个点的距离,将原点的值设为0,其它的点的值设为无穷大(表示不可达)。 第二,进行循环,循环下标为从1到n-1(n等于图中点的个数)。在循环内部,遍历所有的边,进行松弛计算。 第三,遍历途中所有的边(edge(u,v)),判断是否存在这样情况: d(v) > d (u) +原创 2017-06-15 15:04:19 · 264 阅读 · 0 评论 -
最短路之Dijkstra算法
接下来介绍比较经典的Dijkstra算法,这种算法在稠密图中发挥着巨大作用,复杂度为O((N+M)logN),我个人觉得他和SPFA差不多,就是一个priority_queue的作用,可能是我理解的不够吧,等暑假的时候好好把这些东西整理整理对比理解吧,最短路的四个算法最好对比着理解,可能会有更深刻的认识,还得多刷题,其中用优先队列这种还是跟qsc大佬学习的,似乎是一个比较懒的办法 附上AC代码:原创 2017-06-15 15:01:56 · 232 阅读 · 0 评论 -
最短路之SPFA算法
计算最短路用Floyd的复杂度太高了,有什么办法可以优化一下呢,我们可以看到Floyd的很大一部分开销花在了计算其他不需要的的路径长度上,如果我只需要计算一个点到另一个点的距离,有没有什么方法呢? 答案就是将Bellman-Ford进行优先队列优化这就是SPFA算法 这个算法是1994年西安交通大学段凡丁提出的,很奇怪Floyd提出这么长时间居然没有人提出用队列进行优化 算法第一步:首先用一个原创 2017-06-15 14:56:17 · 248 阅读 · 0 评论