《算法导论》笔记(17) 所有结点对最短路径 部分习题
来源:互联网 发布:淘宝拍摄教学视频 编辑:程序博客网 时间:2024/05/21 09:54
习题25.1-6 O(n^3)时间内从已经计算出的最短路径权重矩阵L计算出前驱矩阵Π。任意的L[i, j]最短路径,若j结点前驱为k,则必然有L[i, j]= L[i, k]+ w[k, j]。如此可遍历L矩阵的第i行所有元素L[i, k],若L[i, j]= L[i, k]+ w[k, j],表明k是i-> j最短路径的j的前驱结点。
习题25.1-7 在Extend_Shortest_Paths方法中加入记录前驱结点的功能。
extend_shortest_paths(L, W){for i= 1 to n for j=1 to n for k=1 to n if( L'[i, j]> L[i, k]+ W[k, j] ) { L'[i, j]= L[i, k]+ W[k, j]; P[i, j]=k; }return L', P}
slow_all_pairs_shortest_paths(){ L[1]=W; for m=2 to n-1 L[m], P[m]=extend_shortest_paths(L[m-1])}
习题25.1-10 找到最短的权重为负值的环路的长度(边数)。最短路径矩阵L中若元素L[i, i]是负值,则表明i在一个负权重的环路中。同时对上面方法找到的前驱矩阵进行查找,得到环路的边数。
习题25.2-4 证明去掉上标的Floyd-Warshall算法是正确的,从而将空间需求降低到Θ(n^2)。对任意k,d[i, j]依赖于d[i, k]和d[k, j],d[i, k]与d[k, j]可能经历了k-1次松弛也可能经历了k次松弛。但不管如何,d[i, j]是中间结点取自{1, 2, ..., k}的一条最短路径。此即循环不变量。则当k取n时,全部d[i, j]均得到了包含所有结点的最短路径。
习题25.2-8 给出一个O(VE)的时间复杂度的算法来计算有向图G(V, E)的传递闭包。对每个点u进行DFS或者BFS,若经过结点v则将T[u, v]标为1。可知最大运行时间为O(VE)。
习题25.3-5 Johnson算法,证明权重为0的环路上每条边的w'(u, v)=0. 首先,若环路只有一条边,首尾只有一个点,边的权重为0,w'为0. 若不止一个结点,因为环路权重为0,则w(u, v)= -w(v, u)。w'(u, v)= w(u, v)+ h(u)- h(v),则当w(u, v)< 0 时,δ(s, v)= δ(s, u)+ w(u, v),或当w(u, v)> 0 时,δ(s, v)= δ(s, u)- w(u, v)。换句话说,δ(s, v)一定包括w(u, v)或 δ(s, u)一定包括w(v, u)。否则会形成负值环路。则h(u)- h(v)= -w(u, v) 或h(v)- h(u)= w(u, v)。则可证得w'(u, v)= w'(v, u)=0。
思考题25-1 动态图的传递闭包。加入一条边(k, l),则扫描传递闭包矩阵中所有元素,只要满足T[u, k]=1同时T[l, v]=1,就将T[u, v] 赋为1。 运行时间O(V^2)。
insert_edge(E(k, l), T) {for u= 1 to n for v= 1 to n if T[u, k]==1 and T[l, v]==1 then T[u, v]=1 }
- 《算法导论》笔记(17) 所有结点对最短路径 部分习题
- 《算法导论》笔记(13) 单源最短路径,所有结点对的最短路径
- 【算法导论笔记】所有结点对的最短路径问题
- 所有结点对最短路径问题(Floyd-Warshall算法)——算法导论学习笔记(1)
- 算法导论25(所有结点对的最短路径问题)
- 算法导论 所有结点最短路径问题 Johnson
- 算法导论第25章 所有结点对的最短路径问题Floyd等
- 算法导论 | 第25章 所有结点对的最短路径问题
- 算法导论第二十五章-所有结点对的最短路径问题-Cpp代码实现
- 算法导论 所有节点对的最短路径
- 算法导论笔记:25所有节点对的最短路径问题
- 《算法导论》笔记(16) 单源最短路径 部分习题
- 所有结点对的最短路径问题之Johnson算法
- Floyd-Warshall算法求解所有结点对的最短路径问题Java实现
- 算法导论 第二十五章 所有节点对的最短路径问题
- 算法导论 所有节点对的最短路径问题 矩阵法
- 算法导论 所有节点对的最短路径问题 FloydWarshall
- Floyd算法(所有点对最短路径)
- Java笔记04-Java语法基础03
- Activity概述
- linux下添加定时任务
- PowerDesigner12.5和15.1的破解
- ognl.MethodFailedException: Method "setManager" failed for object com.zhym.action.ItemAddAction@3e2a
- 《算法导论》笔记(17) 所有结点对最短路径 部分习题
- 看好你的门-攻击数据存储区(4)-XPath注入攻击
- 《网页设计与制作》课程主页
- 黑马程序员-第一天接触Android,环境搭建
- Ubuntu 编译android常见错误(30种常见的)
- 使用Opencv3.0新特征(Viz,TLD….)
- 设置ubuntu静态IP
- Unity3D游戏开发之虚拟现实项目开发流程
- 浅谈堆与栈