參考資料
炫酷反演魔術,打開了我新世界的大門,原來這些反演都是一個東西!!!
二項式反演
簡單的錯排遞推式
i=0∑n(−1)iCni(n−i)!
- 即枚舉每一次至少幾個位置不合法,最後容斥出0個位置不合法的方案。
- 考慮恰好有m(m>0)個位置不合法的方案,對於一種m個位置的選擇來說,它會在枚舉至少0…m-1的時候被算一次。即∑i=0m(−1)iCmi=(1−1)m=[m=0],最後對於m>0的貢獻都爲0,只有m=0的貢獻爲1,即我們要求的答案。
式子
f(n)=i=0∑nCnig(i)
g(n)=i=0∑n(−1)n−iCnif(i)
推導:
- 首先有
i=0∑n(−1)iCni=i=0∑n(−1)iCni∗1n−i=(−1+1)n=[n=0]
- 然後
g(n)=i=0∑n[n−i=0]∗Cnig(i)
=i=0∑nj=0∑n−i(−1)jCnj∗Cnig(i)
=j=0∑n(−1)jCnji=0∑n−jCnig(i)
=j=0∑n(−1)jCnjf(n−j)
=i=0∑n(−1)n−iCnif(i)
莫比烏斯反演
f(n)=d∣n∑g(d)
g(n)=d∣n∑μ(dn)f(d)
推導
- 注意到對於二項式反演,我們有一條式子∑i=0n(−1)iCni=[n=0]
- 類比莫比烏斯反演,我們也可以構造一個容斥係數,既然之前是求和的關係,現在我們要考慮因數的關係,所以自然就有了這個∑d∣nμ(d)=[n=1],後面我們會發現μ(d)的求法。
- 同上,我們也可以這樣子推導:
g(n)=d∣n∑[dn=1]∗g(d)
=d∣n∑k∣dn∑μ(k)∗g(d)
=k∣n∑μ(k)∗d∣kn∑g(d)
=k∣n∑μ(k)f(kn)
=d∣n∑μ(dn)f(d)
- 妙啊,殊途同歸。
- 實際上對於以下的莫比烏斯反演的變式也是一樣的推法。
f(n)=n∣d∑g(d)
g(n)=n∣d∑μ(dn)f(d)
轉移的矩陣表示
- 我們可以把轉移看作矩陣乘法。
- 相當於是[1,n]矩陣乘上一個[n,n]的矩陣。
- 那麼反演不就是矩陣求逆嗎!
子集反演
一道簡單題
- 給出a[i],b[i](0<=i<2n),求c[k]=∑i∣j=ka[i]∗b[j]。
FWT一波 。考慮比較容易計算c′[S]=∑T⊆Sc[T]
- c′[S]=∑i⊆Sa[i]∗∑j⊆Sb[j]。
- 然後再反演一波得到c???
- 實際上是c的高維前綴和爲c’,倒着差分回去。。。
- 但是用這個推式子可不行,於是就有了下面的反演。
正經的式子
f(S)=T⊆S∑g(T)
g(S)=T⊆S∑(−1)∣S−T∣f(T)
推導
- 同上和上上,我們也可以來一個容斥的係數
T⊆S∑(−1)∣T∣=[S=0]
- 和二項式反演的意義是一樣的,組合數就是在S中選一個|T|=i的方案。
- 然後再再再用相同的方法。
g(S)=T⊆S∑[S−T=0]g(T)
=T⊆S∑R⊆S−T∑(−1)∣R∣g(T)
=R⊆S∑(−1)∣R∣T⊆S−R∑g(T)
=R⊆S∑(−1)∣R∣f(S−R)
=T⊆S∑(−1)∣S−T∣f(T)
- 妙啊!
- 或者也可以這樣:
f(S)=S⊆T∑g(T)
g(S)=S⊆T∑(−1)∣T−S∣f(T)
更神奇的多重子集反演
-
定義μ(S),如果S中有重複元素就是0,否則是(−1)∣S∣,因爲沒有重複元素,所以∑T⊆Sμ(T)=[S=0],跟上面是一樣的。
-
就有f(S)=∑T⊆Sg(T),g(S)=∑T⊆Sμ(S−T)f(T)
-
如果將每一個元素看作質因數,那這不就是莫比烏斯反演嗎!!!
卷積
- FFT也是反演???(霧)
- 其實反演就是將f分成兩個獨立的部分,例如[d∣gcd(i,j)]−>[d∣i][d∣j]
- 然後再把他們合起來。
總結
- 反演實際上就是一種容斥(所以上面相當於是在證明容斥爲什麼是對的)
- 對於推式子來說,反演有很大的作用。
- 但是還是要根據實際的題目而論。
- 之後做到好題再記錄下來吧。