【笔记】组合数学

不破不立,重新记


计数原理

加法原理

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

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

\( N = m_1+m_2+m_3+......+m_{n-1}+m_n \)

我们称此为加法原理

乘法原理

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

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

\( N = m_1\times m_2\times m_3\times ......\times m_{n-1}\times m_n \)

我们乘此为乘法原理

抽屉原理

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

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

容斥原理

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

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

排列

排列数

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

我们设方案数为\(A\),从\(n\)个物品里选\(k\)个的方案数为\(A^{k}_{n}\),则:
\( A^{k}_{n}=n(n-1)(n-2)......(n-k+1)=\dfrac{n!}{(n-k)!} \)

我们称\(A^{k}_{n}\)为从\(n\)个不同元素中取\(k\)个元素的排列数

注:\(m<=n\)

推导:

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

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

第二步,从\(n-1\)个物品中取走一个,有\(n-1\)种取法

\(i\)步,从\(n-i\)个物品中取走一个,有\(n-i\)种取法

\(n-k+1\)步,从1个物品中取走一个,有1种取法

根据乘法原理,可得\(A^{k}_{n}=n(n-1)(n-2)......(n-k+1)=\dfrac{n!}{(n-k)!}\)

一个公式:

\(A^{k}_{n}\) + \(k*A^{k-1}_{n}\) = $A^{k}_{n+1} $

证明:

\(A^{k}_{n} + k*A^{k-1}_{n} = \dfrac{n!}{(n-k)!}+k * \dfrac{n!}{(n+1-k)!}\)

$= \dfrac{n!}{(n-k)!} * (1+ \dfrac{k}{(n+1-k)} ) $

$= \dfrac{n!}{(n-k)!}*\dfrac{n+1}{n+1-k} $

$= \dfrac{(n+1)!}{(n+1-k)!} = A^{k}_{n+1} $

圆排列

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

\( A^{k}_{n}=\dfrac{n!}{(n-k)!\times k} \)

组合

组合数

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

我们定义方案数为\(C_{n}^{k}\)或者\(\dbinom{n}{k}\)

我们称\(C_{n}^{k}\)或者\(\dbinom{n}{k}\)为从\(n\)个元素中取\(k\)个元素的组合数

注:此处\(k<=n\)
\( C_{n}^{k}=\dbinom{n}{k}=\dfrac{n!}{k!(n-k)!} \)

插板法

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

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

所以总方案数为:

\[C_{n-1}^{k-1} \]

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

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

\[C^{k-1}_{n+k-1} \]

组合数的性质:

性质一:

\[C_{n+m}^{n}=C_{n+m}^{m} \]

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

性质二:

\[C_{n}^{m}=C_{n-1}^{m-1}+C_{m-1}^{m} \]

推导:

\[\dfrac{(n-1)!}{(m-1)!(n-m)!}+\dfrac{(n-1)!}{m!(n-m-1)!}=\dfrac{n!}{m!(n-m)!} \]

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

性质三:

\[C_{n}^{0}+C_{n}^{1}+C_{n}^{2}+......+C_{n}^{n}=2^n \]

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

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

卢卡斯定理

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

\[C^{m}_{n}=C^{m/p}_{n/p}\times C^{m\%p}_{n\%p} \]

也可以写作

\[Lucas(n,m)=Lucas(n/p,m/p) \times Lucas(n\%p,m\%p) \]

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

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

posted @ 2023-05-05 21:58  int_Hello_world  阅读(23)  评论(0编辑  收藏  举报