DAG 計數


以下方法都是按照這個套路:
考慮一個不一定連通的 DAG ,你枚舉一些零度點(拓撲序第一層)集合 \(S\),這些點之間不能連邊,這些點跟剩下點(點集為 \(T\),\(|S| \cup |T| = |V|\))的連邊只能由 \(S \rightarrow T\)\(T\) 是一個 DAG。
但這樣算會重復,因為沒有考慮到其他 \(T\) 中的零度點,會算重,然而顯然是二項式的容斥形式,帶上容斥系數 \((-1)^{|S|+1}\) 即可。

有標號 DAG 圖計數(不要求連通)

\(n\le 200000\)

Sol

根據上述即 \(f(n)=\sum_{i=1}^n (-1)^{i+1} {n\choose i}f(n-i)2^{i(n-i)}\),多項式求逆可以做到 \(O(nlogn)\)

有標號 DAG 圖計數(要求弱連通)

\(n\le 200000\)

Sol

根據集合與划分的關系設不一定連通的 DAG 的 EGF 為 F,設連通的 DAG 的 EGF 為 G,\(F=e^G\rightarrow G=\ln(F)\)

DAG 子圖計數

給定 \(m\) 條邊,每條邊各有 \(\frac{1}{3}\) 的概率 \(u \rightarrow v\)\(v \rightarrow u\) 或斷開。
求這個圖是 DAG 的概率,無重邊無自環。

\(n\le 20,m\le n^2\)

Sol

狀壓 DP,\(dp_S=\sum_{T\subset S,T\ne \varnothing} (-1)^{|T|+1} dp_{S-T} P_1(S) P_2(S\rightarrow T)\),兩個概率的式子都很容易寫出來。
可以用子集卷積優化到 \(O(n^22^n)\)

DAG 子圖計數

你有一個 \(n\) 個節點的有向圖,我們稱一個合法的方案是將其中一些邊的方向翻轉之后使得剩下的圖無環。
對於所有合法的方案,將方案中翻轉方向的邊的數量求和。

\(n\le 20\)

Sol

注意一個方案倒轉后依然合法,那么這兩個圖的貢獻和為 \(m\),我們可以直接計數 DAG 的數目。
狀壓 DP, 枚舉第一層點轉移,子集卷積優化 \(O(n^22^n)\)


免責聲明!

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



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