0: 基本概念
- ** 松弛操作:更新節(jié)點(diǎn)的值 : v_end=min(v_end, v_source +v_side)
v_end:表示邊的終點(diǎn)(需要更新的節(jié)點(diǎn)值);
v_source: 表示 邊的源點(diǎn);
v_source:表示邊的終點(diǎn)
注:若節(jié)點(diǎn)值無(wú)變化,則表示松弛不成功** -
隊(duì)列 : 先進(jìn)先出
image.png
一、用武之地:
- 給定的圖G存在負(fù)權(quán)邊,但不存在負(fù)權(quán)回路
二、參考此鏈接
直接從實(shí)驗(yàn)方法看起
三、SPFA算法有兩個(gè)優(yōu)化算法 SLF 和 LLL:
SLF:
Small Label First 策略,設(shè)要加入的節(jié)點(diǎn)是j,隊(duì)首元素為i,若dist(j)<dist(i),則將j插入隊(duì)首,否則插入隊(duì)尾。
LLL:
Large Label Last 策略,設(shè)隊(duì)首元素為i,隊(duì)列中所有dist值的平均值為x,若dist(i)>x則將i插入到隊(duì)尾,查找下一元素,直到找到某一i使得dist(i)<=x,則將i出對(duì)進(jìn)行松弛操作。
引用網(wǎng)上資料,SLF 可使速度提高 15 ~ 20%;