广东财经大学考研初试数据结构历年真题分类:图

138 阅读9分钟

选择题

[2024年第7题]. 如果从无向图的任一顶点出发,进行一次广度优先遍历即可访问所有顶点,则该图一定是( )。 A. 有回路 B. 一棵树 C. 连通图 D. 完全图

[2023年第7题]. 具有k条边的无向图,对其邻接矩阵的对称性及非零元素的数量,下列说法正确的是( )。

A. 不对称 2k个 B.对称 2k个 C. 不对称 k个 D. 对称 k个

[2022年第10题]. G是一个非连通无向图,共有36条边,则该图至少有()个顶点

A.7 B.8 C.9 D.10

[2021年第11题]. 具有n个顶点的有向完全图用邻接表表示时,共有( )个弧结点。

A. n(n-1)/2 B.n(n-1) C.2n(n-1) D.n-1

[2021年第12题]. 下面的( )算法适合构造一个稠密图的最小生成树。

A.Prim算法 B.Kruskal算法 C.Floy算法 D.Dijkstra算法

[2020年第8题]. 图 1 是一个有向无环图,其拓扑排序结果为________。

A.v0、v1、v2、v4、v5、v3、v6 B.v1、v0、v3、v4、v5、v2、v6

C.v1、v0、v3、v4、v5、v6、v2 D.v1、v0、v3、v4、v6、v2、v5

[2020年第9题]. 在图 2 所示 AOE 网中,其关键路径长度为________。

A. 16 B. 17 C. 18 D. 19

[2019年第5题]. 对图2所示的带权有向图,若采用迪杰斯特拉(Dijkstra)算法求从原点 a 到其他各顶点的最短路径,则得到的第一条最短路径的目标顶点是 b,第二条最短路径的目标顶点是 c,后续得到的其余各最短路径的目标顶点依次是________。

A.f,d,e B.e,d,f C.d,e,f D. f, e, d

[2019年第10题]. 图 3 是一个有向无环图,其拓扑排序结果为________。

A.v0、v1、v2、v4、v5、v3、v6

B.v1、v0、v3、v4、v5、v2、v6

C.v1、v0、v3、v4、v5、v6、v2

D.v1、v0、v3、v4、v6、v2、v5

填空题

[2021年第2题]. 图的主要存储结构有四种:( )、( )、十字链表和邻接多重表表示法。

[2021年第9题]. G是一个非连通无向图,共有28条边,则该图至少有( )个顶点。在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要( )条弧。

[2021年第10题]. 对于一个具有n个顶点e条边的无向图的邻接表的表示,则表头向量大小为( ),邻接表的边结点个数为( )。

名词解释

[2022年第4题]. 最小生成树

[2022年第5题]. 有向无环图

[2022年第6题]. 关键路径

[2022年第9题]. 邻接矩阵

[2020年第10题]. AOE网

简答题

[2023年第3题]. 假设图G如图3所示,顶点的存储顺序如图4所示:

根据上图的拓扑结构和顶点顺序,回答以下问题:

(1)画出该图的邻接表存储结构。 (4分)

(2)根据所画的邻接表,从顶点v1开始按顶点存储顺序正向遍历,写出深度优先遍历序列。 (3分)

(3)根据所画的邻接表,从顶点v6开始按顶点存储顺序逆向遍历,写出广度优先遍历序列。 (3分)

[2022年第5题]. 给定图G的邻接表如图-4所示。

(1)在该邻接表上从节点0出发,深度优先遍历该图,给出遍历序列。

(2)在该邻接表上从节点0出发,宽度优先遍历该图,给出遍历序列。

[2021年分析计算题第2题]. 图-1所示是带权的无向网,图中顶点的存储顺序为图-2所示,要求:

(1)画出该无向网的邻接表。

(2)按步骤画出根据克鲁斯卡尔算法构造最小生成树的过程(图中标明对应边的权值)。

(3)计算最小生成树的权值。

[2020年第3题]. 已知无向图 G 的逻辑结构图如图 3 所示,试回答下述问题。

(1)画出图 G 的邻接矩阵。

(2)若从编号为1的顶点出发遍历该图,请画出其深度优先生成树和广度优先生成树。

[2020年第4题]. 针对图 4 所示的无向网:

(1)按 Kruscal 算法生成最小生成树的过程,画出各步骤生成的中间图, 并最终得出最小生成树;

(2)求出最小生成树的代价。

[2019年综合应用题第3题]. 已知无向图 G 的逻辑结构图如图 6 所示,试回答下述问题。

(1)画出图 G 的邻接矩阵。

(2)依据你画出的邻接矩阵,若从编号为1的顶点出发遍历该图,请画出其深度优先生成树。

(3)依据你画出的邻接矩阵,若从编号为1的顶点出发遍历该图,请画出其广度优先生成树。

(4)试说明深度优先遍历、广度优先遍历需要分别借助什么数据结构方可实现。

[2019年综合应用题第4题]. 求图 7 所示的带权连通图 G 的最小生成树(MST),请回答下列问题:

(1)若使用克鲁斯卡尔(Kruskal)算法求图 G 的 MST,请依次写出算法选出的边;

(2)若使用普利姆(Prim)算法,从顶点 A 开始求图 G 的MST,请依次写出算法选出的边;

(3)图G的 MST 唯一吗?

(4)请说明在什么情况下带权连通图的 MST 才会唯一。

综合分析题

[2024年第1题] (1).如图2所示,有一个有向图,回答以下问题: A)给出该图所有强联通分量。 B)给出从顶点0到顶点8的所有简单路径DataStructure-GDEF_PostGraduate_Exam_Question_2024_3_1_(1).png 图2

(2) 一个图有 7 个顶点,编号为 0~6,其邻接矩阵如下:

[0253028013505039050]\begin{bmatrix} 0 & 2 & 5 & 3 & \infty & \infty & \infty \\ \infty & 0 & 2 & \infty & \infty & 8 & \infty \\ \infty & \infty & 0 & 1 & 3 & 5 & \infty \\ \infty & \infty & \infty & 0 & 5 & \infty & \infty \\ \infty & \infty & \infty & \infty & 0 & 3 & 9 \\ \infty & \infty & \infty & \infty & \infty & 0 & 5 \\ \infty & \infty & \infty & \infty & \infty & \infty & 0 \end{bmatrix}

回答问题:
A) 画出该有向图。
B) 求顶点 0 的入度和出度。
C) 求顶点 2 的度。

[2024年第2题] (1).使用Prim算法构造图3所示图G的一棵最小生成树,给出过程。 DataStructure-GDEF_PostGraduate_Exam_Question_2024_3_2_(1).png 图3如上所示

(2).对于图4所示的带权有向图,采用Dijkstra算法求从顶点0到其他顶点的最短路径,要求给出求解过程,包括每一步的S(存放顶点集)、dist[](存放最短路径长度)和path[](存放最短路径)数组元素。

DataStructure-GDEF_PostGraduate_Exam_Question_2024_3_2_(2).png 图4如上所示

[2023年第2题]. 某省的六个地级市(用符号A、B、C、D、E、F表示)之间计划修建可双向行驶的高速公路,从而实现任意两个城市之间的连通。根据地质结构和经费预算列出可能修建的高速路段以及预计费用(单位:亿元)如下表所示:

城市1城市2预计费用(亿元)
AB5
AC2
AD4
BC7
BE3
CD5
CE8
CF3
DF6
EF1

现在要解决的问题是如何以最少的建设费用、修建最少的高速路段以连通任意两个城市。如果让你设计施工方案,请根据以上信息回答问题:

(1)你认为用什么数据结构描述该问题?请根据上表信息画出拓扑结构图并标出权值。 (3分)

(2)写出你打算采用的存储结构表示,并设计Create( )算法创建基于该存储结构之上的相应数据结构。(12分)

(3)你认为可以用什么算法解决该问题?请说明你选择该算法的理由,然后按步骤画出该算法的执行过程。(12分)

(4)假如每个路段的预计费用即为最终的实际费用,那么建成连通这六个地级市的高速公路的总费用是多少?(3分)

温馨提示:算法首选用类C或其他语言的伪代码描述,也可用自然语言或流程图描述。

编程题

[2022年第2题]. 设计一个算法,判断有向图G(采用邻接表存储)中是否存在(cycle)。算法可以采用伪代码结合文字注释的方式说明。

[2021年第2题]. 用非递归的方式写出无向图的深度优先遍历算法(DFS)。其中图采用邻接矩阵存储,例如定义一个邻接矩阵map[N] [N]用于存储图,定义一个数组visited[N]用于标记相关节点是否已被访问。作答时,给出必要的分析和说明,以及注释,可以使用伪代码描述算法

[2019年第3题]. 已知图的邻接表存储表示,其类型定义如下:

#define MVNum 100 	   //最大顶点数
typedef struct ArcNode{ //边结点 
    int adjvex;		   //该边所指向的顶点的位置
    struct ArcNode *nextarc; //指向下一条边的指针
}ArcNode;				    //和边相关的信息

typedef struct VNode{ 
    VerTexType data;   //顶点信息
    ArcNode *firstarc; //指向第一条依附该顶点的边的指针
}VNode, AdjList[MVNum]; //AdjList 表示邻接表类型 

typedef struct{ 
    AdjList vertices;   //邻接表
    int vexnum, arcnum; //图的当前顶点数和边数
}ALGraph; 
	试基于图的深度优先搜索策略写一个算法,判别以邻接表方式存储的有向图中是否存在由顶点 vi 到顶点 vj 的路径(i≠j),是则返回 1,否则返回 0。 
    算法函数原型为:int exist_path_DFS(ALGraph G, int i, int j)
    请用类C语言写出函数代码,并且加上适当注释,以增加可读性。