Hungarian algorithm匈 牙 利 算 法

本文介绍了匈牙利算法在解决指派问题时的应用,包括如何寻找最小总开销的解决方案。算法流程涉及将问题转化为矩阵,并通过补充0来调整。在人数与工作数不等或一人可做多事的情况下,算法同样适用,直至找到包含n个0元素的最优解。
摘要由CSDN通过智能技术生成
代码流程

例如,n个人干n项工作的指派问题,如何让总的开销最小。
首先知道其代价矩阵:
在这里插入图片描述

from scipy.optimize import linear_sum_assignment
 
cost =np.array([[4,1,3],[2,0,5],[3,2,2]])
row_ind,col_ind=linear_sum_assignment(cost)
print(row_ind)#开销矩阵对应的行索引
print(col_ind)#对应行索引的最优指派的列索引
print(cost[row_ind,col_ind])#提取每个行索引的最优指派列索引所在的元素,形成数组
print(cost[row_ind,col_ind].sum())#数组求和

==============
[0 1 2] # 第0个人,第1个人,第2个人。
[1 0 2]# 第1件事, 第0件事, 第2件事。(与上面对应)
#第0个人干第1项工作,第1个人干第0项工作,第2个人干第2项工作。代价最小。
计算工作量:[1 2 2]=5

速算流程

步骤:
在这里插入图片描述

正常情况下求指派问题最小时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值