LGV 引理
简介
Lindström–Gessel–Viennot lemma,即 LGV 引理,可以用来处理有向无环图上不相交路径计数等问题。
前置知识:图论相关概念 中的基础部分、矩阵、高斯消元求行列式。
LGV 引理仅适用于 有向无环图。
定义
\(\omega(P)\) 表示 \(P\) 这条路径上所有边的边权之积。(路径计数时,可以将边权都设为 \(1\))(事实上,边权可以为生成函数)
\(e(u, v)\) 表示 \(u\) 到 \(v\) 的 每一条 路径 \(P\) 的 \(\omega(P)\) 之和,即 \(e(u, v)=\sum\limits_{P:u\rightarrow v}\omega(P)\)。
起点集合 \(A\),是有向无环图点集的一个子集,大小为 \(n\)。
终点集合 \(B\),也是有向无环图点集的一个子集,大小也为 \(n\)。
一组 \(A\rightarrow B\) 的不相交路径 \(S\):\(S_i\) 是一条从 \(A_i\) 到 \(B_{\sigma(S)_i}\) 的路径(\(\sigma(S)\) 是一个排列),对于任何 \(i\ne j\),\(S_i\) 和 \(S_j\) 没有公共顶点。
\(t(\sigma)\) 表示排列 \(\sigma\) 的逆序对个数。
引理
其中 \(\sum\limits_{S:A\rightarrow B}\) 表示满足上文要求的 \(A\rightarrow B\) 的每一组不相交路径 \(S\)。
证明
由行列式定义可得
观察到 \(\prod\limits_{i=1}^n \sum\limits_{P:a_i\to b_{\sigma(i)}} \omega(P)\),实际上是所有从 \(A\) 到 \(B\) 排列为 \(\sigma\) 的路径组 \(P\) 的 \(\omega(P)\) 之和。
此处 \(P\) 为任意路径组。
设 \(U\) 为不相交路径组,\(V\) 为相交路径组,
设 \(P\) 中存在一个相交路径组 \(P_i:a_1 \to u \to b_1,P_j:a_2 \to u \to b_2\),则必然存在和它相对的一个相交路径组 \(P_i'=a_1\to u\to b_2,P_j'=a_2\to u\to b_1\),\(P'\) 的其他路径与 \(P\) 相同。可得 \(\omega(P)=\omega(P'),t(P)=t(P')\pm 1\)。
因此我们有 \(\sum\limits_{V:A\to B}(-1)^{t(\sigma)}\prod\limits_{i=1}^n \omega(V_i)=0\)。
则 \(\det(M)=\sum\limits_{U:A\to B}(-1)^{t(U)}\prod\limits_{i=1}^n \omega(U_i)=0\)。
证毕[^1]。
例题
例 1 CF348D Turtles
题意:有一个 \(n\times m\) 的格点棋盘,其中某些格子可走,某些格子不可走。有一只海龟从 \((x, y)\) 只能走到 \((x+1, y)\) 和 \((x, y+1)\) 的位置,求海龟从 \((1, 1)\) 到 \((n, m)\) 的不相交路径数对 \(10^9+7\) 取模之后的结果。\(2\le n,m\le3000\)。
比较直接的 LGV 引理的应用。考虑所有合法路径,发现从 \((1,1)\) 出发一定要经过 \(A=\{(1,2), (2,1)\}\),而到达终点一定要经过 \(B=\{(n-1, m), (n, m-1)\}\),则 \(A, B\) 可立即选定。应用 LGV 引理可得答案为:
其中 \(f(a, b)\) 为图上 \(a\rightarrow b\) 的路径数,带有障碍格点的路径计数问题可以直接做一个 \(O(nm)\) 的 dp,则 \(f\) 易求。最终复杂度 \(O(nm)\)。
参考代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
例 2 HDU 5852 Intersection is not allowed!
题意:有一个 \(n\times n\) 的棋盘,一个棋子从 \((x, y)\) 只能走到 \((x, y+1)\) 或 \((x + 1, y)\),有 \(k\) 个棋子,一开始第 \(i\) 个棋子放在 \((1, a_i)\),最终要到 \((n, b_i)\),路径要两两不相交,求方案数对 \(10^9+7\) 取模。\(1\le n\le 10^5\),\(1\le k\le 100\),保证 $1\le a_1
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用