球盒模型

证明前提约定

  • 固定变量: \(n\) 个球,\(m\) 个盒,记方案数为 \(N\)
  • 核心判断维度:
    • 球是否可区分(用「球≠」表示可区分,「球=」表示不可区分)
    • 盒是否可区分(「盒≠」「盒=」)
    • 盒限制(无限制 / 最多1个 / 至少1个)
  • 基础工具: 乘法原理、排列组合、隔板法、容斥原理、递推思想

场景 1:球≠,盒≠,无限制

前提:每个球独立选择盒子,无任何限制

证明:

  1. 第1个球:有 \(m\) 个盒子可选(任意盒均可放)
  2. 第2个球:同样有 \(m\) 个选择(与其他球选择独立,可同盒)
  3. ... 第 \(n\) 个球:仍有 \(m\) 个选择
  4. 乘法原理,总方案数为各球选择数的乘积:

    \[N = m \times m \times \cdots \times m = m^n \]

结论:\(N = m^n\)


场景 2:球≠,盒≠,每盒最多1个

前提:每个盒子最多放1个球,需满足 \(n \leq m\)(否则无可行方案)

证明:

  1. 第1个球:有 \(m\) 个盒子可选
  2. 第2个球:因每盒最多1个,需避开第1个球的盒子,有 \(m-1\) 个选择
  3. ... 第 \(n\) 个球:需避开前 \(n-1\) 个球的盒子,有 \(m-(n-1)\) 个选择
  4. 乘法原理,总方案数为排列数:

    \[N = m \times (m-1) \times \cdots \times (m-n+1) = P(m,n) = (m)_n \]

  5. \(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. 先不考虑「至少1个」限制,总映射数为 \(m^n\)(场景1结论)
  2. 减去「至少1个盒空」的情况:用容斥原理
    • \(A_i\) 表示「第 \(i\) 个盒空」的映射集合,则 \(|A_i| = (m-1)^n\)(剩余 \(m-1\) 个盒无限制)
    • 任意2个集合交集 \(|A_i \cap A_j| = (m-2)^n\),以此类推
  3. 容斥公式:

    \[N = \sum_{i=0}^m (-1)^i \binom{m}{i} (m-i)^n \]

    • 解释:\(\binom{m}{i}\) 表示选 \(i\) 个盒空,\((m-i)^n\) 是剩余 \(m-i\) 个盒的无限制映射
    • \((-1)^i\) 为交替加减符号
  4. 另一种推导:结合第二类斯特林数 \(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. 无限制意味着非空盒数量可从1到 \(\min(m,n)\)
  2. 对每个非空盒数量 \(k\)\(1 \leq k \leq \min(m,n)\)):
    • 「球≠、盒=、每盒至少1个」的方案数为第二类斯特林数 \(S(n,k)\)
  3. 总方案数为所有可能 \(k\) 的求和:

    \[N = \sum_{k=1}^{\min(m,n)} S(n,k) \]

  4. \(m \geq n\) 时,非空盒最多 \(n\) 个,求和上限为 \(n\)
  5. \(m < n\) 时,非空盒最多 \(m\) 个,求和上限为 \(m\)

结论:\(N = \sum_{k=1}^{\min(m,n)} S(n,k)\)


场景 5:球≠,盒=,每盒最多1个

前提:盒子无差异,每个盒最多放1个球

证明:

  1. 每个盒最多1个球 → 非空盒数量 = 球的数量 \(n\)
  2. 盒子无差异,只需判断「是否有足够的盒子容纳 \(n\) 个球」:
    • \(n \leq m\):有 \(m \geq n\) 个盒,可选择 \(n\) 个盒各放1球(盒无差异,仅1种方式)
    • \(n > m\):盒子数量不足,无法容纳,方案数为0
  3. 用克罗内克函数表示:

    \[\delta(n \leq m) = \begin{cases} 1 & n \leq m \\ 0 & n > m \end{cases} \]

结论:\(N = \delta(n \leq m)\)


场景 6:球≠,盒=,每盒至少1个

前提:盒子无差异,每个盒至少放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)\)
  2. 边界条件验证:
    • \(S(n,1) = 1\)(所有球放1个盒,仅1种方式)
    • \(S(n,n) = 1\)(每个球单独成盒,仅1种方式)
    • \(S(n,m) = 0\)\(n < m\) 时,无法每盒至少1个)
  3. 容斥公式佐证:由场景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:球=,盒≠,无限制

前提:球相同(无需区分),盒不同(需考虑顺序),可空盒

证明:

  1. 转化为「整数解计数问题」:设第 \(i\) 个盒放 \(x_i\) 个球(\(x_i \geq 0\),整数),需满足 \(x_1 + x_2 + \cdots + x_m = n\)
  2. 隔板法:将 \(n\) 个相同球排成一列,有 \(n-1\) 个间隙,插入 \(m-1\) 个隔板(隔板可相邻,对应空盒)
    • 总元素数:\(n\) 个球 + \(m-1\) 个隔板 = \(n+m-1\) 个位置
    • 方案数 = 从 \(n+m-1\) 个位置中选 \(m-1\) 个放隔板(剩余位置放球)
  3. 组合数表示:

    \[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. 每个盒最多1个球 → 需选择 \(n\) 个盒子(每个选好的盒放1个球)
  2. 球相同:无需考虑球的顺序,仅需选盒
  3. 组合数计数:从 \(m\) 个盒中选 \(n\) 个,方案数 \(\binom{m}{n}\)
  4. 特殊情况:若 \(n > m\),无法选出 \(n\) 个盒,方案数 \(N = 0\)

结论:\(N = \binom{m}{n}\)


场景 9:球=,盒≠,每盒至少1个

前提:球相同,盒不同,每个盒至少放1个球

证明:

  1. 转化为「非空整数解计数」:设 \(x_i \geq 1\)(每盒至少1个),满足 \(x_1 + x_2 + \cdots + x_m = n\)
  2. 预处理:令 \(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\)
  3. 套用场景7的隔板法:方案数 = \(\binom{(n-m)+m-1}{m-1} = \binom{n-1}{m-1}\)
  4. \(n < m\):则 \(n-m < 0\),无整数解,方案数 \(N = 0\)

结论:

\[N = \binom{n-1}{m-1} \quad (n \geq m) \]

否则 \(N = 0\)


场景 10:球=,盒=,无限制

前提:球和盒均无差异,仅关心「球的数量拆分」(整数分拆)

证明:

  1. 无限制意味着:拆分后的自然数个数 ≤ \(m\)(最多用 \(m\) 个盒,空盒等价于不参与拆分)
  2. 定义「\(m\) 部分拆数」\(p_m(n)\):将 \(n\) 拆分为最多 \(m\) 个自然数之和的方案数
    • 例:\(n=3, m=2\) → 拆分方式:3(1个部分)、1+2(2个部分),共2种,即 \(p_2(3)=2\)
  3. 递推公式验证(辅助理解):

    \[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\) 部分拆)
  4. 边界条件:\(p_m(0) = 1\)(0拆为0个部分,1种方式),\(p_m(n) = 0\)(当 \(n<0\)

结论:\(N = p_m(n)\)\(m\) 部分拆数)


场景 11:球=,盒=,每盒最多1个

前提:球和盒均无差异,每个盒最多放1个球

证明:

  1. 每个盒最多1个球 → 拆分后的自然数只能是1(每个非空盒放1个球),且自然数个数 = 球数 \(n\)
  2. 因盒无差异,只需判断「非空盒数量 \(n\) 是否 ≤ 总盒数 \(m\)」:
    • \(n \leq m\):可选择 \(n\) 个盒各放1球(盒无差异,仅1种方式)
    • \(n > m\):盒子数量不足,无法容纳,方案数为0
  3. 与场景5逻辑一致(球≠/球=不影响,因每盒最多1个,球的区分性无意义)

结论:\(N = \delta(n \leq m)\)


场景 12:球=,盒=,每盒至少1个

前提:球和盒均无差异,每个盒至少放1个球

证明:

  1. 每盒至少1个球 → 拆分后的自然数个数 = \(m\)(恰好 \(m\) 个部分,无空盒),且每个自然数 ≥ 1
  2. 转化为「恰好 \(m\) 个部分的分拆数」:
    • 先给每个盒放1个球(满足至少1个),剩余 \(n-m\) 个球(需 \(n \geq m\),否则无解)
    • 剩余 \(n-m\) 个球无限制分配(可补到任意盒),因球=、盒=,等价于「将 \(n-m\) 拆分为最多 \(m\) 个自然数之和」(即 \(p_m(n-m)\)
    • 但因原盒数固定为 \(m\),拆分后总部分数为 \(m\)(剩余球的拆分不增加部分数)
  3. 例:\(n=3, m=2\) → 先各盒放1个球,剩余1个球,补到任意盒 → 拆分方式:1+2(仅1种),即 \(p_2(3-2) = p_2(1) = 1\)
  4. \(n < m\):则 \(n-m < 0\),无可行的拆分,方案数 \(N = 0\)

结论:

\[N = \begin{cases} p_m(n-m) & n \geq m \\ 0 & n < m \end{cases} \]

\(n\) 拆为恰好 \(m\) 个自然数之和的分拆数

posted @ 2026-01-28 14:14  nick_zha  阅读(3)  评论(0)    收藏  举报