← 排列组合 · 从计数原理到 P(n,k) 与 C(n,k) / 组合 C(n, k):无序地取 k 个 待审核 4 / 10
combination · C(n, k) = P(n, k) / k!

组合 C(n, k):无序地取 k 个

仍是从 n 个不同元素里取 k 个,但这次不计次序——{A, B, C}{C, B, A}同一个组合。这样的方案数记作 组合数 C(n, k)(也写作 CknC^n_knCk 或二项式系数 (kn)(^n_k))。它和排列只差一个因子:把排列里那 k! 种「同一组元素的不同顺序」压成一种,就得到组合。

1 · 从排列到组合:除掉 k!种顺序

C(n, k) = P(n, k) / k! = n! / (k!·(n−k)!)

同一组 k 个元素,能排成 k! 种不同顺序,它们在排列里各算一个、在组合里只算一个。所以把排列数 P(n, k) 除以 k!,就得到组合数 C(n, k)。下面取头 k 个字母作一组,列出它的全部 k! 种顺序,看它们如何折叠成一个组合。

2 · 枚举全部组合,再看它的对称性

enumerate · C(n, k) = C(n, n−k)

下面列出无序取 k 个的全部 C(n, k) 个组合。还有一条常用的性质:选出 k 个等价于丢掉 n−k 个——每挑一个大小为 k 的子集,就唯一对应一个大小为 nkn-k 的「补集」。于是 C(n,k)=C(n,nk)C(n, k) = C(n, n-k),拖动滑块两个数始终相等。

两个常用的边界值:C(n, 0) = C(n, n) = 1(取空集 / 取全体,各只有一种),C(n,1)=C(n,n1)=nC(n, 1) = C(n, n-1) = n(取一个 / 丢一个)。把 k0 拉到 n,组合数先增后减、关于中间对称——这正是 Pascal 三角每一行的形状。

3 · 相关链接