狄利克雷卷積與莫比烏斯反演

DeepSeaSpray發表於2024-05-22

狄利克雷卷積與莫比烏斯反演

主要內容

  • 數論函式
  • 狄利克雷卷積
  • 積性函式
  • 莫比烏斯反演
  • 數論分塊

提要

\(a \bot b\) 表示 \(a\)\(b\) 互質。

數論函式

數論函式是一類定義域是正整數的函式,可以類比數列。

加法,數乘比較簡單,略過。

狄利克雷卷積

定義兩個數論函式的狄利克雷卷積為 \(*\)

\(h = f * g\) 則:

\[h(n) = \sum_{i|n} f(i) \cdot g(\frac{n}{i}) \]

  • 其具有交換律,結合律,分配律等,比較顯然。

  • 有單位元 \(\epsilon\),有性質 \(\epsilon * f = f\)。可以得出 \(\epsilon = [n=1]\)

  • 逆元,對於 \(f(1) \not = 0\),有一個 \(g\) 使得 \(f * g = \epsilon\)

如何求函式的逆元。

令:

\[g(n) = \frac{1}{f(1)} ([n = 1] - \sum_{i|n,i \not = 1} f(i) \cdot g(\frac{n}{i})) \]

可以用方程求出 \(g\)

如此:

\[f * g = f(1) \cdot g(n) + \sum_{i|n,i\not=1} f(i) \cdot g(\frac{n}{i}) = [n=1] = \epsilon \]

積性函式

對於一個數論函式,如果有 \(i \bot j\) 使得 \(f(i \cdot j) = f(i) \cdot f(j)\)

那麼此函式成為積性函式

如果對於任意的 \(i\)\(j\) 都有 \(f(i \cdot j) = f(i) \cdot f(j)\) 那麼其為完全積性函式

常見的積性函式有:

  • \(\epsilon\) 解析式 \(\epsilon(n)=[n=1]\)

  • \(id^k\) 解析式 \(id^k(n) = n^k\)

特殊的 \(1(n) = id^0(n) = 1\)

  • \(\phi\) 表示 \([1,n]\) 中與其互質的數的個數。

  • \(\sigma_0\) 表示因數個數。

它們的積性比較顯然,不證。

記住兩個結論:

  • 兩個積性函式的狄利克雷卷積是積性函式

  • 積性函式的逆是積性函式

比較複雜,不打算證明了。

如何利用積性函式的結論,最簡單的是,可以線性篩,因為我們線性篩的過程中順便求出了其最小的質因子,可以利用積性解決函式的取值。

同時由於積性的性質,函式的取值實際上又其所有質數冪處的取值決定,對於這些取值,\(\phi\)\(\sigma_0\) 都是比較好求的,所以可以用線性篩預處理。

給出質數冪處的公式:

\[\phi(p^k) = (p-1) \cdot p^{k-1} \\ \sigma_0(p^k) = k+1 \]

一個重要性質。

嘗試證明 \(\phi * 1 =id\)

\[(\phi * 1)(n) = \sum_{i|n} \phi(i) = n \]

由於上文提及的狄利克雷卷積的性質,\(\phi * 1\) 為積性函式,\(id\) 也為積性函式,所以只需要證明其在質數冪上相等即可。

顯然有:

\[(\phi * 1)(p^k) = \sum_{i=0}^k \phi(p^i) =[ \sum_{i=1}^k (p-1)\cdot p^{i-1}] +1 =( \sum_{i=1}^k p^{i} - p^{i-1} )+1 = p^k = id(p^k) \]

得證。

莫比烏斯反演

定義 \(1\) 的逆是 \(\mu\)

如此,若 \(g = f * 1\),那麼就有 \(f = g * \mu\)

即若 \(g(n) = \sum_{d|n} f(d)\) 則,\(f(n) \sum_{d|n} \mu(\frac{n}{d})g(d)\)

比如根據上文性質有 \(\phi = \mu * id\)

那麼有 \(\phi(n) = \sum_{d|n} \mu(\frac{n}{d})d\)

又有 \(id^k\) 的逆為 \(f(n) = n^k\cdot\mu(n)\)

我們可以算出

\(n=p_1\cdot p_2 \dots p_k\) 其中 \(p\) 為不同的質數時,\(\mu(n)=(-1)^k\)

否則,\(\mu(n) = 0\)

記住結論吧。

另一個方向上的莫比烏斯反演。

\(g(x) = \sum_{n|d} f(d)\)

定義新操作 \(\oplus\)

\((f \oplus g)(x) = \sum_{n|d}f(\frac{d}{n})g(d)\)

可以證明:

\[(f * g) \oplus h = f \oplus (g \oplus h) \]

那麼:

\[f = (\mu * 1) \oplus f = \mu \oplus (1 \oplus f) = \mu \oplus g \]

所以:

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

數論分塊

淺談。

經典問題是處理:

\[\sum \lfloor \frac{n}{i} \rfloor f(i) \]

我們不難發現 \(\lfloor \frac{n}{i} \rfloor\) 最多有 \(O(\sqrt{n})\) 個取值。

進行一個簡單的說明。

\(i<\sqrt{n}\) 時:\(i\) 的取值有 \(\sqrt{n}\) 個。

\(i>\sqrt{n}\) 時:\(\frac{n}{i}<\sqrt{n}\) 取值有 \(\sqrt{n}\) 個。

考慮如何快速的求出所有 \(\lfloor \frac{n}{i} \rfloor\) 的取值。

for(int i=1,j;i<=n;i=j+1){
    j=n/(n/i);
}

證明自行百度,可以感性理解。

此處,既然我們已經求出了 \([i,j]\) 中的數 \(\lfloor \frac{n}{i} \rfloor\) 一致,我們可以把它們放在一起計算,對於 \(f\) 求一個字首和即可。

對於多元的情況,我們也可以類似的處理。

例題

P1447 [NOI2010] 能量採集

首先定義:

\[f(d) = \sum_{i=1}^n \sum_{j=1}^m [gcd(i,j)=d] \\ \]

故有:

\[F(n) = \sum_{n|d} f(d) = \lfloor \frac{n}{d} \rfloor \times \lfloor \frac{m}{d} \rfloor \]

答案為:

\[\begin{aligned} ans & = \sum_{i=1}^n \sum_{j=1}^m gcd(i,j) \\ & = \sum_{d=1}^{min(n,m)} f(d) \times d \\ \end{aligned} \]

莫比烏斯反演:

\[\begin{aligned} ans & = \sum_{d=1}^{min(n,m)} d \sum_{d|k}^{min(n,m)} \mu(\frac{k}{d}) F(k) \\ & = \sum_{d=1}^{min(n,m)} d \sum_{q=1}^{\frac{min(n,m)}{d}} \mu(q) \times \lfloor \frac{n}{dq} \rfloor \times \lfloor \frac{m}{dq} \rfloor \\ \end{aligned} \]

\(T = dq\)

\[\begin{aligned} & = \sum_{d=1}^{min(n,m)} d \sum_{T=1}^{min(n,m)} [d|T] \times \mu(\frac{T}{d}) \times \lfloor \frac{n}{T} \rfloor \times \lfloor \frac{m}{T} \rfloor \\ & = \sum_{d=1}^{min(n,m)} \sum_{d|T}^{min(n,m)} d \times \mu(\frac{T}{d}) \times \lfloor \frac{n}{T} \rfloor \times \lfloor \frac{m}{T} \rfloor \\ \end{aligned} \]

更換 \(d\)\(T\) 的列舉順序。

\[\begin{aligned} & = \sum_{T=1}^{min(n,m)} \sum_{d|T}^{min(n,m)} d \times \mu(\frac{T}{d}) \times \lfloor \frac{n}{T} \rfloor \times \lfloor \frac{m}{T} \rfloor \\ & = \sum_{T=1}^{min(n,m)} \lfloor \frac{n}{T} \rfloor \times \lfloor \frac{m}{T} \rfloor \sum_{d|T}^{min(n,m)} d \times \mu(\frac{T}{d}) \\ \end{aligned} \]

關注後面的部分:

\[h(T) = \sum_{d|T} d \times \mu(\frac{T}{d}) \]

發現這是狄利克雷卷積的形式。

\[\because h = id * \mu \\ \therefore h * 1 = id * \mu * 1 \\ \therefore h * 1 = id * \epsilon \\ \therefore h * 1 = id \\ \because \phi * 1 =id \\ \therefore h = \phi \]

帶回原來的式子。

\[ans = \sum_{T=1}^{min(n,m)} \lfloor \frac{n}{T} \rfloor \times \lfloor \frac{m}{T} \rfloor \times \phi(T) \]

數論分塊即可。

參考程式碼

相關文章