这是一个数学完全从0开始异世界生活的人的反演笔记。
我们发现自己不会二项式定理,故无法学习二项式反演,所以我们要先学习一个:
引入:
二项式定理:
怎么证明呢?
实际上就是让我们证明右边的那个展开式的系数嘛。
实际上,展开的话就是在n个
我们由二项式定理可以引出一个重要的结论:
让我们冷静一下之后,重新得到了这个结论:
随便叫一个名字吧……
二项式定理0定理,简称二十定理?(大雾
正题
二项式反演:
基本条件:
我们对g进行恒等变形:
[n=k]这个式子等价于[n−k=0],那么运用20定理(2333333):
注意到,k和
(如果不能理解的话请看下面部分)
把这个叫做组合数变形1吧:
理性证明:
证明完毕!
既然我们选k选
我们对求和符号进行交换。
注意到初始条件:
那么我们就得到了二项式反演:
下标好难受啊。
我们换一下变量名和下标吧。
死理性派:
我觉得这个求和符号交换的不对!
k=k0时,显然有:
呃……
好好好,相等总可以了吧。
这样我们不仅得到了反演:
看起来没什么的。
推广一下,实际上:
求和符号交换法则[1]诞生啦!
完整的二项式反演定理书写:
若已知:
则:
反演是可逆的。
我们上面写了二项式反演,用的自然是二项式定理(其实就是容斥原理嘛)。接下来可以学习更高端的东西啦!
莫比乌斯反演:
定义:一种函数叫做莫比乌斯函数。
它是满足这样性质的函数:
莫比乌斯反演的前提条件是有两个数论函数f和
让我们重新回忆一下二项式反演的时候我们做了啥:
1.找出一个恒等变换。
2.把[P]这个条件P代入。
同样地:
带入:
交换求和符号:
我们有一个初始条件:
照着写:
变漂亮一点?
这就是我们的莫比乌斯反演。
整理一下:
已知:
可得:
死理性派:
为什么交换求和符号是对的?
设(d=d0)|n,我们只需要证明在任意d0处相等。
在前面的式子中:
在后面的式子中:
显然是相等的对吧。
终于解释清楚了莫比乌斯反演。
不过莫比乌斯反演还有第二种形式,我们到时候再说。
若
则
终于证明出来了……累得要死TAT
令k=dn
枚举k。
子集反演
预备知识:
理由?
显然大小为|p|的集合出现了(|s||p|)次。
这个应该没有忘记吧。
把它叫做非空集合恒等式吧。
我们如果要解决这样一类问题?
我们求c要怎么求呢?
首先直接求肯定不好求对吧。
我们把它变成子集的形式。<称为子集变换>
子集变换怎么求呢?
for(int i = 0;i < n;++ i)
for(int s = 0;s < (1 << n);++ s)
if(s & (1 << i))f[s] += f[s ^ (1 << i)];
之后,f就变为了子集变换。
那么我们去求c′r吧。
毫无疑问,c′r=∑p⊆rcp.
但这样肯定还不够,我们要求c,所以我们要另找一个东西和
先考虑计算a′r。
我们设a[i][S]表示在插入第i个元素时,终止集合形态为
这样我们可以在O(n2n)的时间复杂度进行子集变换。
(听说叫莫比乌斯变换,不过无所谓了吧233)
已知:
还没完呢,我们要求出cr.
根据非空集合恒等式:
初始条件:
变换下标及不好看的变量:
初始条件:
推出:
死理性派:没错我又是来问和号为什么能交换的……诶你别打我啊……
要证明这两个相等,设其中一个在q0处(默认它是s的子集)。
显然相等对吧。
至此似乎反演内容已经要接近尾声了。
然而实际上似乎还有很多事情没有学会。
不管了,本篇blog先到这里吧,确实太累了。
这个真的很认真的有在写……
感觉终于不是硬生生抄了一遍证明而是真正意义上的写出来了2333
补充容斥原理:
形式上是:
这是显然的,因为我们对其中某个满足在k个集合里的元素
对于>k显然无意义。
对于小于k,每次结算的次数是
二项式定理大家都会,就不说了hh。
对于超集显然也成立。
实际上,并集也可以转成交集。
A⋃B=A¯¯¯⋂B¯¯¯
另外如果我们定义一种变换ϕ:
则显然有其逆变换:
<带入一下证明就好了。>
那么我们就可以把”恰好”转化成”至少”:
令f(s)表示恰好集合为s的元素个数,
如果我们在集合的大小相同的情况下,两个集合是等价的。
那么我们就可以令bn=∑i=0