首先介紹一下有關最短路徑的知識
從某頂點出發,沿圖的邊到達另一頂點所經過的路徑中,各邊上權值之和最小的一條路徑叫做最短路徑。解決最短路的問題有以下演算法,dijkstra演算法,bellman-ford演算法,floyed演算法和spfa演算法等。
通俗點來說就是在圖中的兩點之間的最短距離(只不過這裡規定了路徑而已)
那麼,我們的問題來了
圖(graph【這也是為什麼oier們通常設g陣列的原因】)是表示物件與物件之間的關係的數學物件,是圖論的基本研究物件。
簡潔來說,就是乙個神奇的表示關係的圖表(別告訴我你們不知道圖表是什麼)
在數學領域,權值指加權平均數中的每個數的頻數,也稱為權數或權重。
也就是這條邊的價值【類似於長度】
那麼這裡對於一些基本的概念性的知識應該是沒有什麼問題了
說實話這個演算法是用來求多源最短路徑的演算法。
——gh
——題記【並orz一波】
這裡的演算法原理可以看做是乙個相對來說和dp有些關係的dp
這個神奇的演算法的複雜度井然是o(n3)【令人十分慌張】
但這個演算法也有其一定的優點:
1.可以計算圖中任意兩點間的最短路徑
2.適用於負邊權的情況
…………【好處很多,我們要有一雙善於發現好處的眼睛】
核心**類似於這個
for(k=1;k<=n;k++)}}}
其實很好理解
這裡放乙個最簡單的例題給大家刷一刷吧
【洛谷p1744 採購**商品】
這裡很好理解
就直接放**了
#includeusingnamespace
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...