前言 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman Ford算法就是其中最常用的一个。 在网络路由中,RIP协议(距离向量路 ...
分类:
编程语言 时间:
2018-06-17 22:26:32
阅读次数:
392
算法证明:http://courses.csail.mit.edu/6.006/spring11/lectures/lec15.pdf 先来看一个这样的图: 这是含有负边权的,如果是用djistra的话将会进行无限次松弛操作。从这里可以看出松弛操作是有一点问题的,如果存在负环,将无止尽的松弛,最短路 ...
分类:
编程语言 时间:
2018-06-16 21:49:06
阅读次数:
226
思路:Dijkstra, bellman-ford和spfa,但是用dijkstra要考虑重边 ...
分类:
其他好文 时间:
2018-06-13 00:12:22
阅读次数:
208
思路: 这题完全按照挑战上面的方法来做,开始我不是很能理解这种方法的含义。请自行阅读挑战。 一开始我超时了,不知道是什么原因,我写了一个队列优化的bellman ford ,还用了vector的邻接表,不知道为什么会超时。。。其实回头看一下,bellman ford根本就不需要邻接表。。。。 回头再 ...
分类:
其他好文 时间:
2018-05-26 16:41:30
阅读次数:
162
1 //bellman_ford判断负环 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 200 + 5; 9 10 int n,m; 11 double v; 12 st... ...
分类:
其他好文 时间:
2018-05-10 21:38:00
阅读次数:
153
https://vjudge.net/problem/POJ-3259 一开始理解错题意了,以为从A->B一定得走路,B->A一定得走虫洞。emmm其实回来的时候可以路和虫洞都可以走,只要最终结果满足就好。 发现了这一点,我终于愉快地把我的floyd从wa改到了tle~ 正解:用bellman-fo ...
分类:
其他好文 时间:
2018-05-09 12:08:15
阅读次数:
132
负环指的是权值和为负数的环,用SPFA加上DFS做比较方便,如果用BFS来做就要便利太多点了。 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接 ...
分类:
其他好文 时间:
2018-04-19 20:02:37
阅读次数:
208
简要:Bellman-Ford算法计算的仍然是从一个点到其他所有点的最短路径算法,其时间复杂度是O(NE),N表示点数,E表示边数,不难看出,当一个图稍微稠密一点,边的数量会超过点数那么实际上效率是低于Dijkstra算法的。但是本算法可以计算存在负权边的情况(不存在负回路),因此可以用于更广泛的情 ...
分类:
编程语言 时间:
2018-04-18 23:41:23
阅读次数:
231
图论: 1.基本邻接表,邻接矩阵即其dfs,bfs 2.最短路: <1>floyed <2>dijlstra <3>bellman-ford <4>spfa 3.最小生成树: <1>prim <2>krusakl 字符串: 1.hash: <1>基本hash <2>字符型hash 2.KMP 3.最 ...
分类:
其他好文 时间:
2018-04-17 19:45:01
阅读次数:
153
1.算法思想 Bellman-Ford算法时间复杂度比较高,在于Bellman-Ford需要递推n次,每次递推需要扫描所有的边,在递推n次的过程中,很多判断是多余的,所以考虑用队列优化,减少不必要的判断,这种算法称为SPFA(Shortest Path Faster Algorithm) SPFA算 ...
分类:
编程语言 时间:
2018-04-06 23:47:18
阅读次数:
228