最短路径算法(图论)

前几天看了一下最短路径算法,现在做一下简单的流程总结:

有向图如下所示:


步骤如下:

1、准备两个集合A,B分别表示已经遍历的节点和未遍历的节点,从v1节点开始进行搜索,那么A = [v1(0)], B = [v4(1),v2(2),v3(∞),v7(∞),v6(∞),v5(∞)]

2、查找集合B中路径最短节点,即v4,重新更新集合得到A = [v1(0), v4(1)], B = [v2(2), v3(3), v5(3), v6(9), v7(5)]

3、从上一步骤中查找集合B中路径最短节点并放入A集合,然后更新集合B,得到A = [v1(0), v4(1), v2(2)] ,B = [v3(3), v5(3), v6(9), v7(5)]

4、继续重复上一操作将B中最短路径放入A中,此时B中的最短路径为v5,将其放入A集合并重新计算更新B集合,此时A = [v1(0), v4(1), v2(2), v5(3)] B = [v3(3), v6(9), v7(5)]

5、接下去将v3放入A集合,更新得到最新的A = [v1(0), v4(1), v2(2), v5(3), v3(3)] B = [v6(8), v7(5)]

6、将v7放入A集合,更新得到A =  [v1(0), v4(1), v2(2), v5(3), v3(3), v7(5)]  B = [v6(6)]

7、得到最终的集合A =[v1(0), v4(1), v2(2), v5(3), v3(3), v7(5), v6(6)]

因此最终得到从v1出发的到各个节点的最短路径的集合为[v1(0), v4(1), v2(2), v5(3), v3(3), v7(5), v6(6)]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值