软考计算题 · 伏格尔法 · 运输问题

伏格尔法怎么做?

伏格尔法这类题,不要硬背一串操作。老师一般会把它讲成一句话:先找“错过最低运价会损失多少”,也就是罚数;罚数越大,越应该优先处理。它的目的不是直接证明最优,而是构造一个比较好的初始调运方案。

软考计算题专题 软考题库编辑部 持续更新

伏格尔法的核心是罚数

罚数怎么来?对每一行、每一列,找出最小的两个单位运价,用第二小减去最小,得到罚数。这个差值表示:如果这一行或这一列没有选到最低运价,大概要多付多少代价。差值越大,越不应该错过。

所以伏格尔法每一步先算行罚数和列罚数,再选最大罚数所在的行或列。在这条行或列里,选择单位运价最小的格子分配货量。

步骤做什么易错点
1每行每列找两个最小运价不要把已划去的行列算进去
2第二小减最小得到罚数罚数不是总成本
3选最大罚数所在行或列并列时按题目或成本辅助判断
4在该行或列选最小运价格不是选最大罚数格
5分配 min(供应量, 需求量)分配后更新供需并划去行或列

分配货量时只看供需较小值

选定格子以后,能分配多少,不是随便填。要看该供应点剩余供应量和该需求点剩余需求量,取较小值。分配后,如果某一行供应量用完,就划掉这一行;如果某一列需求量满足,就划掉这一列。

如果一行一列同时为 0,处理时要保留一个零供需占位的判断,避免后面基变量数量不足。这一点在更完整的运输问题里会出现,软考如果只考初始方案,通常重点还是罚数、分配和更新。

小例子

某格子所在供应点还剩 30,需求点还缺 20。

这次最多分配 20,因为需求点只能再接收 20。

分配后该需求列满足,列被划去;供应点还剩 10,后面继续分配。

伏格尔法和最小元素法有什么区别

最小元素法更直接:每次找当前最小运价分配。伏格尔法多看了一层“如果不选低价会损失多少”,所以通常能得到质量更好的初始方案。它不是保证一步到最优,但比完全贪心更考虑机会成本。

考试如果问方法特点,可以记住:伏格尔法用行列罚数决定优先级,再在最大罚数对应的行或列中选择最小运价分配。这个顺序不能反。很多错题就是先找了全表最小运价,做成了最小元素法。

方法核心动作区别
最小元素法每次选当前最小运价简单直接
伏格尔法先算罚数,再选最大罚数行列考虑错过低价的损失
西北角法从左上角开始分配不考虑运价大小
位势法检验和优化方案通常用于后续最优性判断

做题时把表格划干净

伏格尔法最怕表格乱。每分配一次,都要更新供应量和需求量,划去已经满足的行或列,再重新计算剩余行列的罚数。不要沿用上一轮罚数,因为可选格子变了,最小和第二小也可能变。

如果考试时间紧,建议用铅笔或草稿纸按轮次记录:第几轮、最大罚数在哪、选哪个格子、分配多少、划去哪行哪列。这个记录看起来慢,实际能减少返工。