选择题
[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的所有简单路径。
图2
(2) 一个图有 7 个顶点,编号为 0~6,其邻接矩阵如下:
回答问题:
A) 画出该有向图。
B) 求顶点 0 的入度和出度。
C) 求顶点 2 的度。
[2024年第2题]
(1).使用Prim算法构造图3所示图G的一棵最小生成树,给出过程。
图3如上所示
(2).对于图4所示的带权有向图,采用Dijkstra算法求从顶点0到其他顶点的最短路径,要求给出求解过程,包括每一步的S(存放顶点集)、dist[](存放最短路径长度)和path[](存放最短路径)数组元素。
图4如上所示
[2023年第2题]. 某省的六个地级市(用符号A、B、C、D、E、F表示)之间计划修建可双向行驶的高速公路,从而实现任意两个城市之间的连通。根据地质结构和经费预算列出可能修建的高速路段以及预计费用(单位:亿元)如下表所示:
| 城市1 | 城市2 | 预计费用(亿元) |
|---|---|---|
| A | B | 5 |
| A | C | 2 |
| A | D | 4 |
| B | C | 7 |
| B | E | 3 |
| C | D | 5 |
| C | E | 8 |
| C | F | 3 |
| D | F | 6 |
| E | F | 1 |
现在要解决的问题是如何以最少的建设费用、修建最少的高速路段以连通任意两个城市。如果让你设计施工方案,请根据以上信息回答问题:
(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语言写出函数代码,并且加上适当注释,以增加可读性。