1. 填空题
⑴ 设无向图G中顶点数为n,则图G至少有( )条边,至多有( )条边;若G为有向图,则至少有( )条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1)
【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵ 任何连通图的连通分量只有一个,即是( )。
【解答】其自身
⑶ 图的存储结构主要有两种,分别是( )和( )。
【解答】邻接矩阵,邻接表
【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。
⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为( )。
【解答】O(n+e)
【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。
⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是( )。
【解答】求第j列的所有元素之和
⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的( )。
【解答】出度
⑺ 图的深度优先遍历类似于树的( )遍历,它所用到的数据结构是( );图的广度优先遍历类似于树的()遍历,它所用到的数据结构是( )。
【解答】前序,栈,层序,队列
⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal算法求最小生成树的时间复杂度为( )。
【解答】O(n^2),O(elog2e)
【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
⑼ 如果一个有向图不存在( ),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路
⑽ 在一个有向图中,若存在弧<vi,vj>、<vj,vk>,则在其拓扑序列中,顶点vi, vj, vk的相对次序为( )。
【解答】vi, vj, vk
【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。
2. 选择题
⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的( )倍。
A 1/2 B 1 C 2 D 4
【解答】C
【分析】设无向图中含有n个顶点e条边。
⑵ n个顶点的强连通图至少有( )条边,其形状是( )。
A n B n+1 C n-1 D n×(n-1)
E 无回路 F 有回路 G 环状 H 树状
【解答】A,G
⑶ 含n 个顶点的连通图中的任意一条简单路径,其长度不可能超过( )。
A 1 B n/2 C n-1 D n
【解答】C
【分析】若超过n-1,则路径中必存在重复的顶点。
⑷ 对于一个具有n个顶点的无向图,若采用邻接矩阵存储,则该矩阵的大小是( )。
A n B (n-1)2 C n-1 D n^2
【解答】D
⑸ 图的生成树( ),n个顶点的生成树有( )条边。
A 唯一 B 不唯一 C 唯一性不能确定
D n E n +1 F n-1
【解答】C,F
⑹ 设无向图G=(V, E)和G' =(V', E' ),如果G' 是G的生成树,则下面的说法中错误的是( )。
A G' 为 G的子图 B G' 为 G的连通分量
C G' 为G的极小连通子图且V = V' D G' 是G的一个无环子图
【解答】B
【分析】连通分量是无向图的极大连通子图,其中极大的含义是将依附于连通分量中顶点的所有边都加上,
所以,连通分量中可能存在回路。
⑺ G是一个非连通无向图,共有28条边,则该图至少有( )个顶点。
A 6 B 7 C 8 D 9
【解答】D
【分析】n个顶点的无向图中,边数e≤n(n-1)/2,将e=28代入,有n≥8,现已知无向图非连通,则n=9。
⑻ 最小生成树指的是( ) 。
A 由连通网所得到的边数最少的生成树
B 由连通网所得到的顶点数相对较少的生成树
C 连通网中所有生成树中权值之和为最小的生成树
D 连通网的极小连通子图
【解答】C
⑼ 判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以用( )。
A 求关键路径的方法 B 求最短路径的方法
C 广度优先遍历算法 D 深度优先遍历算法
【解答】D
【分析】当有向图中无回路时,从某顶点出发进行深度优先遍历时,出栈的顺序(退出DFSTraverse算法)即为逆向的拓扑序列。
3. 判断题
⑴ 一个有向图的邻接表和逆邻接表中的结点个数一定相等。
【解答】对。邻接表和逆邻接表的区别仅在于出边和入边,边表中的结点个数都等于有向图中边的个数。
⑵ 用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
【解答】对。邻接矩阵的空间复杂度为O(n2),与边的个数无关。
⑶ 图G的生成树是该图的一个极小连通子图
【解答】错。必须包含全部顶点。
⑷ 无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的
【解答】错。有向图的邻接矩阵不一定对称,例如有向完全图的邻接矩阵就是对称的。
⑸ 对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。
【解答】错。只有连通图从某顶点出发进行一次遍历,可访问图的所有顶点。
⑹ 在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧。
【解答】错。只能说明从顶点a到顶点b有一条路径。
⑺ 若一个有向图的邻接矩阵中对角线以下元素均为零,则该图的拓扑序列必定存在。
【解答】对。参见第11题的证明。
四 应用题
1. n个顶点的无向图,采用邻接表存储,回答下列问题?
⑴ 图中有多少条边?
⑵ 任意两个顶点i和j是否有边相连?
⑶ 任意一个顶点的度是多少?
解答】
⑴ 边表中的结点个数之和除以2。
⑵ 第i个边表中是否含有结点j。
⑶ 该顶点所对应的边表中所含结点个数。
2.n个顶点的无向图,采用邻接矩阵存储,回答下列问题:
⑴ 图中有多少条边?
⑵ 任意两个顶点i和j是否有边相连?
⑶ 任意一个顶点的度是多少?
【解答】
⑴ 邻接矩阵中非零元素个数的总和除以2。
⑵ 当邻接矩阵A中A[i][j]=1(或A[j][i]=1)时,表示两顶点之间有边相连。
⑶ 计算邻接矩阵上该顶点对应的行上非零元素的个数。
⑴ 设无向图G中顶点数为n,则图G至少有( )条边,至多有( )条边;若G为有向图,则至少有( )条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1)
【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵ 任何连通图的连通分量只有一个,即是( )。
【解答】其自身
⑶ 图的存储结构主要有两种,分别是( )和( )。
【解答】邻接矩阵,邻接表
【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。
⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为( )。
【解答】O(n+e)
【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。
⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是( )。
【解答】求第j列的所有元素之和
⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的( )。
【解答】出度
⑺ 图的深度优先遍历类似于树的( )遍历,它所用到的数据结构是( );图的广度优先遍历类似于树的()遍历,它所用到的数据结构是( )。
【解答】前序,栈,层序,队列
⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal算法求最小生成树的时间复杂度为( )。
【解答】O(n^2),O(elog2e)
【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
⑼ 如果一个有向图不存在( ),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路
⑽ 在一个有向图中,若存在弧<vi,vj>、<vj,vk>,则在其拓扑序列中,顶点vi, vj, vk的相对次序为( )。
【解答】vi, vj, vk
【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。
2. 选择题
⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的( )倍。
A 1/2 B 1 C 2 D 4
【解答】C
【分析】设无向图中含有n个顶点e条边。
⑵ n个顶点的强连通图至少有( )条边,其形状是( )。
A n B n+1 C n-1 D n×(n-1)
E 无回路 F 有回路 G 环状 H 树状
【解答】A,G
⑶ 含n 个顶点的连通图中的任意一条简单路径,其长度不可能超过( )。
A 1 B n/2 C n-1 D n
【解答】C
【分析】若超过n-1,则路径中必存在重复的顶点。
⑷ 对于一个具有n个顶点的无向图,若采用邻接矩阵存储,则该矩阵的大小是( )。
A n B (n-1)2 C n-1 D n^2
【解答】D
⑸ 图的生成树( ),n个顶点的生成树有( )条边。
A 唯一 B 不唯一 C 唯一性不能确定
D n E n +1 F n-1
【解答】C,F
⑹ 设无向图G=(V, E)和G' =(V', E' ),如果G' 是G的生成树,则下面的说法中错误的是( )。
A G' 为 G的子图 B G' 为 G的连通分量
C G' 为G的极小连通子图且V = V' D G' 是G的一个无环子图
【解答】B
【分析】连通分量是无向图的极大连通子图,其中极大的含义是将依附于连通分量中顶点的所有边都加上,
所以,连通分量中可能存在回路。
⑺ G是一个非连通无向图,共有28条边,则该图至少有( )个顶点。
A 6 B 7 C 8 D 9
【解答】D
【分析】n个顶点的无向图中,边数e≤n(n-1)/2,将e=28代入,有n≥8,现已知无向图非连通,则n=9。
⑻ 最小生成树指的是( ) 。
A 由连通网所得到的边数最少的生成树
B 由连通网所得到的顶点数相对较少的生成树
C 连通网中所有生成树中权值之和为最小的生成树
D 连通网的极小连通子图
【解答】C
⑼ 判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以用( )。
A 求关键路径的方法 B 求最短路径的方法
C 广度优先遍历算法 D 深度优先遍历算法
【解答】D
【分析】当有向图中无回路时,从某顶点出发进行深度优先遍历时,出栈的顺序(退出DFSTraverse算法)即为逆向的拓扑序列。
3. 判断题
⑴ 一个有向图的邻接表和逆邻接表中的结点个数一定相等。
【解答】对。邻接表和逆邻接表的区别仅在于出边和入边,边表中的结点个数都等于有向图中边的个数。
⑵ 用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
【解答】对。邻接矩阵的空间复杂度为O(n2),与边的个数无关。
⑶ 图G的生成树是该图的一个极小连通子图
【解答】错。必须包含全部顶点。
⑷ 无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的
【解答】错。有向图的邻接矩阵不一定对称,例如有向完全图的邻接矩阵就是对称的。
⑸ 对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。
【解答】错。只有连通图从某顶点出发进行一次遍历,可访问图的所有顶点。
⑹ 在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧。
【解答】错。只能说明从顶点a到顶点b有一条路径。
⑺ 若一个有向图的邻接矩阵中对角线以下元素均为零,则该图的拓扑序列必定存在。
【解答】对。参见第11题的证明。
四 应用题
1. n个顶点的无向图,采用邻接表存储,回答下列问题?
⑴ 图中有多少条边?
⑵ 任意两个顶点i和j是否有边相连?
⑶ 任意一个顶点的度是多少?
解答】
⑴ 边表中的结点个数之和除以2。
⑵ 第i个边表中是否含有结点j。
⑶ 该顶点所对应的边表中所含结点个数。
2.n个顶点的无向图,采用邻接矩阵存储,回答下列问题:
⑴ 图中有多少条边?
⑵ 任意两个顶点i和j是否有边相连?
⑶ 任意一个顶点的度是多少?
【解答】
⑴ 邻接矩阵中非零元素个数的总和除以2。
⑵ 当邻接矩阵A中A[i][j]=1(或A[j][i]=1)时,表示两顶点之间有边相连。
⑶ 计算邻接矩阵上该顶点对应的行上非零元素的个数。