图解Dijkstra(迪杰斯特拉)算法

第一题:从 节点1 到 节点6 的最短路径

(注:①先创建两个集合,S={ }集合用来装路线确定的,U={ }集合用来装路线未确定的

           ②相邻节点才有权重值,不相邻相当于无限远,用∞表示

           ③每确定一个节点都要更新路线未确定的节点的权重,务必要最小)

第一步:

    S={ 1(0)}

    U={ 2(1),3(12),4(∞),5(∞),6(∞)}

第二步:

    S={ 1(0), 2(1)}

    U={3(10),4(4),5(∞),6(∞)}

第三步:   

    S={ 1(0), 2(1),4(4)}

    U={3(8),,5(17),6(19)}

第四步:

    S={ 1(0), 2(1),4(4),3(8)}

    U={5(13),6(19)}

第五步:

    S={ 1(0), 2(1),4(4),3(8),5(13)}

    U={6(17)}

第六步:

    S={ 1(0), 2(1),4(4),3(8),5(13),6(17)}

综上:最短路径就1-->2-->4-->3-->5-->6 最短路径是17

第二题:从 节点D 到 节点A 的最短路径

第一步:

    S={ D(0)}

    U={ C(3),E(4),F(∞),B(∞),G(∞),A(∞)}

第二步:

    S={ D(0),C(3)}

    U={ E(4),F(9),B(13),G(∞),A(∞)}

第三步:

    S={ D(0),C(3),E(4)}

    U={ F(6),B(13),G(12),A(∞)}

第四步:

    S={ D(0),C(3),E(4), F(6)}

    U={B(13),G(12),A(22)}

第五步:

    S={ D(0),C(3),E(4), F(6),G(12)}

    U={B(13),A(22)}

第六步:

    S={ D(0),C(3),E(4), F(6),G(12),B(13)}

    U={A(22)}

第七步:

    S={ D(0),C(3),E(4), F(6),G(12),B(13),A(22)}

综上:最短路径是 D-->C-->E-->F-->G-->B-->A   最短路径是22

发布了53 篇原创文章 · 获赞 0 · 访问量 1667

猜你喜欢

转载自blog.csdn.net/weixin_45450428/article/details/103313984