25版王道数据结构课后习题详细分析 第六章图 6.3图的遍历

一、单项选择题

————————————————————

2a3456ddd4b44802bd112a52b337725c.png————————————————————

解析:广度优先搜索以起始结点为中心,一层一层地向外层扩展遍历图的顶点,因此无法考虑到边权值,只适合求边权值相等的图的单源最短路径。广度优先搜索相当于树的层序遍历,选项Ⅲ错误。广度优先搜索需要用到队列,深度优先搜索需要用到栈,选项Ⅳ正确。

正确答案:A

————————————————————

da9ce44f03f4475dbaea35864e243e59.png

————————————————————

解析:

6399a010b45440aea2cd824bea9b01a3.png


正确答案:D

————————————————————

86fce8c210004853b5c5ae5d11e3ac93.png

————————————————————

解析:DFS(或BFS)可用来计算无向图的连通分量数,因为一次遍历必然会将一个连通图中的所有顶点都访问到,所以计算图的连通分量数正好是DFsTraverse()中DFS被调用的次数。

正确答案:C

————————————————————

630b15db4d8d48ac847faa9d00a6e7e1.png

————————————————————

解析:深度优先遍历时,每个顶点表结点和每个边表结点均查找一次。每个顶点递归调用一次。需要借助一个递归工作栈:而广度优先遍历时,也是每个顶点表结点和每个边表结点均查找一次,需要借助一个辅助队列。因此,时间复杂度都是O(n+e)。空间复杂度都是O(n)。

正确答案:C、A、C、A

————————————————————

e1ef1b46515648d9ad3babf17798dcb1.png

————————————————————

解析:在图的广度优先遍历算法中,每个顶点被访问后立即做访问标记并入队。若队列不空,则队首顶点出队,若该顶点的邻接顶点未被访问,则访问之,做访问标记并入队:若被访问过。则跳过,如此反复,直至队空。因此,在广度优先遍历过程中,每个顶点最多入队一次。

正确答案:A

————————————————————

dac72978f92549e6b249077c4ba679e9.png

————————————————————

解析:采用邻接矩阵表示时,查找一个顶点所有出边的时间复杂度为O(n),共有n个顶点,所以时间复杂度均为O(n²)。

正确答案:A、A

————————————————————

4be092b6d4a74de882aec45dd739d178.png

————————————————————

解析:画出草图后,此类题可以根据边的邻接关系快速排除错误选项。以A为例,在遍历到e之后,应该访问与e邻接但未被访问的结点,(e, c)显然不在边集中。

正确答案:D

————————————————————

a4dc3ba21ff24164a5dd28639ccad2ce.png

————————————————————

解析:仅1和4正确。以2为例,遍历到c之后,与c邻接且未被访问的结点为空集,所以应为a的邻接点b或e入栈。以3为例,因为遍历要按栈退回,所以是先b后c,而不能先c后b。

正确答案:D

————————————————————

a80aea55180046f39e44339533630e30.png

————————————————————

解析:图的深度优先搜索类似于树的先根遍历,即先访问结点,再递归向外层结点遍历,都采用回溯算法。图的广度优先搜索类似于树的层序遍历,即一层一层向外层扩展遍历,都需要采用队列来辅助算法的实现。

正确答案:B、D

————————————————————

0e3b266604ba4a8a95274a357c937646.png

————————————————————

解析:DFS序列产生的路径为<1,2>,<2,5>,<5,4>,3,6>;BFS序列产生的路径为<1,2>,<1,4>,<2,5>,<3,6>。

正确答案:A、B

————————————————————

9618e342cc234e96be55efa0a5e7b562.png

————————————————————

解析:画出V和E对应的图G,然后根据搜索算法求解。

正确答案:D

————————————————————

9b71e817eb004dc3b3b27e911bcf053a.png

————————————————————

解析:利用深度优先遍历可以判断图G中是否存在回路。对于无向图来说,若深度优先遍历过程中遇到了回边,则必定存在环;对于有向图来说,这条回边可能是指向深度优先森林中另一棵生成树上的顶点的弧;但是,从有向图的某个顶点v出发进行深度优先遍历时,若在DFS(v)结束之前出现一条从顶点u到顶点v的回边,且u在生成树上是v的子孙,则有向图必定存在包含顶点v和顶点u的环。

正确答案:C

————————————————————

d574d541f9cd4508b4efdc5889d3b286.png

————————————————————

解析:连通分量是无向图的极大连通子图,其中极大的含义是将依附于连通分量中顶点的所有边都加上,所以连通分量中可能存在回路,这样就不是生成树了。极大连通子图是无向图(不一定连通)的连通分量,极小连通子图是连通无向图的生成树。极小和极大是在满足连通的前提下,针对边的数目而言的。极大连通子图包含连通分量的全部边;极小连通子图(生成树)包含连通图的全部顶点,且使其连通的边数最少。
正确答案:B

————————————————————

8082bb645b7642f2970efd258a61235b.png

————————————————————

解析:对于无向图的广度优先搜索生成树,起点到其他顶点的路径是图中对应的最短路径,即所有生成树中树高最小。此外,深度优先总是尽可能“深”地搜索图,因此其路径也尽可能长,所以深度优先生成树的树高总是大于或等于广度优先生成树的树高。

正确答案:A

————————————————————

92b6b28ef3124288a96e18b36accef13.png

————————————————————

解析:广度优先遍历需要借助队列实现。采用邻接表存储方式对图进行广度优先遍历时,每个顶点均需入队一次(顶点表遍历),所以时间复杂度为O(n),在搜索所有顶点的邻接点的过程中,每条边至少访问一次(出边表遍历),所以时间复杂度为O(e),算法总的时间复杂度为O(n+e)。


正确答案:C

————————————————————

fdf4728a1ef84a22987f1b56f6f937fd.png

————————————————————

解析:只要掌握DFS和BFS的遍历过程,便能轻易解决。逐个代入,手工模拟,选项D是深度优先遍历,而不是广度优先遍历。

正确答案:D

————————————————————

56185fc63f344deb9b418e1c5961ee65.png

————————————————————

解析:注意是有向图还是无向图

466314de67434434859ed37f104261ee.png

正确答案:D

————————————————————

44a768d632b04d23b04eb2da91b5f639.png

————————————————————

正确答案:D

二、综合应用题

————————————————————

————————————————————

解答:

————————————————————

d5fdf92f91dc4c679ffb12f1f97a03bd.png

————————————————————

解答:

d1e432b9836f47c485dba2575bdcf26b.png

————————————————————

————————————————————

解答:

————————————————————

————————————————————

解答:

————————————————————

————————————————————

解答:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值