数据结构 第六章 图 练习题
图
- 填空题
⑴ 设无向图 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) 。
Ps:邻接矩阵的空间复杂度为O ( n 2 )
而邻接表的空间复杂度为O ( n + e )。
⑸ 已知一个有向图的邻接矩阵表示,计算第 j 个顶点的 入度 的方法是( )。
【解答】求第 j 列的所有元素之和
⑹ 有向图 G 用邻接矩阵 A[n][n] 存储,其第 i 行的所有元素之和等于顶点 i 的( )。
【解答】出度
⑺ 图的深度优先遍历类似于树的( )遍历,它所用到的数据结构是( );图的广度优先遍历类似于树的( )遍历,它所用到的数据结构是( )。
【解答】前序,栈,层序,队列
⑻ 对于含有 n 个顶点 e 条边的连通图,利用 Prim 算法求最小生成树的时间复杂度为( ),利用 Kruskal 算法求最小生成树的时间复杂度为( )。
【解答】O (n2) ,O (eloge)
【分析】 Prim 算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树; Kruskal 算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
⑼ 如果一个有向图不存在( ),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路
拓扑排序指的是将有向无环图(又称“DAG”图)中的顶点按照图中指定的先后顺序进行排序。
⑽ 在一个有向图中,若存在弧<vi, vj>、<vj, vk>、<vi, vk>,则在其拓扑序列中,顶点 vi, vj, vk 的相对次序为( )。
【解答】 vi, vj, vk
【分析】对由顶点 vi, vj, vk 组成的图进行拓扑排序。 - 选择题
⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的( )倍。
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
有向图中,若任意两个顶点 Vi 和 Vj,满足从 Vi 到 Vj 以及从 Vj 到 Vi 都连通,也就是都含有至少一条通路,则称此有向图为强连通图。
⑶ 含 n 个顶点的连通图中的任意一条简单路径,其长度不可能超过( )。
A 1 B n/2 C n-1 D n
【解答】 C
【分析】若超过 n-1 ,则路径中必存在重复的顶点。
无论是无向图还是有向图,从一个顶点到另一顶点途径的所有顶点组成的序列(包含这两个顶点),称为一条路径。如果路径中第一个顶点和最后一个顶点相同,则此路径称为"回路"(或"环")。
并且,若路径中各顶点都不重复,此路径又被称为"简单路径";
同样,若回路中的顶点互不重复,此回路被称为"简单回路"(或简单环)。
⑷