反演學習小計

參考資料

炫酷反演魔術,打開了我新世界的大門,原來這些反演都是一個東西!!!

二項式反演

簡單的錯排遞推式

i=0n(1)iCni(ni)!\sum_{i=0}^n(-1)^iC_n^i(n-i)!

  • 即枚舉每一次至少幾個位置不合法,最後容斥出0個位置不合法的方案。
  • 考慮恰好有m(m>0)個位置不合法的方案,對於一種m個位置的選擇來說,它會在枚舉至少0…m-1的時候被算一次。即i=0m(1)iCmi=(11)m=[m=0]\sum_{i=0}^m(-1)^iC_m^i=(1-1)^m=[m=0],最後對於m>0的貢獻都爲0,只有m=0的貢獻爲1,即我們要求的答案。

式子

f(n)=i=0nCnig(i)f(n)=\sum_{i=0}^{n}C_n^ig(i)
g(n)=i=0n(1)niCnif(i)g(n)=\sum_{i=0}^{n}(-1)^{n-i}C_n^if(i)

推導:

  • 首先有
    i=0n(1)iCni=i=0n(1)iCni1ni=(1+1)n=[n=0]\sum_{i=0}^{n}(-1)^iC_n^i=\sum_{i=0}^{n}(-1)^iC_n^i*1^{n-i}=(-1+1)^n=[n=0]
  • 然後
    g(n)=i=0n[ni=0]Cnig(i)g(n)=\sum_{i=0}^n[n-i=0]*C_n^ig(i)
    =i=0nj=0ni(1)jCnjCnig(i)=\sum_{i=0}^n\sum_{j=0}^{n-i}(-1)^jC_n^j*C_n^ig(i)
    =j=0n(1)jCnji=0njCnig(i)=\sum_{j=0}^n(-1)^jC_n^j\sum_{i=0}^{n-j}C_n^ig(i)
    =j=0n(1)jCnjf(nj)=\sum_{j=0}^n(-1)^jC_n^jf(n-j)
    =i=0n(1)niCnif(i)=\sum_{i=0}^{n}(-1)^{n-i}C_n^if(i)

莫比烏斯反演

f(n)=dng(d)f(n)=\sum_{d|n}g(d)
g(n)=dnμ(nd)f(d)g(n)=\sum_{d|n}\mu(\frac{n}{d})f(d)

推導

  • 注意到對於二項式反演,我們有一條式子i=0n(1)iCni=[n=0]\sum_{i=0}^{n}(-1)^iC_n^i=[n=0]
  • 類比莫比烏斯反演,我們也可以構造一個容斥係數,既然之前是求和的關係,現在我們要考慮因數的關係,所以自然就有了這個dnμ(d)=[n=1]\sum_{d|n}\mu(d)=[n=1],後面我們會發現μ(d)\mu(d)的求法。
  • 同上,我們也可以這樣子推導:
    g(n)=dn[nd=1]g(d)g(n)=\sum_{d|n}[\frac{n}{d}=1]*g(d)
    =dnkndμ(k)g(d)=\sum_{d|n}\sum_{k|\frac{n}{d}}\mu(k)*g(d)
    =knμ(k)dnkg(d)=\sum_{k|n}\mu(k)*\sum_{d|\frac{n}{k}}g(d)
    =knμ(k)f(nk)=\sum_{k|n}\mu(k)f(\frac{n}{k})
    =dnμ(nd)f(d)=\sum_{d|n}\mu(\frac{n}{d})f(d)
  • 妙啊,殊途同歸。
  • 實際上對於以下的莫比烏斯反演的變式也是一樣的推法。
    f(n)=ndg(d)f(n)=\sum_{n|d}g(d)
    g(n)=ndμ(nd)f(d)g(n)=\sum_{n|d}\mu(\frac{n}{d})f(d)

轉移的矩陣表示

  • 我們可以把轉移看作矩陣乘法。
  • 相當於是[1,n]矩陣乘上一個[n,n]的矩陣。
  • 那麼反演不就是矩陣求逆嗎!

子集反演

一道簡單題

  • 給出a[i],b[i](0<=i<2n)a[i],b[i](0<=i<2^n),求c[k]=ij=ka[i]b[j]c[k]=\sum_{i |j=k}a[i]*b[j]
  • FWT一波 。考慮比較容易計算c[S]=TSc[T]c'[S]=\sum_{T\subseteq S}c[T]
  • c[S]=iSa[i]jSb[j]c'[S]=\sum_{i\subseteq S}a[i]*\sum_{j \subseteq S}b[j]
  • 然後再反演一波得到c???
  • 實際上是c的高維前綴和爲c’,倒着差分回去。。。
  • 但是用這個推式子可不行,於是就有了下面的反演。

正經的式子

f(S)=TSg(T)f(S)=\sum_{T\subseteq S}g(T)
g(S)=TS(1)STf(T)g(S)=\sum_{T\subseteq S}(-1)^{|S-T|}f(T)

推導

  • 同上和上上,我們也可以來一個容斥的係數
    TS(1)T=[S=0]\sum_{T\subseteq S}(-1)^{|T|}=[S=0]
  • 和二項式反演的意義是一樣的,組合數就是在S中選一個|T|=i的方案。
  • 然後再再再用相同的方法。
    g(S)=TS[ST=0]g(T)g(S)=\sum_{T\subseteq S}[S-T=0]g(T)
    =TSRST(1)Rg(T)=\sum_{T\subseteq S}\sum_{R\subseteq S-T}(-1)^{|R|}g(T)
    =RS(1)RTSRg(T)=\sum_{R\subseteq S}(-1)^{|R|}\sum_{T\subseteq S-R}g(T)
    =RS(1)Rf(SR)=\sum_{R\subseteq S}(-1)^{|R|}f(S-R)
    =TS(1)STf(T)=\sum_{T\subseteq S}(-1)^{|S-T|}f(T)
  • 妙啊!
  • 或者也可以這樣:
    f(S)=STg(T)f(S)=\sum_{S\subseteq T}g(T)
    g(S)=ST(1)TSf(T)g(S)=\sum_{S\subseteq T}(-1)^{|T-S|}f(T)

更神奇的多重子集反演

  • 定義μ(S)\mu(S),如果S中有重複元素就是0,否則是(1)S(-1)^{|S|},因爲沒有重複元素,所以TSμ(T)=[S=0]\sum_{T\subseteq S}\mu(T)=[S=0],跟上面是一樣的。

  • 就有f(S)=TSg(T)f(S)=\sum_{T\subseteq S}g(T)g(S)=TSμ(ST)f(T)g(S)=\sum_{T\subseteq S}\mu(S-T)f(T)

  • 如果將每一個元素看作質因數,那這不就是莫比烏斯反演嗎!!!

卷積

  • FFT也是反演???(霧)
  • 其實反演就是將ff分成兩個獨立的部分,例如[dgcd(i,j)]>[di][dj][d|gcd(i,j)]->[d|i][d|j]
  • 然後再把他們合起來。

總結

  • 反演實際上就是一種容斥(所以上面相當於是在證明容斥爲什麼是對的)
  • 對於推式子來說,反演有很大的作用。
  • 但是還是要根據實際的題目而論。
  • 之後做到好題再記錄下來吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章