图
参考资料: 王道数据结构考研复习指导 天勤数据结构高分笔记
习题来源 : 王道每日一题 强连通计算机每日一题 抓码计算机每日一题
图的定义
-
线性表可以是空表,树可以是空树,但图不可以是空图(边集可以为空 顶点集非空)
-
简单图 VS 多重图 不存在重复边,不存在顶点到自身的边,那么称此图为简单图
多重图和简单图定义是相对的,数据结构只讨论简单图
- 完全图:任意两个顶点之间都存在边
- 并非V和E的任何子集都能构成G的子图
- 无向图讨论连通性,有向图讨论强连通性
无向图任意两个顶点都是连通的,为连通图
无向图的极大连通子图称为连通分量 同理定义强连通图和强连通分量
- 连通图的生成树是包含图中全部顶点的一个极小连通子图
- 非连通图中,连通分量的生成树构成非连通图的生成森林
练习题汇总
具有n个顶点的有向完全图有()条边
点击查看答案
n(n-1)A. 连通的
B. 不连通的
C. 无环的
D. 有环的
点击查看答案
尽可能让它不成环,需要n-1条边,再添加最后一条边,一定有环。【答案】D
设有向图G是有10个顶点的强连通图。则G至少有()条边
点击查看答案
10具有6个顶点的无向图,当有()几条边时能确保是一个连通图。
点击查看答案
11【2009年408】 下列关于无向连通图的特性的叙述中,正确的是()
Ⅰ所有的顶点之和为偶数
Ⅱ边数大于顶点个数减1
Ⅲ至少有一个顶点的度为1
A 只有Ⅰ
B只有Ⅱ
CⅠ和Ⅱ
DⅠ和Ⅲ
点击查看答案
A图中强连通分量的个数为()。
A、2 B、3 C、4 D、5
点击查看答案
答案:C在有向图 G 中,如果两个顶点 vi、vj 间有一条从 vi 到 vj 的有向路径,同时还有一条从 vj 到 vi 的有向路径,则称两个顶点强连通。如果有向图 G 的每两个顶点都强连通,称 G 是一 个强连通图。有向图的极大强连通子图,称为强连通分量。本题中可以看出 v2、v3、v4 同 属于一个连通分量,另外 v1、v5、v6 各自属于一个强连通分量,所以共有 4 个强连通分量。
【2011年408】 下列关于图的叙述中,正确的是()
Ⅰ回路是简单路径
Ⅱ存储稀疏图,用邻接矩阵比邻接表更节省空间
Ⅲ若有向图中存在拓扑排序,则该图不存在回路
A 仅Ⅱ
B仅Ⅰ、Ⅱ
C仅Ⅲ
D仅Ⅰ、Ⅲ
点击查看答案
C【2010年408】 若无向图G=(V,E)中含有7个顶点,要保证图G在任何情况下都是连通的,则需要的边数最少是()
A.6
B.15
C.16
D.21
点击查看答案
C6个顶点构成完全图再加1
图结构的存储
(一)邻接矩阵法
用一个二维数组存储边的信息,一维数组存储图中顶点的信息
-
无向图的邻接矩阵一定是一个对称矩阵(并且唯一)
-
邻接矩阵可采用压缩存储(考查归纳公式能力)
-
稠密图适合用邻接矩阵存储
-
有向图第i行非零元素的个数正好是顶点i的出度,第i列非零元素的个数正好是顶点i的入度
-
无向图第i行非零元素的个数正好是顶点i的度
拓展结论: A的n次方 :元素等于顶点i到顶点j的长度为n的路径数目
(二)邻接表法
每个顶点建立一个单链表,每个单链表称为顶点的边表,边表的头指针和顶点数据信息采用顺序存储,称为顶点表
-
邻接表表示并不唯一
-
求某一个顶点的出度只需计算其邻接表的结点个数 求入度需要全部遍历
(三)十字链表
有向图中的每条弧有一个结点,对应于每个顶点也有一个结点。
(四) 邻接多重表
邻接多重表和邻接表的差别在于同一条边在邻接表中用两个结点表示,而在邻接多重表只有一个结点
练习题汇总
若具有n个定点的连通图采用邻接矩阵表示,则该矩阵中的非零元素至少是____(北京航空航天大学2015)
A.2(n-1)
B. n-1
C.n+1
D. n/2
点击查看答案
答案:A解析:如果图中任意两点都是连通的,那么图被称作连通图。如果此图是有向图,则称为强连通图(注意:需要双向都有路径)。所谓连通图一定是无向图,有向的叫做强连通图 连通n个顶点,至少只需要n-1条边就可以了,或者说就是生成树 由于无向图的每条边同时关联两个顶点,因此邻接矩阵中每条边被存储了两次(也就是说是对称矩阵),因此至少有2(n-1)个非零元素。
图的遍历
图的遍历主要有两种:广度优先搜索和深度优先搜索
(一)BFS
BFS算法需要借助一个辅助队列
邻接表 时间复杂度 V+E
邻接矩阵 时间复杂度 V²
(二)DFS 需要借助一个递归工作栈
邻接表 时间复杂度 V+E
邻接矩阵 时间复杂度 V²
基于邻接矩阵的遍历所得的的DFS序列和BFS序列是唯一的
代码详见王道书215和217页或者天勤
习题汇总
下列关于广度优先算法的说法中,正确的是( )。
I. 当各边的权值相等时,广度优先算法可以解决单源最短路径问题
II. 当各边的权值不等时,广度优先算法可用来解决单源最短路径问题
III.广度优先遍历算法类似于树中的后序遍历算法
IV.实现图的广度优先算法时,使用的数据结构是队列
A. I、IV
B. II、III、IV
C. II、IV
D. I、III、IV
点击查看答案
I、II:当各边权值相等的时候,广度优先算法可以解决单源最短路径问题。因为广度优先搜索的特点就是越近越优先被发现。当权值不等的时候,它处理不了。\ III、IV. 类似于层序遍历算法,都用到了队列。\【答案】A
图的应用
应用如下图框架所示
习题汇总
下列关于图的说法中,正确的是( )。
I.有向图中顶点V的度等于其邻接矩阵中第V行中1的个数
II.无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵
III. 在图G的最小生成树G中,某条边的权值可能会超过未选边的权值
IV. 若有向无环图的拓扑序列唯一,则可以唯一确定该图
A. I、II和III
B. III和IV
C. III
D. IV
点击查看答案
I.错。有向图顶点i的度=i的出度+i的入度。行:出度,列:入度II.错。无向图的邻接矩阵一定是对称矩阵;有向图的邻接矩阵也可以是对称的,比如有向完全图。
III.对。未选边加入构成环路的时候。
IV.错。
如:
图一:<1,2>,<2,3>,<3,4>
图二:<1,2>,<1,3>,<2,3>,<2,4>,<3,4>
他们拓扑排序唯一,都是1,2,3,4
【答案】C
部分内容待更新~
如有误请多指正!