关于模板什么的还有算法的具体介绍 戳我 这里我们只做所有最短路的具体分析。

那么同是求解最短路,这些算法到底有什么区别和联系:

对于BFS来说,他没有松弛操作,他的理论思想是从每一点做树形便利,那么时间复杂度绝对是在大型图中难以接受的,所以BFS题目设计很精巧,数据限制,更重要的是他可以处理一些条件很麻烦的联通情况,比如在途中,每步长相同求到达某一地的时间,那么我们要用最短路,就需要建图,但是借助BFS就不需要建图,这么麻烦的事情了。

对于其他最短路,核心思想是松弛,那么先说Floyd,其核心思想是插点法松弛借助动态规划,这就是重点,那么既然是插点而且是动态规划,那么他就可以解决过某一点的最短最长路,或最什么什么的问题了,因为DP会不重复的枚举每一种情况,相当于插了尽可能的点,那么插点的问题就可以解决,比如不经过某一点的最短路问题,不经过超得过某个值的点的最短路。

对于最短路的其他算法,先讨论Ford家族,Bellman-Ford 与SPFA 的区别,emmm,名字不一样,速度不一样,但是使用情况都一样,都是可处理负边权,但是复杂度最恶劣为 O(V*E) 顶点数乘边数,那么稠密图直接挂掉。都能能判负环,Bellman是n-1次松弛之后如果还能松弛,那么就有负环,SPFA是若同一点进入队列两次,即为存在负环。Bellman时间复杂度为O(V*E) SPFA(队列优化的Bellman ford)复杂度为O(K*E) K为常数约为3,但是稠密图会退化到O(V*E)上面说了。

再说dijkstra,这个算法最快,稠密图稀疏图都可使用,也有一个队列优化版,区别参考上文,这个算法因为本身设计的问题是不可以处理负边权问题的,所以更不能处理负环,但他不会退化,这里我们比较晚异同,我们给出求解思路。

确定为单源最短路:这里是说如果是多源最短路,那么跑N边最短路也比Floyd快,也算是单源最短路。

1.判断是否为稠密图

①是:判断是否带负边权:有还是Ford算法,两个都可以,但是SPFA用的多,用它;

②否:SPFA;

多源最短路,或者就是Floyd算法的特殊问题。

Floyd ;

那么板子就可以只背3个了。

关于SPFA Bellman-Ford Dijkstra Floyd BFS最短路的共同点与区别的更多相关文章

  1. ACM/ICPC 之 最短路径-Bellman Ford范例(POJ1556-POJ2240)

    两道Bellman Ford解最短路的范例,Bellman Ford只是一种最短路的方法,两道都可以用dijkstra, SPFA做. Bellman Ford解法是将每条边遍历一次,遍历一次所有边可 ...

  2. 最短路问题(Bellman/Dijkstra/Floyd)

    最短路问题(Bellman/Dijkstra/Floyd) 寒假了,继续学习停滞了许久的算法.接着从图论开始看起,之前觉得超级难的最短路问题,经过两天的苦读,终于算是有所收获.把自己的理解记录下来,可 ...

  3. 最短路径-Dijkstra+Floyd+Spfa

    Dijkstra算法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra ...

  4. poj1847 Tram(Dijkstra || Floyd || SPFA)

    题目链接 http://poj.org/problem?id=1847 题意 有n个车站,编号1~n,每个车站有k个出口,车站的出口默认是k个出口中的第一个,如果不想从默认出口出站,则需要手动选择出站 ...

  5. poj1860 bellman—ford队列优化 Currency Exchange

    Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22123   Accepted: 799 ...

  6. Bellman - Ford 算法解决最短路径问题

    Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...

  7. uva 558 - Wormholes(Bellman Ford判断负环)

    题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...

  8. 最短路径:Dijkstra & Floyd 算法图解,c++描述

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Bellman—Ford算法思想

    ---恢复内容开始--- Bellman—Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题.对于给定的带权(有向或无向)图G=(V,E),其源点为s,加权函数w是边集E的映射.对图G ...

随机推荐

  1. C语言 文件操作(八)

    1.删除文件或目录 int remove(char * filename); [参数]filename为要删除的文件名,可以为一目录.如果参数filename 为一文件,则调用unlink()处理:若 ...

  2. CVPR2020| 阿里达摩院最新力作SA-SSD

    作者:蒋天园 Date:2020-04-16 来源:SA-SSD:阿里达摩院最新3D检测力作(CVPR2020) Brief 来自CVPR2020的研究工作,也是仅仅使用Lidar数据进行3D检测的文 ...

  3. 《面试经典系列》- SpringMVC原理及工作流程

    前言 SpringMVC 作为 MVC 的开源框架,现在依旧是不少项目使用的重点框架.SpringMVC = Struts2 + Spring,SpringMVC就相当于 Struts2 + Spri ...

  4. python3(三十七) filepath

    """ file path """ __author__on__ = 'shaozhiqi 2019/9/23' # !/usr/bin/e ...

  5. JNDI数据源的配置及使用 (2010-11-21 21:16:43)转载▼

    JNDI数据源的配置及使用 (2010-11-21 21:16:43)转载▼ 标签: 杂谈 分类: 数据库 数据源的作用 JDBC操作的步骤: 1. 加载驱动程序 2. 连接数据库 3. 操作数据库 ...

  6. AJ学IOS(18)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复

    AJ分享,必须精品 先看图片 第一步完成tableView和Cell的架子的图 完善图片 键盘弹出设置后图片: 自动回复图: 粗狂的架子 tableView和Cell的创建 首相tableView为了 ...

  7. 今天我们来讨论一下CSS3属性中的transition属性;

    transition属性是CSS3属性:顾名思义英文为过渡的意思:主要有四个值与其一一对应:分别是property(CSS属性名称),duration过渡的时长,timimg-function转速曲线 ...

  8. 腾讯推出超强少样本目标检测算法,公开千类少样本检测训练集FSOD | CVPR 2020

    论文提出了新的少样本目标检测算法,创新点包括Attention-RPN.多关系检测器以及对比训练策略,另外还构建了包含1000类的少样本检测数据集FSOD,在FSOD上训练得到的论文模型能够直接迁移到 ...

  9. 3. string

    let str = "my string"; 1. str.startsWith('my'); //true2.str.endsWith('my'); //false3.str.i ...

  10. golang实现并发爬虫三(用队列调度器实现)

    欲看此文,必先可先看: golang实现并发爬虫一(单任务版本爬虫功能) gollang实现并发爬虫二(简单调度器) 上文中的用简单的调度器实现了并发爬虫. 并且,也提到了这种并发爬虫的实现可以提高爬 ...