\(\text{Min-Max}\) 容斥學習筆記
概念
\(\text{Min-Max}\) 容斥,又稱最值反演,是一種對於特定集合,在已知最小值或最大值中一者的情況下,求另一種的演算法。首先觀察幾個式子:
顯然對所有數取相反數,易知用最大值求最小值的公式與用最小值求最大值的公式形式相同,故以下只探討用最小值求最大值。透過觀察可以寫出以下式子
其中 \(\text{Max}(S)\) 表示集合 \(S\) 中元素的最大值,\(\text{Min}(S)\) 表示集合 \(S\) 中元素的最小值。
證明:
設存在一個以集合大小為自變數的函式 \(f\) 滿足 \(\text{Max}(S)=\sum_{T\subset S,T\ne\varnothing}f(|T|)\text{Min}(T)\),並記 \(S\) 中元素從大到小排列為 \(x_1,x_2,\cdots,x_m\),則對於 \(x_i\),其在左側的貢獻次數為 \([i=1]\),在右側的貢獻次數為 \(\sum_{j=0}^{i-1}{i-1\choose j}f(j+1)\)。若等式成立,則必有
設 \(F(i)=[i+1=1],G(i)=f(i+1)\),則
對這個式子進行二項式反演,得到
所以 \(f(i)=G(i-1)=(-1)^{i-1}\),於是有
擴充
記 \(k\text{Max}(S)\) 表示集合 \(S\) 的 \(k\) 大值,則
證明:
設存在一個以集合大小為自變數的函式 \(g\) 滿足 \(k\text{Max}(S)=\sum_{T\sub S,T\ne\varnothing}g(|T|)\text{Min}(T)\),並記 \(S\) 中元素從大到小排列為 \(x_1,x_2,\cdots,x_m\),則對於 \(x_i\),其在左側的貢獻次數為 \([i=k]\),在右側的貢獻次數為 \(\sum_{j=0}^{i-1}{i-1\choose j}g(j+1)\),若等式成立,則必有
設 \(F(i)=[i+1=k],G(i)=g(i+1)\),則
進行二項式反演可得
故 \(g(i)=G(i-1)=(-1)^{i-k}{i-1\choose k-1}\),於是有
應用
\(\text{Min-Max}\) 容斥常見於期望問題,具體表現為所有元素均出現的期望時間。記 \(t_i\) 表示第 \(i\) 個元素的出現時間,則 \(\text{Max}(S)\) 表示所有元素出現時間的最大值,即所有元素都出現的時間,而 \(\text{Min}(S)\) 表示所有元素出現時間的最小值,即至少一個元素出現的時間。根據 \(\text{Min-Max}\) 容斥,有
對左右兩邊同時取期望,因為期望是線性的,所有可以放到求和裡,即
容易發現 \(E(\text{Min}(T))\) 是好求的,當單位時間出現 \(T\) 中至少一個的機率為 \(p\),則出現 \(T\) 中至少一個的期望時間為 \(\frac{1}{p}\)。於是容易求出 \(E(\text{Max}(S))\),即所有元素都出現的期望時間。