第 1 章 · 组合分析

1.6 方程的整数解个数问题

The Number of Integer Solutions of Equations
学习目标
  • 把“相同对象分配”问题(分甜甜圈、名额分配、各组人数组成)翻译为不定方程的整数解计数问题;
  • 叙述并用隔板法证明非负整数解个数公式 \(\binom{n+r-1}{r-1}\),说明解与“星–板”排列之间的一一对应;
  • 用换元(平移)技巧求正整数解个数以及带下界约束 \(x_i\ge a_i\) 的解数;
  • 区分“相同对象”与“不同对象”两类分组计数模型,对给定情境正确选用 1.5 节或本节的公式。

1. 从“分东西”到数方程的解

1.5 节的多项式系数解决了“把 \(n\) 个互不相同的对象分组”的计数问题。本节处理与之对偶的情形:对象完全相同。设想把 12 个同一款式的甜甜圈分给 5 个孩子——由于甜甜圈彼此无从区分,“哪一只甜甜圈进了谁的盘子”不再有意义,有意义的只是每个孩子分得的数量。数量层面的分配问题可以翻译成代数语言:设第 \(i\) 个孩子得到 \(x_i\) 只,则 \(x_1+x_2+\cdots+x_5=12\),且每个 \(x_i\) 都是非负整数;反过来,方程的每一个这样的解都给出一种分法。于是“分法数”就等于“方程的解数”。只要求整数解的方程称为不定方程(indeterminate equation),在数论中也叫丢番图方程(Diophantine equation)。

定义 1 非负整数解与相同球分配模型

方程 \(x_1+x_2+\cdots+x_r=n\) 的一个非负整数解(nonnegative integer solution)是满足方程且每个分量 \(x_i\ge 0\) 都取整数的 \(r\) 元组 \((x_1,\dots,x_r)\);若进一步要求 \(x_i\ge 1\),则称为正整数解(positive integer solution)。

把 \(n\) 个相同的(不可区分的,indistinguishable)球分入 \(r\) 个编号盒子的每一种分法,与上述方程的一个非负整数解一一对应:\(x_i\) 就是第 \(i\) 个盒子里的球数。

使用这个模型时要注意两个前提:其一,盒子必须可区分(有编号),否则连“哪一堆算哪个盒子”都无法约定;其二,允许空盒对应允许 \(x_i=0\)。这两个前提在建模时最容易被忽略,是常见的出错根源(见第 4 小节的注记)。

2. 隔板法与基本定理

怎样数出方程的解?逐个枚举显然不现实。本节的主角——隔板法(stars and bars)——提供了漂亮的办法:不解方程,而是把每个解“画”出来,让解变成一种一眼就能数清的排列对象。这是组合数学中“用一一对应计数”思想的典范。

定理 1 非负整数解的个数

设 \(n,r\) 为正整数。方程 \[ x_1+x_2+\cdots+x_r=n \] 的非负整数解个数为 \(\displaystyle\binom{n+r-1}{r-1}\)(按 1.4 节的记号即 \(C(n+r-1,\,r-1)\))。

证明把方程的一个解写成“记数式”:先写 \(x_1\) 个 1,画一道分隔,再写 \(x_2\) 个 1,再画一道分隔,……,最后写 \(x_r\) 个 1。把每个 1 看作一颗星(star)、每道分隔看作一块板(bar)(板相当于方程里的“+”号),则每个解恰好排成一行由 \(n\) 颗 ★ 与 \(r-1\) 块隔板组成的记号串;例如 \(r=3\) 时解 \((2,1,3)\) 就是 ★★│★│★★★。反过来,任取这样一行记号串,依次数出第一块板之前、相邻两板之间、末板之后的星数,便唯一还原出一个解。两个方向的构造互为逆过程,因此解与记号串一一对应(one-to-one correspondence)。一行记号串共有 \(n+r-1\) 个位置,从中选出 \(r-1\) 个位置放板、其余放星,共 \(\binom{n+r-1}{r-1}\) 种排法,此即解数。证毕。
隔板法(stars and bars):把方程的解排成一行 方程 x1+x2+x3= 6 的每个非负整数解 ↔ 「6 颗 ★ 与 2 块隔板」的一种排法 x1 x2 x3 (2, 1, 3) 2 + 1 + 3 = 6 x1 = 6 x2=x3=0 (6, 0, 0) 两块隔板相邻 ⇒ 对应变量为 0 x1=0 x2 = 2 x3 = 4 (0, 2, 4) 隔板排在首位 ⇒ x1 = 0 一般地:n 颗 ★ 与 r-1 块隔板共占 n+r-1 个位置 任选 r-1 个位置放板即得一个解:解数 = C(n+r-1, r-1);本例为 C(8,2) = 28
图 1:隔板法示意。方程 x1+x2+x3=6 的三个非负整数解与“星–板”排法的一一对应:一行共 n+r−1 = 8 个位置,任选 r−1 = 2 个放隔板,故解数为 C(8,2)=28。相邻隔板对应取 0 的变量。
例 1 最直接的应用

求方程 \(x_1+x_2+x_3=10\) 的非负整数解个数。

这里 \(n=10\),\(r=3\),由定理 1,解数为 \[ \binom{10+3-1}{3-1}=\binom{12}{2}=\frac{12\cdot 11}{2}=66. \] 其组合意义:把 10 颗星与 2 块隔板排成一行,在 12 个位置中选 2 个放隔板,每一种选法恰给出一个解。
例 2 分甜甜圈

面包店只剩 12 个同款甜甜圈,要全部分给 5 个孩子,每人分得的数量不限(可以为 0)。共有多少种分法?

设第 \(i\) 个孩子分得 \(x_i\) 只,则分法数即方程 \(x_1+x_2+\cdots+x_5=12\) 的非负整数解个数: \[ \binom{12+5-1}{5-1}=\binom{16}{4}=\frac{16\cdot 15\cdot 14\cdot 13}{4!}=\frac{43680}{24}=1820. \] 若改为“每个孩子至少 1 只”,可先给每人发 1 只,再任意分配剩下的 7 只,得 \(\binom{7+5-1}{4}=\binom{11}{4}=330\) 种——这正是下一定理的特例。

3. 正整数解与下界约束:平移技巧

如果要求每盒不空,星板串中任何两块隔板便不得相邻,而且隔板不能落在两端。直接数这种“带间隔限制”的排法并不方便,下面的定理给出两条殊途同归的路线。

定理 2 正整数解的个数

设 \(n\ge r\ge 1\)。方程 \(x_1+x_2+\cdots+x_r=n\) 的正整数解个数为 \(\displaystyle\binom{n-1}{r-1}\)。

证明把 \(n\) 个 1 排成一行,其内部共有 \(n-1\) 个间隙。在其中任选 \(r-1\) 个间隙,每个间隙插入一块隔板(每个间隙至多一块),则被分隔出的 \(r\) 段每段至少含一个 1,恰好对应方程的一个正整数解;反之,每个正整数解都唯一确定这样一种插法。故解数为 \(\binom{n-1}{r-1}\)。证毕。

换一个角度同样能得到它:令 \(y_i=x_i-1\ge 0\),则 \(y_1+\cdots+y_r=n-r\),由定理 1 得 \(\binom{(n-r)+r-1}{r-1}=\binom{n-1}{r-1}\)。两种证法答案一致并非巧合:“每个间隙至多一块板”与“每盒先垫一个球”是同一约束的两种说法。这个平移(换元)技巧的价值在于它可以处理任意下界:

推论 1 下界约束的平移

设 \(a_1,\dots,a_r\) 为非负整数且 \(\sum_{i=1}^{r}a_i\le n\)。方程 \(x_1+\cdots+x_r=n\) 满足 \(x_i\ge a_i\)(\(i=1,\dots,r\))的整数解个数为 \[ \binom{n-\sum_{i=1}^{r}a_i+r-1}{r-1}. \]

证明令 \(y_i=x_i-a_i\),则 \(y_i\ge 0\) 且 \(y_1+\cdots+y_r=n-\sum_i a_i\),由定理 1 即得。定理 2 就是 \(a_i\equiv 1\) 的特例。证毕。
例 3 正整数解

求方程 \(x_1+x_2+x_3=10\) 的正整数解个数。

由定理 2,个数为 \[ \binom{10-1}{3-1}=\binom{9}{2}=\frac{9\cdot 8}{2}=36. \] 与例 1 相减得 \(66-36=30\),这恰是原方程中至少有一个分量为 0 的解的个数。
例 4 项目组的人数组成

某实验室要把 30 位员工编入 A、B、C 三个项目组,人数不限(允许出现空组)。只关心各组人数时,三个组的人数组成共有多少种可能?若要求每个项目组至少 1 人呢?

只关心各组人数而不区分具体是谁时,即求 \(n_A+n_B+n_C=30\) 的非负整数解个数,由定理 1 得 \[ \binom{30+3-1}{3-1}=\binom{32}{2}=\frac{32\cdot 31}{2}=496. \] 若每个项目组至少 1 人,由定理 2 得 \(\binom{29}{2}=406\) 种。请注意:若把“哪位员工进哪个组”也考虑进去(员工互不相同,每人恰去一组),答案则是 \(3^{30}\approx 2.06\times 10^{14}\) 种——那是 1.2 节乘法原理的问题,而非本节的问题。这一对比正是下一小节的主题。

4. 相同对象与不同对象:与 1.5 节的对照

至此,第 1 章的两类“分组”计数工具都已就绪:

  • 不同对象1.5 节,多项式系数):把 \(n\) 个互不相同的对象分成大小为 \(n_1,\dots,n_r\) 的 \(r\) 组,共 \(\dfrac{n!}{n_1!\,n_2!\cdots n_r!}\) 种;
  • 相同对象(本节,隔板法):把 \(n\) 个相同的对象分入 \(r\) 个编号盒、各盒数量不限,共 \(\binom{n+r-1}{r-1}\) 种。

判别的第一步永远是:对象可区分吗?图 2 用最小的对照实验把差别摆上台面——同样是“3 个球放入 2 个编号盒”,相同的球只有 4 种数量分布,不同的球却有 8 种放法。

最小对照实验:3 个球放入 2 个编号盒 情形 A:3 个相同的球 —— 方程 x1+x2=3 的非负整数解,共 4 种数量分布 (3, 0) (2, 1) (1, 2) (0, 3) 情形 B:3 个不同的球 A、B、C —— 每球独立选盒,共 8 = 23 种放法 盒 1 盒 2 ABC AB C AC B BC A A BC B AC C AB ABC 相同球:只有「数量分布」有意义 —— 4 种分布;数量一旦指定,分法唯一 不同球:还要区分「谁在哪个盒」—— 8 = 23 种;指定各组大小时用多项式系数(1.5 节) 判别第一步:对象可不可区分?
图 2:同为“3 个球放入 2 个编号盒”:相同的球只有 4 种数量分布(情形 A,对应 x1+x2=3 的四个非负解);不同的球有 8 = 2³ 种放法(情形 B)。指定各盒数量后,前者分法唯一,后者为多项式系数。
表 1:“n 个球分入 r 盒”的两类计数模型对照
比较维度相同对象(本节,隔板法)不同对象(1.5 节,多项式系数)
数学模型\(x_1+\cdots+x_r=n\) 的非负整数解把 \(n\) 个对象分成大小为 \(n_1,\dots,n_r\) 的 \(r\) 组
计数公式\(\binom{n+r-1}{r-1}\)\(\dfrac{n!}{n_1!\,n_2!\cdots n_r!}\)
附加约束下界 \(x_i\ge a_i\):平移后仍用本节公式(推论 1)各组大小 \(n_1,\dots,n_r\) 事先指定
每盒恰 1 球(\(n=r\))\(1\) 种\(n!\) 种(即全排列,1.3 节)
典型情境同款甜甜圈、名额与预算分配、各组人数组成字母重排(MISSISSIPPI)、发牌、按名单分组
判别关键对象不可区分,只看各盒数量对象可区分,“谁在哪组”有意义
注记

来历与思想:星与条(stars and bars)这一论证在现代教科书中的流行通常归功于费勒(W. Feller)的经典著作。它把代数问题化为排列问题,是“构造一一对应”这一计数思想的典范:不直接数解,而去数更容易数的对象。

常见误区一:忘记盒子必须编号。若盒子也不可区分,问题变成把 \(n\) 写成无序和的整数分拆(integer partition)问题——例如 \(4=4=3+1=2+2=2+1+1=1+1+1+1\) 共 5 种——难度完全不同,不在本教程范围内。误区二:混用两类模型,例如把例 4 中 30 位互不相同员工的分组直接数成 \(\binom{32}{2}\)。动手之前先问一句“对象可区分吗”。

延伸:上界约束(如 \(x_i\le b\))无法仅靠隔板法处理,通常需要容斥原理(inclusion–exclusion principle,见第 2 章)或生成函数,练习 4 给了一个可以下手的小例子。此外,当第 2 章的样本空间由“球入盒”型等可能结果构成时,有利结果的计数正是本节的问题。

5. 本节小结

要点回顾
  • 相同对象分盒 ↔ 不定方程的非负整数解:解数为 \(\binom{n+r-1}{r-1}\)(定理 1)。
  • 核心是解与“\(n\) 颗星、\(r-1\) 块板排列”的一一对应:\(n+r-1\) 个位置中任选 \(r-1\) 个放板。
  • 正整数解数为 \(\binom{n-1}{r-1}\);下界 \(x_i\ge a_i\) 用平移 \(y_i=x_i-a_i\) 化归定理 1(推论 1)。
  • 与 1.5 节对照:不同对象用多项式系数,相同对象用隔板法;判别的第一步是问对象是否可区分。
  • 第 1 章至此完成:乘法原理、排列、组合、多项式系数、整数解计数五件武器,将在第 2 章计算等可能模型中的概率时逐一登场。

练习

练习 1-6-1

求方程 \(x_1+x_2+x_3+x_4=15\) 的正整数解个数。

答案与提示

由定理 2,个数为 \(\binom{15-1}{4-1}=\binom{14}{3}=\frac{14\cdot 13\cdot 12}{6}=364\)。

练习 1-6-2

求方程 \(x_1+x_2+x_3=20\) 满足每个 \(x_i\ge 2\) 的整数解个数。

答案与提示

令 \(y_i=x_i-2\ge 0\),则 \(y_1+y_2+y_3=14\),由推论 1(\(\sum a_i=6\))得 \(\binom{20-6+3-1}{2}=\binom{16}{2}=120\)。

练习 1-6-3

用隔板法证明恒等式 \[ \sum_{k=0}^{n}\binom{r+k-1}{k}=\binom{r+n}{n}. \]

答案与提示

引入松弛变量(slack variable) \(x_{r+1}=n-(x_1+\cdots+x_r)\ge 0\)。不等式 \(x_1+\cdots+x_r\le n\) 的非负整数解,与方程 \(x_1+\cdots+x_r+x_{r+1}=n\) 的非负整数解一一对应。一方面,先令 \(\sum_{i=1}^{r}x_i=k\)(\(k=0,1,\dots,n\)),各 \(k\) 层的解数为 \(\binom{r+k-1}{r-1}=\binom{r+k-1}{k}\),求和即得左端;另一方面,\(r+1\) 个变量的方程由定理 1 直接有 \(\binom{n+(r+1)-1}{(r+1)-1}=\binom{r+n}{n}\) 个解。两边数的是同一批对象,故相等。

练习 1-6-4

掷 3 颗骰子,求点数之和等于 10 的有序结果 \((x_1,x_2,x_3)\) 的个数(每个 \(1\le x_i\le 6\))。

答案与提示

令 \(y_i=x_i-1\),则 \(0\le y_i\le 5\) 且 \(\sum y_i=7\)。先不管上界,非负解共 \(\binom{9}{2}=36\) 个;其中某个 \(y_i\ge 6\) 的,令 \(z_i=y_i-6\),则 \(z_i\) 与其余两个变量之和为 \(1\),各 \(\binom{3}{2}=3\) 个,共 \(3\times 3=9\) 个;两个变量同时 \(\ge 6\) 不可能(\(6+6>7\))。故所求个数为 \(36-9=27\)。