球盒模型
证明前提约定
- 固定变量: \(n\) 个球,\(m\) 个盒,记方案数为 \(N\)
- 核心判断维度:
- 球是否可区分(用「球≠」表示可区分,「球=」表示不可区分)
- 盒是否可区分(「盒≠」「盒=」)
- 盒限制(无限制 / 最多1个 / 至少1个)
- 基础工具: 乘法原理、排列组合、隔板法、容斥原理、递推思想
场景 1:球≠,盒≠,无限制
前提:每个球独立选择盒子,无任何限制
证明:
- 第1个球:有 \(m\) 个盒子可选(任意盒均可放)
- 第2个球:同样有 \(m\) 个选择(与其他球选择独立,可同盒)
- ... 第 \(n\) 个球:仍有 \(m\) 个选择
- 由乘法原理,总方案数为各球选择数的乘积:\[N = m \times m \times \cdots \times m = m^n \]
结论:\(N = m^n\)
场景 2:球≠,盒≠,每盒最多1个
前提:每个盒子最多放1个球,需满足 \(n \leq m\)(否则无可行方案)
证明:
- 第1个球:有 \(m\) 个盒子可选
- 第2个球:因每盒最多1个,需避开第1个球的盒子,有 \(m-1\) 个选择
- ... 第 \(n\) 个球:需避开前 \(n-1\) 个球的盒子,有 \(m-(n-1)\) 个选择
- 由乘法原理,总方案数为排列数:\[N = m \times (m-1) \times \cdots \times (m-n+1) = P(m,n) = (m)_n \]
- 若 \(n > m\):第 \(n\) 个球无盒子可选,方案数 \(N = 0\)
结论:
\[N = P(m,n) = \begin{cases} m(m-1)\cdots(m-n+1) & n \leq m \\ 0 & n > m \end{cases}
\]
场景 3:球≠,盒≠,每盒至少1个
前提:每个盒子至少放1个球,即「满射映射」(球=定义域,盒=值域)
证明:
- 先不考虑「至少1个」限制,总映射数为 \(m^n\)(场景1结论)
- 减去「至少1个盒空」的情况:用容斥原理
- 设 \(A_i\) 表示「第 \(i\) 个盒空」的映射集合,则 \(|A_i| = (m-1)^n\)(剩余 \(m-1\) 个盒无限制)
- 任意2个集合交集 \(|A_i \cap A_j| = (m-2)^n\),以此类推
- 容斥公式:\[N = \sum_{i=0}^m (-1)^i \binom{m}{i} (m-i)^n \]
- 解释:\(\binom{m}{i}\) 表示选 \(i\) 个盒空,\((m-i)^n\) 是剩余 \(m-i\) 个盒的无限制映射
- \((-1)^i\) 为交替加减符号
- 另一种推导:结合第二类斯特林数 \(S(n,m)\)
- 盒≠时,需对 \(m\) 个盒排序,即乘 \(m!\)
- 故 \(N = m! S(n,m)\)
- 与容斥公式等价(因 \(S(n,m) = \frac{1}{m!} \sum_{i=0}^m (-1)^i \binom{m}{i} (m-i)^n\))
结论:
\[N = m! S(n,m) = \sum_{i=0}^m (-1)^i \binom{m}{i} (m-i)^n
\]
场景 4:球≠,盒=,无限制
前提:盒子无差异,无需考虑顺序,仅关心「非空盒的数量」
证明:
- 无限制意味着非空盒数量可从1到 \(\min(m,n)\)
- 对每个非空盒数量 \(k\)(\(1 \leq k \leq \min(m,n)\)):
- 「球≠、盒=、每盒至少1个」的方案数为第二类斯特林数 \(S(n,k)\)
- 总方案数为所有可能 \(k\) 的求和:\[N = \sum_{k=1}^{\min(m,n)} S(n,k) \]
- 当 \(m \geq n\) 时,非空盒最多 \(n\) 个,求和上限为 \(n\)
- 当 \(m < n\) 时,非空盒最多 \(m\) 个,求和上限为 \(m\)
结论:\(N = \sum_{k=1}^{\min(m,n)} S(n,k)\)
场景 5:球≠,盒=,每盒最多1个
前提:盒子无差异,每个盒最多放1个球
证明:
- 每个盒最多1个球 → 非空盒数量 = 球的数量 \(n\)
- 盒子无差异,只需判断「是否有足够的盒子容纳 \(n\) 个球」:
- 若 \(n \leq m\):有 \(m \geq n\) 个盒,可选择 \(n\) 个盒各放1球(盒无差异,仅1种方式)
- 若 \(n > m\):盒子数量不足,无法容纳,方案数为0
- 用克罗内克函数表示:\[\delta(n \leq m) = \begin{cases} 1 & n \leq m \\ 0 & n > m \end{cases} \]
结论:\(N = \delta(n \leq m)\)
场景 6:球≠,盒=,每盒至少1个
前提:盒子无差异,每个盒至少放1个球(第二类斯特林数的定义场景)
证明:
- 直接用递推思想推导 \(S(n,m)\):
- 考虑第 \(n\) 个球的放置方式:
- 方式1:第 \(n\) 个球单独成盒 → 剩余 \(n-1\) 个球需放入 \(m-1\) 个盒(每盒至少1个),方案数 \(S(n-1,m-1)\)
- 方式2:第 \(n\) 个球加入已有盒 → 剩余 \(n-1\) 个球已放入 \(m\) 个盒(每盒至少1个),第 \(n\) 球有 \(m\) 个盒可选,方案数 \(mS(n-1,m)\)
- 递推公式:\(S(n,m) = S(n-1,m-1) + mS(n-1,m)\)
- 考虑第 \(n\) 个球的放置方式:
- 边界条件验证:
- \(S(n,1) = 1\)(所有球放1个盒,仅1种方式)
- \(S(n,n) = 1\)(每个球单独成盒,仅1种方式)
- \(S(n,m) = 0\)(\(n < m\) 时,无法每盒至少1个)
- 容斥公式佐证:由场景3的满射计数公式除以 \(m!\)(消除盒的排序)得:\[S(n,m) = \frac{1}{m!} \sum_{i=0}^m (-1)^i \binom{m}{i} (m-i)^n \]
结论:\(N = S(n,m)\)(第二类斯特林数)
场景 7:球=,盒≠,无限制
前提:球相同(无需区分),盒不同(需考虑顺序),可空盒
证明:
- 转化为「整数解计数问题」:设第 \(i\) 个盒放 \(x_i\) 个球(\(x_i \geq 0\),整数),需满足 \(x_1 + x_2 + \cdots + x_m = n\)
- 用隔板法:将 \(n\) 个相同球排成一列,有 \(n-1\) 个间隙,插入 \(m-1\) 个隔板(隔板可相邻,对应空盒)
- 总元素数:\(n\) 个球 + \(m-1\) 个隔板 = \(n+m-1\) 个位置
- 方案数 = 从 \(n+m-1\) 个位置中选 \(m-1\) 个放隔板(剩余位置放球)
- 组合数表示:\[N = \binom{n+m-1}{m-1} = \binom{n+m-1}{n} \](组合数对称性 \(\binom{a}{b} = \binom{a}{a-b}\))
结论:\(N = \binom{n+m-1}{n}\)
场景 8:球=,盒≠,每盒最多1个
前提:球相同,盒不同,每个盒最多放1个球
证明:
- 每个盒最多1个球 → 需选择 \(n\) 个盒子(每个选好的盒放1个球)
- 球相同:无需考虑球的顺序,仅需选盒
- 组合数计数:从 \(m\) 个盒中选 \(n\) 个,方案数 \(\binom{m}{n}\)
- 特殊情况:若 \(n > m\),无法选出 \(n\) 个盒,方案数 \(N = 0\)
结论:\(N = \binom{m}{n}\)
场景 9:球=,盒≠,每盒至少1个
前提:球相同,盒不同,每个盒至少放1个球
证明:
- 转化为「非空整数解计数」:设 \(x_i \geq 1\)(每盒至少1个),满足 \(x_1 + x_2 + \cdots + x_m = n\)
- 预处理:令 \(y_i = x_i - 1\)(\(y_i \geq 0\)),则方程转化为 \(y_1 + y_2 + \cdots + y_m = n - m\)
- 要求 \(n - m \geq 0\)(否则无解),即 \(n \geq m\)
- 套用场景7的隔板法:方案数 = \(\binom{(n-m)+m-1}{m-1} = \binom{n-1}{m-1}\)
- 若 \(n < m\):则 \(n-m < 0\),无整数解,方案数 \(N = 0\)
结论:
\[N = \binom{n-1}{m-1} \quad (n \geq m)
\]
否则 \(N = 0\)
场景 10:球=,盒=,无限制
前提:球和盒均无差异,仅关心「球的数量拆分」(整数分拆)
证明:
- 无限制意味着:拆分后的自然数个数 ≤ \(m\)(最多用 \(m\) 个盒,空盒等价于不参与拆分)
- 定义「\(m\) 部分拆数」\(p_m(n)\):将 \(n\) 拆分为最多 \(m\) 个自然数之和的方案数
- 例:\(n=3, m=2\) → 拆分方式:3(1个部分)、1+2(2个部分),共2种,即 \(p_2(3)=2\)
- 递推公式验证(辅助理解):\[p_m(n) = p_{m-1}(n) + p_m(n-m) \]
- 解释:\(p_{m-1}(n)\) 表示「最多 \(m-1\) 个部分」(不含 \(m\) 个盒)
- \(p_m(n-m)\) 表示「恰好 \(m\) 个部分」(先给每个部分加1,转化为 \(n-m\) 的最多 \(m\) 部分拆)
- 边界条件:\(p_m(0) = 1\)(0拆为0个部分,1种方式),\(p_m(n) = 0\)(当 \(n<0\))
结论:\(N = p_m(n)\)(\(m\) 部分拆数)
场景 11:球=,盒=,每盒最多1个
前提:球和盒均无差异,每个盒最多放1个球
证明:
- 每个盒最多1个球 → 拆分后的自然数只能是1(每个非空盒放1个球),且自然数个数 = 球数 \(n\)
- 因盒无差异,只需判断「非空盒数量 \(n\) 是否 ≤ 总盒数 \(m\)」:
- 若 \(n \leq m\):可选择 \(n\) 个盒各放1球(盒无差异,仅1种方式)
- 若 \(n > m\):盒子数量不足,无法容纳,方案数为0
- 与场景5逻辑一致(球≠/球=不影响,因每盒最多1个,球的区分性无意义)
结论:\(N = \delta(n \leq m)\)
场景 12:球=,盒=,每盒至少1个
前提:球和盒均无差异,每个盒至少放1个球
证明:
- 每盒至少1个球 → 拆分后的自然数个数 = \(m\)(恰好 \(m\) 个部分,无空盒),且每个自然数 ≥ 1
- 转化为「恰好 \(m\) 个部分的分拆数」:
- 先给每个盒放1个球(满足至少1个),剩余 \(n-m\) 个球(需 \(n \geq m\),否则无解)
- 剩余 \(n-m\) 个球无限制分配(可补到任意盒),因球=、盒=,等价于「将 \(n-m\) 拆分为最多 \(m\) 个自然数之和」(即 \(p_m(n-m)\))
- 但因原盒数固定为 \(m\),拆分后总部分数为 \(m\)(剩余球的拆分不增加部分数)
- 例:\(n=3, m=2\) → 先各盒放1个球,剩余1个球,补到任意盒 → 拆分方式:1+2(仅1种),即 \(p_2(3-2) = p_2(1) = 1\)
- 若 \(n < m\):则 \(n-m < 0\),无可行的拆分,方案数 \(N = 0\)
结论:
\[N = \begin{cases} p_m(n-m) & n \geq m \\ 0 & n < m \end{cases}
\]
即 \(n\) 拆为恰好 \(m\) 个自然数之和的分拆数

浙公网安备 33010602011771号