单源最短路径

本文介绍了单源最短路径的概念,强调了最短路径与最短路径树的区别。详细讲解了Bellman-Ford算法和Dijkstra算法,包括各自的伪代码及优缺点。最后提到了最短路径在差分约束系统中的应用。
摘要由CSDN通过智能技术生成

一、什么叫单源最短路径

一个有向图G=(V,E),从源点S到某点的所有路径中,权值和最小的为最短路径。S到图中所有点的最短路径形成最短路径树。(注意理解最短路径和最短路径树的不同, 最短路径是最短路径树的子集)。

二、初始化操作

INITIALIZE-SINGLE-SOURCE(G, s)
    for each vertex v∈V[G]
        do d[v] = ∞
             π[v] = NIL
    d[s]=0
初始化最短路径估计d[v](无穷大)和前趋。

二、松驰操作

说的直白点,松驰操作就是更新源点到v的估计权值。看了下面的伪代码就明白了:

RELAX(u, v, w)
    if d[v]>d[u]+w(u,v)
        then d[v] = d[u]+w(u,v)
                 π[v] = u
这里更新了两个东西:一个v更小的估计权值以及v的前趋。(所有不要被《算法导论》上一长串的松驰操作的论述唬住)。

三、Bellman-Ford算法

先来看伪代码,以代码为切入点:

BELLMAN-FORD(G, w, s)
    INITIALIZE-SINGLE-SOURCE(G, s)
    for i←1 to |V[G]|-1
        do for each edge (u,v)∈E[G]
            do RELAX(u,v,w)
    for each edge(u,v) ∈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值