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


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

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

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

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

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

    数论函数相关定义

    百度的定义是:在数论上,算术函数(或称数论函数)指定义域为正整数、陪域为复数的函数,每个算术函数都可视为复数的序列。陪域这里可以理解成值域(其实值域是陪域的子集,对于一个(x ightarrow 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) eq 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 xsum_{ij=n}f(i)g(j)$$$$Rightarrow x(f*g) ]

    1. 单位元
      从上面的介绍的几种积性函数中我们已经知道了单位元的定义,这里来解释一下。$$f*epsilon=fRightarrow sum_{ij=n}f(i)epsilon(j)=f(n)$$我们取特殊情况(j=1),显然(j)一定能取到1,那么上述式子变为$$f(n)epsilon(1)+sum_{ij=n(j eq1)}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)=egin{cases}(-1)^k & n=p_1p_2...p_k(p_i是质数) 1 & n=1 & 其他情况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 eq 1)的情况,这时候(epsilon(n)=0),也就是说我们要证明,(n eq 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 Idmu=φ1mu$$$$Rightarrow Idmu=φepsilon$$$$Rightarrowφ=mu *Id$$

    重要结论

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

    莫比乌斯反演

    这个应该是这个文章主要叙述的目的,但是篇幅好像最短。因为我们在不知不觉中已经用了这个东西了...
    对于一个积性函数(f),如果有(f=g*1=sum_{d|n}g(d)),那么两边同时卷积(mu)$$fmu=g1mu$$$$Rightarrow fmu=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

  • 相关阅读:
    第五届蓝桥杯JavaB组省赛真题
    第五届蓝桥杯JavaB组省赛真题
    第五届蓝桥杯JavaA组省赛真题
    第五届蓝桥杯JavaA组省赛真题
    第五届蓝桥杯JavaA组省赛真题
    第五届蓝桥杯JavaA组省赛真题
    FastReport的交叉表实际使用的一个例子
    成熟的人首先得明白自己是个什么样的人
    ACL 我为什么要发明一个轮子?
    利润就是被存储的,接到指令就可以被使用的劳动时间
  • 原文地址:https://www.cnblogs.com/destimind/p/10308224.html
Copyright © 2020-2023  润新知