全称是 Lindström-Gessel-Viennot 引理,用于求解 DAG 不相交路径问题。
设起点集合为 \(A=\{a_i\}\),终点集合为 \(B=\{b_i\}\),一条路径的权值 \(w(P)\) 是路径上所有边权之积。(这个边权是交换环就行,例如生成函数)
设对于一个起点 \(a\) 和终点 \(b\),\(e(a,b)\) 是所有以它们为端点的路径权值和。那么以下行列式:
的值就是所有 \(A\) 到 \(B\) 的不相交路径权值之积的带符号和 \(\sum\limits_P(-1)^{\text{inv}(\sigma)}\prod w(P_i)\)。
其中 \(P=\{P_1,P_2,\dots,P_n\}\) 为不交路径集合,\(P_i\) 为 \(a_i\) 到 \(b_{\sigma(i)}\) 的路径;\(\sigma\) 是一个置换,\(\text{inv}(\sigma)\) 表示 \(\sigma\) 的逆序数。
考虑证明这个东西,根据行列式的定义它等于 \(\sum\limits_{\sigma}(-1)^{\text{inv}(\sigma)}\prod\limits_{i=1}^ne(a_i,b_{\sigma(i)})\)。
右边这个东西整理一下变成 \(\sum\limits_{P:A\to B}(-1)^{\text{inv}(\sigma)}\prod w(P_i)\) 已经和原式几乎一样了,现在我们需要证明多出来的那些相交路径对答案没有影响。
发现这东西还是挺显然的,我们只需要交换第一个交叉点对应的终点就可以两两匹配消掉,于是原定理得证。
如果只需要计数路径,使所有权值为 \(1\) 即可。
这东西的应用主要是在网格图上从一边走到另一边的不交路径计数,因为此时只有 \(\sigma=(1,2,\dots,n)\) 才不相交,右边就是路径条数。
例题:洛谷模板 P6657。
显然本题中 \(e(a_i,b_j)=\dbinom{b_j-a_i+n-1}{n-1}\),扔进去算一个行列式即可。
另外,写成行列式后处理的技巧也需要注意,有一道不方便透露的模拟题中就是写成行列式后再消元成 Vandermonde 行列式,然后 FFT 优化卷积。