匈牙利算法(简单易懂)

匈牙利算法(简单易懂)

之前在网上看了一些匈牙利算法的题解,发现有两种情况:1.看不懂算法描述 2.看得懂算法描述,看不懂代码

1.二分图的定义

通俗点讲,就是有两个班的学生,可能A班的学生x和B班的学生y同意互相抄作业(两方都同意,即两个人都不会向老师打小报告),但是因为每个班的班主任很严,他们不允许自班到两个同学互相抄作业,也就是说A班的两个学生不能互相抄作业,B班的两个学生也不能互相抄作业。将每个学生看成一个点,互相抄过作业的连一条边,就是一个二分图。如图:
Alt

二分图最大匹配

但是,可能会出现这种情况:A班的学生x同意和B班的所有人互相抄作业,A班的学生y只同意和B班到学生z抄作业,如果x和z一起抄作业,z就不想和y互相抄作业了(作业抄一份就够了),那么这样就会引发学生x和学生y的矛盾(因为学生y抄不了作业了)。于是,我们希望找到一种抄作业的分配方式,使不能抄作业的人最少。

匈牙利算法流程

Alt
学生1说:我要抄A的作业!(后话:如愿以偿)
学生2

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值