前几天学了Dijkstra算法然后又看了Bellman-Ford,
虽说两个处理的一个是点Djk一个是边BF,但是感觉本质上两个是一样的,无非是如何设定循环次数不一样
负边权问题好像也可以解决Dijkstra算法JAVA,不知道是不是没用队列的原因
记录一下,有时间回来看
dijkstra
点距离矩阵(已知相邻点距离
a-最近相邻节点-x-出路径更新1-n距离(权值),del x )repeat
1.每次都找最近点
2.只进一步 类似广度搜索
负权值的问题
有顶点a,b,c, 边ab的权值是5,边bc的权值是-4,边ac的权值是3. 计算从a到c的最短路径。套用dijsktra算法会得到错误的结果a->c (正确解应该是a->b->c)?
可以啊??
a | b | c | |
---|---|---|---|
a | 0 | 4 | 3 |
b | 0 | -2 | |
c | 0 |
Bellman-Ford
边数据-邻接表(不考虑相邻点
只判断该边能否松弛距离 [源点-V]>边长W+[源点-U]
1.起始仅有源点-源点距离 0
所以仅源点出边 松弛(也就是相邻点)