Floyed Warshall 弗洛伊德演算法

2022-04-12 01:27:17 字數 1161 閱讀 9725

首先介紹一下有關最短路徑的知識

從某頂點出發,沿圖的邊到達另一頂點所經過的路徑中,各邊上權值之和最小的一條路徑叫做最短路徑。解決最短路的問題有以下演算法,dijkstra演算法,bellman-ford演算法,floyed演算法和spfa演算法等。

通俗點來說就是在圖中的兩點之間的最短距離(只不過這裡規定了路徑而已)

那麼,我們的問題來了

圖(graph【這也是為什麼oier們通常設g陣列的原因】)是表示物件與物件之間的關係的數學物件,是圖論的基本研究物件。

簡潔來說,就是乙個神奇的表示關係的圖表(別告訴我你們不知道圖表是什麼)

在數學領域,權值指加權平均數中的每個數的頻數,也稱為權數或權重。

也就是這條邊的價值【類似於長度】

那麼這裡對於一些基本的概念性的知識應該是沒有什麼問題了

說實話這個演算法是用來求多源最短路徑的演算法。

——gh

——題記【並orz一波】

這裡的演算法原理可以看做是乙個相對來說和dp有些關係的dp

這個神奇的演算法的複雜度井然是o(n3)【令人十分慌張】

但這個演算法也有其一定的優點:

1.可以計算圖中任意兩點間的最短路徑

2.適用於負邊權的情況

…………【好處很多,我們要有一雙善於發現好處的眼睛】

核心**類似於這個

for(k=1;k<=n;k++)}}

}

其實很好理解

這裡放乙個最簡單的例題給大家刷一刷吧

【洛谷p1744 採購**商品】

這裡很好理解

就直接放**了

#includeusing

namespace

std;

int a[101][3

];double f[101][101

];int

n,i,j,k,x,y,m,s,e;

intmain()

cin>>m;

memset(f,

0x7f,sizeof

(f));//將這個矩陣初始化一下

for(i=1;i<=m;i++)

cin>>s>>e;

for(k=1;k<=n;k++)}}

}printf(

"%.2lf

",f[s][e]);

}

牛的旅行 Floyed Warshall

原題鏈結傳送門 d es crip tion description descri ptio n農民john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。這樣,農民john就有多個牧區了。john想在農場裡新增一條路徑 ...

最短路徑問題 Floyed Warshall

time limit 10000ms memory limit 65536k total submit 559 accepted 309 case time limit 1000ms description 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有...

Floyed Warshall演算法 多源最短路徑

找出任意兩點之間的最短路徑 注意 floyed演算法不能用來找出某乙個點到其他任意點之間的距離 摘自 啊哈 演算法 核心思想是 從i號到達j號只經過前k號地點的最短路徑 參考以下 author zc version 1.0 date 2020 3 18 9 20 下午 desc floyed war...