放球问题
最近准备组合数学考试,看到关于放球问题的几种情况,花了一个小时最终理清楚了这些问题,内容主要涉及如下:
- n个无差别的球分发在k个无区别的盒子中(没有空盒)放法方式数为?
- n个无差别的球分发在k个有区别的盒子中(没有空盒)放法方式数为?
- n个有差别的球分发在k个有区别的盒子中(没有空盒)放法方式数为?
- n个有差别的球分发在k个无区别的盒子中(没有空盒)放法方式数为?
以上问题均简称做(XXX-XXX)如第一问为:无差别-无区别
无差别-无区别
n个一样球放入k个一样的盒子,类似将整数n拆分成k个数的和的方式数。举个例子:
3个球放入2个盒子 —— 3=?+?
即:盒子可以这样放{1,2}{3,0},容易知这个问题实际就是加法拆分的问题。而关于假发拆分组合数学的原理可以这样解决:
该式利用了由Ferrers图的对偶律即拆分成K项相当于最大值为K的拆分。但是,如果要求非空则要考虑去掉上式左端的每个括号中的‘1’项。
无差别-有区别
这个问题可以等效成求方程
x1+x2+x3……+xk=n
的非负解个数。即相当于可以看作{
x1−−1∗∞…xk−−1∗∞
}的重排即:F(k,n),而无空盒相当于求正整数解即:F(k,n-k)。其中,
有差别-无区别
想一想,这个问题不就是说这些不同球要分成k堆,这些堆之间没有顺序,唯一不同的是这些堆成员由哪些组成吗?于是,问题可以等效于n个元素拆分成k个不相交子集的问题,解为S_2(n,k)。这里利用第二类Stirling数
该解的证明在组合数学教材有详细证明这里不在给出。
有差别-有区别
思路一 :
相当于每个球每次有k中选择,于是这个问题的解是
nk
。如果要求每个盒子不为空则利用容斥原理依次排除有盒子为空的情况。则有:
|A1¯⋂A2¯…⋂Ak¯|=|S|−∑|Ai|+∑|Ai⋂Aj|+…(−1)m|A1⋂Ak|
于是最终解化简为:
∑mi=0(−1)iC(m,n)(m−i)n
思路二:
可以把问题分两步进行,第一步将球放入无区分的球,然后再将这些盒子进行编号。对于第一步等同于上一个“有差别-无区分”问题,第二步全排列。于是最终结果:
m!S2(m,n)