dijkstra算法学习

记录一下:

  • 使用dijkstra算法来解决不带负权的图求最短路径(大作业)

算法实现:

  1. 将图初始化为邻接矩阵map[][](map[i][j], map[j][i]值为两点之间边的权值),
  2. 初始化dis数组(起始节点到其他所有节点的边的权值,无边到达则为最大值,自身为0),
  3. 初始化visited数组(记录该节点是否被访问过),
  4. 初始化prev数组(记录前驱结点,以此记录路径),
  5. 遍历dis数组,获得最小值min = dis[i],将visited[i]数组置为true,
  6. 再次遍历dis数组,比较每个节点距离dis[j]与min + map[j][i]的大小,若大于,则将dis[j]修改为min+map[j][i],此时记录前驱结点,prev[j] = i;
  7. 循环操作,直到访问玩所有节点,dis数组即为起始节点到其他所有节点的最短距离,
  8. 递归打印prev数组,即为最短路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值