Tutte theorem

图 \(G=(V,E)\) 有完美匹配当且仅当满足 \(\forall U\subseteq V,o(G-U)\le|U|,o(X)\) 表示 X 子图的奇连通块数。

Tutte–Berge formula

图 \(G=(V,E)\) 的最大匹配数为 \(\frac12\min\limits_{U\subseteq V}\{|U|-o(V-U)+|V|\}\)

Tutte 定理证明

必要性

如果 G 有完美匹配,那么每个奇连通块至少有一个点需要与 U 中的点匹配,故得证.

充分性

定义坏集 S 满足 \(|S|<o(G-S)\) ,那么图 G 中不能存在坏集。

如果 S 是 G 的坏集,那么 S 也一定是 G 的导出子图的坏集。

于是不妨令 G 满足 G 不存在完美匹配,且加入任意一条不在 G 中的边后存在完美匹配。

令 S 为满足度数为 \(|V|-1\) 的点集,首先考虑 \(G-S\) 中的每个连通块都是团的情况,容易发现 S 一定是坏集。

于是 \(G-S\) 中至少有一个连通块不是团,考虑把这个连通块扯出来讨论,我们找出其中两个没有边直接相连的点 \(x,y\) ,设从 \(x\rightarrow y\) 最短路上的头三个点为 \(a,b,c\) ,那么显然 \((a,c)\notin E\) ,且一定存在点 \(d\) 满足 \((b,d)\notin E\) 。

由于上面限制了 G 加入任意一条不在 G 中的边后都存在完美匹配,因此我们设 \(M_1\) 是 \((V,E\cup(a,c))\) 的一组完美匹配, \(M_2\) 是 \((V,E\cup(b,d))\) 的一组完美匹配,显然 \((a,c)\in M_1,(M_2)\in M_2\) (第一次走 \(M_1\) 的)。

然后定义 P 是在 G 上面从 d 出发,交替走 \(M_1,M_2\) 中的边得到的最长路径,显然最后会落在 \(a,b,c\) 点中的一个。

如果落在 b 点,我们令 \(C=P\cup(b,d)\) ,否则令 \(C=P\cup(a/c,b)\cup(b,d)\) ,这样 C 就是一个偶环,对于 C 我们选择不在 \(M_2\) 中的边可以形成一组新的匹配,对于 \(G-C\) 中的点我们按照 \(M_2\) 中的边匹配,这样就形成了一组新的完美匹配,故得证.

Tutte-Berge 公式与 Tutte 定理等价性证明

定义 \(def(G)\) 表示图 G 最大匹配中未被覆盖定点数, \(\nu(G)\) 表示 G 的最大匹配数,那么显然有 \(def(G)=|V|-2\nu(G)\).

Tutte-Berge formula \(\Rightarrow\) Tutte theorem

移项即可

Tutte theorem \(\Rightarrow\) Tutte-Berge formula

设 \(\delta'(G)=\max\limits_{U\subseteq V}\{o(V-U)-|U|\}\) ,并设 \(S\) 是取得最大值时的 \(U\) ,即证 \(\delta'(G)=def(G)\)。

显然有 \(\delta'(G)\ge0\) ,下面根据 \(\delta'(G)\) 的取值进行分类讨论。

  1. \(\delta'(G)=0\) ,那么满足 Tutte 定理的条件,整张图存在完美匹配, \(\delta'(G)=def(G)=0\)
  2. \(\delta'(G)>0\) ,那么一定有若干奇连通块存在点在 X 中未被覆盖,设该个数为 \(x\) ,\(o(G-X)=y\) ,那么一定满足 \(x\ge y-|X|\) 和 \(x\le def(G)\) ,因此 \(\delta'(G)\le def(G)\)成立。

    另一方面,考虑构造一个有 \(\delta'(G)=0\) 个点的完全图 H ,然后跟 G 拼一个新图 \(G'=(V_H\cup V_G,E_H\cup E_G\cup\{(u,v)|u\in V_H,v\in V_G\})\)

    容易在利用 Tutte 定理简单讨论后证明 G' 有完美匹配,因此 \(|V_H|=\delta'(G)\ge def(G)\) ,因此 \(\delta'(G)=def(G)\) ,故 Tutte-Berge 公式得证.

Tutte 定理与 Tutte–Berge 公式的更多相关文章

  1. zhengrui集训D1-D5笔记

    Day_1 计数 它咕掉了 Day_1 序列数据结构 它咕掉了 Day_2 线性代数 高斯消元\Large{高斯消元}高斯消元 普通版:略 模质数:求逆 模合数:exgcd 逆矩阵\Large{逆矩阵 ...

  2. hdu2255 二分图最大权配KM

    KM算法:hdu2255 (大概理解了 参考博客: http://blog.csdn.net/niushuai666/article/details/7171880)         所谓交错树:就是 ...

  3. Kuhn-Munkres算法 (剪辑)(备用)

    KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的. 设顶点Xi的顶标为A[i],顶点Yi的顶标为B[i],顶点Xi与Yj之间的边权为w[i,j]. 在算法执行 ...

  4. 从拟阵基础到 Shannon 开关游戏

    从拟阵基础到 Shannon 开关游戏 本文中的定理名称翻译都有可能不准确!如果有找到错误的同学一定要联系我! 本文长期征集比较好的例题,如果有比较典型的题可以联系我 目录 从拟阵基础到 Shanno ...

  5. R Language

    向量定义:x1 = c(1,2,3); x2 = c(1:100) 类型显示:mode(x1) 向量长度:length(x2) 向量元素显示:x1[c(1,2,3)] 多维向量:multi-dimen ...

  6. ACM/ICPC竞赛

    ACM知识点分类   第一类:基础算法 (1) 基础算法:枚举,贪心,递归,分治,递推,构造,模拟 (2) 动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3) 搜索:dfs,bf ...

  7. 【bzoj1041】圆上的整点

    题意 给定一个圆\(x^2+y^2=z^2\),求圆周上有多少个点的坐标是整数. \(r\leq 2*10^9\) 分析 这道题目关键要知道一些勾股数的性质,剩下的就很好处理了. 勾股数的性质 参考: ...

  8. POJ 2154 【POLYA】【欧拉】

    前记: TM终于决定以后干啥了.这几天睡的有点多.困饿交加之间喝了好多水.可能是灌脑了. 切记两件事: 1.安心当单身狗 2.顺心码代码 题意: 给你N种颜色的珠子,串一串长度问N的项链,要求旋转之后 ...

  9. 《程序设计中的组合数学》——polya计数

    我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...

随机推荐

  1. Python之爬虫(二十一) Scrapy爬取所有知乎用户信息(下)

    在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在:https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 cla ...

  2. freeMarker随手笔记

    freemarker官网:http://docs.freemarker.cn/ 注意: 1.如果标签没有嵌套内容(在开始标签和结束标签之间的内容),那么可以只使用开始标签 (详情:http://fre ...

  3. 改造 layui 表格组件实现多重排序

    layui 的表格组件目前只支持单列排序,在实际应用中并不能很好的支撑我们的业务需求.今天一时手痒,决定改造一番以支持多重排序. 实现思路也比较简单,只需要用一个数组来存放所有排序的列,再把这个数组传 ...

  4. 重装win7时遇到点小问题

         最近装系统的时候有个头疼的事,事情的起因是这样的,我在工作的时候用的win7,破解的时候各种工具都破解不了,说是有未分配的盘符.并且,当时装的是没更新的win7,工作上要用到ie11只能在w ...

  5. (6)webpack使用babel插件的使用

    为什么要使用babel插件? 首先要了解babel插件是干嘛的,随着js的语法规范发展,出现了越来越多的高级语法,但是使用webpack打包的时候,webpack并不能全部理解这些高级语法,需要我们使 ...

  6. Ethical Hacking - Web Penetration Testing(2)

    INFORMATION GATHERING IP address. Domain name Info. Technologies used. Other websites on the same se ...

  7. CPU核数

    今天想看CPU核数,又忘记怎么看了QAQ. CPU的基本信息都被记录在/proc/cpuinfo中,一般直接cat /proc/cpuinfo就可以了. 主要是学习一下物理cpu核数/逻辑cpu核数的 ...

  8. TeamX

    介绍 TeamX 是基于 SolonJT 平台构建的团队管理小工具,主要功能有: Wiki(团队词条,用于写MD格式接口文档也行...) Planned(项目计划 和 个人日志) Issues(问题管 ...

  9. 抽象工厂模式(c++实现)

    抽象工厂模式 目录 抽象工厂模式 模式定义 模式动机 UML类图 源码实现 优点 缺点 感悟 模式定义 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而 ...

  10. MVC + EFCore 项目实战 - 数仓管理系统7 - 数据源管理中--新增数据源

    上篇我们完成了数据源列表展示功能(还未测试). 本篇我们来新增数据源,并查看列表展示功能.   接上篇: 二.数据源管理功能开发 2.新增数据源 我们用模态对话框来完成数据源的新增,效果如下图: 我们 ...