SPFA的兩種優化SLF和LLL

2021-07-29 02:42:35 字數 950 閱讀 4485

記錄乙個菜逼的成長。。

記下spfa的兩種優化,大牛請無視

spfa演算法有兩個優化演算法 slf 和 lll:

slf:small label first 策略,設要加入的節點是j

jj,隊首元素為i

ii,若dis

t(j)

st(i

)dist(j) < dist(i)

dist(j

)st(i

),則將j插入隊首,否則插入隊尾。

lll:large label last 策略,設隊首元素為i

ii,每次彈出時進行判斷,佇列中所有dist值的平均值為x,若dis

t(i)

>

xdist(i)>x

dist(i

)>

x則將i

ii插入到隊尾,查詢下一元素,直到找到某一i

ii使得dis

t(i)

<=x

dist(i)<=x

dist(i

)<=x

,則將i出對進行鬆弛操作。

char str[maxn][maxn];

int vis[maxn][maxn],dis[maxn][maxn],n,m;

int ans[30],sum,cnt;

int dx = ,dy = ;

dequeq;

void spfa()

sum -= dis[f.fi][f.se];cnt--;

vis[f.fi][f.se] = 0;

for( int i = 0; i < 8; i++ )

else

sum += dis[nx][ny];cnt++;}}

}}

}void init()

SPFA的兩種優化SLF和LLL

spfa有兩種優化 spfa演算法有兩個優化策略slf和lll slf small label first 策略,設要加入的節點是j,隊首元素為i,若dist j x則將i插入到隊尾,查詢下一元素,直到找到某一i使得dist i x,則將i出隊進行鬆弛操作。slf 可使速度提高 15 20 slf ...

兩種優化查詢的方法

兩種優化表查詢的方法 1 表的查詢順序 針對多表查詢 oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理。在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。當oracle處理多個表時...

氣泡排序演算法的兩種優化

氣泡排序 三種實現,兩種優化 首先,我們先介紹bubblesort 就是氣泡排序,氣泡排序大家應該最熟悉不過了 氣泡排序演算法的運作如下 從後往前 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最...