# Lindström–Gessel–Viennot lemma

In mathematics, the Lindström–Gessel–Viennot lemma provides a way to count the tuples of non-intersecting lattice paths, or, more generally, paths on a directed graph. It was proved by Gessel–Viennot in 1985, based on previous work of Lindström published in 1973. The lemma is named after Bernt Lindström, Ira Gessel and Gérard Viennot.

## Statement

Let G be a locally finite directed acyclic graph. This means that each vertex has finite degree, and that G contains no directed cycles. Consider base vertices $A=\{a_{1},\ldots ,a_{n}\}$ and destination vertices $B=\{b_{1},\ldots ,b_{n}\}$, and also assign a weight $\omega _{e}$ to each directed edge e. These edge weights are assumed to belong to some commutative ring. For each directed path P between two vertices, let $\omega (P)$ be the product of the weights of the edges of the path. For any two vertices a and b, write e(a,b) for the sum $e(a,b)=\sum _{P:a\to b}\omega (P)$ over all paths from a to b. This is well-defined if between any two points there are only finitely many paths; but even in the general case, this can be well-defined under some circumstances (such as all edge weights being pairwise distinct formal indeterminates, and $e(a,b)$ being regarded as a formal power series). If one assigns the weight 1 to each edge, then e(a,b) is the number of paths from a to b.
With this setup, write
    $M={\begin{pmatrix}e(a_{1},b_{1})&e(a_{1},b_{2})&\cdots &e(a_{1},b_{n})\\e(a_{2},b_{1})&e(a_{2},b_{2})&\cdots &e(a_{2},b_{n})\\\vdots &\vdots &\ddots &\vdots \\e(a_{n},b_{1})&e(a_{n},b_{2})&\cdots &e(a_{n},b_{n})\end{pmatrix}}$.
An n-tuple of non-intersecting paths from A to B means an n-tuple (P$_1$, ..., P$_n$) of paths in G with the following properties:
* There exists a permutation $\sigma$ of $\left\{1,2,...,n\right\}$ such that, for every i, the path P$_i$ is a path from $a_{i}$ to $b_{\sigma (i)}$.
* Whenever $i\neq j$, the paths P$_i$ and P$_j$ have no two vertices in common (not even endpoints).
Given such an n-tuple (P$_1$, ..., P$_n$), we denote by $\sigma (P)$ the permutation of $\sigma$ from the first condition.
The Lindström–Gessel–Viennot lemma then states that the determinant of M is the signed sum over all n-tuples P = (P$_1$, ..., P$_n$) of non-intersecting paths from A to B:
    $\det(M)=\sum _{(P_{1},\ldots ,P_{n})\colon A\to B}\mathrm {sign} (\sigma (P))\prod _{i=1}^{n}\omega (P_{i}).$
That is, the determinant of M counts the weights of all n-tuples of non-intersecting paths starting at A and ending at B, each affected with the sign of the corresponding permutation of $(1,2,\ldots ,n)$, given by $P_{i}$ taking $a_{i}$ to $b_{\sigma (i)}$.
In particular, if the only permutation possible is the identity (i.e., every n-tuple of non-intersecting paths from A to B takes a$_i$ to b$_i$ for each i) and we take the weights to be 1, then det(M) is exactly the number of non-intersecting n-tuples of paths starting at A and ending at B.

## Proof

To prove the Lindström–Gessel–Viennot lemma, we first introduce some notation.
An n-path from an n-tuple $(a_{1},a_{2},\ldots ,a_{n})$ of vertices of G to an n-tuple $(b_{1},b_{2},\ldots ,b_{n})$ of vertices of G will mean an n-tuple $(P_{1},P_{2},\ldots ,P_{n})$ of paths in G, with each $P_{i}$ leading from $a_{i}$ to $b_{i}$. This n-path will be called non-intersecting just in case the paths P$_i$ and P$_j$ have no two vertices in common (including endpoints) whenever $i\neq j$. Otherwise, it will be called entangled.
Given an n-path $P=(P_{1},P_{2},\ldots ,P_{n})$, the weight $\omega (P)$ of this n-path is defined as the product $\omega (P_{1})\omega (P_{2})\cdots \omega (P_{n})$.
A twisted n-path from an n-tuple $(a_{1},a_{2},\ldots ,a_{n})$ of vertices of G to an n-tuple $(b_{1},b_{2},\ldots ,b_{n})$ of vertices of G will mean an n-path from $(a_{1},a_{2},\ldots ,a_{n})$ to $\left(b_{\sigma (1)},b_{\sigma (2)},\ldots ,b_{\sigma (n)}\right)$ for some permutation $\sigma$ in the symmetric group $S_{n}$. This permutation $\sigma$ will be called the twist of this twisted n-path, and denoted by $\sigma (P)$ (where P is the n-path). This, of course, generalises the notation $\sigma (P)$ introduced before.
Recalling the definition of M, we can expand det M as a signed sum of permutations; thus we obtain
    ${\begin{array}{rcl}\det M&=&\sum _{\sigma \in S_{n}}\mathrm {sign} (\sigma )\prod _{i=1}^{n}e(a_{i},b_{\sigma (i)})\\&=&\sum _{\sigma \in S_{n}}\mathrm {sign} (\sigma )\prod _{i=1}^{n}\sum _{P_{i}:a_{i}\to b_{\sigma (i)}}\omega (P_{i})\\&=&\sum _{\sigma \in S_{n}}\mathrm {sign} (\sigma )\sum \{\omega (P):P~{\text{an}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{\sigma (1)},b_{\sigma (2)},\ldots ,b_{\sigma (n)}\right)\}\\&=&\sum \{\mathrm {sign} (\sigma (P))\omega (P):P~{\text{a twisted}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{1},b_{2},...,b_{n}\right)\}\\&=&\sum \{\mathrm {sign} (\sigma (P))\omega (P):P~{\text{a non-intersecting twisted}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{1},b_{2},...,b_{n}\right)\}\\&&+\sum \{\mathrm {sign} (\sigma (P))\omega (P):P~{\text{an entangled twisted}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{1},b_{2},...,b_{n}\right)\}\\&=&\sum _{(P_{1},\ldots ,P_{n})\colon A\to B}\mathrm {sign} (\sigma (P))\omega (P)\\&&+\underbrace {\sum \{\mathrm {sign} (\sigma (P))\omega (P):P~{\text{an entangled twisted}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{1},b_{2},...,b_{n}\right)\}} _{=0?}\\\end{array}}$
It remains to show that the sum of $\mathrm {sign} (\sigma (P))\omega (P)$ over all entangled twisted n-paths vanishes. Let ${\mathcal {E}}$ denote the set of entangled twisted n-paths. To establish this, we shall construct an involution$f:{\mathcal {E}}\longrightarrow {\mathcal {E}}$ with the properties $\omega (f(P))=\omega (P)$ and $\mathrm {sign} (\sigma (f(P)))=-\mathrm {sign} (\sigma (P))$ for all $P\in {\mathcal {E}}$. Given such an involution, the rest-term
    $\sum \{\mathrm {sign} (\sigma (P))\omega (P):P~{\text{an entangled twisted}}~n{\text{-path from}}~\left(a_{1},a_{2},\ldots ,a_{n}\right)~{\text{to}}~\left(b_{1},b_{2},...,b_{n}\right)\}=\sum _{P\in {\mathcal {E}}}\mathrm {sign} (\sigma (P))\omega (P)$
in the above sum reduces to 0, since its addends cancel each other out (namely, the addend corresponding to each $P\in {\mathcal {E}}$ cancels the addend corresponding to $f(P)$).
Construction of the involution: The idea behind the definition of the involution $f$ is to take choose two intersecting paths within an entangled path, and switch their tails after their point of intersection. There are in general several pairs of intersecting paths, which can also intersect several times; hence, a careful choice needs to be made. Let $P=\left(P_{1},P_{2},...,P_{n}\right)$ be any entangled twisted n-path. Then $f(P)$ is defined as follows. We call a vertex crowded if it belongs to at least two of the paths $P_{1},P_{2},...,P_{n}$. The fact that the graph is acyclic implies that this is equivalent to "appearing at least twice in all the paths". Since P is entangled, there is at least one crowded vertex. We pick the smallest $i\in \{1,2,\ldots ,n\}$ such that $P_{i}$ contains a crowded vertex. Then, we pick the first crowded vertex v on $P_{i}$ ("first" in sense of "encountered first when travelling along $P_{i}$"), and we pick the largest j such that v belongs to $P_{j}$. The crowdedness of v implies j > i. Write the two paths $P_{i}$ and $P_{j}$ as
    ${\begin{array}{rcl}P_{i}&\equiv &a_{i}=u_{0}\to u_{1}\to u_{2}\ldots u_{\alpha -1}\to \overbrace {\mathbf {u} _{\alpha }\to u_{\alpha +1}\ldots \to u_{r}=b_{\sigma (i)}} ^{\mathrm {tail} ~i}\\P_{j}&\equiv &a_{j}=v_{0}\to v_{1}\to v_{2}\ldots v_{\beta -1}\to \underbrace {\mathbf {v} _{\beta }\to v_{\beta +1}\ldots \to v_{s}=b_{\sigma (j)}} _{\mathrm {tail} ~j}\\\end{array}}$
where $\sigma =\sigma (P)$, and where $\alpha$ and $\beta$ are chosen such that v is the $\alpha$-th vertex along $P_{i}$ and the $\beta$-th vertex along $P_{j}$ (that is, $v=u_{\alpha }=v_{\beta }$). We set $\alpha _{P}=\alpha$ and $\beta _{P}=\beta$ and $i_{P}=i$ and $j_{P}=j$. Now define the twisted n-path $f(P)$ to coincide with $P$ except for components $i$ and $j$, which are replaced by
    ${\begin{array}{rcl}P'_{i}&\equiv &a_{i}=u_{0}\to u_{1}\to u_{2}\ldots u_{\alpha -1}\to \overbrace {v_{\beta _{P}}\to v_{\beta _{P}+1}\ldots \to v_{s}=b_{\sigma (j)}} ^{\mathrm {tail} ~j}\\P'_{j}&\equiv &a_{j}=v_{0}\to v_{1}\to v_{2}\ldots v_{\beta -1}\to \underbrace {u_{\alpha _{P}}\to u_{\alpha _{P}+1}\ldots \to u_{r}=b_{\sigma (i)}} _{\mathrm {tail} ~i}\\\end{array}}$
It is immediately clear that $f(P)$ is an entangled twisted n-path. Going through the steps of the construction, it is easy to see that $i_{f(P)}=i_{P}$, $j_{f(P)}=j_{P}$ and furthermore that $\alpha _{f(P)}=\alpha _{P}$ and $\beta _{f(P)}=\beta _{P}$, so that applying $f$ again to $f(P)$ involves swapping back the tails of $f(P)_{i},f(P)_{j}$ and leaving the other components intact. Hence $f(f(P))=P$. Thus $f$ is an involution. It remains to demonstrate the desired antisymmetry properties:
From the construction one can see that $\sigma (f(P))$ coincides with $\sigma =\sigma (P)$ except that it swaps $\sigma (i)$ and $\sigma (j)$, thus yielding $\mathrm {sign} (\sigma (f(P)))=-\mathrm {sign} (\sigma (P))$. To show that $\omega (f(P))=\omega (P)$ we first compute, appealing to the tail-swap
    ${\begin{array}{rcl}\omega (P'_{i})\omega (P'_{j})&=&\left(\prod _{t=0}^{\alpha -1}\omega (u_{t},u_{t+1})\cdot \prod _{t=\beta }^{s-1}\omega (v_{t},v_{t+1})\right)\cdot \left(\prod _{t=0}^{\beta -1}\omega (v_{t},v_{t+1})\cdot \prod _{t=\alpha }^{r-1}\omega (u_{t},u_{t+1})\right)\\&=&\prod _{t=0}^{r-1}\omega (u_{t},u_{t+1})\cdot \prod _{t=0}^{s-1}\omega (v_{t},v_{t+1})\\&=&\omega (P_{i})\omega (P_{j}).\\\end{array}}$
Hence $\omega (f(P))=\prod _{k=1}^{n}\omega (f(P)_{k})=\prod _{k=1,~k\neq i,j}^{n}\omega (P_{k})\cdot \omega (P'_{i})\omega (P'_{j})=\prod _{k=1,~k\neq i,j}^{n}\omega (P_{k})\cdot \omega (P_{i})\omega (P_{j})=\prod _{k=1}^{n}\omega (P_{k})=\omega (P)$.
Thus we have found an involution with the desired properties and completed the proof of the Lindström–Gessel–Viennot lemma.
Remark. Arguments similar to the one above appear in several sources, with variations regarding the choice of which tails to switch. A version with j smallest (unequal to i) rather than largest appears in the Gessel-Viennot 1989 reference (proof of Theorem 1).

## Applications
### Schur polynomials

The Lindström–Gessel–Viennot lemma can be used to prove the equivalence of the following two different definitions of Schur polynomials. Given a partition $\lambda =\lambda _{1}+\cdots +\lambda _{r}$ of n, the Schur polynomial $s_{\lambda }(x_{1},\ldots ,x_{n})$ can be defined as:
* $s_{\lambda }(x_{1},\ldots ,x_{n})=\sum _{T}w(T),$
where the sum is over all semistandard Young tableaux T of shape λ, and the weight of a tableau T is defined as the monomial obtained by taking the product of the x$_i$ indexed by the entries i of T. For instance, the weight of the tableau
is $x_{1}x_{3}x_{4}^{3}x_{5}x_{6}x_{7}$.
* $s_{\lambda }(x_{1},\ldots ,x_{n})=\det \left((h_{\lambda _{i}+j-i})_{i,j}^{r\times r}\right),$
where h$_i$ are the complete homogeneous symmetric polynomials (with h$_i$ understood to be 0 if i is negative). For instance, for the partition (3,2,2,1), the corresponding determinant is
    $s_{(3,2,2,1)}={\begin{vmatrix}h_{3}&h_{4}&h_{5}&h_{6}\\h_{1}&h_{2}&h_{3}&h_{4}\\1&h_{1}&h_{2}&h_{3}\\0&0&1&h_{1}\end{vmatrix}}.$
To prove the equivalence, given any partition λ as above, one considers the r starting points $a_{i}=(r+1-i,1)$ and the r ending points $b_{i}=(\lambda _{i}+r+1-i,n)$, as points in the lattice $\mathbb {Z} ^{2}$, which acquires the structure of a directed graph by asserting that the only allowed directions are going one to the right or one up; the weight associated to any horizontal edge at height i is x$_i$, and the weight associated to a vertical edge is 1. With this definition, r-tuples of paths from A to B are exactly semistandard Young tableaux of shape λ, and the weight of such an r-tuple is the corresponding summand in the first definition of the Schur polynomials. For instance, with the tableau , one gets the corresponding 4-tuple
On the other hand, the matrix M is exactly the matrix written above for D. This shows the required equivalence. (See also §4.5 in Sagan's book, or the First Proof of Theorem 7.16.1 in Stanley's EC2, or §3.3 in Fulmek's arXiv preprint, or §9.13 in Martin's lecture notes, for slight variations on this argument.)

### The Cauchy–Binet formula

One can also use the Lindström–Gessel–Viennot lemma to prove the Cauchy–Binet formula, and in particular the multiplicativity of the determinant.

## Generalizations
### Talaska's formula

The acyclicity of G is an essential assumption in the Lindström–Gessel–Viennot lemma; it guarantees (in reasonable situations) that the sums $e(a,b)$ are well-defined, and it advects into the proof (if G is not acyclic, then f might transform a self-intersection of a path into an intersection of two distinct paths, which breaks the argument that f is an involution). Nevertheless, Kelli Talaska's 2012 paper establishes a formula generalizing the lemma to arbitrary digraphs. The sums $e(a,b)$ are replaced by formal power series, and the sum over nonintersecting path tuples now becomes a sum over collections of nonintersecting and non-self-intersecting paths and cycles, divided by a sum over collections of nonintersecting cycles. The reader is referred to Talaska's paper for details.