组合数详解

介绍

组合数,也就是形如 C n m C_n^m Cnm 这样的东西。

写法(据我所知)有三种: C n m = C ( n , m ) = ( n m ) C_n^m=C(n,m)={n\choose m} Cnm=C(n,m)=(mn)

定义为:表示在 n n n不同的物品里面选 m m m 个物品的方案数。

递推式

C n m = C n − 1 m − 1 + C n − 1 m C_n^m=C_{n-1}^{m-1}+C_{n-1}^m Cnm=Cn1m1+Cn1m

n n n 个里面选 m m m 个,那么对于第 n n n 个物品,有两种情况:

  1. 选他,那么方案数就是从另外 n − 1 n-1 n1 个里面选 m − 1 m-1 m1
  2. 不选他,那么方案数就是从另外 n − 1 n-1 n1 个里面选 m m m 个。

显然,边界为: C n n = 1 C_n^n=1 Cnn=1

通项式

C n m = n ! m ! ( n − m ) ! C_n^m=\frac {n!} {m!(n-m)!} Cnm=m!(nm)!n!

依然考虑意义。

对于这 n n n 个物品,我不知道它的顺序,假定给它一个顺序,然后我们固定取前 m m m 个物品。

那么这 n n n 个物品的排列方案数为 n ! n! n!,对于前 m m m 个物品,他们之间交换顺序是同一种方案,所以要去重,除以 m ! m! m!,以及另外的 n − m n-m nm 个物品之间交换顺序也是相同的方案,所以还要除以 ( n − m ) ! (n-m)! (nm)!

证明

这里证明一下递推式与通项式等价。
C n m = C n − 1 m − 1 + C n − 1 m n ! m ! ( n − m ) ! = ( n − 1 ) ! ( m − 1 ) ! ( n − m ) ! + ( n − 1 ) ! m ! ( n − m − 1 ) ! n ! m ! ( n − m ) ! = ( n − 1 ) ! m ! ( n − m − 1 ) ! + ( n − 1 ) ! ( m − 1 ) ! ( n − m ) ! ( m − 1 ) ! ( n − m ) ! m ! ( n − m − 1 ) ! n ! m ! ( n − m ) ! = n ! ( m ! ( n − m − 1 ) ! + ( m − 1 ) ! ( n − m ) ! ) n ( m − 1 ) ! ( n − m ) ! m ! ( n − m − 1 ) ! 1 = m ! ( n − m − 1 ) ! + ( m − 1 ) ! ( n − m ) ! n ( m − 1 ) ! ( n − m − 1 ) ! \begin{aligned} C_n^m&=C_{n-1}^{m-1}+C_{n-1}^m\\ \frac {n!} {m!(n-m)!}&=\frac {(n-1)!} {(m-1)!(n-m)!} +\frac {(n-1)!} {m!(n-m-1)!}\\ \frac {n!} {m!(n-m)!}&=\frac {(n-1)!m!(n-m-1)!+(n-1)!(m-1)!(n-m)!} {(m-1)!(n-m)!m!(n-m-1)!}\\ \frac {n!} {m!(n-m)!}&=\frac {n!(m!(n-m-1)!+(m-1)!(n-m)!)} {n(m-1)!(n-m)!m!(n-m-1)!}\\ 1&=\frac {m!(n-m-1)!+(m-1)!(n-m)!} {n(m-1)!(n-m-1)!} \end{aligned} Cnmm!(nm)!n!m!(nm)!n!m!(nm)!n!1=Cn1m1+Cn1m=(m1)!(nm)!(n1)!+m!(nm1)!(n1)!=(m1)!(nm)!m!(nm1)!(n1)!m!(nm1)!+(n1)!(m1)!(nm)!=n(m1)!(nm)!m!(nm1)!n!(m!(nm1)!+(m1)!(nm)!)=n(m1)!(nm1)!m!(nm1)!+(m1)!(nm)!

a = m , b = n − m a=m,b=n-m a=m,b=nm,那么柿子变成:
1 = a ! ( b − 1 ) ! + ( a − 1 ) ! b ! ( a + b ) ( a − 1 ) ! ( b − 1 ) ! 1 = ( a − 1 ) ! ( b − 1 ) ! a + ( a − 1 ) ! ( b − 1 ) ! b ( a + b ) ( a − 1 ) ! ( b − 1 ) ! 1 = ( a − 1 ) ! ( b − 1 ) ! ( a + b ) ( a + b ) ( a − 1 ) ! ( b − 1 ) ! 1 = 1 \begin{aligned} 1&=\frac {a!(b-1)!+(a-1)!b!} {(a+b)(a-1)!(b-1)!}\\ 1&=\frac {(a-1)!(b-1)!a+(a-1)!(b-1)!b} {(a+b)(a-1)!(b-1)!}\\ 1&=\frac {(a-1)!(b-1)!(a+b)} {(a+b)(a-1)!(b-1)!}\\ 1&=1\\ \end{aligned} 1111=(a+b)(a1)!(b1)!a!(b1)!+(a1)!b!=(a+b)(a1)!(b1)!(a1)!(b1)!a+(a1)!(b1)!b=(a+b)(a1)!(b1)!(a1)!(b1)!(a+b)=1

得证。

经典例子

例1

将一个长度为 n n n 的序列分成 m m m 段的方案数,每段不允许为空。

这是组合数的一个经典应用,要用到一个经典的转化——插板法

比如说,你将这个序列分成这样两段:
在这里插入图片描述

这相当于往这两段中间的那个位置插一块板子,就是这样:
在这里插入图片描述

那么现在我们需要将这个序列分成 m m m 段,相当于要插 m − 1 m-1 m1 块板子,并且不能有两个板子插在相同的位置,因为他要求每段不能为空。这个序列的长度为 n n n,所以一共有 n − 1 n-1 n1 个空隙可以插,所以方案数为 C n − 1 m − 1 C_{n-1}^{m-1} Cn1m1

例2

讲一个长度为 n n n 的序列分成 m m m 段的方案数,允许段为空。

允许为空?怎么搞?

我们考虑往这个长度为 n n n 的序列里面再加 m m m 个物品进去,一共就有 n + m n+m n+m 个物品。我们定义,这 m m m 个物品的意义为

暂且不管这 m m m 个物品放在哪里,当我们用插板法将这个长度为 n + m n+m n+m 的序列分成 m m m 份时,我们不妨设,这 m m m 份里面每一份都有一个物品是,那么对于只有一个物品的段,这一段也就是了,这样就解决了允许段为空的情况。

所以答案为 C n + m − 1 m − 1 C_{n+m-1}^{m-1} Cn+m1m1

常用的性质

1、 C n m = C n n − m C_n^m=C_n^{n-m} Cnm=Cnnm

n n n 个里面选 m m m 个,那么剩下的 n − m n-m nm 个就是不选的,那么问题自然等价于从 n n n 个里面找 n − m n-m nm 个不选的。

2、 C n m C m k = C n k C n − k m − k C_n^mC_m^k=C_n^kC_{n-k}^{m-k} CnmCmk=CnkCnkmk

n n n 里面选 m m m 个,再从 m m m 个里面选 k k k 个,我们不妨称这两个为两次筛选,有 m m m 个通过了第一次筛选,有 k k k 个通过了第二次筛选。

那么这等价于从 n n n 个里面直接选 k k k 个通过了第二次筛选的,乘以从剩下的 n − k n-k nk 个里面选 m − k m-k mk 个通过了第一次筛选而没有通过第二次筛选的。

3、 ∑ i = 0 n C n i = 2 n \sum_{i=0}^n C_n^i=2^n i=0nCni=2n

左边的柿子表示从 n n n 个里面选若干个的方案数,那么每个物品有选和不选 2 2 2 种状态,所以总方案数为 2 n 2^n 2n

4、范德蒙恒等式

组合数的应用很广,很多东西里面都有它的身影。比如说二项式定理呀、二项式反演呀、卡特兰数呀……

这个东西就是学习组合数学的基石了,尽早掌握很重要。

安利:数论基础

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值