• 初探莫比乌斯反演


    我们首先从这个函数出发:(mu(n)),它被称作莫比乌斯函数

    它的定义式是这样的

    [mu(n)= egin{cases} 1& n=1\ (-1)^r& n=p_1p_2ldots p_r,p_1,p_2,ldots p_rin prime\ 0& p^k|n,pin prime,k>1 end{cases} ]

    即:在对(n)进行质因子分解之后,所有质因子的幂次都不大于1的话,(mu(n)=(-1)^r),r为n互不相同的质因子的个数。若n有某一个质因子的幂次大于1的话,(mu(n)=0)

    关于(mu(n))函数有许多有趣的性质

    1、(sum_{d|n}mu(d)=0(d>1))

    证明:令(n=p_1^{a_1}p_2^{a_2}ldots p_r^{a_r},p_1,p_2,ldots p_rin prime),考虑数(m=p_1p_2ldots p_r,p_1,p_2,ldots p_rin prime)

    (sum_{d|n}mu(d)=sum_{d|m}mu(d)=sum_{i=0}^{r}C_r^i(-1)^r1^{i-r}=(1-1)^r=0)

    命题得证

    2、(frac{varphi(n)}{n}=sum_{d|n}frac{mu(d)}{d})

    为了证明这个和下面的反演,我们引入一个新概念——狄利克雷卷积

    我们说:数论函数指定义域为正整数、值域为复数的函数,比如上文中我们提到的(mu(n),varphi(n))

    同时我们再定义几个比较常见的数论函数

    (e(n)),元函数,(e(n)=[n=1])([]中带的是一个逻辑判别式,如果满足的话值为1,否则值为0)

    (I(n)),恒等函数,(I(n)=1)

    (id(n)),单位函数,(id(n)=n)

    然后就是狄利克雷卷积的定义了

    对于两个数论函数(f(n))(g(n)),定义它们的卷积((f*g)(n)=sum_{d|n}f(n)g(frac{n}{d})),一般等式左边的((n))可以不写

    容易证明,卷积运算满足交换律,结合律和分配律

    我们从卷积的角度,再回过头去看这两条性质

    第一条性质可以被表述成(mu*I=e),这是下面证明的关键

    第二条性质:

    我们在两边同时乘上n,得到(varphi(n)=sum_{d|n}mu(d)frac{n}{d})

    我们知道(varphi(n))满足(sum_{d|n}varphi(d)=n)

    我们把它写成卷积的形式:(varphi *I=id)

    在两边同时乘上(mu),得到(varphi *I *mu=id *mu)

    (I*mu)约去,得到(varphi=id*mu),就是我们一开始写出来的式子

    因此命题得证

    我们再看到莫比乌斯反演,它一般有两种写法

    1、如果两个数论函数(f(n),F(n))满足

    [F(n)=sum_{d|n}f(d) ]

    那么

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

    2、如果两个数论函数(f(n),F(n))满足

    [F(n)=sum_{n|d}f(d) ]

    那么

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

    我们从纯数学的角度来证明一下这两个式子

    1、

    [sum_{d|n}mu(d)F(frac{n}{d})=sum_{d|n}mu(d)sum_{i|frac{n}{d}}f(i)=sum_{i|n}f(i)sum_{d|frac{n}{i}}mu(d) ]

    (mu(d))的第一个性质我们知道,当(frac{n}{i}=1)(n=i)时,(sum_{d|frac{n}{i}}mu(d))的值为1,其他时候这个式子的值均为0

    因此

    [sum_{i|n}f(i)sum_{d|frac{n}{i}}mu(d)=f(n)(满足i=n时) ]

    2、

    [sum_{n|d}mu(frac{d}{n})F(d)=sum_{k=1}mu(k)F(nk)=sum_{k=1}mu(k)sum_{nk|t}f(t)=sum_{n|t}f(t)sum_{k|frac{t}{n}}mu(k) ]

    剩下的就和1的证明大体类似了

    在这里再提供一种更为简洁的证明思路——利用卷积

    在这里以1的证明为一个例子

    对于(F(n)=sum_{d|n}f(d)),我们可以把它写成卷积的形式:(F=f*I)

    在两边同时乘上(mu),得到(F*mu=f*I*mu)

    约去(I*mu),即(f=F*mu)

    证完了QAQ

    看了这么多,你肯定会问了:这玩意有什么用?

    实际上,在一些题目中,出题人会让你求某一个函数的值,我们会发现直接求它的值不好求,而求它的因数函数值之和或倍数函数值之和会更加方便,于是我们就要用到反演了

    然而更多的时候我们要求的函数值与反演看起来八竿子打不着,这就需要我们通过构造函数来达到简化计算了

    由于涉及到莫比乌斯反演的题目对时间复杂度的要求较高,一般不会要你在(O(n))的时间内求解,所以为了加速,我们还需要掌握一个知识——整除分块,可以直接看我写的某一道题目的题解

    例题由于zzr太懒所以并没有,留着以后填坑

  • 相关阅读:
    回调函数: 一定要在函数名前加上 CALLBACK,否则有可能引起内存崩溃!
    win32-api: 让 static 控件中的水平横行,垂直居中。
    Win32-API: 终于能正常的捕获焦点事件: WM_COMMAND、BN_SETFOCUS、EN_SETFOCUS
    FindExecutable:查找与一个指定文件关联在一起的程序的文件名
    ImageMagick: win7 | win8 & uac (用户帐户控制) 注册表的一些事
    ImageMagick: 6.8.3 升级到 6.8.9 遇到的问题
    ImageMagick: DrawImage(Image*,DrawInfo*) 绘制填充图片时卡住的原因分析
    真的无语, 今天遇到一个奇葩的事情: http 会话劫持
    高DPI下界面错乱的解决方法和原理
    关于 HDC 的释放
  • 原文地址:https://www.cnblogs.com/encodetalker/p/10046869.html
Copyright © 2020-2023  润新知