最短路径算法(图论)

来源:互联网 发布:raphael js 流程图 编辑:程序博客网 时间:2024/05/16 18:18

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

有向图如下所示:


步骤如下:

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)]

0 0
原创粉丝点击