tft每日頭條

 > 生活

 > 十大經典算法之決策樹模型

十大經典算法之決策樹模型

生活 更新时间:2025-02-24 11:23:47

多源最短路徑:兩點之間的最短路徑。

十大經典算法之決策樹模型(算法最短路徑Floyd弗洛伊德算法)1

二維矩陣,存放地點之間距離。

十大經典算法之決策樹模型(算法最短路徑Floyd弗洛伊德算法)2

從4—>3,如果經過1的話,路徑是11,比12短。e[4][3]>e[4][1] e[1][3]

所以我們可以假設,如果兩點間隻允許經過1,那麼最短路徑應該如何計算?

判斷e[i][j]是否大于e[i][1] e[1][j],如果大于,則使e[i][j]=e[i][1] e[1][j]

我們對每個點都掃描一遍。(默認定義無窮為9999,通常設為99999999)

for(i=1;i<=n;i ) { for(j=1;j<=n;j ) { if(e[i][1]<9999 && e[1][j]<9999 && e[i][j]>e[i][1] e[1][j]) e[i][j]=e[i][1] e[1][j]; } }

掃描完必經過1的,就該繼續掃描必經過2的。

for(i=1;i<=n;i ) { for(j=1;j<=n;j ) { if(e[i][2]<9999 && e[2][j]<9999 && e[i][j]>e[i][2] e[2][j]) e[i][j]=e[i][2] e[2][j]; } }

所以我們整理一下:

for(k=1;k<=n;k ) for(i=1;i<=n;i ) for(j=1;j<=n;j ) if(e[i][k]<9999 && e[k][j]<9999 && e[i][j]>e[i][k] e[k][j]) e[i][j]=e[i][k] e[k][j];

輸出最短路徑:

printf("%d",e[i][j]);

十大經典算法之決策樹模型(算法最短路徑Floyd弗洛伊德算法)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved