数据结构-分析期末选择题考点(图)

news2024/11/26 11:59:51

我是梦中传彩笔

欲书花叶寄朝云


目录

图的常见考点(一)图的概念题

图的常见考点(二)图的邻接矩阵、邻接表

图的常见考点(三)拓扑排序

图的常见考点(四)关键路径

图的常见考点(五)最小生成树


契子


承接上回,我们来复习一下图 ~ 

图的知识点是比较多的,而且大部分都需要画图,但是由于章节靠后所以出难题的几率不是很大

大多数都是以基础题为主(比如说概念题、邻接矩阵、邻接表、最小生成树)

如果是机考的话,邻接表、最小生成树往往是不要求画图的,大概就是出个找正确图形的选择题

现在我来分析一下大概率会考到的题型:
<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 这个这个结点,我们看图虽然我画的比较难看,但这正是通往成功的蓝图:31 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

深度优先与我们上题的操作一样:
01 2 3 有关系,1 结点最小,先走 1

0 1

这道题那么就简单了,就直接讲吧,1 只与 2 0 有关系,只能走 22 只与 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1878871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数据备份整体规划方案

企业数据备份整体规划设计参考 备份系统前期规划至关重要&#xff0c;需综合考虑多维度因素以达最优解。本文全面探讨企业数据中心备份规划&#xff0c;助您构建高效、稳健的数据保护体系。 随着信息化深入&#xff0c;企业业务系统日益增多&#xff0c;数据规模与类型均显著扩…

等保测评练习16

等级保护初级测评师试题16 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1.虚拟机被非法利用后&#xff0c;可能被当作跳板机。&#xff08;T&#xff09; P312 2.云服务商&#xff0c;为云计算服务…

《Windows API每日一练》7.2 计时器的三种使用方法

如果程序在整个运行过程中需要一个计时器&#xff0c;在WinMain函数中或窗口过程处理WM_CREATE 消息时&#xff0c;调用SetTimer函数创建一个计时器。在离开WinMain函数时或是处理WM_DESTROY消息时&#xff0c;调用KillTimer函数销毁计时器。基于调用SetTimer参数的不同&#x…

C#异常提示.mp3的文件不是一个有效的波形文件

解决方法: 使用格式工厂将mp3格式的文件转为wav格式

从笔灵到AI去痕:全方位提升内容创作与学术诚信

内容为王&#xff0c;在内容创作的世界中尤为重要。然而&#xff0c;面对写作时常常感到无从下手&#xff1a;有时缺乏灵感&#xff0c;有时难以表达清楚自己的想法。AI写作助手的出现&#xff0c;为这些问题提供了创新的解决方案&#xff0c;极大地改变了内容创作的过程。 今…

android轮播图入门1——简单无限自动轮播图

目标 目标是实现一个简单的轮播图&#xff0c;特征如下&#xff1a; 只展示本地图片可以无限轮播&#xff0c;在第一帧时也可以向前轮播可以自动轮播 code 先上代码&#xff0c;需要事先准备几张本地图片当素材 MainActivity: package com.example.loopapplication;import…

快速了解《大模型赋能下的AI2.0数字人平台》白皮书

在生成式AI和大模型的赋能下&#xff0c;数字人迎来AI 2.0时代。它能否成为每个人的“数字分身”&#xff0c;转化为新型的AI劳动力工具&#xff1f;商汤科技与上海市人工智能技术协会、零壹智库、增强现实核心技术产业联盟联合发布《大模型赋能下的AI 2.0数字人平台》。《白皮…

利用微信开放标签<wx-open-launch-weapp>在H5中跳转微信小程序报错完美的解决方案

一、报错&#xff1a; [WXTAG] [JSCORE] The slot <template> or <script type"text/wxtag-template"> of <wx-open-launch-weapp> is missing 二、源码 官方源代码如下&#xff0c;<script type"text/wxtag-template"></sc…

智能社区服务小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;房屋信息管理&#xff0c;住户信息管理&#xff0c;家政服务管理&#xff0c;家政预约管理&#xff0c;报修信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房屋信…

# Sharding-JDBC从入门到精通(3)- Sharding-JDBC 入门程序

Sharding-JDBC从入门到精通&#xff08;3&#xff09;- Sharding-JDBC 入门程序 一、Sharding-JDBC 入门程序&#xff08;水平分表&#xff09;-环境搭建 1、需求说明 使用 Sharding-JDBC 完成对订单表的水平分表&#xff0c;通过快速入门程序的开发&#xff0c;快速体验 Sh…

Unity制作一个简单抽卡系统(简单好抄)

业务流程&#xff1a;点击抽卡——>播放动画——>显示抽卡面板——>将随机结果添加到面板中——>关闭面板 1.准备素材并导入Unity中&#xff08;包含2个抽卡动画&#xff0c;抽卡结果的图片&#xff0c;一个背景图片&#xff0c;一个你的展示图片&#xff09; 2.给…

mac电脑游戏推荐:NBA 2K24 街机版下载

NBA 2K24 街机版是一款由2K Sports开发并发行的篮球游戏&#xff0c;属于著名的NBA 2K系列。这款游戏为玩家提供了与NBA联赛中真实球员和球队互动的机会&#xff0c;体验篮球比赛的激情与紧张。街机版的NBA 2K24通常会在游戏厅、商场等公共场所设置&#xff0c;供玩家投币游玩。…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)

48全连接卷积神经网络&#xff08;FCN&#xff09; 1.构造函数 import torch import torchvision from torch import nn from torch.nn import functional as F import matplotlib.pyplot as plt import liliPytorch as lp from d2l import torch as d2l# 构造模型 pretrained…

如何在 Linux 中后台运行进程?

一、后台进程 在后台运行进程是 Linux 系统中的常见要求。在后台运行进程允许您在进程独立运行时继续使用终端或执行其他命令。这对于长时间运行的任务或当您想要同时执行多个命令时特别有用。 在深入研究各种方法之前&#xff0c;让我们先了解一下什么是后台进程。在 Linux 中…

数字图像处理期末复习题1

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…

甄选范文“论云上自动化运维及其应用”,软考高级论文,系统架构设计师论文

论文真题 云上自动化运维是传统IT运维和DevOps的延伸,通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本,提升系统的灵活度,以及系统的交付速度,增强系统的可靠性,构建更加安全、可信、开放的业务平台。 请围绕“云上自动化运维及其应用”…

PICO 4S泄露信息更新,配备骁龙XR2 Gen 2,单眼分辨率2160×2160

根据最新的泄露信息汇总&#xff0c;PICO 4S确实有望成为一款高性能的VR头显&#xff0c;其核心规格和特性包括&#xff1a; 处理器与内存&#xff1a;搭载了高通骁龙XR2 Gen 2芯片组&#xff0c;这是针对VR/AR设备优化的高端处理器&#xff0c;能提供更强大的计算能力和效率。…

利用BFS或动态规划解决路径算法问题

最小路径和和不同路径 一、力扣64. 最小路径和1.找出DP状态2.找出DP状态转移方程3. 算法实现 二、力扣62. 不同路径思路1&#xff1a;BFS实现思路2&#xff1a;动态规划 一、力扣64. 最小路径和 给定一个包含非负整数的 m x n 网格&#xff0c;请找出一条从左上角到右下角的路…

浅谈如何在linux上部署java环境

文章目录 一、部署环境1.1、JDK1.2、Tomcat1.3、MySQL 二、将自己写的的程序部署到云服务器上 一、部署环境 为了在linux上部署 Java web 程序&#xff0c;需要安装一下环境。 1.1、JDK 直接使用 yum 命令安装 openjdk。我们 windows系统上 下载的是 oracle 官方的 jdk。而 …

Redisson框架

1. Redisson锁与Redis订阅与发布模式的联系&#xff1a; Redisson锁中&#xff0c;使用订阅发布模式去通知等待锁的客户端&#xff1a;锁已经释放&#xff0c;可以进行抢锁。 publish channel_name message&#xff1a;将消息发送到指定频道 解锁时&#xff0c;在Lua解锁脚本…