首页 > 其他分享 >Dilworth 定理与二分图部分理论

Dilworth 定理与二分图部分理论

时间:2024-10-21 18:59:01浏览次数:1  
标签:二分 匹配 最大 覆盖 定理 最小 Dilworth 反链 out

给定一个 DAG,定义

  • 链:一条链内任意两点之间都存在一条路径
  • 反链:任意两点都不存在路径

Dilworth 定理:最长反链 \(=\) 最小链覆盖。

最小链覆盖内一个点只能归属于一条链,但链不一定是连续的。

事实上这个还能转化为“选出若干条(一般定义下的)链,但一个点可以在多条链内”,本质相同。

求出 DAG 的传递闭包,则可转化为选出若干条链(指一般定义下的链),每个点只能在一条链内。

称这个问题为最小不可重链覆盖

解决方法是,把每个点拆成 \(x_{in}, x_{out}\),对于一条边 \((u, v)\) 连接 \((u_{out}, v_{in})\)。

最后求出最大匹配。

最小不可重链覆盖,显然选出链的条数为 \(n-\) 边数,而一个 \(x_{in}\) 或 \(x_{out}\) 只能对应一条边,于是显然边数为最大匹配。

于是答案为 \(n-\) 最大匹配。

在构造合法解之前,我们先来过一过二分图理论!!


  1. 最大独立集 $= n - $ 最小点覆盖

这个在一般图上也成立,求出任意最大独立集 / 最小点覆盖后取反即可。

  1. König 定理:最小点覆盖 \(=\) 最大匹配

证明:显然最小点覆盖 \(\ge\) 最大匹配。

以下构造可以构造出一组 \(=\) 最大匹配的最小点覆盖。

如何求最大匹配?一般做法是建图 \((S, u, 1), (u, v, 1), (v, T, 1)\) 再跑最大流。

根据 最大流=最小割,该图的最小割同样也是最大匹配。

最小割的构造:在残量网络上找出所有两个端点一个与 \(S\) 联通,一个不与 \(S\) 联通的边。

观察到最小割中隔断的边必然是 \((S, u, 1)\) 或 \((v, T, 1)\),那取出所有这种点构成的点集即为最小点覆盖。

正确性显然,如果边 \((u, v)\) 中 \(u\) 和 \(v\) 都没被割掉,\(S-u-v-T\) 形成增广路。

来点 例题:CF1721F - Matching Reduction


回到 Dilworth 定理的解构造上。

拿出二分图的最大独立集 \(I\),把所有满足 \(x_{in}, x_{out} \in I\) 的 \(x\) 都取出来放到最长反链 \(A\) 里。

正确性:\(I\) 为独立集(注意到这依赖于你是对传递闭包建图的)。

最大性:

设 \(S\) 为最大匹配,则 \(I=2n-S\),\(I-A\le n\) 故 \(A\ge I-n=n-S\)。

这样!我们构造出了一个大小至少是 \(n-m\)的反链!然后最小链覆盖的大小就是 \(n-m\),反链的大小不会超过它,所以这个反链的大小就是 \(n-m\),且是我们要求的最大反链。


模板:P4298 - [CTSC2008] 祭祀

模板微调:CF590E - Birthday

标签:二分,匹配,最大,覆盖,定理,最小,Dilworth,反链,out
From: https://www.cnblogs.com/fjy666/p/-/dilworth

相关文章

  • P11217 【MX-S4-T1】「yyOI R2」youyou 的垃圾桶(线段树上二分)
    link赛时是想到普通的线段树+二分\(O(q\log^2n)\),预期是70pts,实际50pts后面发现又是在longlong类型的计算中,1ll写成了1,然后爆负数,复杂度就错了,T了四个点开题,读起来是一个很套路的题目要对区间在线修改,区间加、(区间乘?),发现数据很大,那就是线段树、树状数组维护了思......
  • 二分查找
    1.好处二分查找(折半查找)效率高,时间复杂度低,但是仅能用于有序数组2.代码及其逻辑二分查找的逻辑就是通过我们想要找到的值与中间量(mid)作比较,来不断缩小范围,如果说我们想要查找的值比中间量要大,那么我们就会取前半个区间,在进行一次与中间量的比较,不断的循环,就能找到我们想要查......
  • 二分求操作后的最大最小中位数
    这类题是让你求对序列进行一系列操作之后的最小/最大中位数求最小中位数二分最小中位数,显然二分要符合mid越大越对,边界才能向下收缩。对于这个条件,我们选择计算小于等于当前mid的数才是对的,因为这样显然mid越大cnt越大,而符合这个条件,我们就不断收缩上界,直到达到第......
  • Matlab使用LSTM或BiLSTM对一维信号(语音信号、心电信号等)进行二分类源程序。也可以改
     Matlab使用LSTM或BiLSTM对一维信号(语音信号、心电信号等)进行二分类源程序。也可以改成多分类。包含数据和代码,数据可以直接替换为自己的数据。如果用BiLSTM,程序中只需要把lstmlayer改为bilstmlayer即为BiLSTM网络,其他地方不需要任何改动。工作如下:1、加载数据集,一共为......
  • 茴香豆的茴有四种写法,那二分有几种写法?
    《编程珠玑》一书的作者JonBentley曾经说过:“90%的程序员无法正确实现二分查找算法...”,今天,本文将带领你会写二分。经典写法现在我们来求解这样一个通用的二分查找问题:有一个不下降序列$a$,我们要从其中所有找到大于等于$k$的数的最小的下标。boolcheck(intindex)......
  • 704.二分查找
    题目给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1,0,3,......
  • 【数据结构与算法】之二分查找
    二分查找(BinarySearch)是一种在有序数组中查找特定元素的搜索算法。它通过比较数组中间元素与目标值来工作,从而将搜索范围缩小到一半,也称折半查找,是一种非常高效的工作于有序数组的查找算法。本文主要介绍二分查找及其几个变种,包括基础版、改变版、平衡版和Java版,以及Leftmost......
  • UOJ 80:二分图最大权匹配 ← KM算法
    【KM算法简介】Kuhn-Munkres算法,简称KM算法,是用于“二分图带权最大匹配问题”的经典算法。【题目来源】https://uoj.ac/problem/80【题目描述】从前一个和谐的班级,有nl个是男生,有nr个是女生。编号分别为1,……,nl和1,……,nr。有若干个这样的条件:第v个男生......
  • 鞅与停时定理
    鞅与停时定理呆猫不会数学,要证明也是直接抄别人的,不如直接放一篇(详细证明及介绍主要写点,对鞅与停时定理的理解定理与势能函数对于一个随机过程\(\{X_0,X_1,...,X_t\}\),其中\(X_t\)是终止状态,对于构造出的函数,设为\(\varphi(X_i)\),有以下要求:\(E(\varphi(X_{i+1})-\varphi(X......
  • C. New Game (二分)
    时隔多年又做题了这不得来水一篇博客题意:给出n个数,取一段连续的数字,最大数和最小数的差不超过k,使得取的数最多。解:对于每一个数,找到第最后一个连续的且与其差值不大于k的数,数一数期间一共有几个,然后取最大值。实现上先处理出连续的段,对于每一个数,找到对应的段,二分找出差值不大于......