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

一、单项选择题


------------------------------------------------------------

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

正确答案:



解析:

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



解析:利用深度优先遍历可以判断图G中是否存在回路。

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

正确答案:



解析:连通分量是无向图的极大连通子图,其中极大的含义是将依附于连通分量中顶点的所有边都加上,所以连通分量中可能存在回路,这样就不是生成树了。

正确答案:



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

正确答案:



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

正确答案:



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

正确答案:



解析:

正确答案:



解析:按深度优先遍历的策略进行遍历。对于A:先访问V,然后访问与V邻接且未被访问的任意一个顶点(满足的有V,V和Vx),此时访问V,然后从V出发,访问与V邻接且未被访问的任意一个顶点(满足的只有V),然后从V出发,访问与V邻接且未被访问的任意一个顶点(满足的只有V),然后从V出发,访问与巧邻接且未被访问的任意一个顶点(满足的只有Vz),结束遍历。B和C的分析方法与A相同。对于D,首先访问V,然后从环出发,访问与邻接且未被访问的任意一个顶点(满足的有 V,7和V),然后从V出发,访问与V邻接且未被访问的任意一个顶点(满足的只有Vs),按规则本应该访问V,但D却访问了V,错误。

二、综合应用题



解答:



解答:

相关推荐
大二转专业6 分钟前
408算法题leetcode--第七天
考研·算法·leetcode
大母猴啃编程15 分钟前
数据结构---非线性--树
c语言·数据结构·学习·算法·青少年编程
码农探知23 分钟前
鹏哥C语言自定义笔记重点(67-)
c语言·数据结构
让学习成为一种生活方式28 分钟前
解析药用植物重楼甾体皂苷生物合成中的连续糖基化及其抗真菌作用-文献精读49
linux·数据库·算法·天然产物化学
super晓权40 分钟前
SVM原理
算法·svm·machine learning
i嗑盐の小F1 小时前
【IEEE出版,高录用 | EI快检索】第二届人工智能与自动化控制国际学术会议(AIAC 2024,10月25-27)
图像处理·人工智能·深度学习·算法·自然语言处理·自动化
Python之栈1 小时前
Python if 语句优化技巧
python·算法
冰红茶兑滴水1 小时前
Linux 线程控制
linux·c++·算法
CYX_cheng2 小时前
算法基础-二分查找
算法
mikey棒棒棒2 小时前
算法练习题25——合并多项式
java·算法·hashmap·哈希·多项式