二分图就不赘述了,我在知识资料整理有相关资料。

.最大匹配  .最小路径覆盖  .最小点覆盖  .最大独立集

最大匹配:二分图中边集最大的那个匹配

最小路径(边)覆盖:用尽量小的不想交简单路径覆盖有向无环图(DAG)G的所有顶点

最小顶点(点)覆盖:用最少的点,让每条边都至少和其中一个点关联

最大独立集:在N个点的图中选出m个点,使这m个点两两之间没有边的点中,m的最大值

二分图匹配模型,二分图有如下几种常见变形:

1.二分图的最小顶点覆盖

最小顶点覆盖要求用最少的点(x或y中的都行),让每条边都至少和其中一个点关联

knoig定理:二分图中最小顶点覆盖等于最大匹配数

2.DAG图中的最小路径覆盖

用尽量少的不相交简单路径覆盖DAG的所有顶点,这就是DAG图的最小路径覆盖问题

结论:DAG图中的最小路径覆盖数 = 节点数(n)-最大匹配数(m)

3.二分图的最大独立集

最大独立问题:在n个点的图G中选出m个点,使这m个点两两之间没有边,求m的最大值

结论:二分图的最大独立集数 = 节点数(n)-最大匹配数(m)

有一种很经典的二分图模型,在一个n*n的矩阵中,这个矩阵里面有k个障碍物,你拥有一把武器,一发弹药一次能消灭一行或者一列的障碍物,求消灭全部障碍物所需的最少弹药数。

可以这样考虑:我们以所有行为二分图的左顶点,所有的列为右顶点,那么如果位于坐标p(x,y)有障碍物,我们就连一条边,然后我们只需要最少的顶点覆盖所有的边即可。这样就是二分图的最小顶点覆盖问题了,我们又知道最大小顶点等于二分图最大匹配。

时间复杂度:
邻接矩阵: O(n3)
邻接表: O(nm)
空间复杂度:
邻接矩阵: O(n2)
邻接表:O(n+m)

/****************************************************
二分图匹配(匈牙利算法的DFS实现)
INIT:g[][]两边定点划分的情况
CALL:res=hungary();输出最大匹配数
优点:适于稠密图,DFS找增广路快,实现简洁易于理解
时间复杂度:O(VE);
****************************************************/
const int MAXN=1000;
int uN,vN;  //u,v数目
int g[MAXN][MAXN];//编号是0~n-1的
int linker[MAXN];
bool used[MAXN];
bool dfs(int u)
{int v;for(v=0;v<vN;v++)if(g[u][v]&&!used[v]){used[v]=true;if(linker[v]==-1||dfs(linker[v])){linker[v]=u;return true;}    }  return false;
}
int hungary()
{int res=0;int u;memset(linker,-1,sizeof(linker));for(u=0;u<uN;u++){memset(used,0,sizeof(used));if(dfs(u))  res++;} return res;
}     

最大匹配——匈牙利算法

转载于:https://www.cnblogs.com/Roni-i/p/7475175.html

二分图-匈牙利算法模板相关推荐

  1. P3386 【模板】二分图最大匹配(匈牙利算法模板)

    题目链接:点击这里 题目大意: 给定一个二分图,其左部点的个数为 nnn ,右部点的个数为 mmm ,边数为 eee ,求其最大匹配的边数. 题目分析: 本题使用的匈牙利算法完成的二分图最大匹配 具体 ...

  2. 洛谷 P2756 飞行员配对方案问题 二分图 匈牙利算法 链式前向星 汉子找妹子模型 最大流模板 FF算法

    题目链接: https://www.luogu.com.cn/problem/P2756 方法一: 算法:1:匈牙利算法 思路:1:汉子找妹子模型 #include<bits/stdc++.h& ...

  3. NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  4. 图论 —— 二分图 —— 匈牙利算法

    [基本概念] 1.交替路 从一个未匹配点出发,依次经过 非匹配边.匹配边.非匹配边- 形成的路径 2.增广路 定义:设 M 为二分图 G 已匹配边的集合,若 P 是图 G 中一条连通两个未匹配点的路径 ...

  5. [SinGuLaRiTy] 二分图匈牙利算法

    [SinGuLaRiTY-1019] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 二分图 二分图是图论中一种特殊的图形.顾名思义,二分图G ...

  6. HDU 2063:过山车(匈牙利算法模板题)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. 染色法判定二分图 匈牙利算法

    染色法判定二分图 思路:相邻的点染不同颜色 看能不能染完 如果过程中出现相邻点相同颜色,就不可以 注意:需要遍历n个点 看此点是否被染色过 如果没有就进行一次dfs或bfs 二分图:可以把点分成两个集 ...

  8. nyoj239 月老的难题 二分图 匈牙利算法

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  9. HDU1083(二分图-匈牙利算法)

    题意:课程个数p,学生个数n,一门课程由若干学生选择.每门课程选择一个课代表,一个学生只能担任一门课的课代表,问是否存在这样的最大匹配. #include<iostream> #inclu ...

最新文章

  1. leveldb源码分析:数据插入续(跳表)
  2. ubuntu平台下搭建PHPWind网站运行环境
  3. 存在于一维空间的稳定分子
  4. python一行代码实现99乘法表_一行代码实现九九乘法表
  5. VTK:可视化之Legend
  6. 最近程序员频繁被抓,如何避免面向监狱编程?!
  7. JavaScript 怎么合并两个JSON,并覆盖重复键
  8. ENSP教程---配置DHCP
  9. 还挺好看!用命令行画思维导图;66天机器学习之旅;斯坦福CS234 强化学习课程;哈佛CS50 计算机科学导论课程;前沿论文 | ShowMeAI资讯日报
  10. HTML和CSS中电子字体的显示与制作
  11. Apache ShenYu 入门
  12. 计算机应用 2010 成绩,2010西电计算机应用技术考研成绩
  13. 向量代数,直线,平面
  14. MAC恢复出厂设置(官方教程)
  15. jquery ui和easy ui联合使用
  16. ★★★Win10切换本地账户(最全版本)
  17. 计算机网络——谢希仁
  18. 小知识·Git、Github、Gitlab以及Gitee的关系
  19. 微信小程序一些常用标签与html的对应关系
  20. 【rk3399】AIO-3399J Linux_SDK Recovery按键无法进入Loader模式

热门文章

  1. python连接mysql中报错1064修改方法
  2. python文件压缩
  3. BZOJ 3432: [Usaco2014 Jan]Cross Country Skiing (二分+染色法)
  4. 在数据库恢复之前将数据库置为单用户模式
  5. Dz0724补丁补掉的一个xss+补掉的另外一个xss
  6. 未来智能社会的一砖一瓦都需要今天我们一点点的探索发现!
  7. php跳出volist,thinkphpvolist
  8. 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
  9. 两台思科交换机vlan划分_华为交换机划分vlan及vlanIP地址的设置
  10. leetcode算法题--Triangle