伏格尔法的核心是罚数
罚数怎么来?对每一行、每一列,找出最小的两个单位运价,用第二小减去最小,得到罚数。这个差值表示:如果这一行或这一列没有选到最低运价,大概要多付多少代价。差值越大,越不应该错过。
所以伏格尔法每一步先算行罚数和列罚数,再选最大罚数所在的行或列。在这条行或列里,选择单位运价最小的格子分配货量。
| 步骤 | 做什么 | 易错点 |
|---|---|---|
| 1 | 每行每列找两个最小运价 | 不要把已划去的行列算进去 |
| 2 | 第二小减最小得到罚数 | 罚数不是总成本 |
| 3 | 选最大罚数所在行或列 | 并列时按题目或成本辅助判断 |
| 4 | 在该行或列选最小运价格 | 不是选最大罚数格 |
| 5 | 分配 min(供应量, 需求量) | 分配后更新供需并划去行或列 |
分配货量时只看供需较小值
选定格子以后,能分配多少,不是随便填。要看该供应点剩余供应量和该需求点剩余需求量,取较小值。分配后,如果某一行供应量用完,就划掉这一行;如果某一列需求量满足,就划掉这一列。
如果一行一列同时为 0,处理时要保留一个零供需占位的判断,避免后面基变量数量不足。这一点在更完整的运输问题里会出现,软考如果只考初始方案,通常重点还是罚数、分配和更新。
小例子
某格子所在供应点还剩 30,需求点还缺 20。
这次最多分配 20,因为需求点只能再接收 20。
分配后该需求列满足,列被划去;供应点还剩 10,后面继续分配。
伏格尔法和最小元素法有什么区别
最小元素法更直接:每次找当前最小运价分配。伏格尔法多看了一层“如果不选低价会损失多少”,所以通常能得到质量更好的初始方案。它不是保证一步到最优,但比完全贪心更考虑机会成本。
考试如果问方法特点,可以记住:伏格尔法用行列罚数决定优先级,再在最大罚数对应的行或列中选择最小运价分配。这个顺序不能反。很多错题就是先找了全表最小运价,做成了最小元素法。
| 方法 | 核心动作 | 区别 |
|---|---|---|
| 最小元素法 | 每次选当前最小运价 | 简单直接 |
| 伏格尔法 | 先算罚数,再选最大罚数行列 | 考虑错过低价的损失 |
| 西北角法 | 从左上角开始分配 | 不考虑运价大小 |
| 位势法 | 检验和优化方案 | 通常用于后续最优性判断 |
做题时把表格划干净
伏格尔法最怕表格乱。每分配一次,都要更新供应量和需求量,划去已经满足的行或列,再重新计算剩余行列的罚数。不要沿用上一轮罚数,因为可选格子变了,最小和第二小也可能变。
如果考试时间紧,建议用铅笔或草稿纸按轮次记录:第几轮、最大罚数在哪、选哪个格子、分配多少、划去哪行哪列。这个记录看起来慢,实际能减少返工。