算法导论 作业笔记
来源:互联网 发布:淘宝下拉菜单小图标 编辑:程序博客网 时间:2024/05/19 14:36
9/27 第三次作业
22.4-2
要求在一个有向无环图中,给定两点,求出这两点之间有多少条路径
伪代码:
list = topological_sort(G); create count[*] = 0;count[s]=1for each v in list if(v!=t) for each w in adj[v] count[w] = count[w] + count[v]; else break;return count[t];
复杂度:
O(V+E)
22.4-4
先说结论: 对于有环图,top排序不一定可以生成坏边最小的序列
证明:
假设G至少需要去掉k条边才能变成无环图,则任意序列P的坏边数目bad[P] >= k;
证明: 如果存在P使得bad[P] < k, 则只要去掉P中的坏边则剩下的必然为无环图,这个和假设矛盾
推论:存在序列P使得bad[P]=k,去掉k条边,然后top排序即可
对有环图进行拓扑排序得到的序列P, bad[P]和反向边数目相等
证明:有反向边定义可证
需要证明反向边数和k的关系,通过反例可证明反向边树可能大于k
DFS之后的树为A–>B->C, 然后存在C->B, C->A两条反向边,但是实际上只要去掉B->C一条边就可以变成无环图
ps:其实直接通过反例证伪即可,上面的主要是记录我思考的过程
22.4-5
思考:
初始时,所有入度为0的顶点入队列
while队列不为空,作以下处理:
取队列头结点,并出队列
处理以头结点为起点的所有的边,将边的终点的入度-1
若入度减为0,则入队列
若G中包含回路:找不到入度为0的点,且G中仍然还有节点没有删除(剩下的就是G的回路)
阅读全文
0 0
- 算法导论 作业笔记
- 算法导论 第二章作业
- 《算法导论》笔记一
- MIT算法导论笔记
- 【算法导论笔记】排序
- 《算法导论》学习笔记
- 《算法导论》学习笔记
- 《算法导论》笔记汇总
- 《算法导论》笔记汇总
- 算法导论笔记第一章
- 算法导论 笔记
- 算法导论学习笔记
- 算法导论笔记
- 《算法导论》笔记:前言
- 算法导论笔记<1>
- 算法导论笔记<2>
- 《算法导论》笔记&习题
- 算法导论重考笔记
- 注册驱动并建立数据库的连接
- 作业整理
- C++的宏
- Eclipese无法自动弹出提示
- SDWebImage 原理及使用
- 算法导论 作业笔记
- 在elasticsearch 5.X下配置单机多节点
- js中DOM, DOCUMENT, BOM, WINDOW 区别
- luoguP2066 机器分配 题解
- 常用linux命令实战
- C#实现本地文本日志
- dlib 18 android编译dlib库,运行matrix_ex demo
- C++关于指针、const、引用三者的体会
- php运行原理