【学习小结】反演,容斥,组合计数

本文探讨了反演的概念,包括变换和逆变换,以及在解决线性方程组中的应用。文章重点讲解了二项式、斯特林数、莫比乌斯反演和卡特兰数等在组合计数问题中的反演技巧,并通过例题展示了如何运用这些方法。此外,还提到了树上高消、容斥原理在综合组合计数问题中的应用,并强调了理解和掌握基本公式的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推数学式子的时候不仅要从组合意义上把式子的意义完完全全理解,还要从实际问题的边界条件出发检验式子的正确性!所有组合计数题一定要把式子一遍推正确,因为根本没法再调试找到错误,太浪费时间了!

关于反演的本质:

变换和逆变换: f = A ∗ g , g = B ∗ f 且 A B = I ( A , B 互 为 逆 矩 阵 ) f = A * g , g = B * f 且 AB = I (A,B互为逆矩阵) f=Ag,g=BfAB=IA,B
解线性方程组找到两个序列的关系。详细在这里

vfk的反演讲义

这个讲义给我最大的收获是推二元卷积式子时候:把贡献的条件拆开,对两部分分别变换,乘起来再逆变换,而这两个变换还可能不同。
比如最后一题子集卷积:多记录一维状态,把集合大小考虑进去,就能很好分拆了

另外多层反演的时候,把每一层中与相同变量相关的部分设为相同函数,然后再观察式子的已知、未知部分,多次反演
这是例题

所有反演的推到和证明都可以利用最基本的繁衍式子:
f n = ∑ i = 0 n b [ n ] [ i ] g i = ∑ i = 0 n b [ n ] [ i ] ∑ j = 0 i a [ i ] [ j ] f j = ∑ i = 0 n f i ∑ j = i n b [ n ] [ j ] ∗ a [ j ] [ i ] \begin{aligned}f_n=\sum_{i=0}^n b[n][i]g_i&=\sum_{i=0}^n b[n][i]\sum_{j=0}^ia[i][j]f_j\\&=\sum_{i=0}^n f_i\sum_{j=i}^nb[n][j]*a[j][i]\end{aligned} fn=i=0nb[n][i]gi=i=0nb[n][i]j=0ia[i][j]fj=i=0nfij=inb[n][j]a[j][i]

因此a,b之间的关系可以简单的写成: ∑ j = i n b [ n ] [ j ] ∗ a [ j ] [ i ] = δ ( n , i ) \sum_{j=i}^nb[n][j]*a[j][i]=\delta(n,i) j=inb[n][j]a[j][i]=δ(n,i)

1. 二项式反演(贡献关系是组合形式)

二项式反演就是把精确值转换成>=或<=,注意多贡献的值是一个组合数,而不是直接减去f[k-1]

找方程,最后反演求解

例题

BZOJ2839 : 集合计数

2. 斯特林数反演

仍然引用大佬的介绍from yyb

斯特林数是把p次多项式线性空间的两组基:A=(1,x,x2,…,xp) , B=(1,[x]1,…,[x]p)相互变换的系数。
其中,第一类斯特林数的是:A到B,即下降(上升)幂,到xp,第二类斯特林数是B到A,即xp到降(上升)幂
这个推到可以直接用数学归纳法,作差证明。甚至在《组合数学》中,把斯特林数定义成了这个系数,然后推到出了斯特林数的递推式
斯特林数的求法
第一类:写成生成函数: ∑ i = 0 n S 1 ( n , i ) x i = ∏ i = 0 n − 1 ( x + i ) \sum_{i=0}^n S_1(n,i)x^i=\prod_{i=0}^{n-1}(x+i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值