前言
這只是一個比較基礎的容斥/反演學習筆記。
包含了一大堆鍋一些反演的基礎知識點和證明過程。
如有不足之處希望大佬多加指點。
反演的定義和反演算法的基本原理
假設有兩個函數\(f(x)\)和\(g(x)\)滿足$$f(n) = \sum_{k} a_{n, k} g(k)$$
已知\(f\)求\(g\)的過程就叫做反演。
現在假設我們已經求出了\(g\)關於\(f\)的表達式$$g(n)=\sum_{k}\mu(n,k)f(k)$$
代入前式,我們有$$f(n)=\sum_{k}a_{n,k}\sum_{m}\mu(k,m)f(m)=\sum_{m}f(m)\sum_{k}a_{n,k}\mu(k,m)$$
那么只需要\(\sum_{k}a_{n,k}\mu(k,m)=[n=m]\)即可。
可以通過矩陣求逆直接求解\(\mu(n,m)\)。
一些具有特殊系數的求和式,其\(\mu\)可以快速求出,為解題提供思路。
求反演式時,一般根據題意設\(g(n)\sum_{m}[n=m]g(m)\),然后將\([n=m]\)表達的式子代入求解,
整理后根據\(f\)對\(g\)的關系式代入\(f(m)\)即求解完成。
二項式反演
我們知道\(\sum_{i=0}^{n}(-1)^i\binom{i}{n}=[n=0]\),那么由於\([n=m]=[n-m=0]\),
那么從求和式開始變換:
於是有$$g(n)=\sum_{k=0}^{n}(-1)^{n-k}\binom{n}{k}f(k)$$
這個過程其實就是在說明:$$\sum_{m=k}^{n}(-1)^{m-k}\binom{n}{m}\binom{m}{k}=[n=k]$$
子集反演
由\(\sum_{i=0}^{n}(-1)^i\binom{i}{n}=[n=0]\)可以知道\(\sum_{T\subseteq S}(-1)^{|T|}=[S=0]\),這里\(0\)表示空集。
於是有$$g(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|}f(T)$$
這個過程其實就是在說明:$$\sum_{T\subseteq Q\subseteq S}(-1)^{|Q|-|T|}=[S=T]$$
多重子集反演
現在\(S,T\)變成了多重集。
定義\(\varphi(S)\),當\(S\)中包含重復元素時為\(0\),不包含時為\((-1)^{|S|}\)。
那么同樣有\(\sum_{T\subseteq S}\varphi(|T|)=[S=0]\)。
類似上面的變換,可以得到$$g(S)=\sum_{T\subseteq S}\varphi(S-T)f(T)$$
反方向的子集反演
於是有
子集卷積
對於子集反演,限制集合的大小進行轉移即可。
簡而言之,因為之前反方向的子集反演,我們可以處理出
但如果直接照搬,會出現\(p,q\)有交的情況
因此需要限制集合大小,即求\(\sum_{|r|=k}c_r\)時,
對於\(p,q\)需要有\(p\ or\ q\)且\(|p|+|q|=|r|\)。
那么對於一類大小為\(i\)集合地進行\(i\)次這樣的運算即可。故時間復雜度為\(O(n^2logn)\)。
莫比烏斯反演
因為每個正整數都能根據質因子分解對應一個質數的多重集,你會發現這其實就是子集反演。
於是你突然發現再證下去沒意思了
那么定義\(\mu(n)\),當\(n\)分解出重復質因數時為\(0\),否則為\((-1)^p\),其中\(p\)為質因子個數...
於是有\(\sum_{d|n}\mu(n)=[n=1]\)。
於是有
反方向的莫比烏斯反演
反方向的多重子集反演。
單位根反演(離散傅里葉變換)
\begin{aligned}
f(n)&=\sum_{k=0}^{m-1}\epsilon^{nk}g(k)\
g(n)&=\frac{1}{m}\sum_{k=0}^{m-1}\epsilon^{-nk}f(k)
\end{aligned}
其中\(\epsilon=e^{-\frac{2\pi i}{m}}\)為\(m\)次單位根,即\(\epsilon^m=1\);
本人線代太差,不會剛這個式子。有興趣的大佬可以去這位神仙的博客看看。
這里反演的直接意義是\(DFT\)和\(IDFT\)。
還有一個這樣的式子:
證明:當\(n\ mod\ m\not= 0\)時原式\(=\frac{\epsilon^{nm}-1}{\epsilon^n-1}=0\),當\(m|n\)時\(\epsilon^n=1\)。
斯特林反演
根據上面的反演條件,我們只須考慮證明
這個公式叫做反轉公式...
這個式子還有另一個形式,即$$\sum_{m=k}^{n}(-1)^{m-k}\begin{bmatrix}n\m\\end{bmatrix}\begin{Bmatrix}m\k\\end{Bmatrix}=[n=k]$$
也就是說,斯特林反演包含了不同方向的反演。
為表示簡潔,這里只證其中一個。
我們考慮兩類斯特林數和下降冪,上升冪的關系:
其中\(n^{\underline{k}}\)表示\(n\)的\(k\)階下降冪,\(n^{\overline{k}}\)表示\(n\)的\(k\)階上升冪。
第一個式子由組合意義立得。使用數學歸納法證明第二個式子:
證畢。
此時可以證明反轉公式:
於是有\(\sum_{k=i}^{m}\begin{Bmatrix}m\\k\\\end{Bmatrix}\begin{bmatrix}k\\i\\\end{bmatrix}(-1)^{k-i}=[m=i]\)。證畢。
反轉公式證明完畢,則斯特林反演的正確性也隨之得到證明。
Min-max容斥(最值反演)
根據上面的定義,嚴格的說這玩意應該不屬於反演,但它是非常重要的。
在期望中的應用
假設\(S\)中的元素都是隨機變量,兩邊求期望並根據期望的線性性可以得到$$E(max{S})=\sum_{T\in S}(-1)^{|T|-1}E(min{T})$$假設這些隨機變量表示一個元素出現的期望時間,且元素之間相互獨立。
那么\(max\{S\}\)表示S中所有元素至少出現一次的期望時間,
\(min\{S\}\)表示S中至少出現一個元素的期望時間
一般而言\(min\{S\}\)好求而\(max\{S\}\)難求,此時通過最值反演即可解決問題。
Min-max容斥的一個擴展:k-min-max容斥
我們定義一個容斥系數\(f(x)\),使得
由於是線性變換,假設\(|T|=x+1\),考慮\(min\{T\}\)對答案的貢獻,為\(\sum_{i=0}^{x}\binom{x}{i}f(i+1)\)。
於是有$$[x=k-1]=\sum_{i=0}^{x}\binom{x}{i}f(i+1)$$
二項式反演可以得到:$$f(x+1)=\sum_{i=0}^{x}(-1)^{x-i}\binom{x}{i}[i=k-1]=(-1)^{x-k+1}\binom{x}{k-1}$$
於是容斥系數\(f(x)=(-1)^{x-k}\binom{x-1}{k-1}\)
因此$$kmax{S}=\sum_{T\in S}(-1)^{|T|-k}\binom{|T|-1}{k-1}min{T}$$
參考資料:
炫酷反演魔術
斯特林數-斯特林反演
min-max容斥及其推廣