莫比烏斯反演,狄利克雷卷積,杜教篩

Part 1 莫比烏斯反演

首先定義莫比烏斯函數\(\mu(n)\)
\(n=\prod_{i=1}^mp_i^{k_i}\),其中\(p_{1-n}\)爲互不相等的質數,則

\[\mu(n)=\begin{cases}0 & \exists k_i>1(i\in[1,m]) \\(-1)^m & else \end{cases} \]

通俗地講就是:如果\(n\)能被一個質數的平方整除,則\(\mu(n)=0\),否則若\(n\)\(m\)個質因數,則\(\mu(n)=(-1)^m\)

由定義可以得到幾個結論:
\(1.\mu(1)=(-1)^0=1\)
\(2.\mu(p)=-1\)\(p\)爲質數)
\(3.\sum_{d|n}\mu(d)=[n=1]\)。其中\([]\)是條件運算符,當裏面的條件成立時值爲\(1\),否則爲\(0\)
下面來證明第三個結論。
首先,若\(n=1\),結論顯然成立。
否則,我們同樣把\(n\)寫成\(\prod_{i=1}^mp_i^{k_i}\)的形式,那麼結論的式子可以展開爲

\[\sum_{d_1=0}^{k_1}\sum_{d_2=0}^{k_2}···\sum_{d_m=0}^{k_m} \mu(\prod_{i=1}^mp_i^{d_i}) \]

可以發現當存在一個\(d_i>1\)時,後面的\(\mu\)的值爲0。所以我們只需要考慮\(d_i\)\(0\)\(1\)的情況。這時可以把我們式子看成:在一個大小爲\(m\)的集合中選任意個數,這些數的乘積的\(\mu\)值之和。又由於這些數都是互不相等的質數,所以乘積的\(\mu\)值只與選了多少數有關。那麼枚舉選了多少個數,式子就可以寫成:

\[\sum_{i=0}^m{m\choose i}(-1)^i \\=\sum_{i=0}^m{m\choose i}(-1)^i\times1^{m-i} \\=0^m \]

所以只有當\(m=0\),即\(n=1\)時,\(\sum_{d|n}\mu(d)=1\),其餘都爲0。

接下來就是莫比烏斯函數的一種應用,被稱爲莫比烏斯反演。
通常有兩種式子:

\[若F(n)=\sum_{d|n}f(d) \\則f(n)=\sum_{d|n}\mu(\dfrac{n}{d})F(d) \]

證明很簡單,把\(F\)展開即可:

\[f(n)=\sum_{d|n}\mu(\dfrac{n}{d})\sum_{r|d}f(r) \\=\sum_{r|n}f(r)\sum_{d|\frac{n}{r}}\mu(\dfrac{n}{dr}) \\=\sum_{r|n}f(r)\sum_{d|\frac{n}{r}}\mu(d) \]

根據上面的性質可以知道,只有當\(r=n\)時,第二個\(\sum\)纔有值,爲1,此時等號右邊等於\(f(n)\)
第二種式子爲:

\[若F(n)=\sum_{n|d}f(d) \\則f(n)=\sum_{n|d}\mu(\dfrac{d}{n})F(d) \]

證明和上面類似:

\[f(n)=\sum_{n|d}\mu(\dfrac{d}{n})\sum_{d|r}f(r) \\=\sum_{n|r}f(r)\sum_{d|\frac{r}{n}}\mu(d) \]

同理,只有當\(r=n\)時,第二個\(\sum\)有值,爲1。
下面總結的狄利克雷卷積有更好的方式證明第一種式子。

Part 2 狄利克雷卷積

首先總結一下積性函數和幾個常見的積性函數。
積性函數的定義爲:若\(n,m\)互質,且\(f(n)\times f(m)=f(nm)\),則\(f\)爲積性函數。
另外有個完全積性函數的定義:若\(f(n)\times f(m)=f(nm)\),則\(f\)爲完全積性函數。
下面總結一下常見的積性函數:
\(1.e(n)=[n=1]\)元函數。
\(2.I(n)=1\)常值函數。
\(3.id(n)=n\)不知道叫什麼函數。
\(4.p_k(n)=n^k\)冪函數
\(4.\mu(n)\)莫比烏斯函數,定義在上面。
\(5.\varphi(n)=\sum_{i=1}^n[gcd(i,n)=1]\),即歐拉函數,意義是\(n\)以內與\(n\)互質的數的個數。
\(6.d(n)=\sum_{d|n}1\)約數個數函數,值爲\(n\)的約數個數。
可以注意到前四個實際上還是完全積性函數。
積性函數可以通過歐拉篩(線篩)來求。

狄利克雷卷積是一種運算,符號爲\(*\),定義兩個函數的狄利克雷卷積\((f*g)(n)=\sum_{d|n}f(d)g(\dfrac{n}{d})\)
狄利克雷卷積有幾個常用的式子:
對於任意函數\(f\),都有\((f*e)(n)=f(n)\)。證明就是把式子展開。
\((\mu*I)(n)=e\)。展開之後就是莫比烏斯函數的結論。
\((id*id)(n)=n\times d(n)\)還是展開再證明
\((\varphi*I)(n)=id(n)\)
最後一個式子可以展開爲\(\sum_{d|n}\varphi(d)=n\)
這個式子有一個巧妙的證明和一箇中規中矩的證明。

巧妙的證明:
嘗試列出\(\dfrac{1}{n},\dfrac{2}{n},···,\dfrac{n}{n}\),並把他們化爲最簡分數。設化簡後的分母集合爲\(S\)
引理\(1\)\(S\)恰好爲\(n\)的約數集。
證明:若存在一個\(n\)的約數\(d\)不在\(S\)中,則\(\dfrac{n/d}{n}\)不在最初的數列中。不成立。
\(x\)不是\(n\)的約數。由於最初的數列中沒有一個數能化簡得到分母爲\(x\)的分數,所以\(x\)不可能在\(S\)中。得證。
引理\(2\):對於\(S\)中的任意元素\(x\),化簡後的數列中所有以\(x\)爲分母的分數的分子都與\(x\)互質,且分子集合恰好是所有\(x\)以內與\(x\)互質的數。
證明:分子分母顯然,因爲是最簡分數。若存在一個數\(y\leq x\)且與\(x\)互質,且不在分子集中出現過,則分數\(\dfrac{y\times\frac{n}{x}}{n}\)不在最初的數列中出現,不成立。得證。
因此,化簡後以約數\(d\)爲分母的分數一共有\(\varphi(d)\)個。而分數一共有\(n\)個,因此\(\sum_{d|n}\varphi(d)=n\)

中規中矩的證明:
引理:\(f(n)=\sum_{d|n}\varphi(d)\)爲積性函數。
證明:

\[f(n)\times f(m)=(\sum_{d|n}\varphi(d))(\sum_{r|m}\varphi(r)) \\=\sum_{d|n}\varphi(d)\sum_{r|m}\varphi(r) \\=\sum_{d|n}\sum_{r|m}\varphi(d)\varphi(r) \\=\sum_{dr|nm}\varphi(dr) \\=f(nm) \]

這裏涉及到\(\varphi\)爲積性函數。不懂就搜。

\[f(n)=\prod_{i=1}^mf(p_i^{k_i}) \\=\prod_{i=1}^m(1+\sum_{j=1}^{k_i}(p_i^j-p_i^{j-1})) \\=\prod_{i=1}^mp_i^{k_i}=n \]

狄利克雷卷積也有運算律:
·交換律:\(f*g=g*f\)。根據狄利克雷卷積定義式可知其顯然成立。
·結合律:\((f*g)*h=f*(g*h)\)
證明:

\[\sum_{d|n}(\sum_{r|d}f(r)g(\frac{d}{r}))h(\frac{n}{d}) \\=\sum_{d|n}\sum_{r|d}f(r)g(\frac{d}{r})h(\frac{n}{d}) \\=\sum_{r|n}f(r)\sum_{d|\frac{n}{r}}g(d)h(\frac{n}{dr}) \]

·分配律:\((f+g)*h=f*h+g*h\)。把左邊展開即得證。

上面說狄利克雷卷積可以證明莫比烏斯反演的第一個式子,現在填坑:
\(F(n)=\sum_{d|n}f(d)\),則\(f(n)=\sum_{d|n}\mu(d)F(\dfrac{n}{d})\)
證明:\(F(n)=\sum_{d|n}f(d)\)可以寫成:\(F=f*I\)
兩邊同時卷一個\(\mu\)可以得到\(F*\mu=f*I*\mu=f*(I*\mu)=f*e=f(n)\)。即得證。

同時還有一個常用的式子:\(\sum_{d|n}d\times\mu(\dfrac{n}{d})=\varphi(n)\)
證明:把左邊寫成\(id*\mu\)。由於\(id=\varphi*I\),所以\(id*\mu=\varphi*I*\mu=\varphi*e=\varphi(n)\)

Part 3 杜教篩

可以在\(O(n^{\frac{2}{3}})\)的複雜度內求出\(\sum_{i=1}^nf(i)\)
設要求的爲\(S(n)\),並設\(h=f*g\)\(g\)是我們選的一個與\(f\)有聯繫的函數,最後會講怎麼選。則

\[\sum_{i=1}^nh(i)=\sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d}) \\=\sum_{d=1}^ng(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i) \\=\sum_{d=1}^ng(d)S(\lfloor\frac{n}{d}\rfloor) \]

然後把\(d=1\)的一項留着,其餘的減過去,得到

\[g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{d=2}^ng(d)S(\lfloor\frac{n}{d}\rfloor) \]

這個就可以整除分塊然後遞歸了。這就是杜教篩的套路式。
觀察這個式子,可以發現杜教篩的使用條件:
\(h\)\(g\)的前綴和必須很好求。比如\(f(i)=i\)這樣的函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章