• 莫比乌斯反演


    莫比乌斯反演

    (难得百度爬虫对我这篇垃圾的待重写博客这么友好,赶快重写了)

    (还没写完呢,只是重写了之前的内容,还有新增。 2020.05.11)

    前置芝士

    极高的数学造诣与不怕劳累的精神

    正文

    莫比乌斯反演是数论数学中很重要的内容,可以用于解决很多组合数学的问题。——「百度百科」

    考虑这样两个函数 (F(n),f(n)),它们的关系是 (F(n)=sum_{d|n}f(d))

    我们可以手模出一些函数值如:

    (F(1)=f(1))

    (F(2)=f(1)+f(2))

    (F(3)=f(1)+f(3))

    (F(6)=f(1)+f(2)+f(3)+f(6))

    我们尝试用 (F(n)) 来表示 (f(n))

    (f(1)=F(1))

    (f(2)=F(2)−F(1))

    (f(3)=F(3)-F(1))

    (f(6)=F(6)−F(3)−F(2)+F(1))

    我们发现存在一个这样的关系式:(f(n)=sum_{d|n}F(d)cdot alpha(d)),其中 (alpha(d)) 是一个与 (d) 有关的函数。

    • 莫比乌斯函数

      定义 (mu(n))(n) 的莫比乌斯函数。则有

      [mu(n)= egin{cases} 1 & n=1\ (-1)^k & n=p_1p_2p_3...p_k,p_i ext{ 为 } n ext{ 的质因子且两两互素} \ 0 & ext{otherwise} end{cases} ]

      性质一:莫比乌斯函数是积性函数,即对于 (gcd(a,b)=1),有 (mu(ab)=mu(a)mu(b))

      这个感觉挺显然的啊。

      根据这个性质我们可以用用线性筛在 (O(n)) 的时间内筛出 (1 sim n) 内所有莫比乌斯函数的值。

      性质二:对于任意正整数 (n),有

      [sum_{d|n}mu(d)= egin{cases} 1 &n=1\ 0 &n>1 end{cases} ]

      证明:一个数 (n) 的莫比乌斯函数值不为 (0) 当且仅当 (n) 其质因数分解后所有质因子次数均为 (1)。设 (n)以内共有质数 (k) 个,则含 (r) 个质因子的数有 (inom k r) 个。

      于是有 (sum_{d|n}mu(d)=inom k 0-inom k 1+inom k 2+...+(-1)^kinom k k=sum_{i=0}^{k}(-1)^iinom k i)

      利用二项式定理可得 (sum_{i=0}^{k}(-1)^iinom k i=sum_{i=0}^{k}inom k i(-1)^i1^i=(-1+1)^k=0),证毕。

    猜想莫比乌斯函数与 (alpha(d)) 的关系。

    发现在 (f(3))(f(6)) 的表达式当中 (F(1)) 的系数不相同,于是我们猜想 (alpha(d)=mu(frac n d))

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

    考虑证明。

    注意到 (frac n d cdot d) 为定值,所以原式可变形为

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

    我们将 (F(frac n d)) 进行套娃代换,有

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

    根据实际意义我们可以发现 (d|n)(i|frac n d)(dcdot i|n) 等价,即我们只需要保证 ((mu(d),F(i))) 都被统计到答案里面。于是我们将原式进行变形有

    [sum_{d|n}mu(d)sum_{dcdot i|n}f(i) ]

    交换内外层和式,有

    [sum_{i|n}f(i)sum_{dcdot i|n}mu(d) ]

    根据整除的实际意义继续变换,有

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

    根据上文提及的性质二,有

    [sum_{d|frac n i}mu(d)= egin{cases} 1 &i=n\ 0 &i<n end{cases} ]

    于是有

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

    得证。

    这就是莫比乌斯反演

    莫比乌斯反演的另一种基本形式

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

    可以用类似的方法证明得到。

    这只是一种证明方式,还可以用狄利克雷卷积证明,下次继续写。

    未完待续。

    习题

    P3455&BZOJ1101 【[POI2007]ZAP-Queries】

    在繁华中沉淀自我,在乱世中静静伫立,一笔一划,雕刻时光。
  • 相关阅读:
    RibbonToggleButton
    civil 3d 体积曲面提取等高线
    Civil 3D中各种ObjectID集合中的对象具体是什么类型?
    Civil 3D曲面高程分析
    C++不允许使用指向不完整类型的指针
    LNK2019 无法解析的外部符号 "int __cdecl acedGetReal(wchar_t const *,double *)"
    Civil 3D中获取路线上任意一点处切线方位角
    AutoCAD 实体添加超级链接
    论坛中看到的代码,留存备用 批量创建dwg文件
    ionic3 新增主题色
  • 原文地址:https://www.cnblogs.com/HenryHuang-Never-Settle/p/10472218.html
Copyright © 2020-2023  润新知