《算法导论》笔记 第24章 24.1 单源最短路径

来源:互联网 发布:linux命令ls -lre意思 编辑:程序博客网 时间:2024/05/20 08:44

【笔记】


单元最短路径的变体

单终点最短路径问题

单对顶点最短路径问题

每对顶点间最短路径问题


最短路径的最优子结构


负权值边


回路

最短路径不能包含负权回路,不包含正权回路。


最短路径的表示

已知图G,对每个顶点v∈V,设置其前驱顶点π[v]为另一顶点或NIL。


松弛技术

对每个顶点v∈V,都设置一个属性d[v],用来描述从源点s到v的最短路径上权值的上界,称为最短路径估计。


最短路径以及松弛的性质

三角不等式

对任意边(u,v)∈E,有δ(s,v)<=δ(s,u)+w(u,v)


上界性质

对任意顶点v∈V,有d[v]>=δ(s,v),而且一旦d[v]达到δ(s,v)值就不再改变


无路径性质

如果从s到v不存在路径,则总是有d[v]=δ(s,v)=OO


收敛性质

如果s~>u->v是图G某u,v∈V的最短路径,而且在松弛边(u,v)之前的任何时间d[u]=δ(s,u),则在操作过候总有d[v]=δ(s,v)


前驱子图性质

一旦对于所有v∈V,d[v]=δ(s,v),前驱子图就是一个以s为根的最短路径树。





Bellman-Ford 算法能在一般情况(存在负权边的情况)下,解决单源最短路径问题。



【练习】


24.1-1 对图示有向图运行Bellman-Ford算法。


24.1-2 证明推论。


24.1-3 m为所有从u到v的最短路径上边数最小值中的最大值,对Bellman-Ford算法做简单的修改,在m+1趟后终止。


24.1-4 对Bellman-Ford算法进行修改,对任意顶点v,当从源点到v的某些路径上存在一个负权回路,则置d[v]为-OO。


*24.1-5 


*24.1-6 找出负权回路上顶点。




Bellman-Ford 算法能在一般情况(存在负权边的情况)下,解决单源最短路径问题。



【练习】


24.1-1 对图示有向图运行Bellman-Ford算法。


24.1-2 证明推论。


24.1-3 m为所有从u到v的最短路径上边数最小值中的最大值,对Bellman-Ford算法做简单的修改,在m+1趟后终止。


24.1-4 对Bellman-Ford算法进行修改,对任意顶点v,当从源点到v的某些路径上存在一个负权回路,则置d[v]为-OO。


*24.1-5 


*24.1-6 找出负权回路上顶点。


0 0
原创粉丝点击