松弛操作的性质

来源:互联网 发布:菜刀连接php图片木马 编辑:程序博客网 时间:2024/04/27 16:11

在单源最短路径的求解算法中,往往涉及松弛操作,而松弛操作是证明单源最短路径算法的基石。

  • 相关概念
    最短路径:假设从结点u到结点v的最短路径权重为δ(u,v),那么从结点u到结点v的最短路径定义为任何一条权重ω(p)=δ(u,v)的从u到v的路径p。
    最短路径估计:对于每个结点v来说,我们维持一个属性v.d,用来记录从源结点s到结点v的最短路径权重的上界,称v.d为s到v的最短路径估计。
    前驱结点:对于每个结点v,我们维持一个前驱结点v.π,它表示扫描v.π结点时发现结点v。
    单源最短路径算法进行之前,都必须对最短路径估计和前驱结点进行初始化,伪代码如下:
    INITIALIZE-SINGLE-SOURCE(G,s)
for each vertex v \in G.V  v.d=INFTY  v.pi=NILs.d=0

结点的v.d属性和v.π属性发生变化是通过松弛操作完成的,对边(u,v)在O(1)时间内进行松弛操作的伪代码如下:
RELAX(u,v,w)

if v.d>u.d+w(u,v)  v.d=u.d+w(u,v)  v.pi=u
  • 松弛操作的性质
    1三角不等式性质:对于任何边(u,v)E,有δ(s,v)δ(s,u)+ω(u,v)
    2上界性质:对于所有结点vV,我们有v.dδ(s,v)。一旦v.d的取值达到δ(s,v),其值将不再变化。
    3非路径性质:若从结点s到结点v之间不存在路径,有v.d=δ(s,v)=
    4收敛性质:设结点u,vV,如果suv是图G中的一条最短路径,且在对边(u,v)进行松弛前的任意时间有u.d=δ(s,u),则在之后的所有时间有v.d=δ(s,v)
    5路径松弛性质:若p=<v0,v1,...,vk>是从源结点s=v0到结点vk的一条路径,且我们对p中所进行松弛的次序为(v0,v1),(v1,v2),...,(vk1,vk),则vk.d=δ(s,vk)
    6前驱子图性质:对于所有结点vV,一旦v.d=δ(s,v),则前驱子图是一棵根结点为s的最短路径树。