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,错误。

二、综合应用题



解答:



解答:

相关推荐
牛客企业服务33 分钟前
2025年AI面试推荐榜单,数字化招聘转型优选
人工智能·python·算法·面试·职场和发展·金融·求职招聘
糖葫芦君1 小时前
Policy Gradient【强化学习的数学原理】
算法
羊小猪~~2 小时前
【NLP入门系列五】中文文本分类案例
人工智能·深度学习·考研·机器学习·自然语言处理·分类·数据挖掘
向阳@向远方3 小时前
第二章 简单程序设计
开发语言·c++·算法
github_czy4 小时前
RRF (Reciprocal Rank Fusion) 排序算法详解
算法·排序算法
许愿与你永世安宁4 小时前
力扣343 整数拆分
数据结构·算法·leetcode
爱coding的橙子4 小时前
每日算法刷题Day42 7.5:leetcode前缀和3道题,用时2h
算法·leetcode·职场和发展
满分观察网友z5 小时前
从一次手滑,我洞悉了用户输入的所有可能性(3330. 找到初始输入字符串 I)
算法
YuTaoShao5 小时前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
Heartoxx5 小时前
c语言-指针(数组)练习2
c语言·数据结构·算法