18910140161

golang多源最短路径的经典算法——Floyd算法

顺晟科技

2021-08-28 09:41:51

179

Floyd算法解决了图中任意两点之间的最短路径问题,允许出现负边,但不允许负边形成回路。

在基本思想:中,用nn \u次{n}nn矩阵来表示两点之间的距离,只有引入第三点才能改变。例如,两点s[i,j]之间的距离可以用s[i,k] s[k,j]的和来代替。当依次引入图中的所有点时,矩阵所标识的距离就是图中任意两点之间的最短路径。

包装主体

导入“fmt”

//FMap用于存储点的扣押信息

var FMap [4][4]int32

//PointNum是点编号

var PointNum int=4

func main(){ 0

var Inf int32

Inf=1 16

initMap(Inf)

//中间点

对于k :=0;k PointNumk {

//更新任意两点之间的距离

对于I :=0;i PointNum我

对于j :=0;j PointNumj {

如果i==j {

继续

}

if FMap[I][j]FMap[I][k]FMap[k][j]{

FMap[I][j]=FMap[I][k]FMap[k][j]

}

}

}

}

fmt。Println(FMap)

}

//初始化映射

func initMap(INF int 32){ 0

FMap[0][0]=0

FMap[0][1]=2

FMap[0][2]=6

FMap[0][3]=4

FMap[1][0]=inf

FMap[1][1]=0

FMap[1][2]=3

FMap[1][3]=inf

FMap[2][0]=7

FMap[2][1]=inf

FMap[2][2]=0

FMap[2][3]=1

FMap[3][0]=5

FMap[3][1]=inf

FMap[3][2]=12

FMap[3][3]=0

}

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航