您的位置:首页 > 其它

学习笔记 | 反演 | 二项式反演 | 莫比乌斯反演 | 狄利克雷卷积 |容斥 | 未完待更 | 在更

2019-08-11 13:28 106 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/AngryVegetable/article/details/99183797

文章目录

  • 幕后
  • 反演的定义
  • 莫比乌斯反演!
  • 学习笔记 | 反演 | 二项式反演 | 莫比乌斯反演 | 狄利克雷卷积 |容斥

    参考资料。

    炫酷反演魔术-vfleaking

    莫比乌斯反演-PoPoQQQ

    【数论】积性函数、莫比乌斯反演、狄利克雷卷积-nanoape

    如何证明莫比乌斯反演

    前言

    **非常良心的博主的良心之作 **

    不过…二项式反演还有莫比乌斯反演好像真的可以用小学容斥怒踩qwq…(果然我还是太菜了…

    决定将二项式反演和莫比乌斯反演一起写了

    不过窝写的好像挺繁琐的…不像是那种简洁明了只几句话讲懂的…

    所以期待较少篇幅就讲明白的可以看看参考资料哦!

    参考资料写的真心不错qwq

    让我们一起感受一下组合数学的美趴!

    引入

    简单的容斥应用-全错排

    nnn个人全站错位置的方案数

    • 错排递推式子f[i]=(i−1)∗(f[i−2]+f[i−1])f[i]=(i-1)*(f[i-2]+f[i-1])f[i]=(i−1)∗(f[i−2]+f[i−1]) (f[i]f[i]f[i]为iii个人全错排的方案)还挺好推的不阐述了

      那就简单地讲一讲?

      一种情况是111和 iii 交换位置 然后剩下的n−2n-2n−2个重排 这一部分答案为(n−1)∗f[n−2](n-1)*f[n-2](n−1)∗f[n−2]
    • 剩下的情况111到iii的位置上去,但iii不到111的位置上去 相当于iii的位置原来是1 这一部分答案为(n−1)∗f[n−1](n-1)*f[n-1](n−1)∗f[n−1]
  • 容斥!

    大胆猜想小(不)心(用)证明

    方案数为∑i=0n(−1)i∗Cni∗(n−i)!\sum_{i=0}^{n}(-1)^i*C_n^i*(n-i)!∑i=0n​(−1)i∗Cni​∗(n−i)!

    还是证明一下

      在计算有mmm个人站对的方案时 由于我们计算的时候是直接钦定有多少个人站对,剩下的随意站的。

      所以,在计算0,1,2...m−10,1,2...m-10,1,2...m−1个人站对的方案时,我们会将mmm个人站对的方案重复计算。

      会被计算这么多次

      公式莫名挂了…所以贴图片了qwq

      所以,就加上(−1)m(-1)^m(−1)m 8000 ,那么mmm个人站对的方案数就抵消了

    为什么∑k=0m(−1)k∗Cmk=(1−1)m\sum_{k=0}^{m}(-1)^k*C_m^k=(1-1)^mk=0∑m​(−1)k∗Cmk​=(1−1)m呢?

    • 这是二项式定理,事实上,这有个特殊情况,即m=0m=0m=0时,左边的式子为111

    换一种写法:

    ∑k=0n(−1)k∗Cnk=[n=0]\sum_{k=0}^n(-1)^k*C_n^k=[n=0]k=0∑n​(−1)k∗Cnk​=[n=0]

    • [P][P]表示PPP成立时为111,否则为000

    幕后

    [p]根据容斥得出来的一点东西…窝们来搞一搞反向推!博主随口乱讲大家不要在意

    设f(i)f(i)f(i)表示iii个人全站错的方案数,F(i)F(i)F(i)表示iii个人随便站的方案数

    那么很显然有F(n)=∑k=0nf(i)∗CniF(n)=\sum_{k=0}^nf(i)*C_n^iF(n)=k=0∑n​f(i)∗Cni​

    诶?如果窝们可以反向求出f(i)f(i)f(i)不就厉害了嘛!

    这个过程的流程是这样的:

    首先说一句废话

    f(n)=∑m=0n[n=m]∗Cnmf(m)f(n)=\sum_{m=0}^n[n=m]*C_n^mf(m)f(n)=∑m=0n​[n=m]∗Cnm​f(m)

    • 哦?[n=m][n=m][n=m]等价于[n−m=0][n-m=0][n−m=0]
    • 嗯?窝们上面不是有这个东西嘛?∑k=0n(−1)k∗Cnk=[n=0]\sum_{k=0}^n (-1)^k*C_n^k=[n=0]∑k=0n​(−1)k∗Cnk​=[n=0],nnn用n−mn-mn−m代掉放到[n=m][n=m][n=m]那里

    ⇒\Rightarrow⇒ f(n)=∑m=0n∑k=0n−m(−1)k∗Cn−mk∗Cnmf(m)f(n)=\sum_{m=0}^n \sum_{k=0}^{n-m} (-1)^k*C_{n-m}^k*C_n^mf(m)f(n)=∑m=0n​∑k=0n−m​(−1)k∗Cn−mk​∗Cnm​f(m)

    • 显然Cn−mk∗Cnm=Cnk∗Cn−kmC_{n-m}^k*C_n^m=C_n^k*C_{n-k}^mCn−mk​∗Cnm​=Cnk​∗Cn−km​(相当于在nnn个数里选两个集合,一个包含kkk个元素,另一个包含mmm个元素的方案数)

    ⇒\Rightarrow⇒ f(n)=∑m=0n∑k=0n−m(−1)k∗Cn−km∗Cnkf(m)f(n)=\sum_{m=0}^n \sum_{k=0}^{n-m} (-1)^k*C_{n-k}^m*C_n^kf(m)f(n)=∑m=0n​∑k=0n−m​(−1)k∗Cn−km​∗Cnk​f(m)

    • 交换两个∑\sum∑

    ⇒\Rightarrow⇒ f(n)=∑k=0n(−1)k∗Cnk∑m=0n−kCn−km∗f(m)f(n)=\sum_{k=0}^n(-1)^k*C_n^k\sum_{m=0}^{n-k}C_{n-k}^m*f(m)f(n)=∑k=0n​(−1)k∗Cnk​∑m=0n−k​Cn−km​∗f(m)

    • Emmmmm? ∑m=0n−kCn−km∗f(m)\sum_{m=0}^{n-k}C_{n-k}^m*f(m)∑m=0n−k​Cn−km​∗f(m)就是F(n−k)F(n-k)F(n−k)

    ⇒\Rightarrow⇒ f(n)=∑k=0n(−1)k∗Cnk∗F(n−k)f(n)=\sum_{k=0}^n(-1)^k*C_n^k*F(n-k)f(n)=∑k=0n​(−1)k∗Cnk​∗F(n−k)

    • kkk的地方用n−kn-kn−k代 让下标更好看一点

    ⇒\Rightarrow⇒ f(n)=∑k=0n(−1)n−k∗Cnn−k∗F(k)=∑k=0n(−1)n−k∗Cnk∗F(k)f(n)=\sum_{k=0}^n(-1)^{n-k}*C_n^{n-k}*F(k)=\sum_{k=0}^n(-1)^{n-k}*C_n^{k}*F(k)f(n)=∑k=0n​(−1)n−k∗Cnn−k​∗F(k)=∑k=0n​(−1)n−k∗Cnk​∗F(k)

    千辛万苦。我们得到了这个东西。

    F(n)=∑k=0nCnk∗f(k)F(n)=\sum_{k=0}^nC_n^k*f(k)F(n)=k=0∑n​Cnk​∗f(k)

    f(n)=∑k=0n(−1)n−k∗Cnk∗F(k)f(n)=\sum_{k=0}^n(-1)^{n-k}*C_n^k*F(k)f(n)=k=0∑n​ 7ff7 (−1)n−k∗Cnk​∗F(k)

    反演的定义

    设有两个函数f,Ff,Ff,F满足

    F(n)=∑kan,kf(k)F(n)=\sum_ka_{n,k}f(k)F(n)=k∑​an,k​f(k)

    已知FFF求fff称作

    反演

    • 可以利用未知量求已知量。

    莫比乌斯反演!

    • 求长度为nnn的字符串且其循环节也为nnn的字符串个数QwQ 循环节:最小长度的串重复n/lenn/lenn/len此恰好为该字符串

    窝们设F(i)F(i)F(i)表示长度为iii的串的数量,f(i)f(i)f(i)表示长度为iii且循环节也为iii的数量

    那么有

    F(i)=∑d∣if(d)F(i)=\sum_{d|i}f(d)F(i)=d∣i∑​f(d)

    • 可以得到 注意观察式子

    F(1)=f(1)F(1)=f(1)F(1)=f(1)

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

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

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

    F(5)=f(1)+f(5)F(5)=f(1)+f(5)F(5)=f(1)+f(5)

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

    ↓\downarrow↓

    f(1)=F(1)f(1)=F(1)f(1)=F(1)

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

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

    f(4)=F(4)−f(2)f(4)=F(4)-f(2)f(4)=F(4)−f(2)

    f(5)=F(5)−F(1)f(5)=F(5)-F(1)f(5)=F(5)−F(1)

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

    ⇒\Rightarrow⇒ f(i)= 8000 ∑d∣iμ(d)∗F(id)f(i)=\sum_{d|i}\mu(d)*F(\dfrac{i}{d})f(i)=d∣i∑​μ(d)∗F(di​)

    其中:

    μ(d)={1,d=1;(−1)k,d=p1∗...∗pk0,otherwise\mu(d)=\begin{cases} 1,d=1;\\ (-1)^{k},d=p_1*...*p_k\\0,otherwise\end{cases}μ(d)=⎩⎪⎨⎪⎧​1,d=1;(−1)k,d=p1​∗...∗pk​0,otherwise​

    • 其中q1...qkq_1...q_kq1​...qk​是不相同的质数

    接下来来证明一下这个东西QwQ.

    如果你能够用容斥原理感性理解上述结论窝觉得可能就行了证明只需要知道方法…公式死记肯定会忘掉…总之感性理解是个好东西QwQ珂我没有

    其实本质上也是一个容斥原理可以像上面证明二项式反演一样来证

    好像… 更好的阅读体验… 要先把前面的那些东西(乱搞猜出莫比乌斯函数)稍稍忘掉哦~qwq

    我们回忆一下一道题。是一道容斥入门题

    求[l,r][l,r][l,r]区间内和nnn互指的数有多少个.

    “我愿意沉默释放内心焰火”

    本文作者:Averyta

    博客链接:https://blog.csdn.net/AngryVegetable

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: