在生活中,最短路径的有关问题有很多,常见的各类地图导航中的最近路线、计算机网络中的开放最短路径优先的(ospf)网关协议。
下面来简单介绍一下Dijkstra 算法(伪代码):
Dijkstra(G,s)// G=<V,E> 表示图的相关信息,边的信息一个二维矩阵即可表示,s 则表示起点
// A 表示所有的顶点集合 D即是表示从起点到该点的距离 B表示已经确定的顶点集合
// P 表示用于记录到达该顶点之前的那个顶点
// Q 是一个优先队列用来存储相邻顶点
Initialize(Q)
For every vertex v in A
Dv=∞;Pv=null
Insert(Q,v,Dv) //初始化优先队列以及它们的距离
Ds = 0; Decrease(Q,s,Ds) //更新信息
B = ∅
For i=0 to |A|-1 do //去掉起点