【结论】二分图&匈牙利算法

一、
1、
匹配:~
匹配点、未匹配点(未盖点):~
最大匹配:边数最多
完全匹配:无未盖点
最佳匹配:权和最大
完备匹配:|M|=|X|<|Y|
完美匹配:|M|=|X|=|Y|
2、
增广路(增广轨):…..交替出现….,称P为相对M的一条增广路。
结论:
(1)、长度必为奇数。
(2)、若两未盖点间仅含一条边,该边为增广路
(3)、取反后可得到更大的匹配
(4)、当且仅当不存在相对M的增光路时,M为最大匹配
3、
二分图:……两部分……无向图

二、最大匹配问题
1、匈牙利算法


int ma[needp][needp],link[needp],visit[needp];
int n,m,t;//nx集合中点数

#define p ma[x][i]
bool find(int x)
{
    for(int i=1;i<=ma[x][0];i++)
    {
        if(visit[p]==t) continue;
        visit[p]=t;
        if(link[p]==0||find(link[p]))
        {
            link[p]=x;
            return true;
        }
    }
    return false;
}

int main()
{   
    int cnt=0;
    for(t=1;t<=n;t++) if(find(t)) cnt++;
} 

2、二分图的最大匹配:可看做由x指向y的单向边,且x、y可独立编号

三、最小点覆盖问题(二分图)
1、 Konig定理:一个二分图的最小点覆盖数等于最大匹配数
2、结论:最小点覆盖中一个点必在一个最大匹配的某一边上
3、找出最小覆盖点:从上半部每个未盖点出发,按“交替出现”规则,将走过的点标记。上部未标记加下部标记即为所求。

四、最大独立集问题
1、无向图的独立集:互不关联的点集
2、
二分图最大独立集数=顶点总数-最大匹配数
二分图最大独立集=除最小覆盖外的点

五、最小边覆盖
边数=点数-最大匹配

六、最小路径覆盖问题
1、
路径覆盖:覆盖所有顶点、无公共点的路径们
最小路径覆盖:~
2、 DAG的最小路径覆盖数=原图顶点数-拆点后,x->y变为x->y’ 的二分图的最大匹配。
3、二分图的最小路径覆盖数=点数-最小覆盖。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值