单源最短路(Dijkstra算法)笔记

Dijkstra算法——单源最短路

——可用该算法求的一个点(源点)到其余各个顶点的最短距离。

——例如,s,e1,e2,e3,e4。
假定s是源点,利用Dijkstra算法可知
s——e1的最短距离
s——e2的最短距离
s——e3的最短距离
s——e4的最短距离

:无向边时,源点到其它点的距离等于其它点到源点的距离。

拓展:

——有向边的情况下:还可求其它点到源点的最短路。

只需要将所有边方向反转,
再求一次源点到其它点的最短路即可。

想想看:
求得的s---->e1的距离,其实你会发现这条路的边都是反向的,即其实是e1---->s的最短路。
POJ - 3268 ----------------> 题解
POJ - 1511

须知:

  1. 顶点与顶点之间的距离不能为负
  2. 边可以无向边,也可以是有向边
  3. 松弛操作:和Floyd一样,通过点来缩短其它点与源点之间的距离。比如e[1][3]=10;e[1][2]=4,e[2][3]=1,最后e[1][3]=5。

单源最短路的思想:

n个点,求出源点到其它n-1个顶点的最短路。

搜索第一个与源点最近的点:

从(n-1)个点中找出一点离源点最近的点,
该点到源点的距离一点是最短。
为什么呢?
因为每条边都是正的,
如果你再经过其它点到该点,那么距离一定会增大。
然后再利用该点去缩短源点到别的点的距离。
就跟多源最短路径一样,所有的点会利用到的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值