SPFA 算法詳細(xì),(有舉例說(shuō)明,包你懂)

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)回路
二、參考此鏈接

SPFA算法詳解--點(diǎn)開(kāi),包你懂

直接從實(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%;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容