メインコンテンツへスキップ

【月刊組合せ論 Natori】パフィアンと数え上げ【2026 年 9 月号】

箱星
著者
箱星
のんびり暮らしたい。
目次

月刊組合せ論 Natori は面白そうな組合せ論のトピックを紹介していく企画です。今回はパフィアンを用いた数え上げを解説します。

2026 年、ようやく初 Natori です。今月号から毎月の連載を再開していこうと思います。

パフィアン
#

まずはパフィアンを紹介します。行列式と似たようなものです。

行列式は次のように定義されるものでした。

det(A)=σSnsgn(σ)i=1naiσi \det(A)=\sum_{\sigma\in S_n}\operatorname{sgn}(\sigma)\prod_{i=1}^n a_{i\sigma_i}

行列式は任意の正方行列 AA について定義できますが、パフィアンを定義するには AA は次の条件をみたさなければなりません。

  • 偶数次の正方行列
  • 歪対称行列(すなわち、aij=ajia_{ij}=-a_{ji} をみたす)

歪対称行列であることから特に対角成分は 0 です。

AA2n2n 次歪対称行列とします。FnF_n1,2,,2n1,2,\ldots,2n の置換 σ\sigma であって

  • σ(1)<σ(3)<<σ(2n1)\sigma(1)<\sigma(3)<\cdots<\sigma(2n-1)
  • σ(2i1)<σ(2i) (i=1,2,,n)\sigma(2i-1)<\sigma(2i) \ (i=1,2,\ldots,n)

をみたすもの全体からなる集合とします。このとき AA のパフィアンを

pf(A)=σFnsgn(σ)i=1naσ(2i1)σ(2i) \operatorname{pf}(A)=\sum_{\sigma\in F_n}\operatorname{sgn}(\sigma)\prod_{i=1}^n a_{\sigma(2i-1)\sigma(2i)}

により定義します。

例えば AA

A=(0aa0) A=\begin{pmatrix} 0 & a \\ -a & 0 \end{pmatrix}

のとき、パフィアンは aa です。AA

A=(0abca0debd0fcef0) A=\begin{pmatrix} 0 & a & b & c \\ -a & 0 & d & e \\ -b & -d & 0 & f \\ -c & -e & -f & 0 \end{pmatrix}

のとき、σ\sigma としてあり得るものは 1234,1324,14231234, 1324, 1423 なので、パフィアンは afbe+cdaf-be+cd です。

パフィアンのもつ重要な性質として

det(A)=(pf(A))2 \det(A)=(\mathrm{pf}(A))^2

があります。

パフィアンは行列式と同様、時間計算量 O(n3)O(n^3) で計算するアルゴリズムがあります。

このパフィアンを数え上げに応用していきます。

完全マッチング
#

マッチングとは
#

パフィアンの定義で用いた FnF_n がよくわからないと感じた方もいるかもしれません。これはマッチングであると考えることができます。

グラフのマッチングとは、頂点がダブらないように辺をいくつか選ぶことです。すべての頂点が選んだある辺の端点であるとき、完全マッチングといいます。

2n2n 頂点の完全グラフの完全マッチングを考えます。例えば 6 頂点の場合、辺 (1,3),(2,5),(4,6)(1,3),(2,5),(4,6) を選ぶ完全マッチングがあります。これは 132546132546 という F3F_3 の元と対応します。

辺の並べ方をうまく決めることで、一意的な表記としたいです。そのための条件が、定義で登場した

  • σ(1)<σ(3)<<σ(2n1)\sigma(1)<\sigma(3)<\cdots<\sigma(2n-1)
  • σ(2i1)<σ(2i) (i=1,2,,n)\sigma(2i-1)<\sigma(2i) \ (i=1,2,\ldots,n)

ということです。つまり、FnF_n の元は完全グラフの完全マッチングを表しています。

なお、行列式では通常の置換 σSn\sigma \in S_n が出てきますが、これは完全二部グラフ Kn,nK_{n,n} の完全マッチングと考えられます。

完全マッチングの数え上げ
#

完全マッチングとパフィアンはさらに関係があります。

頂点が 2n2n 個のグラフを考えます。このグラフの辺に向きを決め、以下の行列 K=(Kij)K=(K_{ij}) を定義します。

Kij={+1(vi,vj)E1(vj,vi)E0otherwise K_{ij}=\begin{cases} +1 & (v_i,v_j) \in E \\ -1 & (v_j,v_i) \in E \\ 0 & \mathrm{otherwise} \end{cases}

この行列のパフィアンは

pf(K)=σFnsgn(σ)i=1nKσ(2i1)σ(2i) \operatorname{pf}(K)=\sum_{\sigma\in F_n}\operatorname{sgn}(\sigma)\prod_{i=1}^n K_{\sigma(2i-1)\sigma(2i)}

ですが、辺がないと 0 になって無視できるので、和の範囲はグラフの完全マッチング全体を動くことになります。

pf(K)=M:matchingsgn(σM)ε(M) \operatorname{pf}(K)=\sum_{M:\mathrm{matching}}\operatorname{sgn}(\sigma_M)\varepsilon(M)

ここで σM\sigma_M はマッチング MM から定まる置換で、ε(M)\varepsilon(M) はマッチング MM に含まれる辺 (vi,vj)(v_i,v_j) について KijK_{ij} をかけ合わせたものです。

いま、sgn(σM)ε(M)\operatorname{sgn}(\sigma_M)\varepsilon(M)MM によらず一定と仮定します。この値は +1+11-1 なので、pf(K)\operatorname{pf}(K) の絶対値が完全マッチングの個数となります。よって、完全マッチングの個数はある行列のパフィアンで計算できることがわかりました。

問題となるのは上記の仮定をみたすように辺に向きをつけられるかということです。残念ながらすべてのグラフではできません。一方で、平面グラフでは可能であることが知られています。

パフィアンの絶対値が完全マッチングの個数と等しくなるような向き付けを Pfaffian orientation といいます。

平面グラフでこのような向き付けを求めるアルゴリズムとして、Fisher–Kasteleyn–Temperley algorithm が知られています。

非交差経路
#

行列式
#

行列式を用いた数え上げといえば LGV 公式と行列木定理ですね。ここでは LGV 公式を扱います。

Γ=(V,E)\Gamma=(V,E) をサイクルを含まない有限有向グラフとします。各辺 eEe\in E の重み w(e)Zw(e)\in \mathbb{Z} が定まっているとします。パス P=(v1,,vn)P=(v_1,\ldots,v_n) の重みを w(P)=w(v1,v2)w(v2,v3)w(vn1,vn)w(P)=w(v_1,v_2)w(v_2,v_3)\cdots w(v_{n-1},v_n) により定めます。2 つのパスが交わるとは、共通の頂点を持つこととします。a1,,an,b1,,bnVa_1,\ldots,a_n,b_1,\ldots,b_n\in V に対して n×nn\times n 行列

M(a,b)=(P ⁣:aibjw(P))1i,jn M(a,b)=\left(\sum_{P\colon a_i\to b_j}w(P)\right)_{1\le i,j\le n}

を定めます。ただし和において PPaia_i から bjb_j へのパス全体をわたるものとします。サイクルを含まないので有限和です。

定理 (LGV)

条件「i1<i2,j1>j2i_1<i_2, j_1>j_2 ならば ai1a_{i_1} から bj1b_{j_1} へのパスと ai2a_{i_2} から bj2b_{j_2} へのパスは必ず交わる」を仮定する。このとき

detM(a,b)=(P1,,Pn)w(P1)w(Pn) \det M(a,b)=\sum_{(P_1,\ldots,P_n)}w(P_1)\cdots w(P_n)

が成り立つ。ここで和は PiP_iaia_i から bib_i へのパスでどの 2 つのパスも互いに交わらないもの全体をわたる。

パフィアン
#

LGV 公式は始点と終点が決まっている場合しか扱えません。始点のみ決まっていて、終点が決まっていない場合を考えます。

nn 本の経路からなる非交差経路で、ii 番目の経路の始点が aia_i であり、終点が bj (jZ)b_j \ (j \in \mathbb{Z}) のいずれかであるものを考えます。

定理 (岡田, Stembridge)

条件「i1<i2,j1>j2i_1<i_2, j_1>j_2 ならば ai1a_{i_1} から bj1b_{j_1} へのパスと ai2a_{i_2} から bj2b_{j_2} へのパスは必ず交わる」を仮定する。1i<jn1\le i<j\le n に対して歪対称行列 MM(i,j)(i,j) 成分を

(P1,P2)w(P1)w(P2) \sum_{(P_1,P_2)}w(P_1)w(P_2)

とおく。ここで P1P_1aia_i からある bib_{i'} へのパス、P2P_2aja_j からある bjb_{j'} へのパスであって交わらないものとする。このとき

pf(M)=(P1,,Pn)w(P1)w(Pn) \mathrm{pf}(M)=\sum_{(P_1,\ldots,P_n)}w(P_1)\cdots w(P_n)

が成り立つ。ここで和は PiP_iaia_i からある bib_{i'} へのパスでどの 2 つのパスも互いに交わらないもの全体をわたる。

nn 本の非交差経路について考えるには、2 本の非交差経路の組について計算して、パフィアンを計算すればよいことになります。

パフィアンは偶数次の行列に対して定義されるので、nn が奇数の場合はそのままでは使えません。しかし微修正すれば使えます。

使用例
#

AtCoder Beginner Contest 216 H - Random Robots をパフィアンを用いて解くことができます。

公式解説にあるように、終点が固定されていない非交差経路の数え上げに帰着されます。パフィアンを用いることで、想定解よりもよい計算量で解くことができます。

関連する話題
#

行列式を用いた数え上げは、LGV 公式の他に行列木定理もあります。

パフィアン版の行列木定理もあるようです。いつか解説記事を書くかもしれません。

おわりに
#

行列式を使った数え上げはそれなりに知名度がありますが、パフィアンはまだまだだと思うので、布教していきたいです。

今後も月刊組合せ論 Natori では組合せ論の面白いトピックを紹介していきたいので、応援のほどよろしくお願いします。

参考文献
#

  1. Shane Chern; Theresia Eisenkölbl; Ilse Fischer; Moritz Gangl; Mona Gatzweiler; Álvaro Gutiérrez; Christian Krattenthaler; Nishu Kumari; Markus Reibnegger; Marcus Schönfelder; Atsuro Yoshida. More minor summation formulae. arXiv:2603.21021, https://arxiv.org/abs/2603.21021
  2. Okada, Soichi. On the generating functions for certain classes of plane partitions. J. Comb. Theory, Ser. A 51, No. 1, 1-23 (1989).
  3. Stembridge, John R. Nonintersecting paths, pfaffians, and plane partitions. Adv. Math. 83, No. 1, 96-113 (1990).