返回
当前 - 选择题 - 预测与决策
困难
题号:0120200500036
单选题
2020年5月第36题

甲、乙、丙、丁四个任务分配在A、B、C. D四台机器上执行,每台机器执行一个任务,所需的成本(单位:百元)如下表所示。适当分配使总成本最低的最优方案中,任务乙应由机器(C)执行。

问题(1)
浓缩知识点

匈牙利算法是专门解决n×n指派问题的经典算法,这类问题的核心是将n个任务一对一分配给n个执行单元,每个单元仅完成一项任务,每项任务仅由一个单元承担,目标是实现总成本最小或总收益最大。该算法的核心支撑性质是:对分配矩阵的任意一行或一列的所有元素同时加减某个常数,不会改变最优分配的对应位置,只会让最终的总目标值同步发生对应变化,这是迭代简化矩阵的关键依据。算法的核心执行逻辑分为几步:首先对矩阵的每一行元素减去该行的最小值,再对每一列元素减去该列的最小值,得到包含多个0元素的简化矩阵,0元素代表对应任务与单元的分配是当前的最优候选;接下来用最少的横线或竖线覆盖所有0元素,若覆盖线的数量等于n,说明存在n个相互独立的0元素,可直接确定最优分配方案;若覆盖线数量小于n,则找到未被覆盖元素中的最小值,对所有未被覆盖元素减去该最小值,在横竖覆盖线的交点元素处加上该最小值,重复线覆盖判断环节,直到覆盖线数量等于n,就能锁定最优分配。此外,该算法不仅能解决最小成本指派问题,还可处理最大化收益问题,只需将原收益矩阵转换为收益损失矩阵,即用矩阵中的最大元素减去每个元素,再按照最小化问题的流程求解即可,在项目人员调度、设备任务分配、物流路径指派等多种一对一分配场景中都能高效应用。

正确答案
C

**此题考察匈牙利算法的应用。

**
根据任一行,任一列各元素都减或加一常数后,并不会影响最优解的位置,只是目标值(分配方案的各项和)也减或加了这一常数这一性质。首先,用每一行的值减去该行的最小值得到如下图结果:

然后用每一列的值减去该列的最小值得到如下图结果:

覆盖所有的 0,最小线覆盖法,我们尝试用尽可能少的横线或竖线覆盖所有的 0:

最小未覆盖元素是 1,我们执行调整:从未被覆盖的元素中减去 1, 在线的交点位置加 1,其余保持不变,得到下面的图:

可以看到此时能分配 4 个独立的 0。
所以根据零元素对应的位置我们可以得到,把甲任务分配给A机器,乙任务分配给C机器,丙任务分配给B机器,丁任务分配给D机器时等达到最低成本为1+10+5+5=21,因此,选项 C 正确。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有