二分图博弈学习笔记
定义
问题
二分图博弈,顾名思义就是在二分图上进行博弈。
一般来说,二分图博弈形如这个形式:有两名玩家轮流操作二分图上的一个点进行移动,经过的一个点不能经过多次,不能移动的玩家输。问你先手是否存在必胜策略。
结论
先手必胜当且仅当二分图的任何一组最大匹配都包含起始点。
证明
当起点在所有最大匹配上时。
先手每次操作沿着匹配点移动,而后手一定会移动到一个匹配点或无法移动。
若某一步后手可以移动到非匹配点,则可以将路径上的所有边匹配状态交换,得到一组匹配数仍然最大但不包含起点的另一组最大匹配,这与起点在所有最大匹配上相矛盾。
因此当起点在所有最大匹配上时,先手必胜。
当起点不在某组最大匹配上时。
先手第一步移动一定会移动到一个匹配点上或无法移动,因为如果可以移动到一个非匹配点,则可以将这条边加入当前匹配,这与当前匹配时最大匹配相矛盾。
接下来的移动步骤类似于当起点在所有最大匹配上时的移动方案,但是先后手顺序交换,因此先手不存在必胜策略。
综上所述,当起点在所有最大匹配上时,先手必胜;当起点不在某组最大匹配上时,先手不存在必胜策略。
因此先手必胜当且仅当二分图的任何一组最大匹配都包含起始点。
实现
那么我们具体该如何判断一个点是否在二分图所有最大匹配上呢?
寻找最大匹配一般用匈牙利或者网络流。网络流的话大概就是在残量网路上继续跑,这里不重点介绍。
先用匈牙利跑一遍最大匹配,然后从每个未匹配点出发,寻找路径。每个未匹配点一定只能通向匹配点。
令未匹配点为 \(x\),其连向的匹配点为 \(u\),匹配点的匹配的另一个点为 \(v\)。若我们将匹配边从 \((u,v)\) 变为 \((u,x)\),那么该图的匹配依然合法,并且匹配边数不变,但是 \(v\) 点不在最大匹配里。
因此匹配失败时,我们寻找一条类似于正常增广的路径,并将该路径的所有左部点/右部点(取决于你从哪一边开始增广)记为非必须点。
时间复杂度 \(O(nm)\),其中 \(n\) 为点数,\(m\) 为边数。
推论
根据Konig定理得:二分图最大匹配数等于最小点覆盖数。
又有二分图最小点覆盖数加最大独立集大小等于总点数(证明),所以可以根据最大独立集大小判断是否必胜,可能在网格图上用得到。