On the Theory Of Pfaffian Orientations. II. T -joins, k-Cuts, and Duality of Enumeration.

∗Anna Galluccio Istituto di Analisi dei Sistemi ed

Informatica - CNR viale Manzoni 30 00185 Roma ITALY

galluccio@iasi.rm.cnr.it

†Martin Loebl Department of Applied Mathematics Charles University Malostranske n. 25 118 00 Praha 1 CZECH REPUBLIC loebl@kam.ms.mff.cuni.cz

Received February 18, 1998; Accepted May 22, 1998.

Abstract

This is a continuation of our paper “A Theory of Pfaffian Orientations I: Perfect Matchings and Permanents”. We present a new combinatorial way to compute the generating functions of T -joins and k-cuts of graphs. As a consequence, we show that the computational problem to find the maximum weight of an edge-cut is polynomially solvable for the instances (G, w) where G is a graph embedded on an arbitrary fixed orientable surface and the weight function w has only a bounded number of different values. We also survey the related results concerning a duality of the Tutte polynomial, and present an application for the weight enumerator of a binary code. In a continuation of this paper which is in preparation we present an application to the Ising problem of three-dimensional crystal structures.

Mathematical Reviews Subject Numbers 05B35, 05C15, 05A15

∗Supported by NATO-CNR Fellowship †Supported by DONET, GACR 0194 and GAUK 194

1 Introduction

This is a continuation of our paper “A Theory of Pfaffian Orientations I: Perfect Matchings and Permanents”. We present a new combinatorial way to compute the generating functions of T -joins and k-cuts of graphs.

A graph is a pair G = (V, E) where V is a set and E is a set of unordered pairs of elements of V. The elements of V are called vertices and those of E are called edges. If e = xy is an edge then x, y are called endvertices of e.

In this paper V will always be finite, G = (V, E) will always be a graph and x_{e} will be a variable associated with each edge e of G. We let x = (x_{e} : e ∈ E) denote the vector whose components are indexed by the edges of G and, for M ⊂ E, we let x(M) denote the product of the variables of the edges of M.

A graph (V′, E′) is called a subgraph of graph G = (V, E) if V′ ⊂ V and E′ ⊂ E. A perfect matching of a graph is a set of pairwise disjoint edges, whose union equals the set of the vertices.

Let P = v_{1}, e_{1}, v_{2}, e_{2}, ..., v_{i}, e_{i}, v_{i+1}, ..., e_{n}, v_{n+1} be a sequence such that each v_{j} is a vertex of a graph G, each e_{j} = v_{j}v_{j+1} is an edge of G, and v_{i} ≠ v_{j} for i < j except if i = 1 and j = n + 1. If also v_{1} ≠ v_{n+1} then P is called a path of G. If v_{1} = v_{n+1} then P is called a cycle of G. In both cases the length of P equals n.

The graph G = (V, E) is connected if any pair of vertices is joined by a path, and it is called 2-connected if the graph G_{v} = (V − {v}, {e ∈ E; v ∉ e}) is connected for each vertex v of G. Each maximal 2-connected subgraph of G is called a 2-connected component of G.

Definition 1.1 The generating function of the perfect matchings of G is the polynomial P(G, x) which equals the sum of x(P) over all perfect matchings P of G.

A subgraph G′ = (V, E′) of a graph G = (V, E) is called eulerian if the degree of each vertex of G′ is even.

Definition 1.2 The generating function of the eulerian subgraphs of G is the polynomial E(G, x) which equals the sum of x(U) over all eulerian subgraphs U of G.

Let G = (V, E) be a graph and T ⊂ V. A T -join is a subgraph G′ = (V, E′) such that the degree of a vertex v of G′ is odd if and only if v ∈ T. Eulerian subgraphs are T -joins when T = ∅.

Definition 1.3 Let G = (V, E) be a graph and T ⊂ V. The generating function of the T -joins of G is the polynomial T_{T} (G, x) which equals the sum of x(W) over all T -joins (V, W) of G.

Next we consider k-cuts.

Definition 1.4 Let k ≥ 1 and let G = (V, E) be a graph. A pair ({V_{1}, ..., V_{k}}, E′) is called k-cut if {V_{1}, ..., V_{k}} is a partition of V into k non-empty disjoint subsets and E′ is the set of all edges with the endvertices in different parts V_{i}, i = 1, ..., k.

Definition 1.5 The generating function of the k-cuts is the polynomial C_{k}(G, x) which equals the sum of x(C) over all k-cuts ({V_{1}, ..., V_{k}}, C) of G.

An embedding of a graph on a surface is defined in a natural way: the vertices are embedded as points, and each edge is embedded as a continuous non-self-intersecting curve connecting the embeddings of its endvertices. The interiors of the embeddings of the edges are pairwise disjoint and the interiors of the curves embedding edges do not contain points embedding vertices.

The genus g of a graph G is that of the orientable surface S ⊂ IR^{3} of minimal genus on which G may be embedded.

The following theorem is the main result of [2].

Theorem 1.6 Let G be a graph of genus g. Then P(G, x) may be expressed as a linear combination of 4^{g} square roots of determinants.

2 T -joins.

There are several ways of relating the problem of counting eulerian subgraphs and the problem of counting perfect matchings. Each method involves replacing each vertex of a given graph by a cluster of vertices in a new “counting” graph. One of these methods turns out to be more appropriate for our purposes since it preserves the genus of the original graph. It was originally proposed by Fisher (see [1]) for counting the number of eulerian subgraphs of a graph. Here we extend his construction in order to solve the more general problem of counting the number of T -joins of a graph.

The construction may be performed in polynomial time and hence, together with Theorem 1.6, yields an algorithm to compute T_{T} (G, x).

Other constructions leading to the same result are useful in the study of crystal structures. We will discuss them in greater detail in a forthcoming paper.

Definition 2.1 Let G = (V, E) be a graph and let v ∈ V. Let e_{1}, ..., e_{k} be an ordering of the edges of G incident with v. The even splitting of v is a graph G′ = (V′, E′) such that V′ = V − {v} ∪ {v_{1}, ..., v_{6k}}, and E′ = E − {e_{1}, ..., e_{k}} ∪ {e′_{1}, ..., e′_{k}} ∪ {v_{t}v_{t+1}; 0 < t < 6k} ∪ {v_{3j+1}v_{3j+3}; j = 0, ..., 2k − 1} where e′_{i} is obtained from e_{i} by replacing v by v_{6(i−1)+2}, i = 1, …, k. We say that e′_{i} is the image of e_{i} in G′.

The odd splitting of v is obtained from the even splitting of v by deleting vertices v_{6k}, v_{6k−1}, v_{6k−2}.

Definition 2.2 Let G = (V, E) be a graph and T ⊂ V. We denote by G_{s} = (V_{s}, E_{s}) the graph obtained from G by odd splitting of all vertices of T and even splitting of all vertices of V − T. If the edge f′ of G_{s} is the image of the edge f of G then we let x_{f′}^{s} = x_{f}. We let x_{e}^{s} = 1 for the remaining edges e of G_{s}.

Theorem 2.3 Let G be embeddable on an orientable surface S and let each even and odd splitting of a vertex be performed in the clockwise order of the embeddings of its incident edges. Then G_{s} is also embeddable on S. Moreover P(G_{s}, x^{s}) = T_{T} (G, x).

Proof. The first statement follows from the definition of even and odd splitting. Next, observe that the T -joins W of G are in one-to-one correspondence with the perfect matchings P_{W} of G_{s}. Note that P_{W} contains the set of the images of the edges of W. This together with the choice of x^{s} implies that x(W) = x^{s}(P_{W}), for each T -join W, and the theorem follows. □

3 k-cuts.

In this section we consider the generating function of the multicuts of a graph and we derive an important relation between it and the generating function of the eulerian subgraphs of the same graph. It is well known that for a planar graph G, the cuts of G are in one-to-one correspondence with the eulerian subgraphs of its geometric dual G^{∗}. This correspondence does not hold anymore for graphs embeddable on surfaces of genus greater than zero; in these cases we need a more general duality result, due to van der Waerden (see [8], [10], [4]).

We use the following notation:

sinh(z, x) = \frac{z^{x} − z^{−x}}{2} , cosh(z, x) = \frac{z^{x} + z^{−x}}{2} , th(z, x) = \frac{sinh(z, x)}{cosh(z, x)}.

Note that sinh(x) = sinh(e, x) and cosh(x) = cosh(e, x).

Given a graph G = (V, E), we denote by σ ∈ {1, …, k}^{V} a |V |-dimensional vector whose components σ_{i}, i = 1, …, |V |, take values in the set {1, …, k}. Clearly, any such vector identifies a partition of V into i ≤ k disjoint sets and, consequently, an i-cut of G.

Let us denote by δ the vector indexed by the edges of G whose component δ_{ij} = δ(σ_{i}σ_{j}), ij ∈ E, equals 1 if σ_{i} = σ_{j} and −1 otherwise.

Moreover, for any A ⊂ E we let

U_{k}((V, A)) = ∑_{σ∈{1,...,k}^{V}} ∏_{ij∈A} δ(σ_{i}σ_{j}).

Theorem 3.1 Let G = (V, E) be a graph, z a variable and k > 1. Then

z^{∑_{f∈E} x_{f}} [k + ∑_{i=2}^{k} i!\binom{k}{i}C_{i}(G, (z^{−2x_{f}} : f ∈ E))] =

( ∏_{f∈E} cosh(z, x_{f})) ∑_{A⊆E} U_{k}((V, A)) ∏_{f∈A} th(z, x_{f}).

Proof. Using the identity

z^{xδ(σ_{i}σ_{j})} = cosh(z, x) + δ(σ_{i}σ_{j})sinh(z, x)

the result follows after some algebraic manipulations. In fact,

z^{∑_{f∈E} x_{f}} [k + ∑_{i=2}^{k} i!\binom{k}{i}C_{i}(G, (z^{−2x_{f}} : f ∈ E))] = ∑_{σ∈\{1,...,k\}^{V}} ( ∏_{ij∈E} z^{δ(σ_{i}σ_{j})x_{ij}}) =

∑_{σ∈{1,...,k}^{V}} ( ∏_{ij∈E}(cosh(z, x_{ij}) + δ(σ_{i}σ_{j})sinh(z, x_{ij}))) =

( ∏_{f∈E} cosh(z, x_{f})) ∑_{σ∈{1,...,k}^{V}} ( ∏_{ij∈E}(1 + δ(σ_{i}σ_{j})th(z, x_{ij}))) =

( ∏_{f∈E} cosh(z, x_{f})) ∑_{σ∈{1,...,k}^{V}} ∑_{A⊆E}( ∏_{ij∈A} δ(σ_{i}σ_{j})th(z, x_{ij})) =

( ∏_{f∈E} cosh(z, x_{f})) ∑_{A⊆E} U_{k}((V, A)) ∏_{f∈A} th(z, x_{f})

where ∏_{ij∈A} δ(σ_{i}σ_{j})th(z, x_{ij}) = 1 if A = ∅. Hence, the theorem follows. □

Specializing the above result to the case of edge-cuts, i.e. k = 2, we obtain the following result:

Theorem 3.2 Let G be a graph, z a variable and let C′_{2}(G, x) = C_{2}(G, x) + 1. Then

2z^{∑_{f∈E} x_{f}} C′_{2}(G, (z^{−2x_{f}} : f ∈ E)) = ( ∏_{f∈E} cosh(z, x_{f}))2^{|V |}E(G, (th(z, x_{f}) : f ∈ E)).

Proof. We have, from Theorem 3.1, that

2z^{∑_{f∈E} x_{f}} C′_{2}(G, (z^{−2x_{f}} : f ∈ E)) = ( ∏_{f∈E} cosh(z, x_{f})) ∑_{A⊆E} U_{2}((V, A)) ∏_{f∈A} th(z, x_{f}).

Now observe that if A ⊂ E is a cycle and σ ∈ {1, 2}^{V} arbitrary then ∏_{ij∈A} δ(σ_{i}σ_{j}) = 1. Hence U_{2}((V, A)) = 2^{|V |} when (V, A) is an eulerian subgraph. Moreover, if (V, A) is not an eulerian subgraph, then observe that U_{2}((V, A)) = 0.

□

Theorem 3.3 Let k be a positive integer. Let G be the class of graphs G = (V, E) such that the edges are partitioned into at most k classes and the variables x_{e} are equal in each class.

Then there is a polynomial algorithm which, given G ∈ G and E(G, x) as input, produces C_{2}(G, x).

Proof. By Theorem 3.2, we have that

∏_{f∈E} cosh(z, x_{f})2^{|V |}E(G, (th(z, x_{f}) : f ∈ E)) =

∏_{f∈E} \frac{z^{x_{f}} + z^{−x_{f}}}{2} 2^{|V |}E(G, (\frac{z^{x_{f}} − z^{−x_{f}}}{z^{x_{f}} + z^{−x_{f}}} : f ∈ E)) =

∏_{f∈E} \frac{z^{2x_{f}} + 1}{2z^{x_{f}}}2^{|V |}E(G, (\frac{z^{2x_{f}} − 1}{z^{2x_{f}} + 1} : f ∈ E)) =

2 ∏_{f∈E} z^{x_{f}} C′_{2}(G, (z^{−2x_{f}} : f ∈ E)).

Hence,

C′_{2}(G, (z^{−2x_{f}} , f ∈ E)) = 2^{|V |−|E|−1} ∏_{f∈E} z^{−2x_{f}} E^{∗}(z^{2x_{f}} : f ∈ E)),

where

E^{∗}(z^{2x_{f}} : f ∈ E)) = ∏_{f∈E}(z^{2x_{f}} + 1)E(G, (\frac{z^{2x_{f}} − 1}{z^{2x_{f}} + 1} : f ∈ E)).

Observe that ∏_{f∈E} z^{−2x_{f}} E^{∗}(z^{2x_{f}} : f ∈ E)) is a polynomial Q(z^{−2x_{f}} : f ∈ E) in the functions z^{−2x_{f}} and hence, its nonzero monomials correspond uniquely to nonzero terms of C′_{2}(G, z^{−2x_{f}} : f ∈ E).

It follows that, given G ∈ G and E(G, x), the polynomial E^{∗}(G, x) and, consequently, C_{2}(G, x) may be expressed in polynomial time.

□

It immediately follows from Theorem 3.3, Theorem 2.3 and Theorem 1.6 that it is possible to find efficiently the maximum weight of an edge-cut for the graphs G = (V, E) embeddable on an arbitrary fixed orientable surface, which have only a bounded number of different edge-weights.

Using similar arguments we can obtain a polynomial time algorithm when the weights are integers bounded in absolute value by a polynomial of the size of the graph. The details of these algorithms will appear elsewhere.

4 A Duality of Enumeration.

We will show now how the duality result proved in the previous section leads to interesting expressions for well-known polynomials studied in combinatorics.

We start by considering the Tutte polynomial; it has been defined by Tutte ([6]) and it may be expressed as a minor modification of the Whitney rank generating function ([11]).

Definition 4.1 Let G = (V, E) be a connected graph. For A ⊂ E let r(A) = |V | − c(A), where c(A) denotes the number of connected components of (V, A). Then let

T (G, x, y) = ∑_{A⊂E}(x − 1)^{r(E)−r(A)}(y − 1)^{|A|−r(A)}.

T (G, x, y) is called the Tutte polynomial of graph G.

More generally, the Tutte polynomial of a matroid (see [9] for basic notions of matroid theory) is defined as follows.

Definition 4.2 Let M be a matroid on set E. For A ⊂ E let r(A) denote the rank of A in M. Then let

T (M, x, y) = ∑_{A⊂E}(x − 1)^{r(E)−r(A)}(y − 1)^{|A|−r(A)}.

T (M, x, y) is called the Tutte polynomial of matroid M.

For example if G is a graph and N_{G} the graphic matroid of G then T (G, x, y) = T (N_{G}, x, y).

If M is a matroid and M^{∗} its dual then r^{∗}(E) − r^{∗}(A) = |A| − r(A) and we immediately get that T (M, x, y) = T (M^{∗}, y, x). This relation is called duality of the Tutte polynomial.

4.1 Weight enumerator of a linear code.

Let V = F^{n} be a vector space over a field F. Each subspace C of V of dimension k is called a linear code of length n and dimension k. The elements of a linear code are called codewords. The weight of a codeword is the number of its nonzero entries. The weight distribution of C is the sequence A_{0}, A_{1}, …, A_{n} where A_{i} equals the number of codewords of C of weight i, 0 ≤ i ≤ n.

The dual code of C is denoted by C^{∗} and consists of all those n-tuples (d_{1}, …, d_{n}) of F^{n} satisfying

c_{1}d_{1} + … + c_{n}d_{n} = 0

for all codewords (c_{1}, …, c_{n}) ∈ C. Hence, C^{∗} is a code of length n and dimension n − k.

The weight enumerator of C is the polynomial

A_{C}(t) = ∑_{i=0}^{n} A_{i}t^{i}.

The following theorem was proved by MacWilliams ([5]) and it states a fundamental relation between the weight enumerators of C and of its dual C^{∗}.

Theorem 4.3 Let C be a linear code of length n and dimension k over GF [q] and 1 + (q − 1)t ≠ 0. Then

A_{C^{∗}}(t) = \frac{[1 + (q − 1)t]^{n}}{q^{k}} A_{C}(\frac{(1 − t)}{1 + (q − 1)t}).

If the linear code of length n is given as the row space of a k × n matrix A over a field F, i.e. C = {A^{T} x; x ∈ F^{k}}, then we will denote it as C(F, A). Moreover, if a matroid M is represented by the columns of A, then we let M = M(F, C) and C = C(F, M). In this case we have C^{∗} = {x ∈ F^{n}; Ax = 0}.

The following theorem was proved by Greene ([3]).

Theorem 4.4 Let C be a linear code of length n and dimension k over GF [q] and 0 ≠ t ≠ 1. Then

A_{C}(t) = (1 − t)^{k}t^{n−k}T (M(GF [q], C), \frac{1 + (q − 1)t}{(1 − t)}, \frac{1}{t}).

Note that Theorem 4.3 also follows immediately from Theorem 4.4 and the duality of the Tutte polynomial. As an immediate corollary we get

Corollary 4.5 Let M be a matroid represented over GF [q]. If (x − 1)(y − 1) = q and 0 ≠ y ≠ 1 then

T (M, x, y) = y^{n}(y − 1)^{−k}A_{C(GF [q],M)}(y^{−1}).

Consider now the following example. Let G = (V, E) be a graph and let N_{G} be the graphic matroid of G. Let O_{G} be an oriented incidence matrix of G, i.e. an |V | × |E| matrix obtained from the incidence matrix of G by replacing exactly one ‘1’ of each column by ‘ − 1’. The columns of O_{G} represent N_{G} over an arbitrary field F.

The set of the characteristic vectors of 2-cuts of a graph G (including the empty cut) equals C(GF [2], N_{G}) and the set of the characteristic vectors of eulerian subgraphs of G equals C(GF [2], N_{G})^{∗}. Using this terminology, it may be checked easily that Theorem 4.3 generalizes Theorem 3.2.

Theorem 4.6 Let G = (V, E) be a connected graph. Then

A_{C(GF [q],N_{G})}(t) = 1 + ∑_{i=2}^{q}(q − 1)...(q − i + 1)C_{i}(G, (t, ..., t)).

Proof. Let C = C(GF [q], N_{G}). We have C = {O_{G}^{T}x; x ∈ GF [q]^{V} } and A_{C}(t) is the weight enumerator of C. Let us define an equivalence on GF [q]^{V} by x ≡ y if O_{G}^{T}x = O_{G}^{T}y. Observe that each equivalence class consists of q elements since O_{G}^{T}x = O_{G}^{T}y if and only if x − y is a constant vector, i.e. (x − y)_{i} = (x − y)_{j} for each i, j ∈ {1, ..., |V |}. Let C^{+} be the system (in contrast with a set, some elements of a system may appear several times) defined by C^{+} = (O_{G}^{T}x; x ∈ GF [q]^{V}). Let A_{C^{+}}(t) = ∑_{i=0}^{|E|} A_{i}^{+}t^{i}, where A_{i}^{+} equals the number of vectors of C^{+} with i nonzero components. Since each equivalence class of ≡ consists of q elements we have A_{C^{+}}(t) = qA_{C}(t).

If x = (x_{1}, ..., x_{|V |}) ∈ GF [q]^{V} then let l_{x} be the number of different values of x_{i}, i = 1, ..., |V | and let V_{1}^{x}, ..., V_{l_{x}}^{x} be the partition of V into l_{x} non-empty classes such that the components of x are equal in each class.

Let cut(x) be the subset of E formed by those edges having endvertices in different sets V_{i}^{x}, i = 1, ..., l_{x} and let Cut(x) = ({V_{1}, ..., V_{l_{x}}}, cut(x)).

Each Cut(x) is an l_{x}-cut of G and the weight of the codeword O_{G}^{T}x equals |cut(x)|. Let C^{++} be the system defined by C^{++} = (cut(x); x ∈ GF [q]^{V}). Let A_{C^{++}}(t) = ∑_{W ∈C^{++}} t^{|W |}. We have A_{C^{+}}(t) = A_{C^{++}}(t).

For i = 1, ..., q let X_{i} = {x ∈ GF [q]^{V}; l_{x} = i}. Define an equivalence on X_{i} by x ≡^{∗} y if Cut(x) = Cut(y). Observe that each equivalence class of ≡^{∗} consists of q(q − 1)...(q − i + 1) elements. Hence

qA_{C}(t) = A_{C^{+}}(t) = A_{C^{++}}(t) = q + ∑_{i=2}^{q} q(q − 1)...(q − i + 1)C_{i}(G, (t, ..., t)).

This proves the Theorem.

□

By Corollary 4.5 and Theorem 4.6 we have

Corollary 4.7 Let G = (V, E) be a connected graph and let N_{G} be the graphic matroid of G. If (x − 1)(y − 1) = 2 and 0 ≠ y ≠ 1 then

T (G, x, y) = T (N_{G}, x, y) = y^{|E|}(y − 1)^{1−|V |}[1 + C_{2}(G, (y^{−1}, ..., y^{−1})].

It follows that the Tutte polynomial of a graph of genus g may be expressed along the hyperbola (x − 1)(y − 1) = 2 as a linear combination of 4^{g} Pfaffians, and hence it may be determined efficiently for the graphs embeddable on an arbitrary fixed orientable surface.

It is natural to ask whether there is an analogy of this statement for binary matroids.

4.2 Flow polynomial of graphs.

We have C(GF [q], N_{G})^{∗} = {z ∈ GF [q]^{E}; O_{G}z = 0}. The elements of C(GF [q], N_{G})^{∗} are flows on G with values in GF [q]. An element of C(GF [q], N_{G})^{∗} is called a nowherezero flow if its weight equals |E|. Let F′(G, q) be the subset of C(GF [q], N_{G})^{∗} consisting of nowhere-zero flows. F (G, q) = |F′(G, q)| is called the flow polynomial of G.

Theorems 4.3, 4.6 express a duality between flows and cuts of a graph. It is a duality of the Tutte polynomial.

Nowhere-zero flows are studied extensively. The following theorem was proved by Tutte ([7]).

Theorem 4.8 Let G = (V, E) be a graph and let q be a power of a prime. Then

F (G, q) = (−1)^{|V |−|E|−c(G)}T (G, 0, 1 − q).

We give an interesting expression for F (G, q) which is new as far as we know.

Theorem 4.9 Let G = (V, E) be a graph. Then

F (G, q) = q^{−|V |}2^{−|E|} ∑_{A⊂E} U_{q}((V, A))q^{|A|}(q − 2)^{|E|−|A|}.

Proof. Let C = C(GF [q], N_{G}) and let D = C(GF [q], N_{G})^{∗}. By Theorem 4.3 we have

A_{D}(t) = q^{1−|V |}[1 + (q − 1)t]^{|E|}A_{C}((1 − t)(1 + (q − 1)t)^{−1}).

From Theorem 4.6 and Theorem 3.1 we get for z > 0

qA_{C}(z^{−1}) = q + ∑_{i=2}^{q} q(q − 1)...(q − i + 1)C_{i}(G, (z^{−1}, ..., z^{−1})) =

2^{−|E|}z^{−|E|} ∑_{A⊂E} U_{q}((V, A))(z − 1)^{|A|}(z + 1)^{|E|−|A|}.

If we let z = (1 + (q − 1)t)(1 − t)^{−1} we get for all t > 0, t ≠ 1

A_{D}(t) = q^{−|V |}2^{−|E|} ∑_{A⊂E} U_{q}((V, A))(qt)^{|A|}(2 + (q − 2)t)^{|E|−|A|}.

It follows that the leading coefficient of A_{D}(t), which equals F (G, q), is equal to

q^{−|V |}2^{−|E|} ∑_{A⊂E} U_{q}((V, A))q^{|A|}(q − 2)^{|E|−|A|}.

□

References

[1] M.E. Fisher. On the dimer solution of planar Ising models. Journal of Mathematical Physics 7, 10, 1966.

[2] A. Galluccio and M. Loebl. A theory of pfaffian orientations I: Perfect matchings and permanents. Technical Report 452, IASI-CNR, 1997.

[3] C. Greene. Weight enumeration and the geometry of linear codes. Studies in Applied Mathematics, 55:119–128, 1976.

[4] P. W. Kasteleyn. Dimer statistics and phase transitions. Jour. Math. Physics, 4:287–293, 1963.

[5] J. MacWilliams. A theorem on the distribution of weights in a systematic code. Bell Syst. Tech. J., 42:654, 1962.

[6] W.T. Tutte. A ring in graph theory. Proc. Camb. Phil. Soc., 43:26–40, 1947.

[7] W.T. Tutte. A contribution to the theory of chromatic polynomials. Canad. J. Math., 6:80–91, 1954.

[8] B.L. van der Waerden. Die lange reichweite der regelmassigen atomanordnung in mischkristallen. Z. Physik, 118:473, 1941.

[9] D. J. A. Welsh. Matroid Theory. Academic Press, London, 1976.

[10] D.J.A. Welsh. Complexity: Knots, Colourings and Counting. Cambridge University Press, 1993. London Mathematical Society Lecture Note Series 186.

[11] H. Whitney. A logical expansion in mathematics. Bull. Amer. Math. Soc., 38:572–579, 1932.