在二分图最大匹配中,每个点(不管是X方点还是Y方点)最多只能和一条匹配边相关联,然而,我们经常遇到这种问题,即二分图匹配中一个点可以和多条匹配边相关联,但有上限,或者说,Li表示点i最多可以和多少条匹配边相关联。

二分图多重匹配分为二分图多重最大匹配与二分图多重最优匹配两种,分别可以用最大流与最大费用最大流解决。

(1)二分图多重最大匹配:
在原图上建立源点S和汇点T,S向每个X方点连一条容量为该X方点L值的边,每个Y方点向T连一条容量为该Y方点L值的边,原来二分图中各边在新的网络中仍存在,容量为1(若该边可以使用多次则容量大于1),求该网络的最大流,就是该二分图多重最大匹配的值。

(2)二分图多重最优匹配:
在原图上建立源点S和汇点T,S向每个X方点连一条容量为该X方点L值、费用为0的边,每个Y方点向T连一条容量为该Y方点L值、费用为0的边,原来二分图中各边在新的网络中仍存在,容量为1(若该边可以使用多次则容量大于1),费用为该边的权值。求该网络的最大费用最大流,就是该二分图多重最优匹配的值。

例题:
【1】POJ1698 Alice's Chance
将电影作为X方点,每一天作为Y方点(最多50周,每周7天,所以共设350个Y方点),若第i个电影可以在第j天搞就连边(i, j)。每个X方点的L值为该电影总共要搞多少天,每个Y方点的L值为1(每天最多只能搞一个电影),然后求二分图多重最大匹配,若能使所有从源点连向X方点的边都满流,则输出Yes,否则输出No。
【2】POJ2112 Optimal Milking
先预处理求出每两个点(包括挤奶点和牛)间的最短距离,然后将所有挤奶点作为X方点(L值为该挤奶点最多可以容纳多少牛),所有牛作为Y方点(L值为1),Xi和Yj间边的权值为这两个点之间的最短距离(若这两点间不存在路径则此处无边),然后问题就变成了求一个多重匹配,使得每个Y方点都有匹配点且匹配边中权值的最大值最小。
可以枚举最大边权值S,然后,原图中所有权值大于S的边都要删去。若此时图中存在符合要求的多重匹配,则S合法否则S不合法。由于S的合法性是单调的,所以可以二分枚举S。

最新文章

  1. git用法之[回滚代码]
  2. Time-travel Models
  3. TJ2016 CTF Write up
  4. Hibernate的初步
  5. Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
  6. 《python for data analysis》第十章,时间序列
  7. asyncio模块中的Future和Task
  8. layer常用方法代码
  9. HDU1078 FatMouse and Cheese(DFS+DP) 2016-07-24 14:05 70人阅读 评论(0) 收藏
  10. XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit
  11. Django实战(12):增加目录页,设定统一布局
  12. 20155224 2016-2017-2 《Java程序设计》第3周学习总结
  13. flume jetty 进程关系 flume jetty 跨域问题 jetty 源码分析
  14. 【Network Architecture】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(转)
  15. [洛谷P3763] [TJOI2017]DNA
  16. R-一页多图
  17. 解析车辆VIN码识别(车架号识别)系统
  18. L2-001. 紧急救援---(Dijkstra,记录路径)
  19. css的checkbox样式变化
  20. 用echarts绘制中国地图

热门文章

  1. [书目20140902]实战Windows Azure——微软云计算平台技术详解 --徐子岩
  2. RabbitMQ六:通过routingkey模拟日志
  3. AJPFX关于抽象方法和接口
  4. 解决::processDebugResourcesERROR: In<declare-styleable> FontFamilyFont编译报错
  5. Spark学习笔记--Spark在Windows下的环境搭建(转)
  6. R Programming week1-Data Type
  7. php判断是否引入某文件
  8. Jvisualvm--JAVA性能分析工具
  9. iTOP-4418/6818开发板支持锂电池供电方案
  10. 入门迅速、应用广泛、月薪两万,马哥Python前景为什么这么好?