匈牙利法的基本思路:对费用矩阵C的行和列减去某个常数,将C化为有n个位于不同行不同列的零元素,令这些零元素对应的变量取1,其余变量取0,即得到指派问题的最优解。

匈牙利法是基于指派问题的标准型的,标准型需满足以下3个条件

(1)目标函数求min;

(2)效率矩阵为n阶方阵;

(3)效率矩阵中所有元素Cij≥0,且为常数。

匈牙利法的计算步骤

(1)变换效率矩阵C,使每行每列至少有一个0,变换后的矩阵记为B

  • 行变换:找出每行min值,该行各元素减去它;
  • 列变换:找出每列min值,该列各元素减去它;
  • 若某行/列已有0元素,则不用减。

(2)

(3)如果○的个数少于n,则进行这一步。

  1. 没有圈○的行打“√”;
  2. 在已打“√”的中,对×所在打“√”;
  3. 在已打“√”的中,对圈○打“√”;
  4. 重复2和3步骤,直到再也找不到可以打“√”的行/列为止;
  5. 对没有打“√”的行画横线表示去掉这一行,对打“√”的列画横线表示去掉这一列,这样就得到能覆盖所有0的最小横线

(4)变换矩阵B以增加0。

  1. 在未被直线覆盖的所有元素中找到min;
  2. 然后在打“√”的所有去这个min;
  3. 而在打“√”的所有上这个min,以保持原来0不变(为了消除负元素);
  4. 得到新的系数矩阵C。

(5)返回步骤(2),直到得到n个0元素,即得到最优解。

指派问题的其他衍生问题

(1)求maxZ的指派问题

找出系数矩阵中的max,然后令系数矩阵变为max-系数矩阵各元素值,得到新系数矩阵,按照正常匈牙利法即可求到。

(2)人数与工作数不等的指派问题

工作<人数,增加虚拟工作;人数<工作,增加虚拟工人

(3)一个人可做几件事的指派问题

例如:一个人可以做t件事。把这个人复制成有t个人,可以做t件事,每个人做事费用都一样。

(4)某人一定不能做某事的指派问题

求minZ,Cij取正无穷M;求maxZ,Cij取0。

例题:

版权声明:本文为博主原创文章,未经博主允许不得转载。

指派问题:匈牙利算法相关推荐

  1. (二)匈牙利算法简介

    1.历史 匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,广泛应用在运筹学领域, 美国数学家哈罗德·库恩于1955年提出该算法,之所以被称作匈牙利算法是因为算法很大一部分是基于以前匈牙利 ...

  2. 数学建模:整数规划—指派模型与匈牙利算法

    目录 标准指派模型 匈牙利算法 基本原理 匈牙利算法步骤 非标准型的指派问题 对于限制全部或部分决策变量取离散非负整数值的线性规划, 称之整数线性规划, 简称整数规划. 整数规划的一种特殊情形是 0− ...

  3. 匈牙利算法解决指派问题清晰流程

    匈牙利算法解决指派问题清晰流程 百度词条上,指派问题(Assignment problem)是这么定义的:在满足特定指派要求条件下,使指派方案总体效果最佳.如:有若干项工作需要分配给若干人(或部门)来 ...

  4. C#实现指派问题的匈牙利算法(运筹学)

    代码平台 VS2019(32位) + Office2019(64位) 注意事项 1.运行过程中出现未注册JET.OLEDB.12.0错误信息,需要下载AccessDatabaseEngine数据访问组 ...

  5. 匈牙利算法求解指派问题(C++代码)

    前言 匈牙利算法能精确求解指派问题,获取最优分配方案.匈牙利算法求解指派问题基于以下原理:在一个成本矩阵中,对某一行或者某一列加上或减去一个数,最优的分配方案不变.基于此原理,我们可以对成本矩阵进行变 ...

  6. 指派问题与匈牙利算法

    一.问题引入 指派问题 有n项不同的工作或任务,需要n个人去完成,要求每人只完成一项工作.由于每人的知识.能力.经验等不同,故各人完成不同任务所需的时间不同.问应指派何人完成何项工作,使完成n项工作总 ...

  7. 匈牙利算法解指派问题(Java代码)

    先介绍匈牙利算法 (Hungary) 的求解过程,我直接把代码贴上去就可以吧,有需要的可以联系我. 这个java代码是我根据 "数据魔术师" 公众号中的 c++ 代码改过来的,算是 ...

  8. 利用python解决指派问题(匈牙利算法)

    前言:最近在备战数模,看到了指派问题,饶有兴趣,百度上找了很多关于指派问题的解法,很明显用的是匈牙利算法,手工的计算,各种各种的博客都很详尽,大概都了解了具体原理(不懂的人可以自行百度),但是基本找不 ...

  9. 匈牙利算法-指派问题、二分图问题等

    维基百科:匈牙利算法 https://zh.wikipedia.org/wiki/匈牙利算法

  10. 数学建模 匈牙利算法求解整数规划基本原理与编程实现

    投资问题(0-1规划) 匈牙利算法求解0-1规划问题 解答: 项目之间是互斥关系,所以使用x1+x2+x3=1; 项目5是以项目1为先验条件,所以x5<=x1,意味着x1=1时,x5=1或0 , ...

最新文章

  1. java 整合solr_SpringBoot整合Spring Data Solr
  2. win7台式电脑怎么连wifi_win7系统怎么设置WiFi共享
  3. Sahi (2) —— https/SSL配置(102 Tutorial)
  4. linux学习(3) 关机使命
  5. Git - 使用指南
  6. Android安装包apk文件在某些版本操作系统上安装解析包出错问题的解决办法
  7. ML之LiRDNNEL:基于skflow的LiR、DNN、sklearn的RF对Boston(波士顿房价)数据集进行回归预测(房价)
  8. 2PC协议(2-phase-commit protocol)
  9. C#Redis哈希Hashes
  10. 怎样去掉警告 log4j:WARN No appenders could be found for logger
  11. Linux内核代码,第一次看到这样使用的宏
  12. mysql负责均衡读写分离_MySQL读写分离之负载均衡
  13. [NOIP2015] 提高组 洛谷P2661 信息传递
  14. 大数据之-Hadoop完全分布式_完全分布式配置总结---大数据之hadoop工作笔记0040
  15. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解
  16. 开源GIS(七)——openlayers中单击获取要素(深度好文)
  17. 【JavaSE】黑马程序员 刘意 基础部分笔记
  18. 管理信息系统期末复习
  19. Lightroom Classic CC 2019 for Mac永久破解激活方法(含lr cc 2019破解补丁)
  20. vue+elemnt ul 图片上传隐藏按钮+图片回显

热门文章

  1. 基于微信小程序的毕业设计题目(33)PHP校园失物招领小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  2. CSS背景图片居中置顶
  3. ibm+i+to+mysql_IBM 的数据库Informix 常用代语法
  4. 能够识别图片文字的软件有吗
  5. adobe怎么统计字数_pdf文件怎么快速统计字数?
  6. 如何用python下载图片_Python之如何优雅的下载一堆小哥哥图片
  7. editormd生成博客编辑页面
  8. 【中等】迷你语法分析器
  9. Beego 使用redigo连接redis
  10. ssl登录服务器未响应是什么意思,工行的网上银行在确认转账时网页总是未响应...