Skip to content

原则Principle

隔板法

施工中 · 内容逐步修订

Stars and bars

把相同对象分入有标号盒子的整数解计数方法。

形式陈述 ​

对整数 n≥0、k≥1,方程

x1+x2+⋯+xk=n,xi≥0

的整数解数为

(n+k−1k−1).

这里数的是有顺序的坐标向量 (x1,…,xk),每个坐标对应一个有标号盒子。证明所用的编码由 n 个星号和 k−1 块隔板组成,总长为 n+k−1;先从这些符号位置中选出隔板位置,其余位置全部填星。这个位置选择就是组合,下节说明它为什么与整数解一一对应。

若要求 xi≥1,令 yi=xi−1,解数为

(n−1k−1)

(n≥k≥1)。若下界为 xi≥ai,先减去下界。

直觉

把每一份不可区分的单位写成星号,把变量之间的分界写成隔板。k 个有标签变量需要 k−1 块隔板;从左到右读每段星数,就恢复唯一的整数解。允许零值意味着隔板可以相邻,也可以放在整个串的两端。

例如 ∗∗∣∣∗∗∗ 对应 (2,0,3)。反过来,按解的三个坐标依次写星,再插两块隔板,又恢复同一个串。因此整数解与星板串是一一对应;在 n+k−1 个符号位置中选择隔板位置即可使用组合数。不要把它误说成只在 n 颗星之间的 n−1 个缝中放隔板,那样会排除空盒。

若要求每个变量至少为 1,先各放一份,把问题化为总量 n−k 的非负分配。更一般的下界 ai 同样可平移:剩余量为 n−∑iai,若它为负则没有解。

例子与边界

把 7 个相同球放入 3 个有标签盒子,允许空盒,编码长为 7+2=9,从中选两个隔板位置,共有 (92)=36 种。若每盒至少一个,先给三个盒子各放一球,剩余四球的编码长为 4+2=6,故有 (62)=15 种。比如原分配 (3,1,3) 减去预放的球得到 (2,0,2);第二盒剩余零球完全合法,因为它已经获得最低要求的一球。

公式要求物品不可区分、盒子可区分;若物品有标签,应使用函数计数而非隔板法。加入上界 xi≤ui 后不能只平移,通常还需容斥或生成函数。k=1 时非负解唯一;组合数公式仍给 (n0)=1。

考虑

x1+x2+x3=5,0≤xi≤2.

用容斥原理处理这个上界。先忽略上界有 (72)=21 个解。对固定的 i,先给第 i 盒放三球,再分剩余两球;等价地,令 yi=xi−3,其余变量不变,所得三个非负变量之和为 2。因此 xi≥3 的非法解有 (42)=6 个。

两个变量同时至少为 3 已不可能,所以这些非法类两两不交。合法解数为 21−3⋅6=3,恰是 (1,2,2) 的三个排列。

推论与应用

非负整数坐标刻画的是各类别的数量,所以隔板法也数 k 个变量的总次数为 n 的单项式:单项式 x1a1⋯xkak 的指数向量 (a1,…,ak) 满足 a1+⋯+ak=n。允许重复选取 n 个类别成员时,同一个向量又表示各类别被选多少次。

若球有标签,盒子也有标签,逐球投放给出 kn 种函数,通常不等于隔板数;若盒子没有标签,则交换坐标不产生新结果,需要改用整数分拆或其他对称计数。对象与盒子的可区分性必须先定,再选择公式。

上界需要容斥原理修正,不能只把某个数字从总量减去。带权条件如 x1+2x2+3x3=n 则改变了每类单位的贡献,可用普通生成函数 1/((1−x)(1−x2)(1−x3)) 逐系数计数。

参考资料
  • Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., 2019,§1.5 Stars and Bars。
  • Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th ed., McGraw-Hill, 2019,§6.5。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系