LGV 引理小記


講個笑話,NOI 之前某場模擬賽讓我知道了這個神奇的科技,於是准備 NOI 之前學完,結果鴿着鴿着就鴿掉了,考 day1 之前一天本來准備花一天時間學的,然后我就開玩笑般地跟自己說,這么 trivial 的東西早學晚學都一樣,反正到正式考場上也不大可能派上用場,結果……結果?NOI d1 就考了道這道題,簡直笑死我……

引理內容

LGV 引理,全稱 Lindstrom-Gessel-Viennot lemma,可以用於求解 DAG 上不相交路徑條數,它的內容大致是這樣的:

對於一張有向無環圖,每條邊上都有一個權值 \(w(e)\),我們記 \(weight(P)\) 表示路徑 \(P\) 上所有點權值的乘積,那么對於一個起點組成的集合 \(A\) 和終點組成的集合 \(B\),滿足 \(|A|=|B|\)\(A\cap B=\varnothing\),我們再記 \(e(i,j)\) 表示所有 \(A_i\to B_j\) 路徑的 \(weight\) 之和,那么對於矩陣

\[M=\begin{bmatrix} e(1,1)&e(1,2)&\cdots&e(1,|B|)\\ e(2,1)&e(2,2)&\cdots&e(2,|B|)\\ \vdots&\vdots&\ddots&\vdots\\ e(|A|,1)&e(|A|,2)&\cdots&e(|A|,|B|) \end{bmatrix} \]

那么 LGV 的引理的內容可以描述為:

\[\det M=\sum\limits_{p}(-1)^{\tau(p)}C(p) \]

其中 \(p\)\(1\sim |A|\) 的排列,\(\tau(p)\)\(p\) 的逆序對數,\(C(p)\) 表示有多少個由 \(|A|\) 條路徑組成的 \(|A|\) 元組 \((P_1,P_2,\cdots,P_{|A|})\),滿足 \(P_i\)\(A_i\to B_{p_i}\) 的路徑,且 \(\forall i,j,P_i\cap P_j=\varnothing\)

也就是說 \(M\) 的行列式為所有 \(A\)\(B\) 不相交路徑的帶符號和。

證明

考慮將行列式展開,得到:

\[\begin{aligned} \det M&=\sum\limits_{p}(-1)^{\tau(p)}\prod\limits_{i=1}^{|A|}e(i,p_i) \\&=\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}] \end{aligned} \]

\(S_1\) 表示所有相交路徑組組成的集合,\(S_2\) 表示所有不相交路徑組組成的集合,那么上式可進一步寫作

\[\det M=\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_1]+\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_2] \]

而引理內容等價於:

\[\det M=\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_1] \]

因此我們要證明:

\[\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_2]=0 \]

我們考慮對於 \(S_2\) 的元素 \(P\) 構造一個雙射 \(f:S_2\to S_2\):記 \((i,j)\)字典序最小的二元組滿足 \(A_i\to B_{p_i}\)\(A_j\to B_{p_j}\) 的路徑有交,那么考慮從重合部分結束的位置交換兩條路徑,如下圖所示:

那么得到的新的路徑組 \(f(P)=P'\) 顯然滿足 \(weight(P)=weight(P')\),而 \(P'\) 對應的排列 \(p'\) 相當於在 \(p\) 中交換了 \(p_i\)\(p_j\),根據排列中交換兩個元素,逆序對奇偶性改變可知 \((-1)^{\tau(p)}+(-1)^{\tau(p')}=0\),因此有 \((-1)^{\tau(\sigma(P))}weight(P)+(-1)^{\tau(\sigma(f(P)))}weight(f(P))=0\),其中 \(\sigma(P)\)\(P\) 對應的排列,又對於某個相交路徑組 \(P\),必定滿足 \(f(P)\) 中字典序最小的,滿足 \(A_i\to B_{p_i}\cap A_j\to B_{p_j}\ne\varnothing\) 的二元組 \((i,j)\)\(P\) 字典序最小的二元組相同,因此 \(f(f(P))=P\),故 \(f\) 構成一個雙射。因此有

\[\begin{aligned} &\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_2] \\=&\dfrac{1}{2}(\sum\limits_{p}(-1)^{\tau(p)}\sum\limits_{P}weight(P)[P_i:A_i\to B_{p_i}][P\in S_2]+\sum\limits_{p}(-1)^{\tau(f(p))}\sum\limits_{P}weight(f(P))[P_i:A_i\to B_{p_i}][P\in S_2]) \\=&\dfrac{1}{2}(\sum\limits_{P\in S_2}(-1)^{\tau(p)}weight(P)+(-1)^{\tau(f(p))}weight(f(P))) \\=&0 \end{aligned} \]

證畢。

注意點

注意,在 OI 問題中我們常常遇到這樣的問題:給定 \(n\) 個起點 \(a_1,a_2,\cdots,a_n\)\(n\) 個終點 \(b_1,b_2,\cdots,b_n\),問有多少個路徑 \(n\) 元組 \((P_1,P_2,\cdots,P_n)\) 滿足 \(P_i\)\(a_i\to b_i\) 的路徑且它們兩兩互不相交,此時直接套 LGV 引理是不可以的,因為有可能出現 \(p\ne(1,2,3,\cdots,n)\),卻也被統計入答案的情況,不過對於一些特殊的圖,譬如網格圖,如果我們發現如果 \(p\) 中存在逆序對,就必然會出現兩個路徑相交,那么就可以直接通過行列式得出答案,否則你行列式算出來值的組合意義是,如果我們把圖畫在一個平面上並且將起點集合和終點集合從上自下一字排開,\(\det M\) 就是存在偶數個交點的路徑組條數減去存在奇數個交點的路徑組條數

例題:

1. P6657 【模板】LGV 引理

顯然 \(e(i,j)=e(i,j)=\dbinom{b_j-a_i+n-1}{n-1}\),注意到原圖是一個網格圖,因此可以直接通過 \(\det M\) 求出答案。高斯消元求一下即可,時間復雜度 \(T(n^3+m)\)

2. P7736 [NOI2021] 路徑交點

考慮記 \(A_{i,j}\) 為從第一列第 \(i\) 個點走到第 \(k\) 列第 \(j\) 個點的方案數,那么 \(A_{i,j}\) 顯然可以矩陣快速冪求出,那么 \(\det A\) 就是答案。

為什么?考慮 LGV 引理,對於一個排列 \(p\) 對應的一個路徑組 \((P_1,P_2,P_3,\cdots,P_{n_1})\),其中 \(P_i\) 為第一列第 \(i\) 個點走到第 \(k\) 列第 \(p_i\) 個點的路徑,那么對於排列 \(p\) 中的逆序對 \((i,j)\),必然有 \(|P_i\cap P_j|\) 為奇數,具體證明可以感性地仿照“對於連續函數 \(f\) 的某個區間 \([l,r]\),如果 \(f(l)>0,f(r)<0\),且 \(f\)\([l,r]\) 上零點個數有限,那么 \([l,r]\) 中零點個數必為奇數”,同理對於排列 \(p\) 中的逆序對 \((i,j)\),必然有 \(|P_i\cap P_j|\) 為偶數,因此 \((P_1,P_2,P_3,\cdots,P_{n_1})\) 交點個數的奇偶性與 \(\tau(p)\) 的奇偶性相同,對答案的貢獻也相同。

時間復雜度 \(\mathcal O(n^4)\)

3. CF348D Turtles

題目等價於,有多少條路徑對 \((P_1,P_2)\) 滿足 \(P_1\) 為從 \((1,2)\to(n-1,m)\) 的路徑,\(P_2\) 為從 \((2,1)\to(n,m-1)\) 的路徑,且 \(P_1\cap P_2=\varnothing\),由於是網格圖,所以直接上個 LGV 引理,然后對 \(2\times 2\) 的矩形進行高斯消元求行列式即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM