• 「算法笔记」霍尔定理


    一、前置概念

    大家都会的东西。下面的图一般指二分图。

    • 匹配:在图论中,一组匹配(matching)是一个边的集合,其中任意两条边都没有公共端点。

      对于一组匹配 (S)(S) 是一个边集),属于 (S) 的边被称为“匹配边”,匹配边的端点被称为“匹配点”。剩余的边或点被称为“非匹配边”和“非匹配点”。

    • 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配。

    • 完美匹配:如果一个图的某组匹配中,图中所有的顶点都是匹配点(显然同时也符合最大匹配),那么它就是一个完美匹配。

      完美匹配,就是一组匹配中,左部的一个点恰好匹配到右部一个点,同样地,右部的一个点恰好匹配到左部一个点。

    二、霍尔定理

    霍尔定理是判断二分图是否存在完美匹配的充要条件。

    • 首先假设 (|X|leq |Y|)(其中 (X) 是左部的点数,(Y) 是右部的点数)。

      上面的这种说法,意思是,我们能把 (X) 中的点全部用完(作为匹配点),(Y) 中的点不一定用完(将点数较小的一侧的点都用完)。

      另一种说法是:要求 (|X|=|Y|)(点之间一一匹配,所有点都用完)。

      我们可以理解为是两种定义,两种说法哪个对,取决于怎么定义“完美匹配”。但是霍尔定理对它们都适用,所以讨论霍尔定理时,我们采用更一般性的定义。

    • 对于任意 (X) 的子集 (a),设 (b)(a) 能到达的点集的并(通过 (a) 可以唯一确定 (b)),都有 (|a|leq |b|)

    必要性是显然的。因为若某一个 (|a|>|b|)(a) 中必然有某些点是匹配不了的(即完成不了把 (a) 中的点用完这个要求)。充分性不太好证,可以不用管,而且这个定理看起来就很对 QwQ。

    举个栗子:LOJ 6062. 「2017 山东一轮集训 Day2」Pair(题解被吃了)。

    最后,感谢 Dls 的指导,Dlstxdy!

    转载请注明原文链接
  • 相关阅读:
    PHP如何采集网站数据
    十一. Go并发编程singleflight
    2. Go中defer使用注意事项
    九. Go并发编程context.Context
    3. Go中panic与recover注意事项
    Go 性能提升tips边界检查
    十.Go并发编程channel使用
    八. Go并发编程errGroup
    十二. Go并发编程sync/errGroup
    Go知识盲区闭包
  • 原文地址:https://www.cnblogs.com/maoyiting/p/14487725.html
Copyright © 2020-2023  润新知