zoukankan      html  css  js  c++  java
  • 【被迫营业10】二分图最大独立集

    模型:有两个集(A)(B),现在要从两个集合中选出一些,但是会有一些关系限制,对于每个限制((i,j)),表示(A)中的第(i)个元素和(B)中的第(j)个元素不能同时选。试求出最多能选几个元素。

    Solution

    考虑二分图。
    建立超级源点(S)和超级汇点(T)
    对于所有(x in A),连边((S,x,1))
    对于所有(x in B),连边((x,T,1))
    对于每个限制((i,j)),连边((A_i,B_j,+infty))
    然后跑最大流即可。

    简单证明:
    首先我们考虑将所有的元素全部选上,然后再删掉最小数量的元素。
    发现若(S)(T)不连通,那么这个选择就是正确的。于是考虑到最小割。
    在上面建图过程中,割掉的边不会是限制边,换句话说,一定是简单割
    那么我们只需要跑一下最小割,未被割掉的边所代表的点就是选择方案。
    因为对于一组限制((i,j)),如果((S,A_i))((B_j,T))未被割掉,那么(S)(T)仍然联通,与割的性质不符。
    因为最大流最小割定理,所以等同于跑一遍最大流。
    证毕。

  • 相关阅读:
    SQLServer 时间差运算
    phpStudy
    解决Apache/PHP无法启动的问题
    apche的主配置文件)
    知识总结
    学完了js的知识,一起分享总结知识点
    JS的学习体会与分享
    SpringBoot -- pom.xml文件
    c++基本知识点
    c语言基本常识5
  • 原文地址:https://www.cnblogs.com/luyiming123blog/p/14438070.html
Copyright © 2011-2022 走看看