棋盘的多米诺骨牌铺砌

看似简单的问题

 

下面的问题与统计物理中的 Dimer 格点模型有关:

 

一张 $8\times8$ 的国际象棋棋盘,用 $1\times2$ 的多米诺骨牌铺砌,有多少种不同的方法?

 

下图是其中一种(图片来自 wiki 百科):

 

棋盘的多米诺骨牌铺砌_第1张图片

 

答案是 12988816,非常大的一个数字,绝对不是一个一个数出来的。1961 年德国物理学家 Kasteleyn 借助于线性代数中的一个结论首先解决了这个问题(对一般的 $m\times n$ 棋盘,$m,n$ 至少有一个是偶数),接下来就介绍他的方法。

 

Pfaffian 多项式

 

先看一个 4 阶反对称矩阵的例子:

\[\det\begin{pmatrix}0&a_{12}&a_{13}&a_{14}\\-a_{12}&0&a_{23}&a_{24}\\-a_{13}&-a_{23}&0&a_{34}\\-a_{14}&-a_{24}&-a_{34}&0\end{pmatrix}=(a_{12}a_{34}-a_{13}a_{24}+a_{14}a_{23})^2.\]你发现了什么?这个反对称矩阵的行列式是一个多项式的平方,而且观察右边每个单项式的下标你发现,它们分别是 $\{(12),(34)\}$,$\{(14),(23)\}$,$\{(13),(24)\}$,恰好跑遍集合 $\{1,2,3,4\}$ 的所有匹配!

这个结论不是偶然的,实际上任何偶数阶反对称矩阵的行列式都可以表示为一个多项式的平方,这个多项式叫做 Pfaffian 多项式。

那么奇数阶反对称矩阵呢?它们的行列式都是 0,所以不考虑它们。

设 $A$ 一个给定的 $2n$ 阶的反对称矩阵,下面来定义 $A$ 的 Pfaffian 多项式 $\text{pf}(A)$,你会看到 $\text{pf}(A)$ 是一个 $n$ 次的齐次多项式。 

记 $[2n]=\{1,2,\ldots,2n\}$,考虑一种把 $[2n]$ 两两配对(从而分成 $n$ 对)的方式:\[ \pi = (i_1,j_1)(i_2,j_2)\cdots(i_n,j_n).\]

$\pi$ 叫做集合 $[2n]$ 的一个匹配,它可以用一个置换来表示:(仍然记作 $\pi$)

\[ \pi=\begin{pmatrix}1&2&3&4&\cdots&2n-1&2n\\i_1&j_1&i_2&j_2&\cdots&i_n&j_n\end{pmatrix}.\]

定义 $\pi$ 的权为 \[wt(\pi)=\text{sgn}(\pi)\cdot a_\pi,\]

其中 $\text{sgn}(\pi)$ 就是置换 $\pi$ 的符号(偶置换时为 $+1$,奇置换时为 $-1$),

\[ a_\pi=a_{i_1j_1}a_{i_2j_2}\cdots a_{i_nj_n}=\prod_{i=1}^n a_{\pi(2i-1),\pi(2i)}.\]

于是 $wt(\pi)$ 是一个次数为 $n$ 的单项式。

注意 $\pi$ 可以有多种不同的置换表示:你可以按任意的顺序排列这些 $(i_k,j_k)$ 对,或是交换某一对中 $i_k$ 和 $j_k$ 的位置。不同的表示给出的 $\text{sgn}(\pi)$ 和 $a_\pi$ 的值可能不同,但是乘积 $wt(\pi)$ 的值都是一样的(因为 $A$ 是反对称矩阵),因此 $wt(\pi)$ 的定义并不依赖于你怎样排列这些 $(i_k,j_k)$ 对。

矩阵 $A$ 的 Pfaffian 多项式 $\text{pf}(A)$ 就定义为

\[\text{pf}(A) =\sum_{\pi} wt(\pi),\]

这里 $\pi$ 跑遍 $[2n]$ 的所有匹配。

现在我们可以叙述本节的主要结论了:

 

定理 1:设 $A$ 是 $2n$ 阶反对称矩阵,则\[\det A=[\text{pf}(A)]^2.\]

 

定理 1 的证明

根据行列式的定义,\[\det A=\sum_{\sigma}\text{sgn}(\sigma)a_{\sigma}=\sum_{\sigma}\text{sgn}(\sigma) a_{1\sigma(1)}a_{2\sigma(2)}\cdots .\]这里 $\sigma$ 跑遍置换群 $S_{2n}$。

设 $\mathcal{E}_{2n}$ 为轮换长度都是偶数的那些置换组成的集合,我们要证明在上述行列式的求和中,$\sigma$ 只跑遍 $\mathcal{E}_{2n}$,即不属于 $\mathcal{E}_{2n}$ 的那些置换整体对行列式的贡献为 0。

 

分两种情况:

1. 如果 $\sigma$ 包含一个不动点:$\sigma(i)=i$,则由于 $a_{i\sigma(i)}=0$ 从而 $\sigma$ 对行列式的贡献为 0。

2. 如果 $\sigma$ 没有不动点,但是包含长度为奇数的轮换,选择其中含有最小元素的那个,设为 $C=(i_1i_2\cdots i_k)$,这里 $k$ 为奇数且大于等于 3。定义置换 $\sigma'$ 如下:$\sigma'$ 的其它轮换与 $\sigma$ 完全相同,只是把 $C$ 改成 $(i_k\cdots i_2i_1)$。显然 $\sigma'$ 对应的和项与 $\sigma$ 抵消,且 $(\sigma')'=\sigma$。于是所有这样的置换两两配对抵消,这就证明了结论。

 

设 $\mathcal{M}$ 为 $[2n]$ 的所有匹配组成的集合,我们想要建立一个双射\[ \mathcal{M}\times \mathcal{M}\rightarrow \mathcal{E}_{2n}:\quad (\pi,\pi')\rightarrow \sigma.\]

而且这个双射还保持权的相等,即

\[ wt(\pi)\cdot wt(\pi')=\text{sgn}(\sigma)a_{\sigma},\]

这样就证明了定理。

 

对任何一对匹配 $(\pi,\pi')\in\mathcal{M}\times\mathcal{M}$,我们把它俩画在同一张图上,得到的是一个顶点度数都是 2 的正则图,从而这个图可以表示为若干回路的并,在一个回路中,$\pi$ 的边和 $\pi'$ 的边是交错出现的,因此每个回路的长度都是偶数。注意某些回路可能只包含两个顶点。

对应的 $\sigma\in\mathcal{E}_{2n}$ 就定义为这些回路组成的轮换的乘积。当然我们需要指定 $\sigma$ 在每个回路上的方向。对一个回路 $C$,找到其中最小的元素 $i$,然后沿着匹配 $\pi$ 的方向行走一圈即可:

\[ i\color{red}{\rightarrow}\pi(i)\color{cyan}{\rightarrow}\pi'\pi(i)\color{red}{\rightarrow}\cdots\]

逆映射也很显然:对给定的 $\sigma\in\mathcal{E}_{2n}$,在 $\sigma$ 的每个轮换 $C$ 中,找到最小的 $i\in C$,那么依次规定

\[ i\xrightarrow{\pi} \sigma(i)\xrightarrow{\pi'}\sigma^2(i)\xrightarrow{\pi}\cdots\]

即可。

还需要说明这个对应保持权的相等,这很容易:设 $\sigma$ 的轮换分解式为

\[\sigma=(i_1i_2\cdots i_{2k-1}i_{2k})(j_1j_2\cdots j_{2l-1}j_{2l})\cdots,\]

其中 $i_1,j_1,\ldots$ 是每个轮换中最小的元素,于是 $\pi=(i_1,i_2)\cdots(i_{2k-1},i_{2k})\cdots$,其置换表示为

\[ \pi=\begin{pmatrix}1&2&\cdots&2k-1&2k&\cdots\\i_1&i_2&\cdots&i_{2k-1}&i_{2k}&\cdots\end{pmatrix}.\]

同理 $\pi'=(i_2,i_3)\cdots(i_{2k},i_1)\cdots$,其置换表示为

\[ \pi'=\begin{pmatrix}1&2&\cdots&2k-1&2k&\cdots\\i_2&i_3&\cdots&i_{2k}&i_{1}&\cdots\end{pmatrix}.\]

容易验证 $a_\pi a_{\pi'}=a_\sigma$ 以及 $\pi'=\sigma\cdot\pi$,从而结论得证。

 

平面图的 Pfaffian 定向

 

Pfaffian 多项式的结论启发我们可以用它来计算一个图 $G$ 的所有匹配的个数。

设 $G$ 有 $2n$ 个顶点。首先给 $G$ 的边任意定向,得到一个简单有向图 $\overrightarrow{G}$。写出 $\overrightarrow{G}$ 的邻接矩阵 $A=(a_{ij}):$\[a_{ij}=\left\{\begin{array}{ll}1& i\rightarrow j\\-1& j\rightarrow i\\ 0&\text{else}.\end{array}\right.\]

则 $A$ 是一个反对称矩阵且\[\det A=\left(\sum_{\pi}wt(\pi)\right)^2.\]

这里 $\pi$ 跑遍将 $G$ 的顶点集两两配对的所有可能方式。注意每一项 $wt(\pi)$ 的值为 1,-1 或者 0,且 $wt(\pi)$ 不为 0 当且仅当 $\pi$ 给出图 $\overrightarrow{G}$ 的一个匹配。所以图 $G$ 的所有匹配都和 Pfaffian 多项式中的所有非零项一一对应。不幸的是,这些非零项有 +1 有 -1,你把它们直接加起来得到的可不是匹配的数目。但是我们可以这样想: 能否通过适当的定向 $G$,即适当给 $a_{ij}$ 赋以 +1 或者 -1,使得每一项 $wt(\pi)$ 都是同号的?如果可以,那么$\sqrt{|\det A|}$ 就是要求的匹配的个数。

 

回忆在证明 Pfaffian 多项式定理时,我们有结论

\[ wt(\pi)\cdot wt(\pi')=\text{sgn}(\sigma)a_{\sigma},\]

为此只要让每一个 $\text{sgn}(\sigma)a_{\sigma}=1$ 即可。设 $\sigma$ 的轮换分解为 $\sigma=C_1\cdots C_l$,则 $\text{sgn}(\sigma)=(-1)^l$,所以只要让每一个 $a_{C_i}=-1$ 即可。

注意每个 $C_i$ 都是长度为偶数的回路,因此只要 $C_i$ 有奇数条边是同向的即可。

 

定义:在一个有向图 $G$ 中,如果一条回路的 $C$ 的长度是偶数,且删除 $C$ 后剩下的部分仍然存在完美匹配,就称 $C$ 是一个好的回路。如果 $G$ 的一个定向使得 $G$ 的所有好的回路都是奇定向的(即沿着回路的任一方向行走都有奇数条边的定向与行走方向一致),就称这个定向是 $G$ 的一个 Pfaffian 定向。

 

对一般的图,找到其 Pfaffian 定向是困难的事,但是对平面图却很简单。这就是下面的定理:

 

定理 2【Kasteleyn】:设 $G$ 是一个简单平面图,则可以给 $G$ 的边适当定向,使得当逆时针沿着 $G$ 的每个面行走时(外部的无穷区域不算),都有奇数条边与行走方向一致,这种定向就是 $G$ 的 Pfaffian 定向。

 

定理 2 的证明:

证明:首先说明存在这样的定向,使得 $G$ 的每个面都是奇定向的。对面的个数归纳:$f=0$,则 $G$ 是一个树,任何定向都是 Pfaffian 定向。设结论对有 $f-1$ 个面的简单有向图成立,对 $f$ 个面的图 $G$,找到一条内部面与外部区域相邻的边 $e$,删去 $e$ 得到的是一个有 $f-1$ 个面的有向图,因此由归纳假设,可以让每个面都是奇定向,然后把 $e$ 补回去,适当给 $e$ 定向使得最后这个面也是奇定向的即可。

 

接下来说明这样的定向是 Pfaffian 定向。对 $G$ 中任意好的回路 $C$,沿着 $C$ 内部的每个面都逆时针走一遍,然后数数一共有多少条边和我们的行走方向一致。

设 $C$ 长度为 $l$,$C$ 内部有 $p$ 个顶点,$q$ 条边,$r$ 个面。

假设沿着每个面行走时有 $c_i$ 条边是逆时针定向的($i=1,\ldots,r$),$C$ 上逆时针定向的边的个数为 $c$,则遇到的逆时针定向的边的总数为\[\sum_{i=1}^rc_i=c+q.\]这是因为 $C$ 内部的每条边都被走了两次,一次逆时针,一次顺时针,因此都被计算了一次;而 $C$ 上的边只有逆时针定向的那些被计算了一次。

 

由于每个 $c_i$ 都是奇数,因此\[ r\equiv c+q\ (\text{mod}\ 2).\]

另一方面对 $C$ 包含的区域用 Euler 定理,得到

\[ (p+l)-(q+l)+r=1.\]

从而 $p$ 与 $c$ 奇偶性相反,但是 $p$ 是偶数(因为删去 $C$ 以后仍然存在匹配说明 $C$ 的内部和外部各有偶数个顶点),因此 $c$ 是奇数,这就证明了定理。

 

棋盘的多米诺骨牌铺砌的计数

 

回到文章开始的问题。

考虑 $m\times n$ 棋盘的对偶图 $G$:标出棋盘的每个方格的中心,它们构成 $G$ 的顶点;两个顶点 $u,v$ 在 $G$ 中相邻,当且仅当它们所在的方格有公共的边,这样就得到一个有 $mn$ 个顶点的平面图。棋盘的多米诺铺砌与 $G$ 的完美匹配是一一对应的。

为了求出 $G$ 的完美匹配个数,只要标记出 $G$ 的一个 Pfaffian 定向,写出对应的邻接矩阵,然后求出行列式,再开平方即可。

Pfaffian 定向是很容易找的,如下图所示:

 

棋盘的多米诺骨牌铺砌_第2张图片

 

下一步是写出这个定向图的邻接矩阵来。(顶点标号的顺序就是从左到右先第一行,再第二行,以此类推)。设

\[B=\begin{pmatrix}0&1&0&&\\-1&0&1&&\\&-1&0&1&\\&&&\ddots&1\\&&&-1&0\end{pmatrix}_{n\times n}.\]

则邻接矩阵为 $$A=\begin{pmatrix}B&I&&&\\-I&-B&I&&\\&-I&B&&\\&&&\ddots&I\\&&&-I&(-1)^{m-1}B\end{pmatrix}.$$

这里的 $A$ 是一个 $m\times m$ 的分块矩阵。

适当给 $A$ 的行列变号,可以得到

\[\det A=\det\begin{pmatrix}B&-I&&&\\-I&B&-I&&\\&-I&B&-I&\\&&&\ddots&-I\\&&&-I&B\end{pmatrix}=\det(B\otimes I-I\otimes C).\]

其中

\[C=\begin{pmatrix}0&1&0&&\\1&0&1&&\\&1&0&1&\\&&&\ddots&1\\&&&1&0\end{pmatrix}.\]

其实这个变号步骤并不显然,你可以对 $m=8$ 的情形试一试。

 

剩下的就是线性代数中求特征值的部分,这里就不写了,可以算出

\[|\det A|^2 =\prod_{k=1}^m\prod_{l=1}^n(4\cos^2\frac{k\pi}{m+1}+4\cos^2\frac{l\pi}{n+1}).\]

然后开 4 次方即为要求的完美匹配的个数。

你可能感兴趣的:(棋盘的多米诺骨牌铺砌)