[数学基础]Dijkstra算法理论基础

  Dijkstra算法是求路径最短距离最有效的方法之一,这篇博文我们来讲解一下 Dijkstra 算法的理论基础:
  利用 Dijkstra 算法,求下图 A 点到其他各点的最短路径。
Dijkstra算法
  1、我们引入两个集合S、U,S表示已求出最短路径的点的集合,U表示未求出最短路径的点得集合;
  2、初始化S,只有一个元素A(0)(括号内是最短路径的长),初始化U,其中元素有B(2)、C(5)、D(∞)、E(∞)、F(∞)、G(∞)(括号内的值为各点到A的距离),相连点距离为相连路径的长,为相连的点间距离记作∞;
  3、找出U中各点到A点距离最短的点,即B,距离为2。更新S(A(0),B(2),更新U(C(5),D(9),E(5),F(∞),G(∞))(括号内的值,取该点经过S中的点到A的路径最小值,比如D点,A->D=∞,A->B->D=9,所以D后括号中的值为9);
  4、U中C、E到A路径最短,所以更新S(A(0),B(2),C(5),E(5)),更新U(D(9),F(7),G(13));
  依此类推,可以求出各点到A点的最短路径长,求解过程中,记录下路径经过的点,即可求出最短路径。
  下篇博文,我们将对Dijkstra算法,进行C++编程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值