1. 程式人生 > >容斥與反演

容斥與反演

反演


\[F_n\sum_{i=0}^{n}A_{n,i}G_i\]
\[G_n\sum_{i=0}^{n}B_{n,i}F_i\]
下面的直接帶入到上面
\[F_n=\sum_{i=0}^{n}A_{n,i}\sum_{j=0}^{i}B_{i,j}F_j=\sum_{i=0}^{n}F_i\sum_{j=i}^{n}A_{n,j}B_{j,i}=F_n\]
\(C_{i,j}=\sum_{k=j}^{i}A_{i,k}B_{k,j}\)
如果 \(C_{i,j}=[i=j]\),那麼 \(F,G\) 之間是能夠反演的
\(A,B\) 都是下三角矩陣,\(C\) 就是單位矩陣
知道這個就可以矩陣求逆打表了

,而且你發現直接求逆是 \(\Theta(n^2)\)

二項式反演

\[F_n=\sum_{i=0}^n {n \choose i}G_i\iff G_n=\sum_{i=0}^n (-1)^{n-i}{n \choose i}F_i\]

證明

\[F_n=\sum_{i=0}^{n}\binom{n}{i}\sum_{j=0}^{i}(-1)^{i-j}\binom{i}{j}F_j=\sum_{i=0}^{n}F_i\sum_{j=i}^{n}\binom{n}{j}\binom{j}{i}(-1)^{j-i}\]
\[=\sum_{i=0}^{n}F_i\binom{n}{i}\sum_{j=i}^{n}\binom{n-i}{j-i}(-1)^{j-i}=\sum_{i=0}^{n}F_i\binom{n}{i}\sum_{j=0}^{n-i}\binom{n-i}{j}(-1)^{j}\]


\[=\sum_{i=0}^{n}F_i\binom{n}{i}(1-1)^{n-i}=F_n\]

stirling反演

把第一類Stirling數看成無符號的
\[F_n=\sum_{i=0}^n \begin{Bmatrix} n\\i \end{Bmatrix}G_i\iff G_n=\sum_{i=0}^n (-1)^{n-i}\begin{bmatrix} n\\i \end{bmatrix}F_i\]

第一類Stirling數冪與下降冪的關係
\[x^{\underline k}=\sum_{i=0}^k(-1)^{k-i}\begin{bmatrix} k\\i \end{bmatrix}x^i\]

第二類Stirling數冪與下降冪的關係
\[x^{k}=\sum_{i=0}^k\begin{Bmatrix} k\\i \end{Bmatrix}x^{\underline i}\]

反轉公式
\[\begin{cases}\sum_{k=m}^n(-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix}\begin{Bmatrix}k\\m\end{Bmatrix}=[n=m]\\\sum_{k=m}^n(-1)^{k-m}\begin{bmatrix}k\\m\end{bmatrix}\begin{Bmatrix}n\\k\end{Bmatrix}=[n=m]\end{cases}\]

證明

\[x^{k}=\sum_{i=0}^k\begin{Bmatrix} k\\i \end{Bmatrix}x^{\underline i}=\sum_{i=0}^k\begin{Bmatrix} k\\i \end{Bmatrix}\sum_{j=0}^i(-1)^{i-j}\begin{bmatrix} i\\j \end{bmatrix}x^j\]
\[=\sum_{i=0}^{k}x^i\sum_{j=i}^{k}\begin{Bmatrix} k\\j \end{Bmatrix}\begin{bmatrix} j\\i \end{bmatrix}(-1)^{j-i}\]
那麼
\[\sum_{j=i}^{k}\begin{Bmatrix} k\\j \end{Bmatrix}\begin{bmatrix} j\\i \end{bmatrix}(-1)^{j-i}=[i=k]\]

另外一個同理

Min-Max容斥以及kthmax擴充套件

\[max(S)=\sum_{T\subset S}(-1)^{|T|+1}min(T)\]

證明

考慮一種第 \(k\) 大值被作為最小值計算的次數
\[\sum_{j=0}^{k-1}(_{j}^{k-1})(-1)^j=(1-1)^{k-1}=[k=1]\]

kthmax

求第 \(k\) 大元素
構造容斥係數 \(f\)
使得
\[kthmax(S)=\sum_{T\subset S}f(|T|)min(T)\]
考慮第 \(x\) 大值被作為最小值計算的次數
\[\sum_{j=0}^{x-1}(_{j}^{x-1})f(j+1)\]
它應該等於 \([x=k]\)

\[\sum_{j=0}^{x-1}(_{j}^{x-1})f(j+1)=[x=k]\]
二項式反演得到
\[f(x)=(-1)^{x-k}(_{k-1}^{x-1})\]
那麼
\[kthmax(S)=\sum_{T\subset S}(-1)^{|T|-k}(_{k-1}^{|T|-1})min(T)\]