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. 蜂鸟E203系列——Linux调试(GDB+Openocd)

    欲观原文,请君移步 本文基于文章<蜂鸟E203系列--利用 Hbrid-E-SDK 环境开发程序> GDB 简介 GDB(GNU Project Debugger),是 GNU 工具链中的 ...

  2. c++运行程序 改变字和背景的颜色与窗口大小和位置 (c++)(windows)

    关于改变字体的颜色和背景颜色: 在#include <windows.h> 库里 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A ...

  3. hls&flv直播请求过程

    hls&flv直播请求过程 直播类产品层出不穷,从各方面塑造了我们的生活方式.直播产品中,延时是决定用户体验的关键因素,它也将间接决定直播产品的成败.这其间,对延时影响较大的就是直播架构中选择 ...

  4. tcpreplay的使用指导

    Tcpreplay的介绍 简单的说, tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的 ...

  5. 【高性能Mysql 】读书笔记(一)

    第1章 Mysql架构与历史 MYSQL最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理( Query Processing)及其他系统任务( Server Task)和数据的存储 ...

  6. 【面试题资源共享】一文总结最高频软件测试|sq|语句|思维发散|计算机基础|Linux|测试用例|接口测试|等技术面试题

    思维发散 1.一个球, -把尺子长度是球直径的2/3,怎样测出半径?2.四枚硬币,花面朝上,每次翻转三个,几次可以将四枚硬币变为字面朝上?3. U2合唱团在1 7分钟内赶到演唱会现场问题?4.小明一家 ...

  7. 数据结构C语言实现----出栈操作

    代码如下: #include<stdio.h> #include<stdlib.h> typedef struct { char *base; char *top; int s ...

  8. Python Ethical Hacking - BACKDOORS(3)

    BACKDOORS Sockets Problem: TCP is stream-based. Difficult to identify the end of message/batch. Solu ...

  9. MVC + EFCore 项目实战 - 数仓管理系统6 – 数据源管理上--使用view component完成卡片列表

    上次课程我们完成了菜单的配置和开发里程碑的划定. 按照计划,我们先来开发数据仓库管理中的数据源管理(对应菜单为:数据仓库管理 / 数据源),首批支持的数据源是SQL SERVER数据库. 一.数据源管 ...

  10. WinForm微信扫码登录

    源码还需优化,不喜勿喷. 微信官方文档 : https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat ...