算法导论22章基本的图算法 思考题总结
来源:互联网 发布:石油来源 知乎 编辑:程序博客网 时间:2024/05/18 00:27
22-1 (以广度优先搜索来对图的边进行分类)深度优先搜索将图中的边分类为树边、后向边、前向边和横向边。广度优先搜索也可以用来进行这种分类。具体来说,广度优先搜索将从源结点可以到达的边划分为同样的4种类型。
a.证明在对无向图进行的广度优先搜索中,下面的性质成立:
1.不存在后向边,也不存在前向边。
2.对于每条树边(u, v),我们有v.d = u.d + 1。
3.对于每条横向边(u, v),我么有v.d = u.d 或 v.d = u.d + 1。
b.证明在对有向图进行广度优先搜索时,下面的性质成立:
1.不存在前向边。
2.对于每条树边(u, v),我们有v.d = u.d + 1。
3.对于每条横向边(u, v),我们有v.d ≤ u.d + 1。
4.对于每条后向边(u, v),我们有0 ≤ v.d ≤ u.d。
ANSWER:
a:
1.假如(u, v)是前向边,则搜索结点v前必搜索u,则根据BFS,当搜索结点u以后必先搜索结点v,则(u, v)是树边;同理,若(u, v)是后向边,则(v, u)是树边;矛盾,所以不存在前向边和后向边。
2.对于每条树边(u, v)有v.π = u,切执行v.π = u的同时执行v.d = u.d + 1;在这之后u.d和v.d都不会改变,所以v.d = u.d + 1;得证。
3.由(u, v)为横向边可知,当搜索结点u时,v必须在队列中,否则(u, v)为树边,所以v.d ≤ u.d + 1。又由无向图横向边可知v.d ≥ u.d。所以u.d = v.d 或 u.d + 1 = v.d。
b:
1.假如(u, v)是前向边,则u.d < v.d,则搜索结点u时,结点v仍是白色,则(u, v)必是树边,矛盾;所以不存在前向边。
2.同a.2。
3.和a.3类似。
4.显然有v.d ≥ 0,又由后向边可知v.d ≤ u.d,得证。
22-4 (可到达性)设G = (V, E)为一个有向图,且每个结点u∈V都标有一个唯一的整数值标记L(u),L(u)的取值为集合{1,2,...,|V| }。对于每个结点u∈V,设R(u) = {v∈V:u→v}为从结点u可以到达的所有结点的集合。定义min(u)为R(u)中标记最小的结点,即min(u)为结点v,满足L(v) = min{L(w):w∈R(u)}。请给出一个时间复杂度为O(V + E)的算法来计算所有结点u∈V的min(u)。
ANSWER:按照结点L(u)顺序对每个结点查找该结点可到达的结点,并找出最小的L(v),即min(u);
对V个结点进行查找共计E条边,所以时间复杂度为O(V + E)。
- 算法导论22章基本的图算法 思考题总结
- 算法导论(第三版)-复习- 第六部分图论思考题 22 基本的图算法
- 算法导论第八章思考题
- 算法导论11章散列表 思考题总结
- 算法导论12章二叉搜索树 思考题总结
- 算法导论13章红黑树 思考题总结
- 算法导论代码 第22章 图的基本算法
- 算法导论 | 第22章基本的图算法
- 算法导论 第10章 思考题
- 算法导论十二章思考题12-4
- 算法导论第四章最后思考题
- 算法导论第六章堆排序思考题
- 算法导论第七章最后思考题
- 算法导论第三版第四章思考题
- 算法导论第三版第五章思考题
- 算法导论第三版第六章思考题
- 算法导论第三版第七章思考题
- 算法导论第八章思考题-c++
- 如何手工释放linux内存
- hook模板x86/x64通用版(2)--中转函数的shellcode编写
- 浏览器-页签显示图片
- python中tuple/list/dict/set常用方法
- MoveWindow的问题
- 算法导论22章基本的图算法 思考题总结
- mytop安装,使用mytop监控MySQL性
- iOS与JS交互实战篇(ObjC版)
- Java基础整理-Java试题(一)
- iOS 关闭键盘 退出键盘 的5种方式
- 竞争条件和关键区
- Itext5.8.8 Html 转化成PDF
- 线程安全性理解
- LeedCode 87. Scramble String