最短距離及最短路(Floyd 演算法)

2022-08-01 08:45:12 字數 1108 閱讀 5556

#include

#include

using namespace std;

#define n 100

#define max 1000000

int d[n][n];

int path[n][n];

void min_d(int h)   //該函式找出最短距離,及最短路徑

//  coutcoutint h,a,b,k;

cout<<"輸入結點數:";

cin>>h;

int i,j;

cout<<"輸入能直達的結點以及之間的距離(以輸入 節點數,節點數,0 結束):"<>a>>b>>k;

while(a>a>>b>>k;

}for(i=0;i>a>>b)

{if(a>=0&&a=0&&b/* int i,j,k;      (floyd演算法)

int map[101][101];

for(k=1;k<=100;k++)

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

for(j=1;j<=100;j++)

if(map[i][j]>map[i][k]+map[k][j])

map[i][j]=map[i][k]+map[k][j];*/

結果:輸入結點數:4

輸入能直達的結點一級之間的距離(以輸入 節點數,節點數,0 結束):

0 1 1

0 3 4

1 2 9

1 3 2

2 0 3

2 1 5

2 3 8

3 2 6

4 4 0

輸入要求最短距離及最短路徑的結點(已結束控制符結束):

1 2d[1][2]=8

path(1->2): 1->3->2

1 3d[1][3]=2

path(1->3): 1->3

1 1d[1][1]=0

path(1->1): 1->1

2 3d[2][3]=6

path(2->3): 2->0->1->3

2 2d[2][2]=0

path(2->2): 2->2

^zpress any key to continue

最短距離之Floyd演算法

用floyd演算法求解下圖各個頂點的最短距離。寫出floyd演算法的偽 和給出距離矩陣 頂點之間的最短距離矩陣 floyd演算法可以方便的求得任意兩點的最短路徑,這稱為多源最短路,演算法的核心思想是動態規劃。它將多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解。根據以往的經驗,如果要...

Floyd演算法求解最短距離

用floyd演算法求解下圖各個頂點的最短距離。寫出floyd演算法的偽 和給出距離矩陣 頂點之間的最短距離矩陣 floyd演算法又稱為插點法,是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的演算法,與dijkstra演算法類似。如果要讓任意兩點之間的路程變短,只能引入第三個點 頂點k ...

Floyd求最短距離

用floyd演算法求解下圖各個頂點的最短距離。寫出floyd演算法的偽 和給出距離 頂點之間的 最短距離矩陣 按實驗報告模板編寫演算法。floyd演算法的基本思想如下 從任意節點a到任意節點b的最短路徑不外乎2種可能,1是直接從a到b,2是從a經過若干個節點x到b。所以,我們假設dis ab 為節點...