二分图博弈学习笔记

定义

问题

二分图博弈,顾名思义就是在二分图上进行博弈。

一般来说,二分图博弈形如这个形式:有两名玩家轮流操作二分图上的一个点进行移动,经过的一个点不能经过多次,不能移动的玩家输。问你先手是否存在必胜策略。

结论

先手必胜当且仅当二分图的任何一组最大匹配都包含起始点。

证明

当起点在所有最大匹配上时。

先手每次操作沿着匹配点移动,而后手一定会移动到一个匹配点或无法移动。

若某一步后手可以移动到非匹配点,则可以将路径上的所有边匹配状态交换,得到一组匹配数仍然最大但不包含起点的另一组最大匹配,这与起点在所有最大匹配上相矛盾。

因此当起点在所有最大匹配上时,先手必胜。


当起点不在某组最大匹配上时。

先手第一步移动一定会移动到一个匹配点上或无法移动,因为如果可以移动到一个非匹配点,则可以将这条边加入当前匹配,这与当前匹配时最大匹配相矛盾。

接下来的移动步骤类似于当起点在所有最大匹配上时的移动方案,但是先后手顺序交换,因此先手不存在必胜策略。


综上所述,当起点在所有最大匹配上时,先手必胜;当起点不在某组最大匹配上时,先手不存在必胜策略。

因此先手必胜当且仅当二分图的任何一组最大匹配都包含起始点。

实现

那么我们具体该如何判断一个点是否在二分图所有最大匹配上呢?

寻找最大匹配一般用匈牙利或者网络流。网络流的话大概就是在残量网路上继续跑,这里不重点介绍。

先用匈牙利跑一遍最大匹配,然后从每个未匹配点出发,寻找路径。每个未匹配点一定只能通向匹配点。

令未匹配点为 \(x\),其连向的匹配点为 \(u\),匹配点的匹配的另一个点为 \(v\)。若我们将匹配边从 \((u,v)\) 变为 \((u,x)\),那么该图的匹配依然合法,并且匹配边数不变,但是 \(v\) 点不在最大匹配里。

因此匹配失败时,我们寻找一条类似于正常增广的路径,并将该路径的所有左部点/右部点(取决于你从哪一边开始增广)记为非必须点。

时间复杂度 \(O(nm)\),其中 \(n\) 为点数,\(m\) 为边数。

模板题

推论

根据Konig定理得:二分图最大匹配数等于最小点覆盖数。

又有二分图最小点覆盖数加最大独立集大小等于总点数(证明),所以可以根据最大独立集大小判断是否必胜,可能在网格图上用得到。

posted @ 2024-07-11 21:17  Lyz09  阅读(6)  评论(0编辑  收藏  举报