Dijkstra 算法写出单源最短路径问题的核心伪码
时间: 2023-09-12 15:12:33 浏览: 116
以下是Dijkstra算法的核心伪代码:
1. 初始化
```
dist[s] = 0 //起点到起点的距离为0
dist[v] = INF //起点到其它顶点的距离为无穷大
visited[s] = true //起点已经访问过
visited[v] = false //其它顶点未访问过
```
2. 遍历
```
while (还有未访问的顶点) {
u = 未访问的顶点中距离起点最近的顶点
visited[u] = true
for (v 是 u 的邻接点) {
if (visited[v] == false && dist[u] + weight(u, v) < dist[v]) {
dist[v] = dist[u] + weight(u, v)
}
}
}
```
其中,dist[i]表示起点s到顶点i的最短距离,visited[i]表示顶点i是否已经访问过,weight(u, v)表示边(u, v)的权值。算法的时间复杂度为O(n^2),其中n为顶点数。如果使用堆优化,则时间复杂度可以优化为O(mlogn),其中m为边数。
阅读全文