跳到正文

带权最短路算法实现

45 分钟

本课针对 408 全真卷中的 带权最短路算法实现。目标是既能在两分单选中快速排除,也能在十分综合题中保留完整过程。

考纲模型

Dijkstra 对非负边权图维护已确定集合;每次取当前最小未确定距离并松弛出边。

先定义变量、单位、初始状态与不变量。遇到结构题画字段,遇到时序题画时间线,遇到算法题写输入输出和终止条件。结论必须由题设推出,不能依赖背过的某一道题。

综合推演

dist[v] 表示当前已知上界;顶点出优先队列时若距离已过期要跳过。邻接表加堆的复杂度约为 O((V+E)logV)。

书写顺序固定为:规则或公式、参数代入、中间状态、最终结论。计算完成后做数量级与边界检查;代码实现还要验证空图、不可达、重复访问和最小规模。

高频失分点

出现负权边时 Dijkstra 的贪心确定性失效;不可达顶点不能输出伪造的大整数。

全真训练中,选择题最多用反例与量词检查;综合题即使最后数值错误,也要保留可评分的中间式、状态表和复杂度。代码题必须真运行,不接受只覆盖样例的硬编码。

课后验收

完成本课单选、多选和综合应用题。单选解释三个错误项,多选不得漏选;计算保留单位,文本按要点作答,代码必须通过四个独立测试。次日遮住答案重做,并记录耗时。

Practice

本课练习

3

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1全真单选:带权最短路算法实现 2

下列说法正确的是哪一项?

登录 后答题可以领小红花
2全真多选:带权最短路算法实现 2

选择所有正确说法,漏选或多选均不得分。

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领小红花
3全真综合:带权最短路算法实现 4

输入 n,m,s,随后 m 条有向非负权边 u v w。输出 s 到 0..n-1 的最短距离,不可达输出 -1。使用 Python 3。

登录 后答题可以领小红花