一句话区分
排列与组合都是「从 n 个里挑 m 个」的计数,唯一的分水岭是顺序算不算数:排列管次序,组合不管。把这一点想透,后面所有公式和解题套路都是它的推论。
排列:顺序参与计数
排列要求把取出的 m 个元素排成一列,次序不同就是不同的排列。直观地数一遍就清楚为什么公式长那样:第一个位置有 n 种选择,第二个位置剩 n-1 种,一直填到第 m 个位置剩 n-m+1 种,乘起来正好是从 n 往下连乘 m 项。
符号上中外教材各有习惯。国内主流写 或 A(n, m),A 取自 Arrangement;国际教材偏好 、 或 P(n, m),P 即 Permutation。名字不同,指的是同一个量:
当 m = n,也就是把所有元素都排进来时,叫全排列,结果退化成阶乘 。阶乘正是排列的极端情形——n 个位置依次填满,没有任何元素被「剩下」,所以分母里的 (n-m)! 变成 0! = 1,连乘式从 n 一路乘到 1。
组合:顺序被抹掉
组合只关心取出哪一组,不关心它们怎么排。既然顺序无关,那些在排列里被当作不同结果的「同一组的不同排法」就该合并掉——而一组 m 个元素内部的排法恰好有 m! 种。于是组合数就是排列数除以这个重复因子:
写法同样有几套。国内常见 或 C(n, m),国际写 ;而在机器学习、统计和算法推导里出现频率最高的是二项式系数记法 ,读作 “n choose m”。看到 不要愣神,它和 完全是一回事,只是更顺手地嵌进求和式与概率表达式里。
记忆抓手
排列与组合差一个 m!。排列是「先选再排」,组合是「只选不排」。凡是题目里出现「排成一排、坐成一行、依次完成」之类的措辞,顺序就参与计数,用排列;出现「分成一组、选出若干、组成团队」这类不计先后的措辞,用组合。
核心性质与常用恒等式
组合数有几条性质,在自回归模型、概率推导和多模态算法的数学分析里反复用来化简表达式。第一条是对称性:从 n 个里选出 m 个,等价于从 n 个里挑出 n-m 个「不要的」——选谁留和选谁弃是一枚硬币的两面,所以两种数法必然相等。
第二条是帕斯卡恒等式,它把一个组合数拆成两个更小的组合数,是动态规划递推组合数、构造杨辉三角的基石。盯住任意一个特定元素:要么它被选进这 m 个里(剩下从 n-1 个选 m-1 个),要么它落选(剩下从 n-1 个选 m 个),两种互斥情形相加就是总数。
第三条是二项式定理的展开式,组合数在这里以系数的身份登场。 展开后每一项的系数,本质是从 n 个括号里挑 k 个贡献 y、其余贡献 x 的方案数,所以系数恰好是 。这条恒等式把代数展开和组合计数缝在了一起:
常见模型与解题策略
具体题目里,排列组合的难点很少在公式本身,而在「怎么把现实约束翻译成可计数的结构」。下面三类模型覆盖了绝大多数带限制条件的排列问题,核心都是先变换问题、再套基础公式。
| 模型方法 | 适用场景 | 核心逻辑 |
|---|---|---|
| 捆绑法 | 要求某些元素必须相邻 | 把相邻元素视为一个整体参与排列,整体内部再做一次全排列,两步相乘。 |
| 插空法 | 要求某些元素必须不相邻 | 先把其余元素排好,在它们形成的空隙里插入需要分隔的元素,自然保证不相邻。 |
| 隔板法 | 相同元素的名额分配 | n 个相同元素分给 m 个对象、每个至少一个,等价于在 n-1 个空隙中插入 m-1 块隔板,方案数为 。 |
捆绑与插空是一对镜像:前者把「必须挨着」的元素绑成一团缩小问题规模,后者把「不能挨着」的元素留到最后插进现成的缝里。判断用哪个,只看约束是「相邻」还是「不相邻」。隔板法则换了个赛道,处理的是不可区分元素的分配,技巧在于把「分配」重述成「在序列里放隔板」,从而把一道分配题压回成纯组合数。
真正理解了顺序这条分水岭,排列组合就不再是一堆需要背的公式,而是同一套计数思想在不同约束下的展开。它们也是往后概率论的入口——交叉熵、KL 散度里先验概率的计数,本质都建立在这套排列组合的骨架之上。