【莫比烏斯反演】——蒟蒻的理解
序:最近被反演虐的不要不要的,遂決定寫一篇博文,防止以後自己翻車……
1.定義
莫比烏斯函數:$\mu(n)$
$\begin{cases}
& \text{ if } x= \prod_{i=1}^kp_i\;\;\mu(x)=(-1)^k\\
\\
& \text{ else }\;\;\;\;\;\;\;\;\;\;\;\;\;\; \mu(x)=0
\end{cases}$
我們引入一個概念,狄利克雷卷積。即$(f*g)(n)=\sum_{d|n}f(d)*g(\frac n d)$。顯然,狄利克雷卷積是滿足交換律的。同時其也滿足結合律與分配率。
在引入一個概念,積性函數,即函數$f$對於互質的兩個數$i,j$滿足$f(i*j)=f(i)*f(j)$。其中如果對於任意$i,j$滿足$f(i*j)=f(i)*f(j)$,我們稱其為完全積性函數。
再例舉一些函數的符號:歐拉函數$\phi$,約數個數函數$d$,約數和函數$\sigma$,單位函數$id(n)=n$,元函數$\varepsilon(n)$,當n為1時,$\varepsilon(n)=1$,否則$\varepsilon(n)=0$,以及不變的函數$1(n)=1$。
這裏給出一個線性篩的板子:
1 const int N=1e7+1; 2 3int miu[N],prim[N/5],num,sum[N]; 4 bool vis[N]; 5 6 inline void init(){ 7 miu[1]=1; 8 sum[1]=1; 9 for(int i=2;i<N;i++){ 10 if(!vis[i]) 11 prim[++num]=i,miu[i]=-1; 12 for(int j=1;prim[j]*i<N;j++){ 13 vis[i*prim[j]]=1; 14 if(i%prim[j]==0){ 15 miu[i*prim[j]]=0; 16 break; 17 } 18 miu[i*prim[j]]=-miu[i]; 19 } 20 sum[i]=sum[i-1]+miu[i]; 21 } 22 }
2.莫比烏斯函數的性質
這一段是從目前做過的題總結的,以後沒準還得改(沒準寫的不夠……)
莫比烏斯函數一個十分總要的性質,即$(\mu *1)(n)$當且僅當$n==1$時,為1,否則為0。
關於這個的證明用 二項式定理+唯一分解定理 是很好證明的,這裏就不多說了。
3.莫比烏斯反演
關於這塊,一來是式子太長,二來是百度已經寫得很全面了,所以蒟蒻就不獻醜了。
參考鏈接:百度百科。
我想,這裏比較重要的一個性質是:$F(n)=(f*1)(n)$,若$f$為積性函數,則$F(n)$也是積性函數。
證明如下:
設$\gcd (n,p)==1$。
$F(n*p)=\sum_{i|n}\sum_{j|p}f(i*j)=\sum_{i|n}f(i)\sum_{j|p}f(j)=F(n)*F(p)$
證畢。
這個性質在我們反演出一個形如$ans=\sum_{i=1}^{n}g(i)\sum_{d|i}f(d)$的式子時,若$f$為積性函數,則我們可以將這個式子時間復雜度優化到至少$O(n)$。
例如:
$$F(n)=\sum_{i|n}\mu(i)*i*n$$
4.關於做題
這個我也沒有什麽發言權,畢竟我太弱了……但還是想總結一下自己的想法。
反演最重要的是$gcd(i,j)==1$等價為$\sum_{d|t}\mu(d),t=gcd(i,j)$這一式子,在目前所遇到的題目中,關鍵都是如何將題目給出的內容轉化為$gcd$,並且正確的化解,這個我也不怎麽會,只能多練習了。
5.總結
個人覺得一些基本證明會不會都不是很重要,畢竟也不可能考為什麽$id=(\phi*1)$之類的,明白其過程,對思考有啟發就足以。
6.一些題目:
BZOJ YY的GCD
BZOJ 4176 Lucas的數論
BZOJ 3930 CQOI2015 選數
bzoj2693: jzptab
BZOJ 4174 tty的求助
BZOj 3601:一個人的數論
【莫比烏斯反演】——蒟蒻的理解