Balls and Boxes

经典组合数学

小球与盒子

前置知识

组合数

Cnm=n!m!(nm)!C_n^m = \frac{n!}{m!(n-m)!}

插板法 :用于解决不相邻组合与追加排列的问题,就是在nn个物品之间插上mm个板,将其分为m+1m+1组。

捆绑法:将一些物品作为整体计算。

容斥原理:将重复计算的数目去除,比如:

AB=A+BAB A\cup B = A+B- A\cap B

1. 球相同,盒子不同,不能有空盒

其实这个问题的实质就是把nn个小球分为mm组(不能空),就转化为了一个组合数问题,答案其实就是

Cn1m1C_{n-1}^{m-1}

其实就是插板法,在小球的n1n-1个空隙中插入m1m-1个板子,使其分为mm组。

2. 球相同,盒子不同,可以有空盒

其实和上个问题差不多,我们一开始可以就向每个盒子中添加一个小球,这样就不会有空盒,答案为

Cn+m1m1C_{n+m-1}^{m-1}

3. 球不同,盒子不同,可以有空盒

对于每一个球,都可以放在mm个位置中的任意一个位置,由于球与球之间是相互独立的,答案就是

mnm^n

4.球不同,盒子相同,不能有空盒

这个其实就是第二类斯特林数,将nn个物体划分为kk个非空的没有区别的集合的方案数,其递推公式为:

fi,j=fi1,j×j+fi1,j1f_{i,j} = f_{i-1,j}\times j + f_{i-1,j-1}

其实通俗的理解就是对于第ii个球,可以放在以前的jj个盒子中有j×fi1,jj \times f_{i-1,j}种方案,或者放入一个新的盒子有fi1,j1f_{i-1,j-1}种方案。

不过这是一个n2n^2的公式,但是其它还有一个更通用的公式:

f(n,m)=1m!×k=0m(1)k(mk)×(mk)nf(n,m) = \frac{1}{m!} \times \sum_{k = 0}^m (-1)^k \dbinom{m}{k} \times (m-k)^n

5. 球不同,盒子也不同,不能有空盒

其实这个和上一种情况不同的就是,这个情况需要有序性,答案其实就是对应的斯特林数,

f(n,m)×m!f(n,m) \times m!

就可以了。

6. 球不同, 盒子相同,可以有空盒

因为可以有空盒,其实就可以枚举每次用了几个盒子,然后将对应的斯特林数相加即可,答案就是

i=1mf(n,i)\sum_{i =1}^m f(n,i)

其实这种数还有另一种名称叫贝尔数,它表示集合1,2,3,,n{1,2,3,\cdots,n}的划分方案数,其实就表示了第二类斯特林数之和。

7.球相同,盒子相同,可以有空盒

首先分情况,如果一个盒子没有小球,方案数显然为1,同时如果小球比盒子要少,盒子肯定时是放不满的,所以fi,j=fi,if_{i,j} = f_{i,i},如果小球比盒子要多,就将盒子分为放满和没放满两种情况,所以fi,j=fij,j+fi,j1f_{i,j} = f_{i-j,j} + f_{i,j-1}

8. 球相同,盒子相同,不能有空盒

只需要假设每个盒子里都已经放上了一个球,答案就是,

f(nm,m)f(n-m,m)

作者

Jekyll_Y

发布于

2022-08-26

更新于

2023-03-02

许可协议

评论