前言
在最短路径问题中,约定图是一个带权值的有向图。最短路径是解决两节点之间的最小代价问题。最短路径有几种分类:单源最短路径;单目标最短路径;单节点对最短路径;所有节点对最短路径。下面记录单源最短路径问题。
单源最短路径
定义:
单源最短路径的算法
在介绍算法之前,首先必须介绍下松弛操作,在整个算法中,松弛操作是很重要的,松弛操作的目的是要获得最短路径估计;在任何操作之前必须对节点进行初始化操作,松弛过程:将节点到节点之间的最短路径距离加上节点到节点之间的边权值,并与当前节点到节点的最短路径估计进行比较,如果前者较小,则更新最短路径估计和前驱属性。
//初始化操作
INITIALIZE-SINGLE-SOURCE(G,s)
for each vertex v ∈ G.V
v.d = inf
v.front = NIL
s.d = 0
//松弛操作
RELAX(u,v,w) //w是权值函数
if v.d > u.d + w(u,v)
v.d = u.d + w(u,v)
v.front = u
松弛操作过程结构: