数论初步——莫比乌斯反演

排版有点乱,这篇文章很长,因为我把很多简单的东西说了很多遍,如果看不下去了可以直接看下面的链接,里面的文章我觉得写得还不错= =

这篇写的还不够,以后还要改一改。。

要想学习莫比乌斯反演,你需要知道如下几个知识点

  • 容斥原理
  • 欧拉函数
  • 数论函数
  • 积性函数
  • 狄利克雷卷积(非常重要)

然后容斥原理内容很多。。以后专门写一篇文章来讲这个吧qwq

数论函数相关定义

百度的定义是:在数论上,算术函数(或称数论函数)指定义域为正整数、陪域为复数的函数,每个算术函数都可视为复数的序列。陪域这里可以理解成值域(其实值域是陪域的子集,对于一个\(x \rightarrow y\)的映射,y叫做陪域,但是不一定每个元素都有x与之对应,所以是子集)

然后是积性函数的定义:积性函数指对于所有互质的整数\(a\)\(b\)有性质\(f(ab)=f(a)f(b)\)的数论函数(完全积性函数是对于任意的正整数\(a,b\)都有\(f(ab)=f(a)f(b)\))。

下面我们介绍几个积性函数,以后会用到,这里先码着QAQ

\(1(n)\):不变的函数,定义为1(n)=1(完全积性)(是不是很奇怪1竟然也是一个函数)
\(Id(n)\):单位函数,定义为\(Id(n)=n\)(完全积性)
\(Idk(n)\):幂函数,对于任何复数、实数k,定义为\(Idk(n)=n^k\)(完全积性)这个是百度上面的。。感觉好复杂

\(d(n)\):一个数n的因数个数
\(σ(n)\):一个数n的因数和
\(λ(n)\):刘维尔函数,关于能整除n的质因子的数目
\(μ(n)\):莫比乌斯函数
\(φ(n)\):欧拉函数
\(ε(n)\):若\(n=1\)\(ε(n)=1\);若\(n>1,ε(n)=0\)这个是狄利克雷卷积的单位元,我们下面再讲。。
\(γ(n)\):定义为\(γ(n)=(−1)ω(n)\),在此加性函数ω(n)是不同能整除n的质数的数目
\(f(x)=x^k(k∈N)\)

数论函数的运算

我们只介绍数论函数的加法运算和数乘运算。在此之前,我们要做一些乱七八糟的约定。

下面所说的\(f\),\(g\),\(h\)都是指数论函数,本来应该加粗的,但是好像加粗不了...

  • 加法 \((f+g) = f(x)+g(x)\)(有没有人觉得这是显然QAQ,但其实并不是),意思是两个数论函数的和是每项求和
  • 数乘:\(x\)是一个任意数,\(xf=xf(x)\),意思是数论函数的数乘是每项都乘上\(x\)

狄利克雷卷积

狄利克雷卷积是学习莫比乌斯反演最重要的知识点之一(跟容斥原理的重要性相当)

定义:对于两个数论函数\(f,g\),定义其狄利克雷卷积为\(f*g=h\)满足$$h(x)=\sum_{d|n}f(d)g(\frac{n}{d})$$换个写法就是$$h(x)=\sum_{n=ij}f(i)g(j)$$
解释一下,就是说对于\(f\)\(g\)的卷积\(h\)的每一项(假设为\(h(n)\)),我们可以把\(n\)分解成两个数\(ij\)相乘,也就是找到\(n\)所有的因数,必然会有两个数\(i,j\)(相同或者不同都可以)相乘等于\(n\),当然这样的情况有很多种。此时我们将一个数给\(f\),得到\(f(i)\);另一个数给\(g\),得到\(g(j)\)。然后再让这两个数的函数值相乘得到\(f(i)g(j)\)。这样我们找出所有的情况后就得到了一组值,最后让这些值相加,就是卷积之后的值\(h(n)\)了。

定义看完了我们再看看狄利克雷卷积的一些性质

  1. 交换律:\(f*g=g*f\)
  2. 结合律:\((f*g)*h=f*(g*h)\)
  3. 分配率:\((f+g)*h=f*h+g*h\)
  4. 数乘的结合律:\(x(f*g)=(xf)*g\)
  5. 单位元:\(\epsilon*f=f\)
  6. 逆元:对于每个\(f(1)\neq 0\)的函数\(f\),都存在一个\(g\)满足\(f*g=\epsilon\)

有几个证明是显然,但是还是要证明一下加深理解
证明

  1. 交换律:

\[f*g=\sum_{ij=n}f(i)g(j)$$$$\Rightarrow f*g=\sum_{ji=n}g(j)f(i)$$$$\Rightarrow g*h \]

  1. 结合律(不会证这个啊,大佬的证明看不懂TAT)
    大佬说应为这个,所以成立。。

\[\sum_{(ij)k=n}[f(i)g(j)]h(k)=\sum_{i(jk)=n}f(i)[g(j)h(k)] \]

  1. 分配率

\[(f+g)*h=\sum_{ij=n}[f(i)+g(i)]h(j)$$$$\Rightarrow \sum_{ij=n}[f(i)h(j)+g(i)h(j)]$$$$\Rightarrow \sum_{ij=n}f(i)h(j)+\sum_{ij=n}g(i)h(j)$$$$\Rightarrow f*h+g*h \]

  1. 数的结合律

\[(xf)*g=\sum_{ij=n}xf(i)g(j)$$$$\Rightarrow x\sum_{ij=n}f(i)g(j)$$$$\Rightarrow x(f*g) \]

  1. 单位元
    从上面的介绍的几种积性函数中我们已经知道了单位元的定义,这里来解释一下。$$f*\epsilon=f\Rightarrow \sum_{ij=n}f(i)\epsilon(j)=f(n)$$我们取特殊情况\(j=1\),显然\(j\)一定能取到1,那么上述式子变为$$f(n)\epsilon(1)+\sum_{ij=n(j\neq1)}f(i)\epsilon(j)=f(n)$$很明显我们想让等式成立,只需要将\(\epsilon(1)=1\),而其他值设置为0即可。

  2. 逆元(这个其实就是反演,我们先不说明)

一些常见(经典/重要)的卷积

1. \(d(n) = \sum_{d|n}1(d)1(\frac{n}{d})=\sum_{d|n}1=1*1\)

  这个\(d(n)\)指的是\(n\)的因数的个数,很显然如果\(d|n\),则\(d\)\(n\)的因数,那么将其求和就是\(n\)因数的个数。这里的1指的是不变函数,具体定义参看上文数论函数板块

2. \(σ(n) =\sum_{d|n}d = \sum_{d|n}Id(d)1(\frac{n}{d})=Id*1\)

  注意区分\(Id\)函数和因子\(d\)\(Id(n)\)是单位函数,其值就是\(n\)本身,类似与\(y=x\)这种函数。\(\sigma(n)\)指的是\(n\)所有的因数求和。

通过上面两个卷积我们可以发现似乎卷积可以用来计数

3. \(\epsilon = \mu*1\)

  这个非常重要,我们下面详细说。\(\epsilon\)我们已经很熟悉了(不熟悉的请熟悉了再往下看),上面这个式子表示:不变函数\(1(n)\)的逆元是\(\mu(n)\)\(\mu\)函数叫莫比乌斯函数,这个函数的定义如下$$ \mu(n)=\begin{cases}(-1)^k & n=p_1p_2...p_k(p_i是质数) \1 & n=1 \0 & 其他情况\end{cases}$$
通俗的解释一下,我们将\(n\)质因数分解,得到如下表达\(p^{q_1}_{1}p^{q_2}_{2}...p^{q_k}_{k}\),如果\(q_1,q_2...q_k\)都等于1,则该项的值为\((-1)^k\),否则就是0。就是说对于这些个分解得到的质数,如果存在一个质数的指数大于1了,该项就是0。否则再看这些分解得到的质数的个数是奇数,答案就是-1,偶数就是1.
莫比乌斯函数一定要整明白,不然后面根本看不懂的

  介绍完了莫比乌斯函数我们再看看上面这个卷积的证明。首先从右边开始$$\mu(n)*1(n)=\sum_{d|n}\mu(d)1(\frac{n}{d})=\sum_{d|n}\mu(d)$$我们只需要证明\(\sum_{d|n}\mu(d)=\epsilon(n)\)即可。那么很显然当\(n=1\)的时候一定成立。我们接下来要证明的就是\(n\neq 1\)的情况,这时候\(\epsilon(n)=0\),也就是说我们要证明,\(n \neq 1\)的时候$$\sum_{d|n}\mu(d)=0$$
  我们回顾一下莫比乌斯函数的定义,如果这个数有一个因数的质因子的阶大于等于2,那么此时的函数值就是0.那么我们可以从上述等式中剔除掉这些项。
注意我们要证明的式子有一个条件是\(d|n\),也就是说我们需要找出\(n\)所有的因数,计算他们的莫比乌斯函数值,我们刚刚又说了,如果其存在一个因数的质因子的阶大于1的话函数值就是0的。那我们现在的目标就是找到一些因子,他们要么是质数,要么是不相同质数的乘积(当然还有1),求出这些因子的莫比乌斯函数值,再求和。这里我们做一个转化,假设正整数\(n\)可以分解出\(k\)个质因子\(q_1,q_2...q_k\),我们要求的函数值是这样的
特殊情况:1一定是\(n\)的因数
一个质数相乘:\(q_1,q_2...q_k\),一共\(k\)
两个质数相乘:\(q_1q_2,q_1q_3...q_2q_3...q_{k-1}q_k\)一共\(k*(k-1)/2\)个。
...
\(k\)个质数相乘,\(q_1q_2..q_k\)一共1个。
是不是发现了,就是让你求有\(k\)个元素的集合的子集。当然这还是不一样,因为这些情况的莫比乌斯函数值还有1和-1。用组合数写出来就是$$C_k0+C_k1+C_k2+...+C_kk$$。这只是每种情况列举出来,还需要判断每项前面的系数,刚刚说过,如果有奇数个相乘就是-1,要做减法;如果 是偶数个就是1,要做加法。很明显上述组合数中的\(1...k\)正好表示了是几个质数相乘。那么最终的答案就是$$C_k0-C_k1+C_k2+...+(-1)kC_k^k=0$$
至于这个为什么等于0,考虑\((x+1)^n\),将其二项展开,将\(x=-1\)代入,得到左边等于0,右边等于上面的式子。

4. \(Id = φ*1\)

\(Id\)是单位函数,其函数值等于本身。\(φ\)函数是欧拉函数,\(φ(n)\)表示\(1...n\)中与\(n\)互质的数的个数,也是个计数函数。关于这个函数,本身还有很多性质和定理,以后找齐了一起写吧QAQ。
这个证明在这里,讲道理我是真的没看懂,以后慢慢填坑吧。。

5. \(φ = \mu*Id\)

我们上面已经证明了1函数的逆元是莫比乌斯函数\(\mu(x)\),那么对于上面这个,我们用一下上面这个卷积$$Id=φ1$$$$\Rightarrow Id\mu=φ1\mu$$$$\Rightarrow Id\mu=φ\epsilon$$$$\Rightarrowφ=\mu *Id$$

重要结论

两个积性函数的卷积也是积性函数
积性函数的逆也是积性函数

莫比乌斯反演

这个应该是这个文章主要叙述的目的,但是篇幅好像最短。因为我们在不知不觉中已经用了这个东西了...
对于一个积性函数\(f\),如果有\(f=g*1=\sum_{d|n}g(d)\),那么两边同时卷积\(\mu\)$$f\mu=g1\mu$$$$\Rightarrow f\mu=g$$这样我们可以得到\(g(n)=\sum_{d|n}f(d)\mu(\frac{n}{d})\),如果我们用\(g\)求出了\(f\),那么现在同时也可以用\(f\)求出\(g\)

参考了一堆博客QAQ

https://lx-2003.blog.luogu.org/mobius-inversion# (nice!)
https://blog.csdn.net/chnwjd/article/details/78827944
https://blog.csdn.net/hzj1054689699/article/details/75091655
https://www.cnblogs.com/zhouzhendong/p/8627380.html (nice!)
https://blog.csdn.net/WuBaizhe/article/details/76711158

posted @ 2019-01-23 12:27  destimid  阅读(487)  评论(0编辑  收藏  举报