排列组合中的八种球盒模型

一般的排列组合场景都可以抽象为「把球放入盒子」的问题。根据场景不同,球或盒子有以下性质:

  • 球和球之间是否相同。
  • 盒与盒之间是否相同。
  • 放完之后,是否允许有空盒子。

组合以上性质,共有八种场景。

是否相同可以理解为是否考虑排列。比如,把六个球放入两个盒子里面,每个盒子各三个。

当球相同,盒相同时,显然只有一种方法(限制了每个盒子放三个)。
在这里插入图片描述
当球不同,盒相同时,显然有多种方法,比如:
在这里插入图片描述

当球不同,盒不同时,显然也有多种方法,比如:

当球相同,盒不同时,显然也只有一种方法(限制了每个盒子放三个):
在这里插入图片描述
但是当一个盒子放四个,另一个盒子放两个时,有两种方案:

为了描述方便,我们设球的数量为 n (n≥1n \ge 1n1),盒子的数量为 m (m≥1m \ge 1m1)。

情形一:球相同,盒相同,允许有空盒。

f(n,m)={1,n≤1 or m=1f(n,n),n<mf(n,m−1)+f(n−m,m),n≥m f(n,m) = \left\{ \begin{array}{l} 1&, n \le 1\ or\ m = 1 \\ f(n, n)&,n \lt m \\ f(n, m-1) + f(n-m,m)&, n \ge m \\ \end{array}\right. f(n,m)=1f(n,n)f(n,m1)+f(nm,m),n1 or m=1n<m,nm

n≤1 or m=1n \le 1\ or\ m = 1n1 or m=1 时,这是递归的边界:「仅有一个球或没有球」或者「仅有一个盒子」,显然只有一种方法。

n<mn \lt mn<m 时,至少有 m−nm-nmn 个盒子是空的,那就先把这些盒子丢弃吧。

n≥mn \ge mnm 时,有两种策略:

  • 丢掉一个盒子(注意,这个盒子可能在之前的步骤放过球了)。
  • 每个盒子放一个球。

情形二:球相同,盒相同,无空盒。

可以基于「情形一」推演出来。先向每个盒子放一个球,保证无空盒,然后就变成了情形一。因此有:
f(n,m)={0,n<mf情形一(n−m,m),n≥m f(n,m) = \left\{ \begin{array}{l} 0&, n < m \\ f_{情形一}(n-m, m)&,n \ge m \\ \end{array}\right. f(n,m)={0f(nm,m),n<mnm

情形三:球相同,盒不同,无空盒。

插板法:nnn 个球依次排成一行,有 n−1n-1n1 个缝隙。有 m−1m-1m1 个隔板,将球分成 mmm 份。相当于从 n−1n-1n1 个缝隙中挑选出 m−1m-1m1 个放置隔板。因此:
f(n,m)=Cn−1m−1 f(n,m) = C_{n-1}^{m-1} f(n,m)=Cn1m1

情形四:球相同,盒不同,允许有空盒。

等价于 n+mn+mn+m 个球放入 mmm 个盒子,不允许空。可以理解为:预先向 mmm 个盒子各放入了一个球。因此有:
f(n,m)=Cn+m−1m−1 f(n,m) = C_{n+m-1}^{m-1} f(n,m)=Cn+m1m1

情形五:球不同,盒相同,无空盒。

f(n,m)={0,n<m1,n=mm∗f(n−1,m)+f(n−1,m−1),n>m f(n,m) = \left\{ \begin{array}{l} 0&,n \lt m \\ 1&,n = m \\ m*f(n-1,m) + f(n-1, m-1)&, n \gt m \end{array}\right. f(n,m)=01mf(n1,m)+f(n1,m1),n<m,n=m,n>m

解释一下:

  • n<mn\lt mn<m 时,必然会有空盒子,因此为 000
  • n=mn = mn=m 时,每个盒子只能放一个,且盒子相同,所以只有 111 中。
  • n>mn \gt mn>m 时:
    • 如果前 n−1n-1n1 个球放入了 mmm 个盒子,则第 nnn 个球,有 mmm 种放法;
    • 如果前 n−1n-1n1 个球放入了 m−1m-1m1 个盒子,则第 nnn 个球只能放入剩余的空盒,因此只有 111 种。
    • 如果前 n−1n-1n1 个球放入了 m−2m-2m2 或更少的盒子,则第 nnn 个球无论咋放都会有空盒,因此为 000 种。

情形六:球不同,盒相同,允许有空盒。

将该问题拆分为 mmm 个子问题,每个子问题都变为了情形五。
f(n,m)=∑i=1mf情形五(n,i) f(n,m) = \sum_{i=1}^{m}{f_{情形五}(n,i)} f(n,m)=i=1mf(n,i)

情形七:球不同,盒不同,允许有空盒。

一共 nnn 个球,每个球都有 mmm 种放法,总共有 nmn^mnm

情形八:球不同,盒不同,无空盒。

基于情形五计算。情形五中盒子是相同的,因此只需再乘上盒子的排列即可。答案为:
f(n,m)=f情形五(n,m)∗m! f(n,m) = f_{情形五}{(n,m)}*m! f(n,m)=f(n,m)m!

参考文章

https://blog.youkuaiyun.com/qwb492859377/article/details/50654627

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值