和小哥哥一起刷洛谷(8) 圖論之Floyd“演算法”

weixin_30639719發表於2020-04-05

關於floyd

floyd是一種可以計算圖中所有端點之間的最短的“演算法”,其虛擬碼如下:

for(所有起點i)
    for(所有終點j)
        如果i=j: i到j最短路設為0
        如果i與j相連: i到j最短路設為已知i到j的距離
        如果都不滿足: i到j距離設為無限

for(列舉所有中間點k)
    for(列舉所有起點i)
        for(列舉所有終點j)
            如果(從i到k的最短路+從k到j的最短路<目前得出從i到j的最短路): 更新i到j最短路

別問我複雜度,看看這華麗的三重迴圈就知道了
大家也許注意到我標題中用的是帶引號的“ 演算法 ”。其實,我覺得真正意義上,這不算一個演算法,之能稱之為一種“暴力”,尤其其時間複雜度為恐怖的 N^3

這樣的一種“演算法”,美曰其名叫“重機槍” (醜曰其名叫“全國中小學生宇宙超級無敵大列舉”)

轉載於:https://www.cnblogs.com/BlogE/p/luogu_day8.html

相關文章