Floyd算法、Dijkstra算法例题

本文通过实例详细解析了Floyd算法和Dijkstra算法的步骤,展示了如何求解图中各顶点的最短距离以及从特定顶点出发的最短路径。Floyd算法的时间复杂度为O(n^3),Dijkstra算法的时间复杂度为O(n^2)。

1.用Floyd算法求解下图各个顶点的最短距离。
在这里插入图片描述
2.对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。
在这里插入图片描述
2.解析
1)用Floyd算法求解各个顶点的最短距离。

第一步:画出初始化距离矩阵
1 2 3 4
1 0 2 6 4
2 ∞ 0 3 ∞
3 7 ∞ 0 1
4 5 ∞ 12 0
第二步:逐步加入顶点,若加入顶点后路径变短,则修改。
①加入顶点1
<1,2> <1,3> <1,4> <2,1> < 3,1> <4,1>不变
<2,3> < <2,1>+<1,3> 不变
<2,4> < <2,1>+<1,4> 不变
< 3,2> > < 3,1>+<1,2> 最短路径改为9
< 3,4> < < 3,1>+<1,4> 不变
<4,2> < <4,1>+<1,2> 最短路径改为7
<4,3> < <4,1>+<1,3> 最短路径改为11
以此类推,加入顶点2,3,4
第三步:得到最终的距离矩阵
1 2 3 4
1 0 2 5 4
2 9 0 3 4
3 6 8 0 1
4 5 7 10 0

2)使用Dijkstra算法求由顶点a到顶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值