# Pfaffian

In mathematics, the determinant of an m-by-m skew-symmetric matrix can always be written as the square of a polynomial in the matrix entries, a polynomial with integer coefficients that only depends on m. When m is odd, the polynomial is zero, and when m is even, it is a nonzero polynomial of degree m/2, and is unique up to multiplication by ±1. The convention on skew-symmetric tridiagonal matrices, given below in the examples, then determines one specific polynomial, called the Pfaffian polynomial. The value of this polynomial, when applied to the entries of a skew-symmetric matrix, is called the Pfaffian of that matrix. The term Pfaffian was introduced by Cayley (1852), who indirectly named them after Johann Friedrich Pfaff.
Explicitly, for a skew-symmetric matrix $A$,
    $\operatorname {pf} (A)^{2}=\det(A),$
which was first proved by Cayley (1849), who cites Jacobi for introducing these polynomials in work on Pfaffian systems of differential equations. Cayley obtains this relation by specialising a more general result on matrices that deviate from skew symmetry only in the first row and the first column. The determinant of such a matrix is the product of the Pfaffians of the two matrices obtained by first setting in the original matrix the upper left entry to zero and then copying, respectively, the negative transpose of the first row to the first column and the negative transpose of the first column to the first row. This is proved by induction by expanding the determinant on minors and employing the recursion formula below.

## Examples

    $A={\begin{bmatrix}0&a\\-a&0\end{bmatrix}},\qquad \operatorname {pf} (A)=a.$
    $B={\begin{bmatrix}0&a&b\\-a&0&c\\-b&-c&0\end{bmatrix}},\qquad \operatorname {pf} (B)=0.$
(3 is odd, so the Pfaffian of B is 0)
    $\operatorname {pf} {\begin{bmatrix}0&a&b&c\\-a&0&d&e\\-b&-d&0&f\\-c&-e&-f&0\end{bmatrix}}=af-be+dc.$
The Pfaffian of a 2n × 2n skew-symmetric tridiagonal matrix is given as
    $\operatorname {pf} {\begin{bmatrix}0&a_{1}&0&0\\-a_{1}&0&0&0\\0&0&0&a_{2}\\0&0&-a_{2}&0&\ddots \\&&&\ddots &\ddots &\\&&&&&0&a_{n}\\&&&&&-a_{n}&0\end{bmatrix}}=a_{1}a_{2}\cdots a_{n}.$
(Note that any skew-symmetric matrix can be reduced to this form; see Spectral theory of a skew-symmetric matrix.)

## Formal definition

Let A = (a$_{ij}$) be a 2n × 2n skew-symmetric matrix. The Pfaffian of A is explicitly defined by the formula
    $\operatorname {pf} (A)={\frac {1}{2^{n}n!}}\sum _{\sigma \in S_{2n}}\operatorname {sgn} (\sigma )\prod _{i=1}^{n}a_{\sigma (2i-1),\sigma (2i)}\,,$
where S$_{2n}$ is the symmetric group of degree 2n and sgn(σ) is the signature of σ.
One can make use of the skew-symmetry of A to avoid summing over all possible permutations. Let Π be the set of all partitions of {1, 2, ..., 2n} into pairs without regard to order. There are (2n)!/(2$^n$n!) = (2n − 1)!! such partitions. An element α ∈ Π can be written as
    $\alpha =\{(i_{1},j_{1}),(i_{2},j_{2}),\cdots ,(i_{n},j_{n})\}$
with i$_k$ < j$_k$ and $i_{1}<i_{2}<\cdots <i_{n}$. Let
    $\pi _{\alpha }={\begin{bmatrix}1&2&3&4&\cdots &2n-1&2n\\i_{1}&j_{1}&i_{2}&j_{2}&\cdots &i_{n}&j_{n}\end{bmatrix}}$
be the corresponding permutation. Given a partition α as above, define
    $A_{\alpha }=\operatorname {sgn} (\pi _{\alpha })a_{i_{1},j_{1}}a_{i_{2},j_{2}}\cdots a_{i_{n},j_{n}}.$
The Pfaffian of A is then given by
    $\operatorname {pf} (A)=\sum _{\alpha \in \Pi }A_{\alpha }.$
The Pfaffian of a n × n skew-symmetric matrix for n odd is defined to be zero, as the determinant of an odd skew-symmetric matrix is zero, since for a skew-symmetric matrix, $\det A=\det A^{\text{T}}=\det(-A)=(-1)^{n}\det A,$ and for n odd, this implies $\det A=0$.

### Recursive definition

By convention, the Pfaffian of the 0 × 0 matrix is equal to one. The Pfaffian of a skew-symmetric 2n × 2n matrix A with n > 0 can be computed recursively as
    $\operatorname {pf} (A)=\sum _{{j=1} \atop {j\neq i}}^{2n}(-1)^{i+j+1+\theta (i-j)}a_{ij}\operatorname {pf} (A_{{\hat {\imath }}{\hat {\jmath }}}),$
where the index i can be selected arbitrarily, $\theta (i-j)$ is the Heaviside step function, and $A_{{\hat {\imath }}{\hat {\jmath }}}$ denotes the matrix A with both the i-th and j-th rows and columns removed. Note how for the special choice $i=1$ this reduces to the simpler expression:
    $\operatorname {pf} (A)=\sum _{j=2}^{2n}(-1)^{j}a_{1j}\operatorname {pf} (A_{{\hat {1}}{\hat {\jmath }}}).$

### Alternative definitions

One can associate to any skew-symmetric 2n × 2n matrix A = (a$_{ij}$) a bivector
    $\omega =\sum _{i<j}a_{ij}\;e_{i}\wedge e_{j},$
where {e$_1$, e$_2$, ..., e$_{2n}$} is the standard basis of R$^{2n}$. The Pfaffian is then defined by the equation
    ${\frac {1}{n!}}\omega ^{n}=\operatorname {pf} (A)\;e_{1}\wedge e_{2}\wedge \cdots \wedge e_{2n},$
here ω$^n$ denotes the wedge product of n copies of ω.
Equivalently, we can consider the bivector (which is more convenient when we do not want to impose the summation constraint $i<j$): $\omega '=2\omega =\sum _{i,j}a_{ij}\;e_{i}\wedge e_{j},$ which gives $\omega '^{n}=2^{n}n!\operatorname {pf} (A)\;e_{1}\wedge e_{2}\wedge \cdots \wedge e_{2n}.$
A non-zero generalisation of the Pfaffian to odd-dimensional matrices is given in the work of de Bruijn on multiple integrals involving determinants. In particular for any m × m matrix A, we use the formal definition above but set $n=\lfloor m/2\rfloor$. For m odd, one can then show that this is equal to the usual Pfaffian of an (m+1) × (m+1)-dimensional skew symmetric matrix where we have added an (m+1)th column consisting of m elements 1, an (m+1)th row consisting of m elements −1, and the corner element is zero. The usual properties of Pfaffians, for example the relation to the determinant, then apply to this extended matrix.

## Properties and identities

Pfaffians have the following properties, which are similar to those of determinants.
* Multiplication of a row and a column by a constant is equivalent to multiplication of the Pfaffian by the same constant.
* Simultaneous interchange of two different rows and corresponding columns changes the sign of the Pfaffian.
* A multiple of a row and corresponding column added to another row and corresponding column does not change the value of the Pfaffian.
Using these properties, Pfaffians can be computed quickly, akin to the computation of determinants.

### Miscellaneous

For a 2n × 2n skew-symmetric matrix A
    $\operatorname {pf} (A^{\text{T}})=(-1)^{n}\operatorname {pf} (A).$
    $\operatorname {pf} (\lambda A)=\lambda ^{n}\operatorname {pf} (A).$
    $\operatorname {pf} (A)^{2}=\det(A).$
For an arbitrary 2n × 2n matrix B,
    $\operatorname {pf} (BAB^{\text{T}})=\det(B)\operatorname {pf} (A).$
Substituting in this equation B = A$^m$, one gets for all integer m
    $\operatorname {pf} (A^{2m+1})=(-1)^{nm}\operatorname {pf} (A)^{2m+1}.$
As previously said, $A\rightarrow \sum _{ij}A_{ij}e_{i}\wedge e_{j}{\xrightarrow[]{\wedge n}}{2^{n}n!}Pf(A)e_{1}\wedge \cdots \wedge e_{2n}.$ The same with $BAB^{\mathrm {T} }$: ${\begin{aligned}&BAB^{\mathrm {T} }\rightarrow \sum _{ijkl}B_{ik}B_{jl}A_{kl}e_{i}\wedge e_{j}=\sum _{kl}A_{kl}f_{k}\wedge f_{l}\\&\xrightarrow {\wedge n} {2^{n}n!}Pf(A)f_{1}\wedge \cdots \wedge f_{2n}={2^{n}n!}Pf(BAB^{\mathrm {T} })e_{1}\wedge \cdots \wedge e_{2n},\end{aligned}}$ where we defined $f_{k}=\sum _{i}B_{ik}e_{i}$.
Since $f_{1}\wedge \cdots \wedge f_{2n}=\det(B)e_{1}\wedge \cdots \wedge e_{2n},$ the proof is finished.
Since $\operatorname {pf} (A)^{2}=\det(A)$ is an equation of polynomials, it suffices to prove it for real matrices, and it would automatically apply for complex matrices as well.
By the spectral theory of skew-symmetric real matrices, $A=Q\Sigma Q^{\mathrm {T} }$, where $Q$ is orthogonal and $\Sigma ={\begin{bmatrix}0&a_{1}&0&0\\-a_{1}&0&0&0\\0&0&0&a_{2}\\0&0&-a_{2}&0&\ddots \\&&&\ddots &\ddots &\\&&&&&0&a_{n}\\&&&&&-a_{n}&0\end{bmatrix}}$ for real numbers $a_{k}$. Now apply the previous theorem, we have $pf(A)^{2}=pf(\Sigma )^{2}\det(Q)^{2}=pf(\Sigma )^{2}=\left(\prod a_{i}\right)^{2}=\det(A)$.

### Derivative identities

If A depends on some variable x$_i$, then the gradient of a Pfaffian is given by
    ${\frac {1}{\operatorname {pf} (A)}}{\frac {\partial \operatorname {pf} (A)}{\partial x_{i}}}={\frac {1}{2}}\operatorname {tr} \left(A^{-1}{\frac {\partial A}{\partial x_{i}}}\right),$
and the Hessian of a Pfaffian is given by
    ${\frac {1}{\operatorname {pf} (A)}}{\frac {\partial ^{2}\operatorname {pf} (A)}{\partial x_{i}\partial x_{j}}}={\frac {1}{2}}\operatorname {tr} \left(A^{-1}{\frac {\partial ^{2}A}{\partial x_{i}\partial x_{j}}}\right)-{\frac {1}{2}}\operatorname {tr} \left(A^{-1}{\frac {\partial A}{\partial x_{i}}}A^{-1}{\frac {\partial A}{\partial x_{j}}}\right)+{\frac {1}{4}}\operatorname {tr} \left(A^{-1}{\frac {\partial A}{\partial x_{i}}}\right)\operatorname {tr} \left(A^{-1}{\frac {\partial A}{\partial x_{j}}}\right).$

### Trace identities

The product of the Pfaffians of skew-symmetric matrices A and B can be represented in the form of an exponential
    ${\textrm {pf}}(A)\,{\textrm {pf}}(B)=\exp({\tfrac {1}{2}}\mathrm {tr} \log(A^{\text{T}}B)).$
Suppose A and B are 2n × 2n skew-symmetric matrices, then
    $\mathrm {pf} (A)\,\mathrm {pf} (B)={\tfrac {1}{n!}}B_{n}(s_{1},s_{2},\ldots ,s_{n}),\qquad \mathrm {where} \qquad s_{l}=-{\tfrac {1}{2}}(l-1)!\,\mathrm {tr} ((AB)^{l})$
and B$_n$(s$_1$,s$_2$,...,s$_n$) are Bell polynomials.

### Block matrices

For a block-diagonal matrix
       $A_{1}\oplus A_{2}={\begin{bmatrix}A_{1}&0\\0&A_{2}\end{bmatrix}},$
    $\operatorname {pf} (A_{1}\oplus A_{2})=\operatorname {pf} (A_{1})\operatorname {pf} (A_{2}).$
For an arbitrary n × n matrix M:
    $\operatorname {pf} {\begin{bmatrix}0&M\\-M^{\text{T}}&0\end{bmatrix}}=(-1)^{n(n-1)/2}\det M.$
It is often required to compute the Pfaffian of a skew-symmetric matrix $S$ with the block structure
    $S={\begin{pmatrix}M&Q\\-Q^{\mathrm {T} }&N\end{pmatrix}}\,$
where $M$ and $N$ are skew-symmetric matrices and $Q$ is a general rectangular matrix.
When $M$ is invertible, one has
    $\operatorname {pf} (S)=\operatorname {pf} (M)\operatorname {pf} (N+Q^{\mathrm {T} }M^{-1}Q).$
This can be seen from Aitken block-diagonalization formula,
    ${\begin{pmatrix}M&0\\0&N+Q^{\mathrm {T} }M^{-1}Q\end{pmatrix}}={\begin{pmatrix}I&0\\Q^{\mathrm {T} }M^{-1}&I\end{pmatrix}}{\begin{pmatrix}M&Q\\-Q^{\mathrm {T} }&N\end{pmatrix}}{\begin{pmatrix}I&-M^{-1}Q\\0&I\end{pmatrix}}.$
This decomposition involves a congruence transformations that allow to use the Pfaffian property $\operatorname {pf} (BAB^{\mathrm {T} })=\operatorname {det} (B)\operatorname {pf} (A)$.
Similarly, when $N$ is invertible, one has
    $\operatorname {pf} (S)=\operatorname {pf} (N)\operatorname {pf} (M+QN^{-1}Q^{\mathrm {T} }),$
as can be seen by employing the decomposition
    ${\begin{pmatrix}M+QN^{-1}Q^{\mathrm {T} }&0\\0&N\end{pmatrix}}={\begin{pmatrix}I&-QN^{-1}\\0&I\end{pmatrix}}{\begin{pmatrix}M&Q\\-Q^{\mathrm {T} }&N\end{pmatrix}}{\begin{pmatrix}I&0\\N^{-1}Q^{\mathrm {T} }&I\end{pmatrix}}.$

## Calculating the Pfaffian numerically

Suppose A is a 2n × 2n skew-symmetric matrices, then
    ${\textrm {pf}}(A)=i^{(n^{2})}\exp \left({\tfrac {1}{2}}\mathrm {tr} \log((\sigma _{y}\otimes I_{n})^{\mathrm {T} }\cdot A)\right),$
where $\sigma _{y}$ is the second Pauli matrix, $I_{n}$ is an identity matrix of dimension n and we took the trace over a matrix logarithm.
This equality is based on the trace identity
    ${\textrm {pf}}(A)\,{\textrm {pf}}(B)=\exp \left({\tfrac {1}{2}}\mathrm {tr} \log(A^{\text{T}}B)\right)$
and on the observation that ${\textrm {pf}}(\sigma _{y}\otimes I_{n})=(-i)^{n^{2}}$.
Since calculating the logarithm of a matrix is a computationally demanding task, one can instead compute all eigenvalues of $((\sigma _{y}\otimes I_{n})^{\mathrm {T} }\cdot A)$, take the log of all of these and sum them up. This procedure merely exploits the property $\operatorname {tr} {\log {(AB)}}=\operatorname {tr} {\log {(A)}}+\operatorname {tr} {\log {(B)}}$. This can be implemented in Mathematica with a single statement:
    Pf[x_] := Module[{n = Dimensions[x][[1]] / 2}, I^(n^2) Exp[ 1/2 Total[ Log[Eigenvalues[ Dot[Transpose[KroneckerProduct[PauliMatrix[2], IdentityMatrix[n]]], x] ]]]]]
However, this algorithm is unstable when the Pfaffian is large. The eigenvalues of $(\sigma _{y}\otimes I_{n})^{\mathrm {T} }\cdot A$ will generally be complex, and the logarithm of these complex eigenvalues are generally taken to be in $[-\pi ,\pi ]$. Under the summation, for a real valued Pfaffian, the argument of the exponential will be given in the form $x+k\pi /2$ for some integer $k$. When $x$ is very large, rounding errors in computing the resulting sign from the complex phase can lead to a non-zero imaginary component.
For other (more) efficient algorithms see Wimmer 2012.

## Applications

* There exist programs for the numerical computation of the Pfaffian on various platforms (Python, Matlab, Mathematica) (Wimmer 2012).
* The Pfaffian is an invariant polynomial of a skew-symmetric matrix under a proper orthogonal change of basis. As such, it is important in the theory of characteristic classes. In particular, it can be used to define the Euler class of a Riemannian manifold that is used in the generalized Gauss–Bonnet theorem.
* The number of perfect matchings in a planar graph is given by a Pfaffian, hence is polynomial time computable via the FKT algorithm. This is surprising given that for general graphs, the problem is very difficult (so called #P-complete). This result is used to calculate the number of domino tilings of a rectangle, the partition function of Ising models in physics, or of Markov random fields in machine learning (Globerson & Jaakkola 2007; Schraudolph & Kamenetsky 2009), where the underlying graph is planar. It is also used to derive efficient algorithms for some otherwise seemingly intractable problems, including the efficient simulation of certain types of restricted quantum computation. See Holographic algorithm for more information.