Dijkstra算法原理

一.特点Dijkstra算法适合处理有权的图,从一点到其他所有点的最短路径无优化的复杂度是O(n^2),如果需求所有点之间的最短路径,请使用 flo#yd算法二.思想首先来一张图 求A与E的最短路径引入两个集合S,U(推荐使用数组),S包括已求出最短路径的点,U包括未求出最短路径的点将其与A未直接链接的点设为极大值从U集合中找出路径最短的点,加入S集合,例如 A->B ...
摘要由CSDN通过智能技术生成

一.特点

Dijkstra算法适合处理有权的图,从一点到其他所有点的最短路径
无优化的复杂度是O(n^2),如果需求所有点之间的最短路径,请使用 floyd
算法


二.思想

首先来一张图
在这里插入图片描述
求A与E的最短路径

  1. 引入两个集合S,U(推荐使用数组),S包括已求出最短路径的点,U包括未求出最短路径的点
  2. 将其与A未直接链接的点设为极大值
  3. 从U集合中找出路径最短的点,加入S集合,例如 A->B = 3
  4. 更新U集合路径,if ( ‘此点 到 其他点的距离 + 起始点 到 此点的距离’ < '起始点 到 其他点 ’ ) 则更新U,例如 (B->C = 1) + (A->B = 3) = 4 < (A->C=5) 所U集合中A->C的距离更新到4
  5. 重复3,4直到U集合空或找到目标点

三.详细分析

  1. 选定初始点A初始化1
    S=[A->A=0]
    U=[A->
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值