zoukankan      html  css  js  c++  java
  • 二分图有关证明(感性版)

    (初学绕路,名词都默认)

    特别牛逼的konig:

      二分图中,最大匹配==最小点集覆盖

      基本记住这个就行了。

      证明是构造性的,写出一个正确的算法,然后证明它执行完就得到了最小点集覆盖,并且等于匹配数。

      算法:

    1. 匈牙利
    2. 从右边,从未配节点继续找增广路,肯定找不到,但找到了一个个V,W,VW,WW形的不完整增广路。
    3. 将不完整增广路上的点都染黑色。
    4. 取左边黑点,右边白点。

      证明1:

      要证这样取得的点数恰为匹配数。

      证明点与匹配是一一对应的。

      显然左边黑点都对应一条匹配边,且匹配边右侧也为黑色。

      右边白点向左连的边一定有一条匹配边且不能构成V字路, 左侧为白色。

       (即把匹配边分成两类,属于V字路,不属于V字路,属于的染左边,不属于染右边)

      证明2:

      要证覆盖了所有边。

      把边分两类:

      匹配边,再分两类,都一定覆盖了。

      未配边,也分两类,都一定覆盖了。

      证明3:

      M即是最小覆盖。

      废话。

      

      证毕

      (也可以直接用对偶定理)

    推论:最大独立集 = G - 匹配数

      夹挤。

      小于等于G - 匹配,匹配两个只能选一个。

      大于等于G - 匹配,最小覆盖的补集是独立集。

    PS:最小路径覆盖 = G - 匹配数 右侧(还是左侧。。)反正未配点都是终点

  • 相关阅读:
    弱引用的字典WeakDictionary(转)
    XBox360调试程序失败:Unable to start debugging.Connection to Xbox360 development kit lost
    托管C++中的范型和模板的区别
    智能指针的缺陷
    托管C++笔记(二)原创
    C#通过WMI操作本地共享文件夹
    很随便的随笔
    "The system cannot execute the specified program"
    C++多重继承
    托管C++笔记(一)原创
  • 原文地址:https://www.cnblogs.com/tellmewtf/p/2910718.html
Copyright © 2011-2022 走看看