各种最短路

各种最短路

未完待续

求A--->I最短路长度

一、BFS。

BFS:

只适用于边权相同,若有两种边权可用deque实现

  1. 定义队列
  2. 初始节点入队
  3. while(队列不空){
    取队首
    判断是否是目标
    对所有相邻未访问节点入队

}

二、Floyd:$O(n^3)$,多源(求任意两点间最短路)

f[i][j]:节点i和j之间最短路
i-->k-->j
初始f[i][j]:

  1. ij有边 a[i][j]
  2. ij无边 ∞

递推式:
f[i][j]=f[i][k]+f[k][j]

循环顺序:
k,i,j

三、Dijkstra

朴素:$O(n^2)$,单源(求一点与其他点间最短路)

注意:只适用与正权边

思想:贪心,因为边权都是正的,所以目前离原点最近的不会通过其他的路径找到更小值,就可以用它更新其他节点。

堆优化:$O(nlogm)$

使用priority_queue更迅速的找到最小距离

四、SPFA

未完待续

posted @ 2023-08-11 23:47  Lemonade~  阅读(18)  评论(0)    收藏  举报