SPFA算法O(kE)

Dijkstra和Floyed是不断的试点。Dijkstra试最优点,Floyed试所有点。

Bellman-Ford和SPFA是不断的试边。Bellman-Ford是盲目的试所有边,SPFA只试那些有利用价值的点的边。

两点说明:

1、因为dis[v]都为无穷大,所以可以保证每个点都进过一次队列。

2、当点有利用价值的话我们就把它丢进队列,没有的话就不丢进去,而且有些点的价值不是一次就消耗完了,所以需要被多次放入队列。

3、SPFA算法虽然是Bellman-Ford的优化,但是算法的写法却是和BFS很像。其实换个角度,他们都是搜索,算法的本质是一样的。

打个形象的比喻:

相当与现在要调查一起犯罪案,我手里现在抓到了一个嫌疑犯。我要通过这个嫌疑犯找到所有的罪犯。因为罪犯之间是有关联的(搜索那个罪犯的关系网,也就是搜索那一条条边。),

我首先把和第一个嫌疑犯有关的嫌疑犯都找到,然后对每个找到的嫌疑犯我都把所有和他相关联的嫌疑犯找到,因为新的嫌疑犯可能会供出之前嫌疑犯的更大恶行,

所以我就又要重新审问那个之前的嫌疑犯,把和他有关的嫌疑犯再找一遍。

最新文章

  1. GAME AI Pro 1 第1章
  2. 计划任务,机器码与注册码,Web服务
  3. lucene-Field.Store解析
  4. codeblocks+Mingw 下配置开源c++单元测试工具 google test
  5. 介绍 .Net工具Code Snippet 与 Sql Server2008工具SSMS Tools Pack
  6. 跟着鸟哥学Linux系列笔记2-第10章VIM学习
  7. 利用Columnal网格系统快速搭建网站的基本布局结构
  8. Delphi 如何清除动态数组的内存?
  9. 实战微信JS SDK开发:贺卡制作与播放(1)
  10. Python命名规范
  11. Java入门到精通——工具篇之Maven概述
  12. _CrtIsValidPointer 问题
  13. 【转】G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导
  14. QF——iOS的单例模式
  15. Windows下Apache添加SSL模块
  16. 汇编语言2(mooc)
  17. 插入排序Insertion Sort
  18. MYSQL之库操作
  19. HDU 6108(整除判断 数学)
  20. MySQL信息提示不是英文问题

热门文章

  1. setlocale()函数测试当前语言的两个程序
  2. jenkins配置SVN报错
  3. 【Maven】应用Maven生成jar,包含关联库
  4. 剑指offer 面试24题
  5. 使用TortoiseGit查看以前Commit的各个快照(snapshot)
  6. win7下配置JAVA环境变量
  7. 希望and目标
  8. Python异步非阻塞IO多路复用Select/Poll/Epoll使用,线程,进程,协程
  9. 预防SQL注入攻击
  10. AJAX实现三级联动