1-10所有5个数的组合_组合数学学习笔记(七)

本文深入探讨了容斥原理及其在组合计数问题中的应用,通过实例展示了如何利用容斥原理解决有限多重集的组合问题,包括全错位排列数和有限制条件的排列数问题,揭示了其在计数问题中的强大能力。

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

be861cb546e1599e2e1d1c8bb68eafb9.png

在这一章中,我们将会简要介绍容斥原理以及其在计数中的应用。

想必大家对于容斥原理这个词语及其含义都已经十分熟悉,故我们将着重于介绍其如何应用以及一些重要的实例。对很多看似无从下手的组合计数问题利用容斥原理往往会变得意想不到的简单。

在后文中,我们总是用

equation?tex=P_i 表示一种性质,用
equation?tex=X_i 表示全集
equation?tex=S 中满足这种性质的元素组成的集合,用
equation?tex=%5Coverline%7BX_i%7D 表示全集
equation?tex=S 中不满足这种性质的元素组成的集合。

定理(容斥原理)

equation?tex=%7C%5Coverline%7BX_1%7D%5Ccap%5Coverline%7BX_2%7D%5Ccap...%5Ccap+%5Coverline%7BX_k%7D%7C%3D%7CS%7C-%5Csum_i%7CX_i%7C%2B%5Csum_%7Bi%3Cj%7D%7CX_i%5Ccap+X_j%7C%2B...%2B%28-1%29%5Ek%7CX_1%5Ccap...%5Ccap+X_k%7C

我们以往对于容斥原理的证明大多基于数学归纳法。但是事实上,我们可以利用贡献法:分别分析满足条件的元素与不满足条件的元素对于等式两端的贡献。

对于容斥原理而言,我们在

equation?tex=S 中任取一个元素
equation?tex=x

如果

equation?tex=x 不满足所有的
equation?tex=P_1%2C...%2CP_k ,则对于等式左端贡献为
equation?tex=1 ,对于等式右端贡献显然只有
equation?tex=%7CS%7C 那一项,也为
equation?tex=1

否则,

equation?tex=x 恰好具有
equation?tex=m 条性质,其中
equation?tex=1%5Cleq+m%5Cleq+k ,则其对于左端贡献为
equation?tex=0 ,对于右端贡献:
equation?tex=%7CS%7C 项贡献
equation?tex=1
equation?tex=-%5Csum_i%7CX_i%7C 项贡献
equation?tex=-C_m%5E1 (恰好具有的
equation?tex=m 条性质对应的集合贡献为
equation?tex=1 其它均为
equation?tex=0 ),对于
equation?tex=%5Csum_%7Bi%3Cj%7D%7CX_i%5Ccap+X_j%7C 项贡献为
equation?tex=C_m%5E2 (在具有的
equation?tex=m 条性质中挑出
equation?tex=2 条组合才能够使得贡献为
equation?tex=1 ,否则为
equation?tex=0 ),以此类推。

最终,我们得到对于等式右侧贡献为

equation?tex=C_m%5E0-C_m%5E1%2BC_m%5E2%2B...%2B%28-1%29%5EmC_m%5Em ,由组合恒等式,立马知道贡献即为
equation?tex=0 ,故定理得证!

要利用容斥原理解决组合计数问题通常需要我们对于若干个性质进行构造,使得我们需要求解的目标元素等价于不满足所有性质

equation?tex=P_1%2C...%2CP_k 的元素
。在进行构造时,我们往往需要联想我们现在已有的手段所能够解决的计数问题,并且想方设法向更加简单的技术问题上靠拢。

例:求多重集

equation?tex=S%3D%5Cleft+%5C%7B3%5Ccdot+a%2C4%5Ccdot+b%2C5%5Ccdot+c++%5Cright+%5C%7D
equation?tex=10 -组合数

解:

注意到:无穷多重集的组合数是易于求解的。

即如果我们的问题是:求多重集

equation?tex=A%3D%5Cleft+%5C%7B%5Cinfty%5Ccdot+a%2C%5Cinfty+%5Ccdot+b%2C%5Cinfty%5Ccdot+c++%5Cright+%5C%7D
equation?tex=10 -组合数的话,我们将其转化为不定方程解的个数问题:
equation?tex=x_1%2Bx_2%2Bx_3%3D10 的所有非负整数解。

由笔记(一)中结论立马得到:方法数为

equation?tex=C_%7B12%7D%5E2

那么:我们想到将无穷多重集中每个元素的个数进行限制就可以得到一个有穷多重集!

所以我们定义性质:(此处特别注意:我们要使得要求解的计数问题与所有性质都不满足的问题等价)

equation?tex=P_1
equation?tex=A
equation?tex=a 的个数大于等于
equation?tex=4

equation?tex=P_2
equation?tex=A
equation?tex=b 的个数大于等于
equation?tex=5

equation?tex=P_3
equation?tex=A
equation?tex=c 的个数大于等于
equation?tex=6

那么原问题的方法数

equation?tex=%3D%7C%5Coverline%7BX_1%7D%5Ccap%5Coverline%7BX_2%7D%5Ccap%5Coverline%7BX_3%7D%7C%3D%7CA%7C-%5Csum_i%7CX_i%7C%2B%5Csum_%7Bi%3Cj%7D%7CX_i%5Ccap+X_j%7C-%7CX_1%5Ccap+X_2%5Ccap+X_3%7C

下面我们只需要分别计算

equation?tex=%7CX_i%7C%2C%7CX_i%5Ccap+X_j%7C%2C%7CX_1%5Ccap+X_2+%5Ccap+X_3%7C 即可

显然

equation?tex=%7CX_1%7C 为已经取了至少
equation?tex=4
equation?tex=a
equation?tex=A
equation?tex=10 -组合数。我们不妨这样想:已经取了
equation?tex=4 个,那么再取
equation?tex=6 个就能够满足条件,这
equation?tex=6 个数都是在
equation?tex=%5Cleft+%5C%7B%5Cinfty%5Ccdot+a%2C%5Cinfty+%5Ccdot+b%2C%5Cinfty%5Ccdot+c++%5Cright+%5C%7D 中选取的。

equation?tex=%7CX_1%7C 事实上等于
equation?tex=A
equation?tex=6 -组合数,再次化为不定方程
equation?tex=x_1%2Bx_2%2Bx_3%3D6 的非负整数解个数问题,得到方法数为
equation?tex=C_8%5E2

同理地,得到

equation?tex=%7CX_2%7C%3DC_7%5E2%2C%7CX_3%7C%3DC_6%5E2

对于

equation?tex=%7CX_1%5Ccap+X_2%7C ,故技重施,已经取了
equation?tex=4
equation?tex=a
equation?tex=5
equation?tex=b ,只需要再从
equation?tex=%5Cleft+%5C%7B%5Cinfty%5Ccdot+a%2C%5Cinfty+%5Ccdot+b%2C%5Cinfty%5Ccdot+c++%5Cright+%5C%7D 取一个即可,方法数为
equation?tex=3

同理,求得

equation?tex=%7CX_1%5Ccap+X_3%7C%3D1%EF%BC%8C%7CX_2%5Ccap+X_3%7C%3D0%EF%BC%8C%7CX_1%5Ccap+X_2%5Ccap+X_3%7C%3D0

故最终解答为

equation?tex=C_%7B12%7D%5E2-C_8%5E2-C_7%5E2-C_6%5E2%2B3%2B1%3D6

这告诉我们:容斥原理看似简单朴素,但是却可以用来解决我们之前需要借助生成函数才能够普遍解决的有限多重集的组合问题,其威力是巨大的

然而,我么上面所陈述的容斥原理的适用范围还是太狭窄了一些。

如果我们想解决的问题是求出恰好满足

equation?tex=r 条性质的元素个数
,我们要如何解决呢?

我们假设

equation?tex=g%28r%29 为至少满足
equation?tex=r 条性质的元素个数,
equation?tex=e%28r%29 为恰好满足
equation?tex=r 条性质的元素个数

那么一个显然的结果是:

equation?tex=g%28r%29%3D%5Csum_%7Bi%3Dr%7D%5EkC_i%5Ere%28i%29

equation?tex=G%28x%29%2CE%28x%29 分别为对应的
普通生成函数,则
equation?tex=G%28x%29%3D%5Csum_%7Bn%3D0%7D%5E%5Cinfty+%5Csum_%7Bi%3Dn%7D%5EkC_i%5Ene%28i%29x%5En

交换求和顺序,得到:

equation?tex=G%28x%29%3D%5Csum_%7Bi%3D0%7D%5E%5Cinfty+e%28i%29%5Csum_%7Bn%3D0%7D%5E%7Bi%7DC_i%5Enx%5En%3D%5Csum_%7Bi%3D0%7D%5E%5Cinfty+e%28i%29%281%2Bx%29%5Ei%3DE%281%2Bx%29

故:

equation?tex=E%28x%29%3DG%28x-1%29

再次进行生成函数展开,系数对应相等,可以得到:

恰好满足

equation?tex=r 个性质的元素个数为
equation?tex=g_r-C_%7Br%2B1%7D%5Erg_%7Br%2B1%7D%2BC_%7Br%2B2%7D%5Erg_%7Br%2B2%7D%2B...%2B%28-1%29%5E%7Bk-r%7DC_k%5Erg_k

其中

equation?tex=g_r%3D%5Csum_%7Bi_1%3Ci_2%3C...%3Ci_r%7D%7CX_%7Bi_1%7D%5Ccap...%5Ccap+X_%7Bi_r%7D+%7C
表示满足至少
equation?tex=r 个性质的元素个数

对于上述容斥原理的推广形式,我们自然也可以利用贡献法来进行证明。

若一个

equation?tex=S 中元素
equation?tex=x 恰好满足
equation?tex=r 个性质,则对左侧贡献为
equation?tex=1 ,对右侧贡献为
equation?tex=1

若元素

equation?tex=x 满足性质个数少于
equation?tex=r ,对左侧贡献为
equation?tex=0 ,对右侧贡献为
equation?tex=0

若元素

equation?tex=x 满足性质个数恰好为
equation?tex=r%2Bi%2Ci%3E0,则对左侧贡献为
equation?tex=0 ,对右侧贡献为
equation?tex=%5Csum_%7Bj%3D0%7D%5Ei%28-1%29%5EjC_%7Br%2Bj%7D%5ErC_%7Br%2Bi%7D%5E%7Br%2Bj%7D (此处含义为:要在满足的
equation?tex=r%2Bi 个性质中挑选出
equation?tex=r%2Bj 个性质使得
equation?tex=x 至少满足这
equation?tex=r%2Bj 个性质,则共有
equation?tex=C_%7Br%2Bi%7D%5E%7Br%2Bj%7D 种挑选的方法数,故对于
equation?tex=g_%7Br%2Bj%7D 的贡献为
equation?tex=C_%7Br%2Bi%7D%5E%7Br%2Bj%7D

经过化简,可以得到:

equation?tex=%5Csum_%7Bj%3D0%7D%5Ei%28-1%29%5EjC_%7Br%2Bj%7D%5ErC_%7Br%2Bi%7D%5E%7Br%2Bj%7D%3D%5Csum_%7Bj%3D0%7D%5Ei%28-1%29%5EjC_%7Br%2Bi%7D%5ErC_%7Bi%7D%5E%7Bj%7D%3DC_%7Br%2Bi%7D%5Er%5Csum_%7Bj%3D0%7D%5Ei%28-1%29%5EjC_%7Bi%7D%5E%7Bj%7D%3D0

故利用贡献法,我们也能证明这一容斥原理的推论,但是生成函数的方法能够更清晰地向我们展示这一推论被提出的过程与动机。

最后我们举两个例子来结束对于容斥原理在计数中的应用的介绍。

例:(全错位排列数)在生成函数部分,我们曾经利用全错位排列数的递推公式结合生成函数的性质很容易地求得了全错位排列数,在此我们试着利用容斥原理给出另一种做法

解:

定义集合

equation?tex=S
equation?tex=1%2C2%2C...%2Cn 的所有排列组成的集合,显然
equation?tex=%7CS%7C%3Dn%21

定义性质:

equation?tex=P_i 表示排列
equation?tex=x%5Cin+S 满足
equation?tex=x
equation?tex=i 映射到
equation?tex=i

则我们所求全错位排列数

equation?tex=D_n%3D%7C%5Coverline%7BX_1%7D%5Ccap%5Coverline%7BX_2%7D%5Ccap...%5Ccap+%5Coverline%7BX_n%7D%7C

显然性质

equation?tex=P_1%2C...%2CP_n
对称的,故我们只需要计算
equation?tex=%7CX_1%7C%2C%7CX_1%5Ccap+X_2%7C%2C... 即可

那么

equation?tex=D_n%3Dn%21-C_n%5E1%7CX_1%7C%2BC_n%5E2%7CX_1%5Ccap+X_2%7C%2B...%2B%28-1%29%5EnC_n%5En%7CX_1%5Ccap+...%5Ccap+X_n%7C

equation?tex=%7CX_1%7C%3D%28n-1%29%21 (保持
equation?tex=1 不变的排列的个数即为
equation?tex=2%2C3%2C...%2Cn 的全排列个数)

同理,

equation?tex=%7CX_1%5Ccap+X_2%7C%3D%28n-2%29%21%2C...%2C%7CX_1%5Ccap+...%5Ccap+X_n%7C%3D1

故得到:

equation?tex=D_n%3Dn%21-C_n%5E1%28n-1%29%21%2BC_n%5E2%28n-2%29%21%2B...%2B%28-1%29%5EnC_n%5En1%21

将组合数全都按照定义展开,与相乘的阶乘约去后得到:

equation?tex=D_n%3Dn%21%281-%5Cfrac%7B1%7D%7B1%21%7D%2B%5Cfrac%7B1%7D%7B2%21%7D-...%2B%28-1%29%5En%5Cfrac%7B1%7D%7Bn%21%7D%29

另一个例子是关于有限制条件的排列数的。

例:

equation?tex=A%3D%5Cleft+%5C%7B++1%2C2%2C...%2Cn%5Cright+%5C%7D ,则满足不出现
equation?tex=12%2C23%2C...%2C%28n-1%29n 的不同排列共有多少个?

解:假设有

equation?tex=Q_n

则同样地,定义全集

equation?tex=S
equation?tex=1%2C2%2C...%2Cn 的所有排列组成的集合,显然
equation?tex=%7CS%7C%3Dn%21

定义性质

equation?tex=P_i 为:出现
equation?tex=i%28i%2B1%29

equation?tex=Q_n%3D%7C%5Coverline%7BX_1%7D%5Ccap%5Coverline%7BX_2%7D%5Ccap...%5Ccap+%5Coverline%7BX_%7Bn-1%7D%7D%7C

显然性质

equation?tex=P_1%2C...%2CP_%7Bn-1%7D
对称的,故我们只需要计算
equation?tex=%7CX_1%7C%2C%7CX_1%5Ccap+X_2%7C%2C... 即可

那么

equation?tex=Q_n%3Dn%21-C_%7Bn-1%7D%5E1%7CX_1%7C%2BC_%7Bn-1%7D%5E2%7CX_1%5Ccap+X_2%7C%2B...%2B%28-1%29%5E%7Bn-1%7DC_%7Bn-1%7D%5E%7Bn-1%7D%7CX_1%5Ccap+...%5Ccap+X_%7Bn-1%7D%7C

equation?tex=%7CX_1%7C%3D%28n-1%29%21
equation?tex=12 出现的排列中可以利用捆绑法将
equation?tex=1%2C2 看成一个整体,与相当于
equation?tex=n-1 个元素的全排列数)

同理,

equation?tex=%7CX_1%5Ccap+X_2%7C%3D%28n-2%29%21%2C...%2C%7CX_1%5Ccap+...%5Ccap+X_n%7C%3D1

故得到:

equation?tex=Q_n%3Dn%21-C_%7Bn-1%7D%5E1%28n-1%29%21%2BC_%7Bn-1%7D%5E2%28n-2%29%21%2B...%2B%28-1%29%5E%7Bn-1%7DC_%7Bn-1%7D%5E%7Bn-1%7D1%21

(话说感觉容斥原理的题目一般处理手法都比较简单,还是不列习题了吧2333

(其实就是懒2333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值