莫比乌斯反演及狄利克雷卷积速通
莫比乌斯反演速通
前言
由于请假错过了讲课,所以莫反是我第一个需要自学的难度不小的数学知识。
自学的过程的狼狈的,旁边也曾是自学的 czn 告诉我如果学会“狄利克雷卷积”就可以对“莫比乌斯反演”的理解进行“降维打击”。他还十分热心地带着我速通了一遍狄卷与莫反。
一知半解,就自学了很多资料。终于是补全了每一块知识碎片。
秉着造福后人的原则,我想写一篇非常非常通俗易懂的学习笔记。
易懂到什么程度呢?——就是初一的同学,也能速通。
食用指南:备好草稿纸,遇到式子先自己推导,培养推式子的习惯。
数论函数
这是狄利克雷卷积(后文简称“狄卷”)的前置知识。
数论函数是一类这样的函数:定义域为正整数,值域是一个数集。
数论函数间的简单运算有加法与数乘。
- 加法:定义为两个函数逐位相加。\((f+g)(n)=f(n)+g(n)\)
- 数乘:定义为其函数每位都乘一个数。\((xf)(n)=x\cdot f(n)\)
狄利克雷卷积
狄卷是数论函数间的运算,记为:
等号左侧展开为:
一些运算律
交换律:\(f*g=g*f\),这个显然。
结合律:\((f*g)*h=f*(g*h)\),因为:
分配律:\(f*h+g*h=(f+g)*h\),因为:
一些函数意义
-
\(\varphi(n)\):\([1,n]\) 中与 \(n\) 互质的数的个数。
性质:\(\varphi(1)=1\),\(\varphi(n)=n-1\) 当且仅当 \(n\) 为质数。 -
\(\mu(n)\):莫比乌斯函数。
定义:- \(\mu(n)=1\),(\(n=1\))
- \(\mu(n)=(-1)^k\),(\(n=\prod\limits _{i=1}^{k} p_i\) 且 \(p_i\) 为指数为 \(1\) 的质数)
- \(\mu(n)=0\),(其他情况)
-
\(Id_k(n)\):幂函数,\(Id_k(n)=n^k\)。
-
\(\sigma_k(n)\):\(n\) 的所有因数的 \(k\) 次方和。
-
\(\epsilon(n)\):值为 \([n=1]\)。即当且仅当 \(n=1\) 时值为 \(1\),否则为 \(0\)。
-
\(d(n)\):\(n\) 的所有因数个数,即 \(\sigma_0(n)\)。
-
\(I(n)\):常函数,值恒为 \(1\),即 \(Id_0(n)\)。
这里说明一下第七条,在一些参考书中写作 \(\mathbf{1}(n)\),本文为了区分函数与常数,这里用 \(I(n)\) 代替 \(\mathbf{1}(n)\)。
一些式子
这里会有很多公式,可以再看证明之前自己先证一遍,难度从易到难。
式子一:\((xf)*g=x(f*g)\),因为:
式子二:\(f*\epsilon=f\),因为:
式子三:\(I*I=d\),因为:
式子四:\(I*Id_k=\sigma_k\),因为:
式子五:\(\mu*I=\epsilon\),因为:
- 当 \(n=1\),显然成立。
- 当 \(n\neq 1\),将 \(n\) 分解为 \(n=p_1^{m_1}p_2^{m_2}\dots p_k^{m_k}\)。
计算有效的 \(\mu\),肯定质因子的指数为 \(1\)。
所以每次在 \(k\) 个质因数选择 \(r\) 个,即 \(C_k^r\) 个。
那就可以继续推式子了。
因此,\(\mu *I=\sum\limits_{i|n} \mu(i)=[n=1]=\epsilon\)。
这里解释一下是怎么得到 \((1-1)^k\) 的:
二项式定理:\((x+y)^k=\sum\limits_{i=0}^k C_k^ix^{k-i}y^i\)。
这里把 \(x=1\),\(y=-1\) 带进去得证。
式子六:\(\varphi*I=Id_1\),因为:
设 \(p\) 为质数,\(m>0\),则:
因为 \(n\) 可分解为 \(p_1^{m_1}p_2^{m_2}\dots p_k^{m_k}\),可由积性函数的性质得证 \((\varphi*I)(n)=n=Id_1(n)\)。
即 \(\varphi*I=Id_1\)。
式子七:\(\varphi=\mu*Id_1\)。
这个留作作业,答案放在文尾。
简单性质
上文的式子二、四、六就是主要性质,除此之外还有积性函数性质:
若 \(f\),\(g\) 为积性函数,则 \(f*g\) 也为积性函数。
狄利克雷的逆元
对于每个 \(f(1)\ne 0\) 的 \(f\),都存在一个 \(g\) 使得 \(f*g=\epsilon\)。
如何求 \(g\)?
先推一下式子:
现在目标为定义 \(g(n)\) 使得等式成立。
可以定义:\(g(n)=\frac{1}{f(1)}([n=1]-\sum\limits_{i|n,i\ne 1}f(i)g(\frac{n}{i}))\)。
\(g\) 就是 \(f\) 的逆元,也可写作 \(f^{-1}\)。
莫比乌斯反演
莫比乌斯反演公式
在“狄卷”的“一些函数意义”中我们直接给出了 \(\mu\) 的定义与运算方式。
但其实是要推的,仅知道的条件是“定义 \(I\) 的逆为 \(\mu\)”。
让我们来看看如何用狄卷推出莫反的式子——看看狄卷是怎么降维打击的。
如果 \(g=f*I\),则
一展开,即:
如果 \(g(n)=\sum\limits_{i|n}f(i)\),则
写得优美一点:
而这个就是我们的莫反公式了!
别忘了,我们尚未知道 \(\mu\) 的值,现在来讲讲怎么求。
由于 \(I\) 是积性函数,所以 \(\mu\) 也是积性函数。简单算数可得:
再根据积性函数,就得到了:
于是华丽结束。
有没有体味到降维打击呀朋友们!
莫比乌斯函数的性质
如果不讲狄卷,这里应该是第二章,但是学过狄卷的我们可以速通以下三个性质。
- \(\sum\limits_{i|n}\mu(i)=[n=1]\)。这个用 \(\mu*I=\epsilon\) 秒了。
- \(n=\sum\limits_{i|n}\varphi(i)\)。用 \(\varphi*I=Id_1\) 秒了。
- \(\sum\limits_{i|n}\frac{\mu(i)}{i} = \frac{\varphi(n)}{n}\)。因为 \(\varphi=\mu*Id_1\),所以展开得
\(\sum\limits_{i|n} \frac{\mu(i)\cdot n}{i}=\varphi(n)\Rightarrow \sum\limits_{i|n} \frac{\mu(i)}{i}=\frac{\varphi(n)}{n}\),秒了。 - \(\mu(n)\) 是积性函数,这个上文解释过了。
代码实现预处理 \(\mu\)
\(\mu\) 是积性函数,线性筛带走。
void init(int x)
{
mu[1]=1;
for(int i=2;i<=x;i++)
{
if(!vis[i])
pri[++cnt]=i,mu[i]=-1;
for(int j=1;j<=cnt&&i*pri[j]<=x;j++)
{
vis[i*pri[j]]=1;
if(i%pri[j]==0) break;
mu[i*pri[j]]=-mu[i];
}
}
}
参考文献
- [1],Mcggvc,《狄利克雷卷积》
- [2],An_Account,《莫比乌斯反演-让我们从基础开始》
- [3],铃悬,《铃悬的数学小讲堂——狄利克雷卷积与莫比乌斯反演》
式子七答案
结尾
有没有感受到用狄卷理解莫反“降维打击”的快感?
由于我是自学的,有一些地方会有纰漏,欢迎指出。
没有例题是因为还没去刷,大家如果想锻炼推式子能力可以看参考文献 2。