我是梦中传彩笔
欲书花叶寄朝云
目录
图的常见考点(一)图的概念题
图的常见考点(二)图的邻接矩阵、邻接表
图的常见考点(三)拓扑排序
图的常见考点(四)关键路径
图的常见考点(五)最小生成树
契子✨
承接上回,我们来复习一下图 ~
图的知识点是比较多的,而且大部分都需要画图,但是由于章节靠后所以出难题的几率不是很大
大多数都是以基础题为主(比如说概念题、邻接矩阵、邻接表、最小生成树)
如果是机考的话,邻接表、最小生成树往往是不要求画图的,大概就是出个找正确图形的选择题
现在我来分析一下大概率会考到的题型:
<1>图的概念题(比如有图向、无图向,度与边的关系,深度优先、广度优先是什么序列的遍历)
<2>图的邻接矩阵、邻接表
<3>关键路径
<4>最小生成树
图的常见考点(一)图的概念题
在一个图中,所有顶点的度数之和等于图的边数的()倍 A. 1/2 B. 1 C. 2 D. 4
答案选择 C
解析:
有向图:
无向图:
无向图,顶点的度指依附该顶点的边的条数。 对于无向图,全部顶点的度之和等于边数的两倍,因为每条边和俩个顶点相关联。 对于有向图,顶点的度分出度和入度,某一顶点的度等于其入度和出度之和,全部顶点的入度之和和出度之和相等且等于边数,那么入度之和 + 出度之和 = 边数俩倍。因为每条有向边都有一个起点和终点。 总结:无论是有向图还是无向图,所有顶点度数之和等于所有边数的两倍
在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍 A. 1/2 B. 1 C. 2 D. 4
答案选择 B
像这种图如果不会就画图(因为题目给出的范围很广:所有顶点,所以你就画个简单的模型模拟一下便可)
如图所示:有向图所有顶点入度之和等于所有顶点出度之和
具有n个顶点的有向完全图有()条弧边 A、n(n-1)/2 B、n(n-1) C、n(n+1)/2 D、n(n+1)
若每个顶点都有互相相反的两条弧连接,且具有 n 个顶点,n(n-1) 条弧的有向图,则称为有向完全图(简单来讲,每个顶点都有对应的入度、出度,而且是满的状态 -- 不能再连,此时的弧便是最大值)
刚好这张图也能用,上图便是有向完全图
我们发现含有 4 个顶点的有向完全图中,共有 n(n-1)=4×3=12 条弧,所以是没有问题的
答案选择 B
既然有向图的最大弧数已经说了,那我们来谈一谈无向图的最大弧数(无向完全图的弧):n(n-1)/2
我们可以简单的推正一下:
无向图我们可以拿两个结点举例,最大的弧便是 1,根据此时边与弧的关系可以推出:
最大弧数:n(n-1)/2
有向图我们也可以拿两个结点举例,最大的弧便是 2,根据此时边与弧的关系可以推出:
最大弧数:n(n-1)
无向图中两结点之间连成一条直线 有向图中任意两个结点之间都有一对有向边
若从无向图的任意顶点出发进行一次深度优先搜索即可访问所有的顶点,则该图一定是() A、强连通图 B、连通图 C、有回路 D、一棵树
答案选择 B
解析:
A、在一个有向图中,任意两个不同的顶点都存在相互之间的路径,则称为强连通图,与题意无向图不符
B、若无向图中任意两个结点都是连通的(任意两个结点之间有路径),则称该图为连通图,由于从任意顶点出发进行一次深度优先搜索即可访问所有的顶点,所以该图一定是连通图
C、回路不一定包含图的所有顶点
D、连通图可能是树,也可能存在环
下面关于图的存储的叙述中,哪一个是正确的? A.用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关 B.用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关 C.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关 D.用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关
答案选择 A
用邻接表法存储图,占用的存储空间数与图中结点个数和边数都有关,因为邻接表就是记录相邻边结点之间的关系
用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关,因为所画图形的大小往往是根据结点数量定的(存储空间),而不是按边数定的
图的 BFS 生成树的树高比 DFS 生成树的树高() A.小 B.相等 C.小或相等 D.大或相等
答案选择 A
对于一些特殊的图,比如只有一个顶点的图,其 BFS 生成树的树高和 DFS 生成树的树高相等。一般的图,根据图的 BFS 生成树和 DFS 树的算法思想, BFS 生成树的树高比 DFS 生成树的树高小
巳知无向图G含有16条边,其中度为4的顶点个数为3 度为3的顶点个数为4,其他顶点的度均小于3.图G所含的顶点个数至少是( ) A.10 B.11 C.13 D.15
答案选择 B
无向图边数的 2 倍等于各顶点度数的总和
由于其他顶点的度均小于3,设它们的度都为2,设它们的数量是 x
列出这方程 4x3 +3x4+ 2x= 16x2,解得 x=4
4+4+3=11
图的常见考点(二)图的邻接矩阵、邻接表
对该知识点不熟的先去翻翻课本 ~
一个具有n个顶点,e条边的无向图的邻接矩阵中,零元素的个数为() A、n^2 B、n^2-2e C、n+2e D、e
首先:
无向图的邻接矩阵一定是 --
对称矩阵
,关于对角线对称,且主对角线一定为零,而无向完全图中,由于任意两个顶点之间都有边连接,所以除了邻接矩阵的主对角线外,其余元素都为 1根据这个规律我们便可以知道:对于一个含有n个顶点,e条边的无向图,其邻接矩阵中元素为零的个数为 n^2 - 2e(邻接矩阵元素数量 - 两条对角线的数量)
答案选择 B
用邻接表表示图进行广度优先遍历时,通常借助()来实现算法 A. 栈 B. 队列 C. 树 D. 图
广度优先遍历相当于二叉树的层序遍历通常借助队列来实现算法
深度优先遍历相当于二叉树的先序遍历通常借助栈来实现算法
答案选择 B
已知图的邻接矩阵如图所示,则从顶点v0出发按深度优先遍历的结果是() A. 0243156 B. 0136542 C. 0134256 D. 0361542
这道题大概率会考 ~ 不要问我为什么(凭一个程序员的直觉)
但是你也不要太紧张,我来教你怎么做,若是你还不懂就去逛逛 B 站
首先题目连邻接矩阵都给你了,你就可以通过邻接矩阵构建图:
我这里示范一下
<1>这个图一看就是有向图,我们只需要找到有 1 的位置到时候判断图中各结点之间关系
先大概画个草图(将结点标出来),然后再连关系
这里举个例子(拿邻接矩阵的第一行)
因为我们的邻接矩阵行代表出度、列代表入度
所以我们通过
像这样我们就可以画出 0 与其他结点之间的关系
然后重复以上步骤
最后画出来就是这个样子的,这里说从 v0 开始出发进行深度优先遍历
这里说一下规则:一条路走到黑,走不了就回溯,走路选择分支的时候取值最小的结点
我们从 0 开始,而 0 与 1 2 3 4 6 都有关系,但是 1 的值最小,所以我们选择 1
01
然后我们看 1 这个结点(注意这里不是按结点顺序来的而是按照当前结点的位置):1 与 0 3 6 有关系,但是 0 已经在序列了,最小节点为 3,那我们便走 3
013
我们看 3 这个这个结点,我们看图虽然我画的比较难看,但这正是通往成功的蓝图:3 与 1 0 5 4 都有联系,但是 1 0 都已经在序列了,其中最小结点为 4 那么我们便选择 4
0134
我们看 4 这个这个结点,4 与 0 3 2 5 都有关系, 0 3 都已在序列,其中最小结点为 2 ,那么我们便选择 2
01342
(注意)我们看 2 这个这个结点,2 与 0 4 都有关系, 但是这些节点都以在序列怎么办呢?
这个时候我们就要开始回溯,回溯顾名思义就是往后退的意思:
我们的 2 回退到 4 这个结点,我们再来看,发现 4 还跟 5 有关系,所以下一步我们可以走 5
013425
这个时候答案基本上已经出来了,我就不继续往下讲了,记住做这种题的方法就是画图找关系(就那么简单)
正确答案: C
已知图的邻接表如图所示 则从顶点v0出发按广度优先遍历的结果是(),按深度优先遍历的结果是() A.0 1 3 2 0 2 3 1 B.0 1 3 2 0 3 2 1 C.0 2 3 1 0 3 2 1 D.0 1 2 3 0 1 2 3
这道题的思路跟上一题差不多,都是先根据图的邻接表构建出图的模型,再进行遍历
这种题考的概率还是很大的 ~
废话不多说,直接开干
我们还是一步一步来吧:
先根据 V0 这一条关系画出一下图形
根据 V1 这条关系画出一下图形:
根据 V2 这条关系画出一下图形:
这样就画完了,关于为什么要这样画(去翻翻书吧)
由图可知,广度优先遍历是层序遍历,那么从 V0 开始的话就是
0 1 2 3
深度优先与我们上题的操作一样:
0 与 1 2 3 有关系,1 结点最小,先走 10 1
这道题那么就简单了,就直接讲吧,1 只与 2 0 有关系,只能走 2,2 只与 3 0 有关系,只能走 3
所以:
0 1 2 3
正确答案: D
设连通图G中的边集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)} 则从顶点a出发得不到一种深度优先遍历的顶点序列为() A. abedfc B. acfebd C. aebdfc D. aedfcb
虽然这道题没有给任何的图形,但是它依旧是一道画图题
我们要根据表达式画出图形,再根据深度优先遍历去判断结果
画图的图形如下图所示:
由于只是连通图,所以我们不需要画箭头(要保证路径之间不能交叉)
我现在说明一下这道题到底再考什么:什么时候需要回溯
回溯规则:有路走优先走路,没路走才会回溯
别的不说,我们先来分析一下 A 选项
abedfc
a->b->e>d->f->c 有路走(一条线直接通,看图说话)所以是可行的
B 选项:
acfebd
a->c->f 都没有问题,但是这里在 f 位置竟然回溯了,我们深度优先遍历的规则是有路走优先走路,没路走才会回溯,但是这里路没走完就回溯了(f->d),所以是错误的
C选项:
aebdfc
a->e->b 没有问题,到 b 就没有路走了,所以 b 回溯到 e,e->d->f->c 有路走,所以可行
D选项:
aedfcb
a->e->d->f->c 都没有问题,到 c 就没有路走了,c 可以回溯到 a 再走 b,所以是可行的
正确答案: B
讲到这里我们邻接矩阵、邻接表的题型就已经讲完了
图的常见考点(三)拓扑排序
已知有向图G=(V,E) 其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>} 则G的拓扑序列是() A、V1,V3,V4,V6,V2,V5,V7 B、V1,V3,V2,V6,V4,V5,V7 C、V1,V3,V4,V5,V2,V6,V7 D、V1,V2,V5,V3,V4,V6,V7
先来介绍一下拓扑排序:
在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序
(1)每个顶点出现且只出现一次
(2)若A在序列中排在B的前面,则在图中不存在从B到A的路径此拓扑排序的思想是:
(1)从有向图中选取一个没有前驱的顶点,并输出之
(2)从有向图中删去此顶点以及所有以它为尾的弧
以上便是拓扑排序的步骤:
所以这依然是一道画图题,所以开局依旧是将我们的图画出来
第一步: 删除V1
第二步: 可选的没有前驱的点有V2,V3,V4
第三步 :假如下一步选择的是V3,则删除V3,可选的有V2,V4
第四步: 假如选择的是V2,则删除V2, 可选的有V4,V5(所以答案B错误了)
第五步: 假如选择的是V4,则删除V4,可选的有V5,V6
第六步: 假如选择的是V5,则删除V5, 剩余就是V6->V7了
所以排序为:V1,V3,V2,V4,V5,V6,V7
根据以上思路,可以推出只有答案 A 才是对的
正确答案: A
设有向无环图G中的有向边集合E={<1,2>,<2,3>,<3,4>,<1,4>} 则下列属于该有向图G的一种拓扑排序序列的是() A. 1,2,3,4 B. 2,3,4,1 C. 1,4,2,3 D. 1,2,4,3
首先画图:
第一步: 删除 1
第二步: 删除 2
第三步: 删除 3
所以排序为:1 2 3 4
正确答案: A
图的常见考点(四)关键路径
(多选)下面关于关键路径的说法正确的是() A、求关键路径是以拓扑排序为基础的 B、关键活动一定位于关键路径上 C、一个事件的最早发生时间与以该事件为始的弧的活动的最早开始时间相同 D、一个事件的最迟发生时间是以该事件为尾的弧的活动的最迟开始时间与该活动的持续时间的差
正确答案: A、B、C
在AOE网中,由源点到汇点的有向路径可能有多条,从而完成活动的路径长度也不同,将所有路径中具有最大路径长度的路径称为关键路径,且这条路径上的所有活动称为关键活动,是决定整个工程的关键因素,关键路径是整个工程所完成的最短时间一个事件的最迟发生时间为vl(k)=min{vl(j)-weight(vk,vj)},其中vk为vj的任意前驱,即等于取【以该事件为尾的弧的活动的最迟开始时间】与【最迟结束时间与该活动的持续时间的差】的最小值
(多选)下面的()方法可以判断出一个有向图是否有环(回路) A、深度优先遍历 B、拓扑排序 C、求最短路径 D、求关键路径
正确答案: A、B、D
(1)图的深度优先搜索,类似树的先序遍历,先访问结点,然后递归向外层结点遍历,尽可能深地搜索一个图,在生成树中访问到的顶点会是起始顶点的子孙,所以可以判断是否有环
(2)拓扑排序中是选择一个没有前驱,即入度 ID(v)=0的 顶点进行下去,而存在环时环的顶点是某边的起始,从而无法加入拓扑序列,无法找到下一个顶点删除时即可以判断是否有环
(3)关键路径能否判断一个图有环,则存在一些争议。关键路径本身虽然不允许有环,但求家关键路径的算法本身无法判断是否有环,判断是否有环是求关键路径拓扑排序
图的常见考点(五)最小生成树
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是() A.24 B.23 C.18 D.17
实在不会就画图吧
跟我们邻接矩阵一样,无穷符号代表没有关系,然后有关系的地方要标权值
然后我们找到最小生成树,简单来说就是哪边值小搞那边,最后相加权值最小就行
实在不会就去翻翻课本(Kruskal算法 + Prim算法)
正确答案: B