擴展拉格朗日反演和圖計數


前幾天學習了一下擴展拉格朗日反演(因為模擬賽考了),推了一下點雙和邊雙圖的計數,記錄一下。

前置技能:無向連通圖計數

設有標號無向圖的 egf 為 \(F(x)=\sum_{i=0}^\infty \frac{f_ix^i}{i!}\),容易知道 \(f_i=2^{n\choose 2}\),則有標號連通無向圖的 egf 滿足 \(G=\ln F\)

邊雙連通圖

首先設有根連通無向圖的指數生成函數是 \(D(x)\),有根邊雙連通圖的指數生成函數是 \(B(x)\)
\(B\) 來表示 \(D\):假設根所在邊雙大小 \(n\),其egf為 \(\frac{b_nx^n}{n!}\),而對於其相鄰的邊,對於其中一條邊,它掛着一個連通無向圖,接在邊雙的任意一個點上,所以得到它的egf為 \(nD(x)\);若干邊自由排列(這里也可以理解成集合的組合),故鄰邊的egf是 \(\exp(nD(x))\)
枚舉大小求和得 $$D(x)=\sum_{n\ge 1} \frac{b_nx^n\exp(nD(x))}{n!}=B(x\exp(D(x)))$$
\(F(x)=x\exp(D(x))\)\(D(x)=B(F(x))\)
兩邊對 \(F(x)\) 作復合逆得 \(B(x)=D(F^{-1}(x))\)
有擴展拉格朗日反演公式如下:

\[[x^n]A(B^{-1}(x))=\frac{1}{n} [x^{n-1}]A'(x)(\frac{x}{B(x)})^n \]

代入可得 \([x^n]B(x)=\frac{1}{n} [x^{n-1}]D'(x)(\frac{x}{F(x)})^n\),繼續化簡可得

\[[x^n]B(x)=\frac{1}{n} [x^{n-1}]D'(x)\exp(-nD(x)) \]

我們可以在 \(O(n\log n)\) 的時間復雜度求得 \(B(x)\) 的一項系數,注意是有根邊雙的egf,最后要乘一個 \(n!\) 和除以一個 \(n\)

點雙連通圖

依然設有根連通無向圖的指數生成函數是 \(D(x)\)
點雙肯定從點考慮,分析一下一個連通圖點雙分解的形態,根節點被若干個點雙包含。
\(b_i\)\(i\) 個點的點雙圖數目。
一個包含根的點雙,除了根另有 \(n\) 個點,這 \(n\) 個點都掛着有根連通無向圖,可得這一群點的 egf 為 \(\sum_{n\ge 1} b_{n+1} \frac{D(x)^n}{n!}\)
將點雙自由排列(這里也可以理解成集合的組合),要選根再乘上一個 \(x\),得到

\[D(x)=x\times \exp(\sum_{n\ge 1} b_{n+1} \frac{D^n(x)}{n!}) \]

\(B(x)=\sum_{i=1}^\infty b_{i+1}\frac{x^i}{i!}\),化簡得到

\[D(x)=x\exp B(D(x)) \]

繼續變換得 \(x=\frac{D(x)}{\exp B(D(x))} \rightarrow D^{-1}(x)=\frac{x}{\exp B(x)}\)
因此,\(B(x)=\ln \frac{x}{D^{-1}(x)}\),復合逆多項式是不能直接求出來的。
記輔助函數 \(G(x)=\ln \frac{D(x)}{x}\)\(B(x)=G(D^{-1}(x))\)

代入擴展拉格朗日反演:

\[[x^n]B(x)=\frac{1}{n} [x^{n-1}]G'(x) (\frac{x}{D(x)})^n \]

我們要求的即 \(b_n=[x^{n-1}]B(x)\) 可以單次 \(O(n\log n)\) 計算。
注意要特判掉 \(n=1\) 的情況。

筆者注(2020.3.20)
注意這里 \(b_n\) 不強調有根,仔細考慮后究其原因如下:
首先,有根意味着我們考慮當前這個根節點的標號,標號為 \(1\sim n\) 算作不同的。
在邊雙連通圖計數中,我們直接考慮了根所在的邊雙,給根節點安排一個標號是必要的。
在點雙連通圖計數中,我們考慮的是每個點雙除去根節點以外的標號順序,給根節點安排不同的標號顯然毫無意義。而我們最后乘上一個 \(x\),根據 egf 的定義,相當於解決了給根節點安排了序號的問題。


免責聲明!

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



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