各种最短路
各种最短路
未完待续
求A--->I最短路长度
一、BFS。
BFS:
只适用于边权相同,若有两种边权可用deque实现
- 定义队列
- 初始节点入队
- while(队列不空){
取队首
判断是否是目标
对所有相邻未访问节点入队
}
二、Floyd:$O(n^3)$,多源(求任意两点间最短路)
f[i][j]:节点i和j之间最短路
i-->k-->j
初始f[i][j]:
- ij有边 a[i][j]
- ij无边 ∞
递推式:
f[i][j]=f[i][k]+f[k][j]
循环顺序:
k,i,j
三、Dijkstra
朴素:$O(n^2)$,单源(求一点与其他点间最短路)
注意:只适用与正权边
思想:贪心,因为边权都是正的,所以目前离原点最近的不会通过其他的路径找到更小值,就可以用它更新其他节点。
堆优化:$O(nlogm)$
使用priority_queue更迅速的找到最小距离
四、SPFA
未完待续
浙公网安备 33010602011771号