严魏敏习题
1.选择题
(1)在一个无向图中,所有顶点的度数之和等于图的边数的( C )倍。
A. 1/2
B. 1
C. 2
D. 4
(2)在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( B )倍。
A. 1/2
B. 1
C. 2
D. 4
(3)具有n个顶点的有向图最多有( B )条边。
(4)n个顶点的连通图用邻接矩阵表示时,该矩阵至少有( B )个非零元素。
连通图对应的是无向图,强连通对应的有向图
无向图对应的邻接矩阵,是对称的矩阵
邻接矩阵存储的是边的信息
当一个顶点的时候,就没有边的信息,此时的邻接矩阵为0
(5)G是一个非连通无向图,共有28条边,则该图至少有( A )个顶点。
计算连通无向图的边,公式:
n ( n − 1 ) 2 \frac{n\left(n-1\right)}{2} 2n(n−1)
A选项,计算得出21,题目是28,少
B选项,带入得28,题目说想要非联通,则需要再加一个顶点,选C
(6)若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是( B )图。
A. 非连通
B. 连通
C. 强连通
D. 有向
连通图的特点是:一条道走到底,既然一次就可遍历所有顶点,说明是连通图
C选项:本题的强连通说的是有向图
(7)下面(A)适合构造一个稠密图G的最小生成树。
A. Prim算法
B. Kruskal算法
C. Floyd算法
D. Dijkstra算法
C:求任意两个点之前的最短路径(排除)
D:求某一个顶点到其他顶点的最短路径(排除)
A:点找点:适合稠密图
B:边找边:主要用到的是边,所以适合稀疏图
(8)用邻接表表示图进行广度优先遍历时,通常可借助( B )来实现算法。
A. 栈
B. 队列
C. 树
D. 图
广队深栈
解释:广度优先遍历通常借助队列来实现算法,深度优先遍历通常借助栈来实现算法。
(9)用邻接表表示图进行深度优先遍历时,通常可借助( A )来实现算法。
A. 栈
B. 队列
C. 树
D. 图
广队深栈
广度优先遍历通常借助队列来实现算法,深度优先遍历通常借助栈来实现算法。
(10)图的深度优先遍历类似于二叉树的( A )。
A. 先序遍历
B. 中序遍历
C. 后序遍历
D. 层次遍历
深先广层
(11)图的广度优先遍历类似于二叉树的( D )。
A. 先序遍历
B. 中序遍历
C. 后序遍历
D. 层次遍历
(12)图的BFS生成树的树高比DFS生成树的树高( C)。
A. 小
B. 大
C. 小或相等
D. 大或相等
BFS-广度优先 的特点是:胖,所以就矮一点
DFS-深度优先 的特点是:一般高一点
他两也有可能相等,一样高
因为是深度优先
找到与顶点0直接相连的结点
由邻接矩阵知道是顶点1(多个相邻节点取第一个找到的未遍历到的结点)
然后再在邻接矩阵中找与顶点1直接相连的结点
得到顶点3
相同方法找到后续结点为:顶点4
顶点2
因为顶点2的相连结点都已被遍历
所以退回到顶点4继续遍历
遍历到顶点5
然后是顶点6
最后选C
(14)
( ),按深度优先遍历的结果是( )。
答案:D、D
广度:访问V0,依次访问其未访问的邻接顶点(顺着链表)
深度:首先邻的结点 1,然后找到 2,然后找到 3
(15)下面的( B )方法可以判断出一个有向图是否有环。
A. 求最小生成树
B. 拓扑排序
C. 求最短路径
D. 求关键路径
2.应用题
(1)已知图6.32所示的有向图,请给出:
① 每个顶点的入度和出度;
② 邻接矩阵;
③ 邻接表;
④ 逆邻接表。
(2)已知如图6.33所示的无向网,请给出:
图6.33 无向网
① 邻接矩阵;
② 邻接表;
③ 最小生成树。
(3)已知图的邻接矩阵如图6.34所示。试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。
图6.34 邻接矩阵
(4)有向网如图6.35所示,试用迪杰斯特拉算法求出从顶点a到其他各顶点间的最短路径,完成表6.9。
图6.35 有向网表
6.9 最短路径的求解
(5)试对图6.36所示的AOE-网:
① 求这个工程最早可能在什么时间结束;
② 求每个活动的最早开始时间和最迟开始时间;
③ 确定哪些活动是关键活动。
3.算法设计题
(1)分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作:
① 增加一个新顶点v,InsertVex(G, v);
② 删除顶点v及其相关的边,DeleteVex(G, v);
③ 增加一条边<v, w>,InsertArc(G, v, w);
④ 删除一条边<v, w>,DeleteArc(G, v, w)。
(2)一个连通图采用邻接表作为存储结构,设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。
(3)设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点,设v可达其余各个顶点。
(4)试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。
(5)采用邻接表存储结构,编写一个算法,判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径。