数学基础知识-排列与组合


前言

排列和组合是组合学基本概念。
难学只是因为概念上比较难理解,没有对排列和组合形成的实体感受。
做个小实验:
1个盒子,盒子里放置4个带编号球,一定是带编号的球。
什么是排列,在盒子依次取出2个球的不同结果共有12种。

A 4 2 = 4 ! ( 4 − 2 ) ! = 4 ∗ 3 ∗ 2 ∗ 1 2 ∗ 1 = 12 A_4^2=\frac {4!}{(4-2)!}=\frac {4*3*2*1}{2*1}=12 A42=(42)!4!=214321=12
什么是组合,在盒子依次取出2个球的不同结果组合共有6种。

C 4 2 = A 4 2 A 4 4 = 4 ! ( 4 − 2 ) ! 2 ! = 4 ! ( 4 − 2 ) ! 2 ! = 4 ∗ 3 ∗ 2 ∗ 1 2 ∗ 1 ∗ 2 ∗ 1 = 6 C_4^2=\frac {A_4^2}{A_4^4}=\frac {\frac {4!}{(4-2)!}} {{2!}}=\frac {4!}{(4-2)!2!}=\frac {4*3*2*1}{2*1*2*1}=6 C42=A44A42=2!(42)!4!=(42)!2!4!=21214321=6

单学排列,单学组合都不难,但是因为两者数学概念定义严谨复杂,大家搞不懂概念,很难学。
我有一个简单方法动手做实验,买些兵乓球
先介绍分类相乘原理——介绍排列定义——用分步相乘原理理解排列——通过排列理解分组。

一、分步乘法原理

1.定义

定义:做一件事,完成它需要n个步骤,在第1步骤中有m1种的方法;第2步骤中有m2种不同的方法…第m步骤中mn种不同的方法,那么完成这件事情共有m1xm2x…xmn种不同方法。
方法总数 = 每一步骤的方法数的积 = m 1 ∗ m 2 ∗ . . . m n 方法总数=每一步骤的方法数的积=m_1*m_2*...m_n 方法总数=每一步骤的方法数的积=m1m2...mn

2.举例

举例:从广州出发要经过中转站上海再去北京。
要完成这件事,有两个步骤
第一步骤:从广州坐动车去上海;从广州坐火车去上海;从广州坐飞机去上海(共3种方法)
第二步骤:从上海坐动车去北京;从上海坐飞机去北京(共2种方法)
按照分步乘法原则,要完成这件事,有2*3=6种方法。

坐动车
坐火车
坐飞机
坐动车
坐飞机
广州
上海
北京

二、排列

1.定义

从n个不同元素中,任取m(m≤n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列。简单来说,

从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,记做
A n m A_n^m Anm

2.计算公式

A n m = n ! ( n − m ) ! A_n^m=\frac {n!}{(n-m)!} Anm=(nm)!n!

3.举例分析

问题:盒子里有3个球分别标上a,b,c号,现在依次取出2个球组成排列,请问有多少种排列?
穷举法:
(a,b)(a,c)
(b,a)(b,c)
(c,a)(c,a)
注意是依次
按照分步骤完成这件事情:
第1步骤:盒子有3个球,抽取出1个球,有3种情况。
第2步骤:现在盒子有2个球,抽取出1个球有2种情况。
根据分步相乘原理:3x2=6
A 3 2 = 3 ∗ 2 = 6 A_3^2=3*2=6 A32=32=6

4.公式推导过程

按照定义,排列数是等于从n到n-(m-1)之间所有数相乘的积(共有m项)。
所以有公式一(乘数版):
A n m = n ∗ ( n − 1 ) ( n − 2 ) . . . ( n − ( m − 1 ) ) A_n^m=n*(n-1)(n-2)...{(n-(m-1))} Anm=n(n1)(n2)...(n(m1))
实际上,我们对于计算一些简单A(6,2)、A(5,4)这些乘数项数很少的排列数直接使用定义就是公式一:
A 6 2 = 6 ∗ 5 = 30 A_6^2=6*5=30 A62=65=30
A 5 4 = 5 ∗ 4 ∗ 3 ∗ 2 = 120 A_{5}^4=5*4*3*2=120 A54=5432=120

但是排列数计算数字很大就需要用阶乘版计算公式,这是我们常用的公式。(科学计算器上阶乘运算,大的数直接可以摁计算器来计算)


阶乘定义,从1相乘到n的积就是n的阶乘。如:
3!=3x2x1=6;
4!=4x3x2x1=24;
公式是n!=n*(n-1)*…*1。


我们通过排列数公式一(乘数版),推导排列数公式二(阶乘版):

第一步把最后一项括号去掉:(n-(m-1))=(n-m+1))
A n m = n ∗ ( n − 1 ) . . . ( n − ( m − 1 ) ) = n ∗ ( n − 1 ) . . . ( n − m + 1 ) ) A_n^m=n*(n-1)...{(n-(m-1))}= n*(n-1)...(n-m+1)) Anm=n(n1)...(n(m1))=n(n1)...(nm+1))
第二步:分子分母都乘上(n-m)!
分子被凑成n!
即n*(n-1)…(n-m+1)(n-m)…1=n!

这样我们就推导出公式二(阶乘版):

A n m = n ∗ ( n − 1 ) . . . ( n − m + 1 ) ( n − m ) . . . 1 ( n − m ) . . . 1 = n ! ( n − m ) ! A_n^m=\frac {n*(n-1)...(n-m+1)(n-m)...1}{(n-m)...1}= \frac {n!}{(n-m)!} Anm=(nm)...1n(n1)...(nm+1)(nm)...1=(nm)!n!

三、组合

1.定义

组合(combination):从n个不同元素中每次取出m个不同元素(0≤m≤n),不管其顺序合成一组,称为从n个元素中不重复地选取m个元素的一个组合。所有这样的组合的总数称为组合数,

2.计算公式

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

3.举例分析

盒子有3个球:A、B、C,取出2个球有多少种组合方法。
穷举法:
AB AC BC 共三种组合
组合的有多少种方法怎么理解。虽然可以举例,但是想要直接把内在原理说清楚,做不到,这里可以用组合的公式借助排列来倒推理解。
C n m = A n m A m m C_n^m=\frac {A_n^m}{A_m^m} Cnm=AmmAnm
假如取2个球按照1个个来取,那么
A 3 2 = 3 ∗ 2 A_3^2=3*2 A32=32
结果是AB AC BA BC CA CB 六种方法
按照组合的概念,不按顺序,那么AB和BA、AC和CA、CB和BC两两相同。
就是抽取出来6种方法,实际上结果是进行两两排列。
A 2 2 = 2 ∗ 1 = 2 A_2^2=2*1=2 A22=21=2
那么我们理解:求组合我们找到他们的排列6种方法,但是组合不按顺序,我们去掉不按顺序,去掉重复,用除法,除以2个球排列方法数。
C 3 2 = A 3 2 A 2 2 = 3 ∗ 2 2 = 3 C_3^2=\frac {A_3^2}{A_2^2}=\frac {3*2}{2}=3 C32=A22A32=232=3
这个理解很难,但是多演练就是慢慢明白。
比如:盒子4个球:ABCD,抽取2个,有多少种组合?
结果是:
AB AC AD
BC BD
CD
C 4 2 = A 4 2 A 2 2 = 4 ∗ 3 2 = 6 C_4^2=\frac {A_4^2}{A_2^2}=\frac {4*3}{2}=6 C42=A22A42=243=6
比如:盒子5个球:ABCDE,抽取3个,有多少种组合?
结果是:
AB AC AD AE
BC BD BE
CD CE
DE
C 5 3 = A 5 3 A 3 3 = 5 ∗ 4 ∗ 3 3 ∗ 2 = 10 C_5^3=\frac {A_5^3}{A_3^3}=\frac {5*4*3}{3*2}=10 C53=A33A53=32543=10

4.其他一些规定和转换

我们规定了
C n 0 = 1 C_n^0=1 Cn0=1
组合公式推导公式
C n m = C n n − m C_n^m=C_n^{n-m} Cnm=Cnnm
怎么理解,盒子3个球,抽取2个的组合方法数,倒过来思考是不是等同于3个球留1个的组合方法。想不通就硬想,接不了就硬接。
C 3 2 = C 3 1 C_3^2=C_3^1 C32=C31


总结

我在看python的hash()函数不太明白,找了数据结构书来看,然后又看到哈希表建立的思想描述,提到哈希表大小怎么测算,用到了组合思想,特此把排列这块知识也学了一遍。
第一次写太详细也太复杂,现在删掉一部分内容,删掉了分类相加原理解释,不展开排列组合的分堆问题,也删掉排列公式一如何记忆技巧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值