弗洛伊德算法#图论

昨天晚上的遇到了需要弗洛伊德算法的题,问过学长dalao之后了解了这个算法

利用弗洛伊德算法实现无最向图的短路径问题,弗洛伊德算法是可以求任意两点间的最短距离,主要就是依次以图中每个节点为中间节点然后计算起始节点到中间节点加上中间节点到终节点的距离是否小于起始节点直接到终节点的距离,若小于则替换。依次这样进行完就可以得到任意两点间的最短距离

学长这样讲感觉非常明白
我们来举个例子
假如有5个城市ABCDE
A -> B 20
A -> C 3
C -> B 4
很显然我们可以发现,从A直接到B的距离不如从A到C再到B的距离要短,于是我们选择的路径应该是A -> C -> B 而不是A -> B

int dis[1005][1005];
for(int k=1;k<=n;k++)
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(dis[i][k]+dis[k][j] < dis[i][j])
				dis[i][j] = dis[i][k]+dis[k][j]
		}
	}
}
发布了58 篇原创文章 · 获赞 0 · 访问量 1617

猜你喜欢

转载自blog.csdn.net/magic_wenge/article/details/105329712
今日推荐