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

题目一------单源最短路 考场标准时间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

翻译:

解析

我的答案

相关推荐
白狐_7981 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2582 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
Shell运维手记2 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI2 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型3 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光3 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院4 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡5 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
杨石兴5 小时前
31、玩具MoM:用2x2矩阵串起全套流程
人工智能·算法·矩阵·电磁学
江畔柳前堤5 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php