Loading

二分图

二分图

二分图的定义

二分图指的是无向图 \(G\) 中,\(N\) 个节点可以划分为两个集合 \(A\)\(B\),集合 \(A\)\(B\) 内部没有连边,\(A\)\(B\) 之间可以连边。

二分图的判断方法

二分图的判定:没有奇环。

没有奇环实际上就是在染色的时候相邻的点不会染相同颜色。

二分图的最大匹配

在一张二分图中选取最多的不共点的边,边数就是最大匹配。

匈牙利算法

二分图的左部向右部建边,

枚举左部尚未匹配的点 \(x\), 从 \(x\) 出发找增广路径到达右部没有匹配的 \(y\)

如果找不到就让之前匹配的点重新匹配。

C++ 代码(仅算法部分)

int dfs(int u) {                                        // 匹配第 u 个点
    for (int i = head[u]; i; i = e[i].next) {           // 枚举与 u 相邻的点
        int to = e[i].to;
        if (vis[to]) continue;                          // 如果该点被访问过了,就不访问了
        vis[to] = true;                                 // 标记该点
        if ((!match[to]) || dfs(match[to])) {           // 如果该点当前没有匹配或者可以让已经被 to 匹配的点换一个点匹配,那么 to 就可以成功匹配到 u
            match[to] = u;                              // 标记 to 已经与 u 匹配
            return true;                                // 成功!返回 true
        }
    }
    return false;                                       // 失败!返回 false
}

int main() {
    // 其他代码
    int cnt = 0;
    for (int i = 1; i <= n1; i++) {
        memset(vis, 0, sizeof(vis));                    // 初始化 vis 数组
        cnt += dfs(i);                                  // 统计答案
    }
    // 其他代码
}

最小点覆盖

最小点覆盖定义

最小点覆盖:用最少的点覆盖所有的边。

最大点覆盖结论

结论:二分图的最小点覆盖 = 二分图的最大匹配。

建模特征

每一条边的 \(2\) 个断电 “至少” 有 \(1\) 个落在最小点覆盖的点集中。

最大独立集

最大独立集的定义

在无向图 \(G\) 中,选取最大的点集 \(S\)\(S\) 内任意两点之间都没有连边。

最大独立集的结论

二分图的最大独立集 = 总点数 \(N\) - 二分图的最小点覆盖(二分图的最大匹配)

最大团

最大团的定义

在无向图 \(G\) 中选取最大的点集 \(S\)\(S\) 内任意两点之间都有直接连边。

补图的定义

在无向图 \(G\) 中,原来连边的点不连边,原来不连边的点连边,得到补图 \(G'\)

最大团的转化

原图的最大团等价于补图的最大独立集


二分图中的博弈论

问题模型

在一张二分图中,\(2\) 人博弈,先手选择一种颜色,后手选择另外一种颜色,\(2\) 中颜色的点之间有若干连边,每次只能选择邻接点行动,问先手是否有必胜策略。

思路

以 P4055 为例讲解:

点击查看题目

image

分析
  1. 棋盘黑白染色;
  2. 有障碍物不能走,每个人走的格子颜色保持不变;

引入:二分图的完美匹配是指每个点都在最大匹配中。二分图的最大匹配的必选点是指所有最大匹配的方案都需要的点。

策略:

  1. 若二分图是完美匹配,则先手必败,因为后手总是可以选择先手的匹配点行动。
  2. 若二分图不是完美匹配,则先手必胜,只要先手第一步选择最大匹配的“非必选点”,那么后手就一定率先进入最大匹配,所以先手必胜。

求“非必需点”的方法:

  1. 跑一遍二分图最大匹配,则没有参与匹配的点一定是非必选点;
  2. 枚举非必选点 \(x\),从 \(x\) 跑到对面的点 \(y\),若能则点 \(z\) 一定是非必选点,因为 \(x--y\) 可以替换 \(z--y\)
  3. 注意右部的非必选点也要重复步骤 \(1-2\)
posted @ 2023-08-05 23:37  SunnyYuan  阅读(8)  评论(0编辑  收藏  举报