平面图完美匹配计数

· · 个人记录

有向偶环覆盖:用若干个点不相交的偶环覆盖所有点。

于是,我们只需算出有向偶环覆盖的方案数,再开根即可。

对于 n 个点的无向图 G,记其邻接矩阵为 A。注意到环覆盖 \leftrightarrow 置换 \leftrightarrow 排列,记 \mathcal P_nn 元排列集合,则有向偶环覆盖方案数为

S=\sum_{p\in\mathcal P_n}[p\text{ 的每个环长均为偶数}]\prod_{i=1}^nA_{i,p_i}

然而“每个环长均为偶数”我们不会做。为了除去奇环,给图 G 定向,使其变成有向图。对于边 u\to v,令 A_{u,v}=1,\ A_{v,u}=-1

此时考虑“带符号有向环覆盖”

S'=\sum_{p\in\mathcal P_n}(-1)^{{\rm inv}(p)}\prod_{i=1}^nA_{i,p_i}

可以发现,如果存在奇环,则该环会被正反各计算一次,而两次的 \prod_{i=1}^nA_{i,p_i} 符号恰好相反,因此抵消。

现在问题是,每个有向偶环覆盖的符号变得乱七八糟了。我们希望 A 的乘积恰好能和 (-1)^{{\rm inv}(p)} 抵消掉,即对于任何有向偶环覆盖 p,都有

\prod_{i=1}^nA_{i,p_i}=(-1)^{{\rm inv}(p)}

这样两者乘起来之后就是 1 了。

这样的定向方法被称作 Pfaffian 定向,接下来的问题是,如何构造 Pfaffian 定向?

1963 年,Kasteleyn 发现

  1. 对于任意平面图 G,容易构造一种定向方法,使得每个面都有奇数条边为顺时针方向。
  2. 上述定向方法恰好是一种 Pfaffian 定向。

接下来可以证明定理中的 2。熟知逆序对奇偶性等于环个数的奇偶性,而每个有向偶环必然会在 A 中配上奇数个 -1(逆向边),故抵消。

接下来介绍构造方法:

  1. 先找出平面图 G 的任意一棵生成树 TT 中的边随意定向。
  2. 建立对偶图 G',每个面对应一个点,每条不在生成树中的边产生一条边。显然 G' 也是一棵树。
  3. G' 上 dfs,在返回时(子树已经构造完毕),该面一定有一个父亲节点,取出与父亲面之间的分界边,根据目前奇偶性调节之。因为一定有一条这样的边,调节一定能成功。