指派问题--匈牙利算法

题目

算法条件

算法本质

匈牙利算法(Hungarian algorithm)是解决指派问题(assignment problem)的一种经典算法。指派问题是一个最优化问题,旨在在给定的n个任务和n个工人之间,找到最优的任务分配方案,使得总体成本或时间最小化。而匈牙利算法则是解决这类问题的高效算法之一。

匈牙利算法的本质是利用图论的方法来求解指派问题。它基于二分图和增广路径的概念,通过不断寻找增广路径来寻找最优解。

具体而言,匈牙利算法将任务和工人分别作为二分图的两个顶点集,然后构建一个邻接矩阵来表示任务间的成本(或时间)。算法的主要思路是不断寻找增广路径,将未匹配的任务和工人匹配起来,直到无法找到新的增广路径为止。

匈牙利算法通过深度优先搜索或广度优先搜索来找到增广路径,并通过交替匹配和交替标记的方式进行任务和工人的匹配。在每次寻找增广路径时,算法会尝试选择成本最低的未匹配任务,然后根据当前匹配情况进行调整。

最终,匈牙利算法能够找到最优的任务分配方案,并计算出最小的总体成本或时间。

匈牙利算法的时间复杂度为O(n^3),其中n为任务(工人)的数量。它已经被广泛应用于任务分配、人员调度、运输规划等实际问题中,是解决指派问题的经典算法之一。

实操

步骤一

步骤二

步骤三

步骤四

步骤五

非标准

一、表格中的数为利润,要求最大化

用最大元素减去后,在负数中找独立的0,相当于找最大的

四、

X13<=0; 即不让他做这个工作

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值