莫比乌斯反演专题学习笔记

本文记录一些和莫反有关的内容的笔记

可能存在诸多谬误,阅读时请谨慎分析

若发现文中有谬误,如您愿意,恳请您向我指出,不胜感激!


为什么要学莫比乌斯反演?

解决一类与狄利克雷卷积、整除、积性函数有关的问题,通过莫比乌斯反演,往往可以将复杂度优化到可接受的范围内


积性函数

对于任意互质整数\(a,b\)有\(f(ab)=f(a)f(b)\)的函数称为积性函数

对于任意整数\(a,b\)有\(f(ab)=f(a)f(b)\)的函数称为完全积性函数

常见,重要的积性函数有:

欧拉函数\(\varphi(n)\)
莫比乌斯函数\(\mu(n)\)
狄利克雷卷积单位元\(\varepsilon=[n=1]\)
不变函数\({\bf{1}}(n)=1\)

狄利克雷卷积

函数\(f,g\)的狄利克雷卷积\((f*g)\)定义如下

\[(f*g)(n)=\sum_{d|n}f(\frac{n}{d})g(d)\]

狄利克雷卷积的单位元为\(\varepsilon=[n=1]\)(把它代入到狄利克雷卷积中,可以发现\(f*\varepsilon=f\))

莫比乌斯函数

莫比乌斯函数定义如下:

\[\mu(i)=\begin{cases}1,& \text{if i = 1}\\(-1)^k,& \text{if i=}p_1p_2p_3\dots p_k(p\in prime)\\0,&\text{otherwise}\end{cases}\]

下面证明莫比乌斯函数的狄利克雷卷积逆是不变函数,即

\[\mu*{\bf{1}}=\varepsilon\]

以下过程引自【算法讲堂】【电子科技大学】【ACM】莫比乌斯反演

证明:设\(n\)的不同质因子的个数为\(k\),则有
\[\mu*{\bf{1}}=\sum_{d|n}\mu(d)=\sum_{i=0}^k(-1)^i\begin{pmatrix}k\\i\end{pmatrix}\]
由二项式定理,有
\[(x+y)^k=\sum_{i=0}^kx^iy^{k-i}\begin{pmatrix}k\\i\end{pmatrix}\]
令\(x=-1,y=1\)代入得
\[0^k=\sum_{i=0}^k(-1)^i\begin{pmatrix}k\\i\end{pmatrix}\]

\[\mu*{\bf{1}}=\varepsilon\]
证毕

由此,我们得到莫比乌斯函数的一个性质\(\sum_{d|m}\mu(d)=[m=1]\)


由于莫比乌斯函数具有积性,我们可以用线性筛来求出莫比乌斯函数

void GetPrime()
{nop[1]=1,mu[1]=1;for(register int i=2;i<=N;++i){if(!nop[i])pri[++pcnt]=i,mu[i]=-1; for(register int j=1;j<=pcnt && i*pri[j]<=N;++j){nop[i*pri[j]]=1;if(i%pri[j]==0)break;else mu[i*pri[j]]=-mu[i];}}
}

莫比乌斯反演

  • \[g(n)=\sum_{d|n}f(d)\rightarrow f(n)=\sum_{d|n}\mu(d)g(\frac{n}{d})\]

证明:

\[g=f*{\bf{1}},\mu*g=f*{\bf{1}}*\mu=f\]

证毕


  • \[g(n)=\sum_{n|d}f(d)\rightarrow f(n)=\sum_{n|d}\mu(\frac{d}{n})g(d)\]

证明略

整除分块

整除分块可以以\(O(\sqrt n)\)的复杂度计算\(\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor\)

首先我们发现\(\lfloor\frac{n}{i}\rfloor\)至多只有\(\sqrt{2n}\)个取值,并且每个取值都是一段连续的“块”

对于每一块\([l,r]\),\(\forall i\in[l,r]\)有\(\lfloor\frac{n}{i}\rfloor=\lfloor\frac{n}{l}\rfloor\)

并且,\(r=n/(n/l)\)

我们只需要逐段计算即可

有时候,我们推出的式子可能还需要乘上一个函数,如\(\varphi,\mu\)等,这时候我们只需要先对函数求前缀和,每次计算一段时乘上这一段对应的函数之和即可

for(int l=1,r;l<=n;l=r+1)
{r=n/(n/l);re+=(r-l+1)*(n/l);
//  re+=(sum[r]-sum[l-1])*(n/l);
}

参考资料

【算法讲堂】【电子科技大学】【ACM】莫比乌斯反演https://www.bilibili.com/video/av43470417

转载于:https://www.cnblogs.com/lizbaka/p/10509365.html

莫比乌斯反演专题学习笔记相关推荐

  1. 数学/数论专题-学习笔记:狄利克雷卷积

    数学/数论专题-学习笔记:狄利克雷卷积 1. 前言 2. 一些基础函数 3. 积性函数 4. 狄利克雷卷积 5. 总结 6. 参考资料 1. 前言 狄利克雷卷积,是学习与继续探究 μ\muμ 函数和 ...

  2. 图论专题-学习笔记:强连通分量

    图论专题-学习笔记:强连通分量 一些 update 1. 前言 2. 定义 3. 求法 4. 应用 5. 总结 一些 update update on 2021/8/12:增加了对于 Kosaraju ...

  3. 图论专题-学习笔记:虚树

    图论专题-学习笔记:虚树 1. 前言 2. 详解 2.1 虚树定义 2.2 虚树构造 2.3 例题 3. 总结 4. 参考资料 1. 前言 虚树,主要是用于一类树上问题,这类问题通常是需要取一些关键点 ...

  4. 数据结构专题-学习笔记:李超线段树

    数据结构专题 - 学习笔记:李超线段树 1. 前言 2. 详解 3. 应用 4. 总结 5. 参考资料 1. 前言 本篇博文是博主学习李超线段树的学习笔记. 2020/12/21 的时候我在 线段树算 ...

  5. 享学金三银四一线大厂面试专题学习笔记

    课程领取链接:https://pan.baidu.com/s/1_4PIUb-Yl68aTW9Bw95iJA 提取码:tnav 如果想系统的全面自学Java编程,可以提供以下几个方法: 1.学习Jav ...

  6. 莫比乌斯反演专题题解

    「SDOI2015」约数个数和 这个题关键就在于知不知道这个 dij=∑x∣i∑y∣j(gcd(x,y)==1)d_{ij}=\sum_{x|i}\sum_{y|j}(gcd(x,y)==1)dij​ ...

  7. 二项式反演(学习笔记)

    q w q qwq qwq机房最后一个学二项式反演的人 众所周知 二项式反演可以表示成 f n = ∑ i = 0 n ( − 1 ) i × C n i × g i ⟺ g n = ∑ i = 0 ...

  8. 【莫比乌斯反演】10.30破译密码

    初涉的话先留坑吧 题目大意 $\sum_{i_1}^{a_1}\sum_{i_2}^{a_2}\cdots\sum_{i_m}^{a_m}(i_1,i_2,\cdots,i_m)$ $a_i<= ...

  9. [数论]莫比乌斯反演1

    索引 莫比乌斯反演1 定理 莫比乌斯反演2 证明 莫比乌斯反演3 技巧 前言 本篇内容全部为定理,无证明 定义 莫比乌斯函数的符号为\(\mu\),通俗的来讲 \[ \mu(n) = \left\{ ...

最新文章

  1. Vmware下Centos7安装预览
  2. CSS样式----标记选择器
  3. hdu2037 今年暑假不AC
  4. 特斯拉上海超级工厂开工 预计今夏完成初期建设...
  5. Android 创建新Project时报错 Cannot create linked resource
  6. 单点登录Redis存储Session及Cookie场景介绍
  7. 网页开发浏览器兼容性问题
  8. stm8s 时钟库函数选择内部RC初始化
  9. OpenShift 4 - 容器应用备份和恢复
  10. 3 天开发物联网应用!腾讯云 IoT 超级小程序来了
  11. 软件工程人才的社会需求现状与发展趋势分析
  12. Request模块实战04 ---- 爬取豆瓣电影排行榜
  13. java获取docx_java使用poi读取doc和docx文件的实现示例
  14. 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
  15. 纯洁的心--佩雷尔曼
  16. linux下自动更换壁纸软件,适用于Ubuntu 18.04的4款最佳壁纸自动切换软件
  17. Next.js基本使用
  18. pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数
  19. 集成框架 -- 快手接入
  20. 深入浅出学习Linux(基础知识一)

热门文章

  1. cavium公司xPliant芯片
  2. 请问有办法加速TTS的反应时间吗
  3. iOS开发小技巧-修改SliderBar指针的样式(牢记这个方法,只能通过代码来修改)
  4. 前端模块化--这是我看过讲得比较好的东东
  5. 如何判断一个数组是否按顺序排好了
  6. .NET中属性和特性
  7. 程序员从初级到中级10个秘诀 【转载】
  8. 洛谷P3966 [TJOI2013]单词(后缀自动机)
  9. Java集合干货——ArrayList源码分析
  10. 打包phar文件过大的问题。