全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总
题目1:若有个顶点、条边,DFS的时间复杂度是多少?
(该题对图的DFS遍历和存储方式有很好的理解作用)
当采用邻接表存储的时候,每个点对应好几条边,一共N个点,对应E条边(虽然边数E可能是N的平方倍关系),所以我们遍历的复杂度只需要记录遍历顶点和边就行了。即O(N+E)。
当采用邻接矩阵的时候,我们不用管有多少条边,而是要把N的平方倍关系的点都遍历((N^2-N)/2也是N的平方倍关系),所以复杂度是O(N)。
需要注意的是,我们在遍历时,每个顶点连接到的其他顶点如果被访问过了,则不再去访问了。
题目2:已知一个图如下图所示,从顶点a出发按深度优先搜索法进行遍历,则可能得到的一种顶点序列为
-
A. a,e,b,c,f,d
-
B. a,b,e,c,d,f
-
C. a,c,f,e,b,d
-
D. a,e,d,f,c,b
从a出发,可能到a,c,e,先看A选项,到e以后,可以去b,但是原路返回不能经过a到c,所以A不行。
B选项,也犯了同样的错误。
C选项,f怎么蹦到e的呢,不行。
D选项,可以,当走到c了以后,原路返回,经过f d e最后到b
答案选D
题目3:DFS与BFS的优点缺点:引用自博客 广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点
深搜优缺点
优点
1、能找出所有解决方案
2、优先搜索一棵子树,然后是另一棵,所以和广搜对比,有着内存需要相对较少的优点
缺点
1、要多次遍历,搜索所有可能路径,标识做了之后还要取消。
2、在深度很大的情况下效率不高
广搜优缺点
优点
1、对于解决最短或最少问题特别有效,而且寻找深度小
2、每个结点只访问一遍,结点总是以最短路径被访问,所以第二次路径确定不会比第一次短
缺点
1、内存耗费量大(需要开大量的数组单元用来存储状态)
题目4:具有个顶点的无向图至多有多少个连通分量
-
A. 0
-
B. 1
-
C.
-
D.
貌似可以每个点都与其它点不连通。所以选D
题目5:如果从无向图的任一顶点出发进行一次深度优先搜索可访问所有顶点,则该图一定是
-
A. 有回路的图
-
B. 完全图
-
C. 连通图
-
D. 一棵树
连通图能从一个点连通到其他所有的点。选C
题目6:具有 个顶点的无向图至少有多少个连通分量
-
A. 0
-
B. 1
-
C.
-
D.
只要是图,就得最少有一个连通分量。选B