【PTA】【数据结构与算法】最短路径

判断题

1.在一个有权无向图中,若b到a的最短路径距离是12,且c到b之间存在一条权为2的边,则c到a的最短路径距离一定不小于10。
TF
2.P 是顶点 S 到 T 的最短路径,如果该图中的所有路径的权值都加 1,P 仍然是 S 到 T 的最短路径。
TF
3.对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2 的路径一定是它们之间的最短路径。
TF
4.Let P be the shortest path from S to T. If the weight of every edge in the graph is incremented by 1, P will still be the shortest path from S to T.
TF

选择题

1.若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:
选项
A对所有顶点都有count[V]=1
B对所有顶点都有count[V]=0
Ccount[S]=1;对于其他顶点V则令count[V]=0
Dcount[S]=0;对于其他顶点V则令count[V]=1
2.我们用一个有向图来表示航空公司所有航班的航线。下列哪种算法最适合解决找给定两城市间最经济的飞行路线问题?
选项
ADijkstra算法
BKruskal算法
C深度优先搜索
D拓扑排序算法
3.In a weighted graph, if the length of the shortest path from b to a is 10, and there exists an edge of weight 3 between c and b, then how many of the following statements is/are TRUE?
The length of the shortest path from c to a must be 13.
The length of the shortest path from c to a must be 7.
The length of the shortest path from c to a must be no greater than 13.
The length of the shortest path from c to a must be no less than 7.
选项
A1
B 2
C3
D4
4.数据结构中Dijkstra算法用来解决哪个问题?
选项
A关键路径
B 最短路径
C拓扑排序
D字符串匹配
5.使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是:

在这里插入图片描述

选项
A5, 2, 3, 4, 6
B 5, 2, 3, 6, 4
C5, 2, 4, 3, 6
D5, 2, 6, 3, 4
6.若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:
选项
Acount[S]=1;对于其他顶点V则令count[V]=0
Bcount[S]=0;对于其他顶点V则令count[V]=1
C对所有顶点都有count[V]=1
D对所有顶点都有count[V]=0
7.下面的哪个算法可以求图的最短路径____。
选项
AKruskal算法
B Dijkstra算法
CPrim算法
D哈夫曼算法
8.If an undirected graph G = (V, E) contains 7 vertices. Then to guarantee that G is connected in any cases, there has to be at least __ edges.
选项
A6
B15
C16
D21
9.使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是:

Dij1.JPG

选项
A2, 5, 3, 4, 6, 7
B 2, 4, 3, 6, 5, 7
C2, 3, 4, 5, 6, 7
D5, 2, 6, 3, 4, 7
10.试利用Floyed算法,求下图所示有向图的各对顶点之间的最短路径。下列选项哪个给出了正确的最短路径长度矩阵和最短路径矩阵?

在这里插入图片描述

选项
A在这里插入图片描述
B在这里插入图片描述
C在这里插入图片描述
D在这里插入图片描述
### 关于 PTA 平台上的邻接矩阵解题思路 在PTA平台上涉及的数据结构算法题目中,当遇到基于邻接矩阵的问题时,理解其基本概念和操作至关重要。邻接矩阵是一种通过二维数组表示图的方式,在有向图中该矩阵的元素指示从一个节点指向另一节点是否存在边;而在无向图里,则表现为对称性质的矩阵[^1]。 针对具体的应用场景,比如进行深度优先遍历(DFS),需要注意的是连接性的判定条件应依据`Graph->G[V][i] == 1`而非`Graph->G[V][i] != INFINITY`来进行判断,这是因为实际测试案例中的未连通节点间并非被赋予无穷大(INFINITY)值而是默认为0或其他特定数值[^2]。 对于某些复杂度较高的问题求解过程,如最短路径计算,可以考虑使用弗洛伊德(Floyd)算法。此方法的核心在于迭代更新每一对顶点间的最小距离,其中特别强调了三重循环内部次序的重要性——即将中间节点置于最外部循环位置以确保所有可能路径都被考虑到: ```cpp for (int k = 1; k <= N; ++k) for (int i = 1; i <= N; ++i){ for (int j = 1; j <= N; ++j){ if (k == i || k == j || i == j) continue; if (length[i][j] > length[i][k] + length[k][j]) length[i][j] = length[i][k] + length[k][j]; } } ``` 此外,在构建具体的邻接矩阵实例方面,假设存在由a, b, c, d组成的四个顶点以及它们之间的四条无向边<a,b>,<b,c>,<c,d>,<d,a>,那么相应的邻接矩阵将会呈现出如下特点:除了上述提到的这些成对出现的位置设置为1之外,其余部分保持初始状态(通常设为0),以此反映各节点间的直接可达情况[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值