avatar
垂云云

May 15, 2022

球盒模型

01引言

最近代组课讲了组合计数问题,其中很多内容和高中数学相关内容有所重叠,但是我觉得比高中数学(包括竞赛)那块讲得更清晰更有条理。其中有一类问题是关于小球放盒子的模型,还记得高中学这个的时候总是头疼,为什么一下子用排列公式一下子用组合公式,还有的时候分母还需要额外除以一个阶乘。经过高三总复习以及高考,我才大概摸清楚了里面的门道:不同公式的选用取决于小球和盒子是否无差别。其实高考结束的暑假就想总结一下这一类问题的,但毕竟考完了,只想着玩去了,没有这种心情,故直到最近在代组课上又重新学习以及延拓这部分知识时,才终于有机会把它们总结如下:

02基础知识

排列组合公式

n元集合S,从中选取r个元素的方法数

定理1:(不重复有序排列)

从n元集合S中有序、不重复选取r个元素,称为S的一个r-排列,S的所有r-排列数目为:

P(n,r)={n!(nr)!rn0r>nP(n,r)=\left\{ \begin{array}{cl} \frac{n!}{(n-r)!} & r\leq n \\ 0 & r>n\\ \end{array} \right.

定理2:(不重复无序组合)

从n元集合S中无序、不重复选取r个元素,称为S的一个r-组合,S的所有r-组合数目为:

C(n,r)=P(n,r)r!(1)C(n,r)=\frac{P(n,r)}{r!}\tag{1}

定理3:(多重集的排列)

S={n1a1,n2a2,,nkak}(0<ni+)S=\{n_1*a_1,n_2*a_2,\dots,n_k*a_k\}(0<n_i\leq+\infin),其中niain_i*a_i表示aia_inin_i个,求S的r-排列计数结果NN

通常情况下没有统一的公式,但是在以下特殊情况,有如下结果:

  1. 全排列(r=n=i=1knkr=n=\sum_{i=1}^k n_k)时,

N=C(n,n1)C(nn1,n2)C(nn1nk1,nk)=n!n1!n2!nk!(2)\begin{aligned} N&=C(n,n_1)C(n-n_1,n_2)\ldots C(n-n_1-\ldots-n_{k-1},n_k)\\ &=\frac{n!}{n_1!n_2!\ldots n_k!}\\ \end{aligned}\tag{2}

  1. 元素数量足够多时,rnir\leq n_i

N=kr(3)N=k^r\tag{3}

定理4:(多重集的组合)

SS同上,从SS中取r个元素,我们只考虑各种元素足够多,即rnir\leq n_i的情况,显然这对应于不定方程

x1+x2++xk=r(4)x_1+x_2+\ldots+x_k=r\tag{4}

的非负整数解的个数,也即:

N=C(k+r1,r)(5)N=C(k+r-1,r)\tag{5}

定义1:(第二类Stirling数)

把n元集合S划分为m个不相交非空子集的方法数,记为S(n,m)。此问题的解为第二类Stirling数{n,m}\{n,m\},也即:

S(n,m):={nm}S(n,m):=\left\{ \begin{array}{c} n\\ m \end{array} \right\}

满足递推式:S(n+1,m)=S(n,m1)+mS(n,m)S(n+1,m)=S(n,m-1)+mS(n,m)

原因:把n+1个元素放在m个子集中,可以先把前n个放在m个子集中,然后把最后一个放在m个子集任何一个里面=>mS(n,m)mS(n,m),也可以把前n个放在m-1个子集中,最后一个单独放在一个子集里面=>S(n,m1)S(n,m-1).

另外,利用容斥原理可以得到通项式:

AiA_i表示第ii个盒子为空的放法数,显然i=1kAji=(mk)n\lvert{\cap_{i=1}^k A_{j_i}}\rvert=(m-k)^n,则

m!S(n,m)=i=1mAi=k=0m(1)kC(m,k)(mk)n(6)\begin{aligned} m!S(n,m)&=\lvert{\cup_{i=1}^m A_i}\rvert\\ &=\sum_{k=0}^m(-1)^kC(m,k)(m-k)^n \end{aligned}\tag{6}

PS:先把盒子视作不同,最后再除以m!即可

【因为n个元素互不相同,即使两个子集元素数相同,它们也是不一样的,因此m个子集每个组合对应m!个排列,所以才能直接除,参见下面】

03球盒模型

基本问题:把r个小球放入n个盒子里,求放法的个数。

根据小球与盒子之间是否有区别,我们分为四类进行讨论:

  1. n个不同小球放入r个不同盒子

    解:显然,每个小球有r种放法,因此总方法数为nrn^r.

    变式:附加要求每个盒子非空

    解:利用基础知识部分的结论,答案为r!S(n,r)r!S(n,r)

    注1:一开始想着直接每个盒子减去一个小球不就变成n-r个小球放r个盒子且没有非空要求了,但是注意到这里小球是不同的,不能直接减去(无法构造一一对应)

    注2:用变式的结论重新算上面的问题,我们得到:

    nr=k=0rP(r,k)S(n,k)n^r=\sum_{k=0}^r P(r,k)S(n,k)(讨论几个盒子非空)

  2. n个不同小球放入r个相同盒子

    具体而言,又有两种子问题:

    • 每个盒子放球数目预先规定好了,不妨设为k1,k2,,krk_1,k_2,\ldots,k_r,满足n=i=1rkin=\sum_{i=1}^{r}k_i

      这是高中练习题中常见的分堆问题,常常表现为n本书分成r堆的形式;

      不妨假设{ki}i=1r\{k_i\}_{i=1}^r里面有t个不同的值,记作{aj}j=1t\{a_j\}_{j=1}^t,其中aja_j出现次数为sjs_j次;
      注意到放球数量相同的盒子之间顺序没有区别,所以总的放法数为:

      C(n,k1)C(nk1,k2)C(nk1kr1,kr)s1!s2!st! \frac{C(n,k_1)C(n-k_1,k_2)\ldots C(n-k_1-\ldots-k_{r-1},k_r)} {s_1!s_2!\ldots s_t!}

      如果说盒子不同(比如分给不同人),还需要乘以r!r!.

    • 每个盒子球数没有规定

      枚举空盒个数,得i=0rS(n,i)\sum_{i=0}^r S(n,i)

      注:显然这个结果也是所有可能的分堆方式的方法数求和

  3. n个相同小球放入r个不同盒子

    解:设第ii个盒子放xix_i个小球,则对应于x1+x2++xr=nx_1+x_2+\ldots+x_r=n的非负整数解个数,因此方法数为:N=C(n+r1,n)N=C(n+r-1,n).

    注:此时若要求非空,则可以直接每个盒子减去一个小球转化为n-r个小球放r个盒子且没有非空要求

  4. n个相同小球放入r个相同盒子

    解:等价于把n拆成r个自然数之和的允许重复的无序拆分方法数目,也即n拆成不超过r个正整数的方法数目,我们可以用母函数方法解出来:

    fi(x)=1+xi+x2i+=11xif_{i}(x)=1+x^i+x^{2i}+\ldots=\frac{1}{1-x^i}

    则n允许重复拆分成若干个正整数的拆分方法为i=1nfi(x)\prod_{i=1}^nf_i(x)的n次项系数,可用某些方法得到(好吧我还没想到,实在不行就Taylor展开)

    那么允许重复拆分成不超过r个正整数的方法有多少个呢?可以转换为对偶问题,也即允许重复拆分成大小不超过r的若干个正整数的方法。

    课堂上用的是Ferrers图的转置来解释,但是显然有更直观的解释:按从大到小顺序排列大小不超过r的一列正整数{ai}\{a_i\},考虑不超过r个的数列{bi}\{b_i\},建立{ai}\{a_i\}{bi}\{b_i\}的关系为:aia_i表示i\geq ibkb_k个数,可以验证是一一对应。所以这个问题的生成函数是i=1rfi(x)\prod_{i=1}^rf_i(x),求出n次项系数即可。

    注意:不要直接用3中的结果直接除以r!,因为球相同,所以球数相同的盒子状态完全一样,例如{3,3,2},不能直接通过乘以3!来得到有序排列的数目。

04总结

球盒模型按照球与盒是否有区别分成四大类:

  1. 若球盒均不同,那么是简单的乘法公式;
  2. 若球不同盒同,是分堆或第二类Stirling数的变形;
  3. 若球同盒不同,化为非负整数解个数;
  4. 若球盒均相同,等价于正整数的划分问题;

2022/05/31补充

今天在课堂上进行了一个更全面的总结,简单列表如下:

n球 m盒 空盒 方法数 对应组合问题
不允许 Pm(n)Pm1(n)P_m(n)-P_{m-1}(n) 将n剖分成m个正整数
允许 Pm(n)P_m(n) 将n剖分成m个自然数
不同 不允许 Cn1m1C_{n-1}^{m-1} x1++xm=nx_1+\dots+x_m=n的正整数解个数
不同 允许 Cn+m1nC_{n+m-1}^n x1++xm=nx_1+\dots+x_m=n的非负整数解个数
不同 不允许 S(n,m)S(n,m) 第二类Stirling数
不同 允许 i=0mS(n,i)\sum_{i=0}^mS(n,i) 第二类Stirling数求和
不同 不同 不允许 m!S(n,m)m!S(n,m) 第二类Stirling数排列
不同 不同 允许 mnm^n 乘法原理

(来自《离散数学教程》北京大学出版社P393P_{393},有删改)

OLDER > < NEWER