莫比乌斯反演与狄利克雷卷积

比较无聊,不建议 OI 选手学,也不建议将这部分出成赛题。

一、基本定义

我们先定义数论函数:定义域为正整数,值域为一个数集的函数。

定义两个数论函数的狄利克雷卷积:

  • \(t=f\ast g\),则 \(t(n)=\sum_{i\mid n}f(i)g\left(\dfrac{n}{i}\right)\)

狄利克雷卷积是满足交换律和结合律的。

我们再补充一个分配律:\((f+g)\ast h=f\ast h+g\ast h\)(这个很显然啊)。

以及一个逆元的求法:

  • 对于每个 \(f(1)\not = 0\) 的函数 \(f\),都有 \(g\) 使 \(f*g=\varepsilon\)

  • 定义 \(g(n)=\dfrac{1}{f(1)}\left([n=1]-\sum_{i\mid n,i\not =1}f(i)g\left(\dfrac{n}{i}\right)\right)\)

  • 易知:\(\sum_{i\mid n}f(i)g\left(\dfrac{n}{i}\right)=f(1)g(n)+\sum_{i\mid n,i\not = 1}f(i)g\left(\dfrac{n}{i}\right)=[n=1]\)

补充结论:

  1. 两个积性函数的狄利克雷卷积是积性函数。

    证明:若 \(n\bot m\),且 \(a\mid n\)\(b\mid m\),则 \(a\bot b\),此时:

    \[\begin{aligned} t(nm)&=\sum_{d\mid nm}f(d)g\left(\dfrac{nm}{d}\right) \\\\ &= \sum_{ab\mid nm}f(ab)g\left(\dfrac{nm}{ab}\right) \\\\ &= \sum_{ab\mid nm} f(a)g\left(\dfrac{n}{a}\right)f(b)g\left(\dfrac{m}{b}\right) \\\\ &= \left(\sum_{a\mid n}f(a)g\left(\dfrac{n}{a}\right)\right)\left(\sum_{b\mid n}f(b)g\left(\dfrac{m}{b}\right)\right) \\\\ &= t(n)t(m) & \square \end{aligned}\]

  2. 积性函数的逆是积性函数(不考虑 \(f(1)=0\))。

    证明:考虑对 \(nm\) 的大小进行归纳。

    • \(nm=1\),则 \(g(1)=1\),结论成立

    • 假设 \(nm>1\),当 \(n'm'<nm\) 时有 \(g(n'm')=g(n')g(m')\),欲证 \(nm\) 时满足命题:

      \[\begin{aligned} g(nm)&=-\sum_{d\mid nm,d\ne 1}f(d)g\left(\dfrac{nm}{d}\right) \\\\ &= -\sum_{a\mid n,b\mid m,ab\ne 1}f(a)f(b)g\left(\dfrac{n}{a}\right)g\left(\dfrac{m}{b}\right) \\\\ &= f(1)f(1)g(n)g(m)-\sum_{a\mid n,b\mid m}f(a)f(b)g\left(\dfrac{n}{a}\right)g\left(\dfrac{m}{b}\right) \\\\ &= g(n)g(m)-\left(\sum_{a\mid n}f(a)g\left(\dfrac{n}{a}\right)\right)\left(\sum_{b\mid m}f(b)g\left(\dfrac{m}{b}\right)\right) \\\\ &= g(n)g(m)-\varepsilon(n)\varepsilon(m) \\\\ &= g(n)g(m) \end{aligned}\]

      这里 \(\dfrac{nm}{ab}<nm\) 可运用归纳条件。

    \(\mathcal{Q.E.D.}\)

二、符号及常用结论

  1. 常用的几个符号:

    \(\varepsilon\),这个函数是单位元,具体来说,除了 \(\varepsilon(1)=1\),其余都为 0。(完全积性)

    \(\mathrm{id}\),字面意思就是 \(\mathrm{id}(n)=n\)。(完全积性)

    \(\sigma_k\),这个叫做除数函数,具体来说它是 \(\sigma_k(n)=\sum_{d\mid n}d^k\)。(积性)

    \(\mathrm{1}\),它就是黎曼函数。具体来说就是 \(\mathrm{1}(n)=\zeta(n)=1\)。(完全积性)

    \(\varphi\)\(\mu\) 我就不多介绍了。

  2. 常用结论:

    • 莫比乌斯反演:

      \[[n=1]=\sum_{d\mid n}\mu(d) \]

      写成狄利克雷卷积就是:

      \[\varepsilon=1\ast\mu \]

    • 经典的结论:

      \[n=\sum_{d\mid n}\varphi(d) \]

      写成狄利克雷卷积就是:

      \[\mathrm{id}=1\ast \varphi \]

      其逆即为:

      \[\mathrm{id}*\mu=\varphi \]

    • 约数函数有关卷积:

      \[\sigma_0=\mathrm{1}*\mathrm{1} \]

      \[\sigma=\mathrm{id}*\mathrm{1} \]

      \[\sigma _ k = \mathrm{id} ^ k \ast \mathrm{1} \]

      以及一个:

      \[\sigma _ 0 (xy)=\sum _ {i\mid x}\sum _ {j\mid y} [\gcd (i,j)=1] \]

      这个结论的扩展:

      \[\sigma _ 0(xyz)=\sum_{i\mid x}\sum_{j\mid y}\sum_{k\mid z}[\gcd(i,j)=1][\gcd(j,k)=1][\gcd(i,k)=1] \]

  3. 关于 \(\operatorname{lcm}\) 卷积:

    \[h ( n ) = \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { n } f ( i ) g ( j ) [ \operatorname {lcm} ( i , j ) = n ] \]

    这个卷积等价于:

    \[h \ast \mathrm{1} = ( f \ast \mathrm { 1 } ) \cdot ( g \ast \mathrm{1} ) \]

    实际上只要知道:

    \[[\operatorname{lcm} ( i ,j ) \mid n ] = [ i \mid n ] [ j \mid n ] \]

    这里 \(\gcd\) 卷积没有太大的计算价值,因为大部分情况是会产生无限求和的状况。

三、积性函数求法

通过线性筛求积性函数,一般有两种方法:

  1. 分类讨论这个东西:

    • \(f(1)=1\)
    • \(n\in \mathcal{P},f(n)\),这里 \(\mathcal{P}\) 指质数集。
    • \(p\mid n,p^2 \nmid n,f(n)=f\left(n/p\right)f(p)\)
    • \(p\mid n,p^2\mid n,f(n)\),这里一般不同情况不同分析。
    • 经典的例子有一般的 \(\mu\)\(\varphi\) 的求法。
  2. 先算出 \(f\) 在素数幂的取值,对于每个 \(n\) 求出其最小质因数 \(p_k\) 及 其次数 \(c_k\),直接 \(f(n)=f(p_k^{c_k})f\left(n/{p_k^{c_k}}\right)\) 算就可以了。这个次数可以递推求。

    当然素数幂处的取值也不一定很好求。

  3. (From EI)现在我们来谈一谈一种特殊的情况 \(h=f*g\),其中 \(f\)\(g\) 都是积性函数。

    很容易知道 \(h\) 是积性函数。那么同理我们可以按照上面的方法 2 求取。

    那么很显然我们需要知道这个 \(h\)\(p^k\) 的取值。

    容易知道:

    \[h(p^k)=\sum_{d=0}^{k}f(p^d)g(p^{k-d}) \]

    那么我们在 \(p^k\) 处计算 \(h\) 需要 \(\Theta(k)\) 的复杂度。

    我们考虑枚举 \(p\) 的指数 \(k\),则 \(k\le \log_2 n\)

    若我们指定 \(k\),则使 \(p^k\le n\)\(p\) 只有 \(\pi(\lfloor \sqrt[x]{n}\rfloor)\) 个。

    因此这个复杂度:

    \[\begin{aligned} T(n)&=O\left(\sum_{x=1}^{\log_2 n} x\pi(\lfloor \sqrt[x]{n}\rfloor)\right) \\\\ &= O\left(\sum_{x=1}^{\log_2 n}\dfrac{x\sqrt[x]{n}}{\ln \sqrt[x]{n}}\right) \\\\ &= O\left(\dfrac{1}{\ln n}\sum_{x=1}^{\log_2 n}x^2\sqrt[x]{n}\right) \end{aligned}\]

    现在尝试寻找 \(x^2\sqrt[x]{n}\) 的极值:

    \[\dfrac{\operatorname{d}}{\operatorname{d} x}x^2\sqrt[x]{n}=\sqrt[x]{n}(2x-\ln n) \]

    可知原函数单峰下凸,在 \(x=1\) 时得 \(n\)

    用最大值作界得到:

    \[T(n)\le \dfrac{\log_2 n}{\ln n}n=O(n) \]

    Wky 觉得这个方法比较傻,给了一种简明一些的方法:

    因为对于 \(k=1\),一共有 \(\pi(n)\)\(p\)

    对于每个 \(k\in [2,\log_2 n]\),最多只有 \(\pi(\sqrt[k]{n})<\sqrt[k]{n}\)\(p\)

    那么 \(n\) 以内 \(p^k\) 的个数就是 \(O(\pi(n)+\sqrt{n}\log_2 n)=O\left(\dfrac{n}{\ln n}\right)\)(数量级可以通过相除比较)。

    那么总的计算复杂度 \(T(n)=O\left(\dfrac{n\log_2 n}{\ln n}\right)=O(n)\)

    不过这个复杂度分析本身就是简单的,读者选自己喜欢的方式理解就好。

四、贝尔级数

这一块我不太明白。

博文内容来自 rqy,cmd。

定义积性函数 \(f\)\(p\) 的贝尔级数为:

\[f_p(x)=\sum_{i=0}^{\infty}f(p^i)x^i \]

这样的话根据积性函数的性质,狄利克雷卷积就变成了一般卷积:

\[(f\ast g)_p(x)=f_p(x)g_p(x) \]

加法形式也是有意义的,但是不是对应 \((f+g)\),这点请一定要注意:

\[h_p(x)=f_p(x)+g_p(x) \]

简单的解释一下,在素数幂处为两者函数值相加,其他数值处满足积性,这样的一个函数。减法当然也是同理。

求逆的话也比较简单,若 \(f\ast g=\varepsilon\),则:

\[f_p(x)g_p(x)=1 \]

一般写法就类似于 \(1=\mathrm{id}\ast \varphi^{-1}\) 这样子。

常见的封闭形式:

  1. \(\varepsilon_p(x)=1\)

  2. \(\zeta_p(x)=\dfrac{1}{1-x}\)

  3. $ \mathrm {id} ^k _ p (x)=\dfrac{1}{1-p^kx}$

  4. \(\mu _ p(x)=1-x\)\((\mu\cdot\mu)_p(x)=1+x\)

  5. \(\sigma _ {0p}(x)=\dfrac{1}{(1-x)^2}\)

  6. \(\varphi_p(x)=\dfrac{1-x}{1-px}\)

  7. \((\mathrm{id}\cdot \mu)_p(x)=1-px\)

Hint:仔细想一想 \(f(p^x)\) 等于什么,变成一个正常的 OGF。

也可以利用已知结论推导,比如 \(\varphi _ p(x)=\mu _ p(x)\mathrm{id_p}(x)\)

或者说从函数的一些基础定义理解。

点乘的话就是对应 \(x^i\) 的系数相乘即可。贝尔级数上并没有初等运算可以对应。

一种特殊的点乘是数论函数 \(f\) 点乘上 $\mathrm{id} ^ k $,这种情况下我们是可以求出其贝尔级数的:

\[(f\cdot \mathrm{id} ^ k)_ p(x)=\sum_{i=0}^{\infty}f(p^i)p^{ki}x^{i}=\sum_{i=0}^{\infty}f(p^i)(p^kx)^i \]

这个时候将 \(p^kx\) 视作整体,代入 \(f_p(x)\) 就可以了。

比如:\((\varphi\cdot \mathrm{id} ^ 2)_p(x)=\dfrac{1-p^2x}{1-p^3x}\)

P3768 简单的数学题 可以作为练习。

有关这个的习题似乎很难找(?)。

我自己出了一道:U214268 不老不死的竹林引路人。

rqy 有一个题:

\[f( p ^ c ) = p ^ c + [c > 0 ] ( - 1 ) ^ c \]

求前缀和。

可以知道:

\[f_ p (x) = \dfrac{1}{1-px} + \dfrac{1}{1+x} -1 \]

这里的 \(g=(\mathrm {id} \cdot \mu) \ast \mu ^ 2\) 应该算得上是很简单的形式了……但这个 \(g\) 的前缀和求取一定需要用杜教筛了,复杂度上会高于线性。


可能会存在狄利克雷生成函数能做而贝尔级数做不了的东西(只要出现一个非积性数论函数)。

五、总结

  1. 关于如何理解莫比乌斯反演如何加速计算:

    莫比乌斯反演从某种角度来看是数论容斥,这对加速计算本身没有什么帮助。

    但换序求和与数论分块提供了复杂度的优化。

    数论分块的原理是同数值的划分与打包。

    换序求和实际上就是实现了对容斥集合的较优划分。

  2. 定义运算 \(\cdot\),表示 \((f\cdot g)(n)=f(n)g(n)\)

    显然 \(\mathrm{1}=\zeta\) 是单位元。

    \(f\) 是完全积性的,有性质:

    \[(f\cdot g)\ast (f\cdot h)=f\cdot(g\ast h) \]

    一般尝试展开成普通的求和形式。主要是用在杜教筛里的。

  3. 关于莫反的一个值域平衡技巧。

    P5572

  4. 狄利克雷前缀和技巧。

    可以 \(O( n \ln \ln n )\)\(\mu / \zeta\) 变换及其反向变换 P5495

    当然还有一个技巧可以做到 \(O(n)\)。简单一些说,就是群直积的卷积变换可分解成独立的卷积变换(From rqy)……

    做法是这样的:

    \[g( i , n ) = \sum _ { d \mid n , d 只含前 i 种质因子} \mu \left( \dfrac{n}{d}\right) f ( d ) \]

    然后就有:

    \[g( i , n ) = \begin{cases} g ( i - 1 , n ) & p _ i \nmid n \\ g ( i - 1 , n ) - g ( i - 1 , n / p _ i ) & p _ i \mid n \end{cases} \]

    最后我们要的就是 \(g ( cnt , n )\)

六、其他筛法

PN 筛,Min_25 筛,zzt 筛。。。复杂度上会更优秀。

把 negiizhao 的博客贴在 这里 备忘一下。

七、题目

去 SPOJ 做比较好。

例零:UVA11526 H(n)

  • 数论分块的基本内容。

练习零:P2261 [CQOI2007]余数求和


例一:P3455 [POI2007]ZAP-Queries

  • 有一道重题 P4450

练习一:P2522 [HAOI2011]Problem b


例二:P2398 GCD SUM

  • 重题 P1390 公约数的和,不过稍微用一点容斥

练习二:P2257 YY的GCD

练习三:P3327 [SDOI2015]约数个数和

练习四:P4318 完全平方数

  • 结合了二分的技巧

练习五:CF1139D Steps to One

  • 期望与莫反结合的一道题

例五:P4213 【模板】杜教筛(Sum)

练习五:P1829 [国家集训队]Crash的数字表格 / JZPTAB


例六:P4917 天守阁的地板

练习六:P3704 [SDOI2017]数字表格

  • 类似的题 P4449 于神之怒加强版,更简单一些

例七:P5495 Direchlet 前缀和

练习七:P2714 四元组统计

  • 后缀和和后缀差分

练习题 A 组:

  1. 推导练习

    \[\sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } \left[ \gcd ( i , j ) = k \right] \]

    \[\sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } f ( \gcd (i, j)) \]

  2. P2260 [清华集训2012]模积和

  3. P1891 疯狂 LCM

  4. P2424 约数和

  5. P6810 「MCOI-02」Convex Hull 凸包


练习题 B 组:

  1. P2158 [SDOI2008] 仪仗队

    • 类似练习 P1447 [NOI2010] 能量采集
  2. P3312 [SDOI2014]数表

  3. P6222 「P6156 简单题」加强版

  4. P3768 简单的数学题

  5. U214268 不老不死的竹林引路人

  6. P5518 [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题

    • 有卡常。

练习题 C 组:

  1. T168866 无聊的题目

    • Wky 送的 rqy 题。。。
  2. P1587 [NOI2016] 循环之美

    • 一个按照素数幂分解 DFS 的小方法
  3. P4619 [SDOI2018]旧试题

  4. P5572 [CmdOI2019]简单的数论题

    • 一个值域平衡的技巧
    • 对应练习 P4240 毒瘤之神的考验

八、附录

\(\LaTeX\) 使用表:

  1. \mathrm{id} ^ 2 \(\rightarrow \mathrm{id} ^ 2\)

  2. \zeta \(\rightarrow \zeta\)

  3. \sigma _ 0 \(\rightarrow \sigma _ 0\)

  4. \varphi \(\rightarrow \varphi\)

  5. \varepsilon \(\rightarrow \varepsilon\)

  6. \sqrt[x]{n} \(\rightarrow \sqrt[x]{n}\)

九、后记

请输入文本。

posted @ 2023-02-08 01:28  a3yz4hm  阅读(175)  评论(1)    收藏  举报