理想之国

still study 让我带着理想启程吧!

SPFA算法简介

SPFA算法简介

 

SPFA算法采用图的存储结构是邻接表,方法是动态优化逼近法。算法中设立了一个先进先出的队列Queue用来保存待优化的顶点,优化时从此队列里顺序取出一个点w,并且用w点的当前路径D[W]去优化调整其它各点的路径值D[j],若有调整,即D[j]的值改小了,就将J点放入Queue队列以待继续进一步优化。反复从Queue队列里取出点来对当前最短路径进行优化,直至队空不需要再优化为止,此时D数组里就保存了从源点到各点的最短路径值 。

 

    下面举一个实例来说明SFFA算法是怎样进行的:

 

    设有一个有向图G{VE},其中,V{V0,V1,V2,V3,V4}E{<V0,V1>,<V0,V4>,<V1,V2>,<V1,V4>,<V2,V3>,<V3,V4>,<V4,V2>}{2,10,3,7,4,5,6},见下图:

 

 

 

 

 查看更多精彩图片

 

 

 

 

 

算法执行时各步的Queue队的值和D数组的值由下表所示。

 

表一  实例图SPFA算法执行的步骤及结果

 

初始

第一步

第二步

第三步

第四步

第五步

queue

D

queue

D

queue

D

queue

D

queue

D

queue

D

V0

0

V1

0

V4

0

V2

0

V3

0

 

0

 

V4

2

V2

2

 

2

 

2

 

2

 

 

 

5

 

5

 

5

 

5

 

 

 

 

 

9

 

9

 

 

10

 

9

 

9

 

9

 

9

 

算法执行到第五步后,队Queue空,算法结束。源点V0V1的最短路径为2,到V2的最短路径为5,到V3的最短路径为9,到V4的最短路径为9,结果显然是正确的。

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

SPFA算法简介

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭