【笔记】组合数学

不破不立,重新记


计数原理

加法原理

做一件事,有n类办法,第i类办法有mi种不同的方法,做这件事总共有多少种方案?

我们设总方案数为N,则N满足:

N=m1+m2+m3+......+mn1+mn

我们称此为加法原理

乘法原理

做一件事,需要完成n个子步骤,第i个子步骤有mi种不同的方法,做这件事总共有多少种方案?

我们设总方案为N,则N满足:

N=m1×m2×m3×......×mn1×mn

我们乘此为乘法原理

抽屉原理

n+1个物品放入n个抽屉里,至少有一个抽屉里的物品放不少于2个物品。

如果每个抽屉代表一个集合,每一个物品就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。

容斥原理

在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。---------百度百科。

要注意计数时没有重复没有遗漏,具体问题需要具体对待。

排列

排列数

n个物品,从中取k个出来,方案数为多少?(若先后顺序不同,视为两种方案)

我们设方案数为A,从n个物品里选k个的方案数为Ank,则:
Ank=n(n1)(n2)......(nk+1)=n!(nk)!

我们称Ank为从n个不同元素中取k个元素的排列数

注:m<=n

推导:

我们可以把取物过程分为k个步骤。

第一步,从n个物品中取走一个,有n种取法

第二步,从n1个物品中取走一个,有n1种取法

i步,从ni个物品中取走一个,有ni种取法

nk+1步,从1个物品中取走一个,有1种取法

根据乘法原理,可得Ank=n(n1)(n2)......(nk+1)=n!(nk)!

一个公式:

Ank + kAnk1 = An+1k

证明:

Ank+kAnk1=n!(nk)!+kn!(n+1k)!

=n!(nk)!(1+k(n+1k))

=n!(nk)!n+1n+1k

=(n+1)!(n+1k)!=An+1k

圆排列

n个物品,从中取k个出来并不分手尾的排列成一个圆,问方案数有多少?

Ank=n!(nk)!×k

组合

组合数

n个物品,从中取k个出来,方案数为多少?(若前后顺序不同,视为一种方案)

我们定义方案数为Cnk或者(nk)

我们称Cnk或者(nk)为从n个元素中取k个元素的组合数

注:此处k<=n
Cnk=(nk)=n!k!(nk)!

插板法

n个小球,放入k个箱子里,要求每个箱子至少放入一个(n>=k),有多少种放法?

我们把n个小球排成一排,每两个小球之间会有一个空隙,共有n1个空隙,我们把箱子当做隔板,插入到空隙里,只要插入k1次就能把球分成k份。

所以总方案数为:

Cn1k1

如果我们把"每个箱子至少放入一个小区"这样条件去掉,结果如何?

在上种情况的基础上,我们还可以把多个板子插在同一个空隙中,多了k个可以插的地方,所以答案为:

Cn+k1k1

组合数的性质:

性质一:

Cn+mn=Cn+mm

实际意义:从n+m个元素中取n个元素的方案数,等于从中取m个元素剩下n个元素的方案数

性质二:

Cnm=Cn1m1+Cm1m

推导:

(n1)!(m1)!(nm)!+(n1)!m!(nm1)!=n!m!(nm)!

实际意义:从n个元素里选m个元素,每一个元素有选和不选两种情况,如果选,那么还要在剩下的n1个元素中选m1个元素;如果不选,那么还要在剩下的n1个元素中选m1个元素。两种情况是并列关系,根据加法原理,总方案数等于两种情况方案数之和。

性质三:

Cn0+Cn1+Cn2+......+Cnn=2n

实际意义:在n个元素中选出任意个元素的方案数。

总共有n种元素,每种元素都有选和不选两种情况,根据乘法原理,总共有2n种情况。

卢卡斯定理

Lucas 定理用于求解大组合数取模的问题,其中模数必须为素数。公式如下:

Cnm=Cn/pm/p×Cn%pm%p

也可以写作

Lucas(n,m)=Lucas(n/p,m/p)×Lucas(n%p,m%p)

其中%mod运算,p为素数。特别的,Lucas(n,0)=1

卢卡斯定理一般应用于模数很大的情况下,若模数较小,则可以预处理1p1的阶乘和逆元进行优化。

posted @   int_Hello_world  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示