文章目录
-
- 两类基本计数原理
-
- 排列组合
-
- 排列
-
- 组合
-
- 排列数和组合数公式的逆用
- 笔算或口算中的排列组合
两类基本计数原理
- 以下两种计数原理是解决计数问题的最基本理论依据
- 它们分别给出了"分类"和"分步"完成一件事(任务)的方法总数的计算方法
分类加法计数原理
- 完成任务A有 n n n类办法,第 i i i类办法中有 m i m_i mi种不同的方法 ( i = 1 , 2 , ⋯ , n ) (i=1,2,\cdots,n) (i=1,2,⋯,n),那么完成A的方法数有 N = ∑ i = 1 n m i N=\sum_{i=1}^{n}m_i N=∑i=1nmi
分类乘法计数原理
- 完成任务B有n个步骤,第 i i i个步骤有 m i m_i mi种不同的方法,则完成B的方法数有 N = ∏ i = 1 n m i N=\prod_{i=1}^{n}m_i N=∏i=1nmi
- 注意,乘法原理是各个步骤之间的顺序的,如果对调两个步骤仍能得到一样的效果,则该问题不是乘法原理能直接使用范围
-
例如组合问题:设有 a , b , c a,b,c a,b,c三个球,从中取出2个球可以产生多少种可能?
-
分步骤:第1步取第1个球,第2步取第2个球
-
连乘:得到的结果是 3 × 2 3\times{2} 3×2=6种
-
枚举这些可能:
-
容易发现,其中ab,ba是同一组合ac,ca是同一组合;bc,cb是同一组合
-
后面将介绍如何间接地利用乘法原理来计算组合数
小结
- 分类问题中,各类方法种的任意一种方法都可以把任务完成
- 分步问题中,每个步骤的任何一种方法都不能把这件事完成,只有把所有步骤依次全部完成,才能算把任务完成
- 在计数完成任务的方法总数时,所有方法必须完成任务的所有步骤,才算合格的方法能被计入总数(分类任务可以理解为步骤只有"一步"的的分步问题)
排列组合
-
排列与组合都是基于乘法计数原理的经典计数模型
-
从A,B,C球中任意取2个放入X,Y两个盒子中,这件事情有多少种做法?
- 这个事情有两个步骤,:
- 取2个球
- 将2个球放入两个盒子
- 还可以这样划分步骤:
- 先取一个球放入盒子X中
- 再取下一个球放入另一个盒子Y中
- 上面两种步骤的划分方式不同在于:
- 第1种两个步骤操作相差较大,将取球和放盒分开了
- 第1步有3种可能(A,B),(A,C),(B,C)
- 第2步,将2个选好的球放入2个盒子种有2种可能
- 第2种两个步骤内容操作基本一样,都是取球并放盒
- 第1步X盒中可能放入A,B,C中的一个,有3种可能
- 第2步剩下2个球中取一个放入Y,有2种可能
- 综上,有 3 × 2 = 6 3\times{2}=6 3×2=6种
- 这类问题,球的数量比盒子多,每个盒子都要放球,所以逐个地考虑盒子可以放入球的可能比逐个考虑球放入盒子的方式更合适
元素
- 上例中"取球入盒"类型的问题,我们把被取的对象称为元素,放入的盒子抽象为位置(还可以理解为顺序)
- 上例用元素抽象重新描述为:3个不同元素,任意取2个分别占据既有2个位置中的一个
排列
- 从 n n n个不同元素中任意取 m ( m ⩽ n ) m(m\leqslant{n}) m(m⩽n)个元素,并按照一定的顺序成一列,称为从 n n n个不同元素中取 m m m个元素的一个排列
- 两个排列相同含义为:组成排列的元素相同,并且元素的排列顺序也相同
- 一个排列对应完成一个事件的方法
排列数
- 从 n n n个不同元素中取出 m ( m ⩽ n ) m(m\leqslant{n}) m(m⩽n)个元素的所有排列的个数,叫做从n个不同元素中取出 m m m个元素的排列数(排列个数的简称),通常用 A n m A_n^{m} Anm表示(A是英文Arrangement的首字母,有时也用 P n m P_{n}^{m} Pnm表示(P是Permutation的首字母))
- A n m A_{n}^{m} Anm也可以表示完成某个事件有 m m m步骤,且第 i i i个步骤有 n + 1 − i n+1-i n+1−i种方式完成,则完成m个步骤的方法数可以表示为以下 m m m个数值的乘积
- n n n
- n − 1 n-1 n−1
- ⋯ \cdots ⋯
- n − ( m − 1 ) n-(m-1) n−(m−1)
- 即 A n m = ∏ i = 1 m ( n + 1 − i ) A_{n}^{m}=\prod_{i=1}^{m}(n+1-i) Anm=∏i=1m(n+1−i)= n ! ( n − m ) ! \frac{n!}{(n-m)!} (n−m)!n!
全排列
- 从n个元素中取出n个元素(全部元素)构成的排列,称为这n个元素的全排列
- 此时排列数公式中 m = n m=n m=n, A n n = n ! A_n^{n}=n! Ann=n!
排列数性质
- A n m + m A n m − 1 = A n + 1 m A_n^m+mA_n^{m-1}=A_{n+1}^m Anm+mAnm−1=An+1m
从计数原理角度解释该公式
- 设原元素集A中有n个元素,编号为 1 , ⋯ , n 1,\cdots,n 1,⋯,n
- 现在,为集合添加一个新的元素(第 n + 1 n+1 n+1个元素),得到元素集合B,显然 B = A ∪ { n + 1 } B=A\cup{\{n+1\}} B=A∪{n+1}, A ⊂ B A\sub{B} A⊂B
- 从B中选出m个元素记为 A n + 1 m A_{n+1}^{m} An+1m,其中包括两类
- 取出的m个元素不包含第 n + 1 n+1 n+1号元素,仅从A中选出 m m m个元素,共有 A n m A_{n}^{m} Anm种排列
- 取出的m个元素包含第 n + 1 n+1 n+1号元素,其余 m − 1 m-1 m−1个元素来自于A,共有 A n m − 1 A_{n}^{m-1} Anm−1种排列法,考虑将第 n + 1 n+1 n+1号元素放置在长度为 m m m的排列中有 m m m种可能,(或者元素插入到来自A的 m − 1 m-1 m−1个元素有 m − 1 + 1 = m m-1+1=m m−1+1=m种插法),因此这类情况会产生 m A n m − 1 mA_{n}^{m-1} mAnm−1种排列;其他方法:先将所有元素取好,从而 A A A中取出 m − 1 m-1 m−1个元素共有 C n m − 1 C_{n}^{m-1} Cnm−1种取法;第 m m m个球只能是第 n + 1 n+1 n+1号球,只有 C 1 1 C_{1}^{1} C11= 1 1 1种取法;将这 m m m个球做排列共有 A m m A_{m}^{m} Amm种排列方法;从而有乘法原理,共有 C n m − 1 C 1 1 A m m C_{n}^{m-1}C_{1}^{1}A_{m}^{m} Cnm−1C11Amm= m ⋅ n ! ( n − ( m − 1 ) ) ! m\cdot\frac{n!}{(n-(m-1))!} m⋅(n−(m−1))!n!= m A n m − 1 mA_{n}^{m-1} mAnm−1
- 从而有等式 A n m + m A n m − 1 = A n + 1 m A_n^m+mA_n^{m-1}=A_{n+1}^m Anm+mAnm−1=An+1m成立
从排列数展开公式推导
- A n m + m A n m − 1 = n ! ( n − m ) ! + m n ! ( n − m + 1 ) ! = n ! ( n − m + 1 ) + n ! ⋅ m ( n − m + 1 ) ! = n ! ( n − m + 1 ) + n ! ⋅ m ( n − m + 1 ) ! = ( n + 1 ) n ! [ ( n + 1 ) − m ] ! = ( n + 1 ) ! [ ( n + 1 ) − m ] ! = A n + 1 m \begin{aligned} A_n^m+mA_n^{m-1}=&\frac{n!}{(n-m)!}+m\frac{n!}{(n-m+1)!}\\ =&\frac{n!(n-m+1)+n!\cdot{m}}{(n-m+1)!}\\ =&\frac{n!(n-m+1)+n!\cdot m}{(n-m+1)!}\\ =&\frac{(n+1)n!}{[(n+1)-m]!}\\ =&\frac{(n+1)!}{[(n+1)-m]!}\\ =&A_{n+1}^{m} \end{aligned} Anm+mAnm−1======(n−m)!n!+m(n−m+1)!n!(n−m+1)!n!(n−m+1)+n!⋅m(n−m+1)!n!(n−m+1)+n!⋅m[(n+1)−m]!(n+1)n![(n+1)−m]!(n+1)!An+1m
组合
- 从 n n n个不同元素中任意取出 m ( m ⩽ n ) m(m\leqslant{n}) m(m⩽n)个元素并成一组,称为从 n n n个不同元素中任取m个元素的一个组合
- 组合不强调组合内元素的顺序,如果组合内的元素相同,即使元素间顺序有所不同,仍然视为同一个组
- 排列可以看作是一种带有组内顺序的组合
- 一个组合也是完成事情的一种方法
组合数
- 从 n n n个不同元素中任意取出 m ( m ⩽ n ) m(m\leqslant{n}) m(m⩽n)个元素的所有可能的组合的个数,称为组合数("组合个数"的简称),用符号 C n m C_n^m Cnm(Combination)或国际上更习惯用 ( n m ) \binom{n}{m} (mn),(组合数和二项式系数(binomial coefficient有密切关系)
组合数与排列数的关系
-
组合数不像排列数那样容易定义完成事件的m个步骤,比排列数要抽象许多
-
但是我们根据组合数和排列数的定义,容易得到关于组合数和排列数的关系
- A n m = C n m A m m A_n^m=C_n^mA_m^m Anm=CnmAmm这个式子表示,从n个元素中抽取m个元素构成的排列数 A n m A_n^m Anm等于从 n n n个元素中抽取m个元素的组合数乘以各组内包含的长度为m的排列数 A m m A_m^m Amm;根据乘法计数原理可知,等式成立
- 利用则个关系式,可以得到组合数的计算方法(公式)
-
从n个不同元素中任取m个元素排列,可以分2步完成:
- 选取元素:从n个不同元素中,任取m个元素的组合,有 C n m C_n^m Cnm种方法
- 排位置:对选中的m个元素进行全排列,有 A m m = m ! A_m^m=m! Amm=m!种方法
-
可见, C n m = A n m A m m C_n^m=\frac{A_n^m}{A_m^m} Cnm=AmmAnm= 1 m ! n ! ( n − m ) ! \frac{1}{m!}\frac{n!}{(n-m)!} m!1(n−m)!n! (0)
- = n ( n − 1 ) ⋅ ( m + 1 ) ( n − m ) ! =\frac{n(n-1)\cdot(m+1)}{(n-m)!} =(n−m)!n(n−1)⋅(m+1)
(1)
- = n ( n − 1 ) ⋯ ( n − m + 1 ) m ! =\frac{n(n-1)\cdots(n-m+1)}{m!} =m!n(n−1)⋯(n−m+1)
(2)
- 形式1中,分子分母各有 n − m n-m n−m项
- 形式2中,分子分母各有 m m m项,
-
当m较小的时候,通常采用形式2进行笔算或口算,m较大时(或说 ( n − m + 1 ) (n-m+1) (n−m+1)较小),采用形式1计算
- 在组合数性质中,我们将重新提及这个问题
- 例如: C 5 2 = 5 × 4 2 × 1 = 10 C_5^2=\frac{5\times{4}}{2\times{1}}=10 C52=2×15×4=10;用形式1也可以算: C 5 2 = 5 × 4 × 3 3 × 2 × 1 C_5^2=\frac{5\times{4}\times{3}}{3\times{2}\times{1}} C52=3×2×15×4×3= 10 10 10
-
由形式0,当 m = n m=n m=n时,由于 0 ! = 1 0!=1 0!=1,所以 C n n = 1 C_n^n=1 Cnn=1;当 m = 0 m=0 m=0时, C n 0 = 1 C_n^0=1 Cn0=1,可见 C n 0 = C n n = 1 C_n^0=C_n^n=1 Cn0=Cnn=1
-
对于组合数 C n m C_n^m Cnm, m ∈ N , n ∈ N + m\in\mathbb{N},n\in\mathbb{N^+} m∈N,n∈N+, m ⩽ n m\leqslant{n} m⩽n
-
C n m = 1 m ! n ! ( n − m ) ! = 1 ∏ k = 1 m k ⋅ ∏ k = 1 m ( n − k + 1 ) = ∏ k = 1 m k − 1 ∏ k = 1 m ( n − k + 1 ) = ∏ k = 1 m ( n − k + 1 ) k \begin{aligned} C^m_n=&\frac{1}{m!}\frac{n!}{(n-m)!} \\ =&\frac{1}{\prod\limits_{k=1}^{m}k}\cdot \prod_{k=1}^{m}{(n-k+1)} \\ =&{\prod\limits_{k=1}^{m}k^{-1}} \prod_{k=1}^{m}{(n-k+1)} \\ =&\prod_{k=1}^{m}\frac{(n-k+1)}{k} \end{aligned} Cnm====m!1(n−m)!n!k=1∏mk1⋅k=1∏m(n−k+1)k=1∏mk−1k=1∏m(n−k+1)k=1∏mk(n−k+1)
-
可见,组合数的展开算式分子和分母都有m项因子
-
可通过对排列数进行去序
来得到对应的组合数结果
组合数的性质
- C n m = C n n − m C^m_n=C^{n-m}_{n} Cnm=Cnn−m
- C n m + C n m − 1 = C n + 1 m C^m_n+C^{m-1}_{n}=C^m_{n+1} Cnm+Cnm−1=Cn+1m
- ∑ i = 0 n C n i = ( 1 + 1 ) n = 2 n \sum_{i=0}^{n}C_n^{i}=(1+1)^n=2^{n} ∑i=0nCni=(1+1)n=2n
- C n + m k = ∑ i = 0 k C n i C m k − i C_{n+m}^{k}=\sum_{i=0}^{k}C_{n}^{i}C_{m}^{k-i} Cn+mk=∑i=0kCniCmk−i
计数原理的方法证明
- (1):从n个不同元素取出m个的组合后剩余n-m个元素,这n-m个元素构成长度为n-m的组合,这相当于从n个不同元素取出 m m m个元素等价于从n个不同元素中保留 n − m n-m n−m个元素,所以 C n m = C n n − m C_n^m=C_n^{n-m} Cnm=Cnn−m
- (2):设原元素集A中有n个元素,编号为 1 , ⋯ , n 1,\cdots,n 1,⋯,n
- 现在,为集合添加一个新的元素(第 n + 1 n+1 n+1个元素),得到元素集合B,显然 B = A ∪ { n + 1 } B=A\cup{\{n+1\}} B=A∪{n+1}, A ⊂ B A\sub{B} A⊂B
- 从B中选出m个元素记为 C n + 1 m C_{n+1}^m Cn+1m,其中包括两类
- 取出的m个元素不包含第 n + 1 n+1 n+1号元素,仅从A中选出 m m m个元素,共有 C n m C_{n}^{m} Cnm种组合
- 取出的m个元素包含第 n + 1 n+1 n+1号元素,其余 m − 1 m-1 m−1个元素来自于A,共有 C n m − 1 C_n^{m-1} Cnm−1中取法
- Note:本组合数性质和排列数性质中的 A n m + m A n m − 1 = A n + 1 m A_n^m+mA_n^{m-1}=A_{n+1}^m Anm+mAnm−1=An+1m相似但不同,组合没有元素顺序之分,因此 C n m 1 C_n^{m_1} Cnm1没有乘以顺序系数 m m m
- (3)使用二项式定理显然
- (4)可以从概率论的角度证明,也可以构造两个集合: A = { a 1 , ⋯ , a n } A=\set{a_1,\cdots,a_n} A={a1,⋯,an}; B = { b 1 , ⋯ , b m } B=\set{b_1,\cdots,b_m} B={b1,⋯,bm}
- 从中抽出 k k k个的方法有 ( n + m k ) \binom{n+m}{k} (kn+m)个,可以分为 A , B A,B A,B中分别取 i , k − i i,k-i i,k−i个:
- 由乘法原理 ( n i ) ( m k − i ) \binom{n}{i}\binom{m}{k-i} (in)(k−im)
- 再由加法原理: ∑ i = 0 k ( n i ) ( m k − i ) \sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i} ∑i=0k(in)(k−im)
- 所以 C n + m k = ∑ i = 0 k C n i C m k − i C_{n+m}^{k}=\sum_{i=0}^{k}C_{n}^{i}C_{m}^{k-i} Cn+mk=∑i=0kCniCmk−i
纯代数方法证明
-
C n m = n ! m ! ( n − m ) ! C n n − m = n ! ( n − m ) ! ( n − ( n − m ) ) ! = n ! ( n − m ) ! m ! ∴ C n m = C n n − m C_n^m=\frac{n!}{m!(n-m)!} \\ C_n^{n-m}=\frac{n!}{(n-m)!(n-(n-m))!}=\frac{n!}{(n-m)!m!} \\ \therefore{C_n^m=C_n^{n-m}} Cnm=m!(n−m)!n!Cnn−m=(n−m)!(n−(n−m))!n!=(n−m)!m!n!∴Cnm=Cnn−m
-
L H S = A n m m ! + A n m − 1 ( m − 1 ) ! = A n m + A n m − 1 × m m ! = n ! ( n − m ) ! + n ! ( n − ( m − 1 ) ) ! × m m ! = ( n − m + 1 ) × n ! ( n − m + 1 ) × ( n − m ) ! + n ! ( n − m + 1 ) ) ! × m m ! = ( n − m + 1 ) × n ! ( n − m + 1 ) ! + n ! × m ( n − m + 1 ) ! m ! = n ! × ( ( n − m + 1 ) + m ) ( n − m + 1 ) ! m ! = ( n + 1 ) × n ! ( n − m + 1 ) ! m ! = ( n + 1 ) ! ( n − m + 1 ) ! m ! ∴ C n m + C n m − 1 = C n + 1 m \\ \begin{aligned} LHS=&\frac{A^m_n}{m!}+\frac{A^{m-1}_{n}}{(m-1)!} \\=&\frac{A^m_n+A^{m-1}_n\times m}{m!}\\ =&\frac{\frac{n!}{(n-m)!}+\frac{n!}{(n-(m-1))!}\times m}{m!} \\ =&\frac{\frac{(n-m+1)\times n!}{(n-m+1)\times (n-m)!}+\frac{n!}{(n-m+1))!}\times m}{m!}\\ =&\frac{\frac{(n-m+1)\times n!}{(n-m+1)!}+\frac{n!\times m}{(n-m+1)!}}{m!}\\ =&\frac{\frac{n!\times ((n-m+1)+m)}{(n-m+1)!}}{m!} \\ =&\frac{\frac{ (n+1)\times n!}{(n-m+1)!}}{m!}\\ =&\frac{\frac{ (n+1)!}{(n-m+1)!}}{m!} \end{aligned} \\\therefore{C^m_n+C^{m-1}_{n}=C^m_{n+1}} LHS========m!Anm+(m−1)!Anm−1m!Anm+Anm−1×mm!(n−m)!n!+(n−(m−1))!n!×mm!(n−m+1)×(n−m)!(n−m+1)×n!+(n−m+1))!n!×mm!(n−m+1)!(n−m+1)×n!+(n−m+1)!n!×mm!(n−m+1)!n!×((n−m+1)+m)m!(n−m+1)!(n+1)×n!m!(n−m+1)!(n+1)!∴Cnm+Cnm−1=Cn+1m
排列数和组合数公式的逆用
推导某些排列组合公式时,从阶乘的分式化为排列数或组合数
- p ! q ! \frac{p!}{q!} q!p!= p ! ( p − ( p − q ) ) ! \frac{p!}{(p-(p-q))!} (p−(p−q))!p!= A p p − q A_{p}^{p-q} App−q
- n ! m ! ( n − m ) ! \frac{n!}{m!(n-m)!} m!(n−m)!n!= C n m C_{n}^{m} Cnm
- 例如: 5 ! 2 ! \frac{5!}{2!} 2!5!= A 5 3 A_{5}^{3} A53; 5 ! 2 ! 3 ! \frac{5!}{2!3!} 2!3!5!= C 5 2 C_{5}^{2} C52
笔算或口算中的排列组合
- 当 n , m n,m n,m不太大时的计算建议(通常 m ⩽ n m\leqslant{n} m⩽n)
- 排列数: A n m A_n^m Anm= n ( n − 1 ) ⋯ ( n − m + 1 ) n(n-1)\cdots(n-m+1) n(n−1)⋯(n−m+1),即有从n开始写,连写m项相乘即可
- 例如 A 6 2 A_6^2 A62= 6 × 5 6\times{5} 6×5,从6开始写,写两项即可
- 容易发现,当 m m m比较大时公式展开的乘法链就比较长,计算 A n m A_{n}^{m} Anm的计算量就比较大,比如 A n n = n ! A_{n}^{n}=n! Ann=n!
- 组合数: C n m C_{n}^{m} Cnm= ( n m ) \binom{n}{m} (mn)= A n m m ! \frac{A_n^m}{m!} m!Anm= = n ( n − 1 ) ⋯ ( n − m + 1 ) m ! =\frac{n(n-1)\cdots(n-m+1)}{m!} =m!n(n−1)⋯(n−m+1),即从n开始写,连写m项相乘作为分子,分母就是 m ! m! m!(从m开始写,写m项连乘)
- 当 m m m较大,而 n − m n-m n−m较小时,则考虑利用公式 C n m C_{n}^{m} Cnm= C n n − m C_{n}^{n-m} Cnn−m来计算
- 例如 ( 6 4 ) \binom{6}{4} (46)= ( 6 2 ) \binom{6}{2} (26)= 6 × 5 2 × 1 \frac{6\times{5}}{2\times{1}} 2×16×5= 15 15 15