算法设计与分析 作业三 纯答案

题目一------单源最短路 考场标准时间15m

维护S Q表,Q按照从小到大的价值排序,每次选最小代价的点出来探索。

翻译:

在给定的带权有向图上运行Dijkstra算法,计算从顶点 a 出发的最短路径树(shortest-path tree)

具体要求:

在每一次迭代(循环)中,请展示以下四个中间结果:

  • (a) 从**优先队列(priority queue)**中选出的顶点;

  • (b) 每个顶点当前的最短距离估计值 dv

  • (c) 每个顶点的前驱节点 πv(即路径上的上一个节点);

  • (d) 已确定集合 S 的内容,以及剩余优先队列 Q 的内容。

最后:

画出或列出最终生成的最短路径树

解析

我的答案

维护S Q表,Q按照从小到大的价值排序,每次选最小代价的点出来探索。

题目二------多源最短路 考场标准时间40m

原理是由于DJ法无法处理负权边问题,因此引入一个"零势能面",将负权边转为正权边。

首先引入一个超级原点,就是零势能面,然后计算所有点到原点的最短路,用BellmanFOrd即可。

遍历所有变更新到无变化。

然后记录所有点到原点的最短路长度(相当于海拔高度有正有负),然后就能得到最低的海平面。

我们的任务就是以最低的海平面为0m。

因此引入变化势能函数尖w(A,B)=w(A,B)+h(A)-h(B)

这样算出来的新权重就是全为正的,可以用DJ法。

接下来就是用多源DJ法计算多源最短路,每次算出来一个点都要计算转换后的权重,也就是

σ(A,B)=δ(A,B)+h(B)-h(A),注意,这里是后减前,是为了还原到原始权重去计算!!!

这个σ就是最短路距离了!

翻译:用约翰逊算法解决多源最短路的问题

总体思路:

将负权边转换为非负权边,引入势能函数,保证负权非负

1.引入超级原点S,将S与所有节点相连,权重为0

2.列出所有边

3.使用Bellmanford进行单元最短路计算,列边松弛列dΠ,得到S到各个点的最短路

4.计算势能 h(v)=δ(s,v)

5.计算等效边权w(u,v)_hat

6.这时就可以迪杰斯特拉了

解析

我的答案

题目三------找最短增广路 考场标准时间16m

翻译:

展示 Edmonds-Karp 算法在上述流量网络上的执行过程。请在每次迭代中,展示流量网络、残余网络、增广路径以及增加的流量(增量流)。最后,展示最大流量以及对应的最小割。

解析

我的答案

题目四------线性规划问题 考场标准时间25m

翻译:

给定以下线性规划问题 (LP),

最大化 z=x1+2x2

约束条件 (s.t.):

x2≤2x1+2

x1+3x2≤27

x1+x2≤15

2x1≤x2+18

x≥0

通过几何论证和单纯形法计算其最优解。

解析

流程参考下面:

先进行STF和RLF验证,符合形式后再进行求解即可。

我的答案

题目五------二分图匹配问题(匈牙利树算法) 考查标准时间12m

翻译:

解析

我的答案

相关推荐
shehuiyuelaiyuehao6 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
203号居民8 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾8 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP8 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
ZhouDevin9 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉
Tim_109 小时前
【LeetCode】29、两数相除
算法·leetcode·职场和发展
船厂电气自动化ai大模型10 小时前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
余额瞒着我当琳10 小时前
算法修炼 chapter 2 双指针进阶、盛最多水的容器、有效三角形的个数、两数之和、三数之和、四数之和
算法
你压到我腿毛了66610 小时前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法
靠沿11 小时前
贪心算法专题(三)
算法·贪心算法