排列组合数的一些公式

绪论:加法原理、乘法原理#

分类计数原理:做一件事,有n类办法,在第1类办法中有m1种不同的方法,在第2类办法中有m2种不同的方法,…,在第n类办法中有mn种不同的方法,那么完成这件事共有N=m1+m2++mn种不同的方法。

分步计数原理:完成一件事,需要分成n个步骤,做第1步有m1种不同的方法,做第2步有m2种不同的方法,…,做第n步有mn种不同的方法,那么完成这件事共有N=m1×m2××mn种不同的方法。

区别:分类计数原理是加法原理,不同的类加起来就是我要得到的总数;分步计数原理是乘法原理,是同一事件分成若干步骤,每个步骤的方法数相乘才是总数。

排列问题#

排列数#

n个不同元素种取出m(mn)个元素的所有不同排列的个数,叫做从n个不同元素种取出m个元素的排列数,用符号Anm表示。

排列数公式#

Anm=n(n1)(n2)(nm+1)=n!(nm)!,n,mN,并且mn

(规定0!=1

推导:把n个不同的元素任选m个排序,按计数原理分步进行

取第一个:有n种取法;
取第二个:有(n1)种取法;
取第三个:有(n2)种取法;
……
取第m个:有(nm+1)种取法;

根据分步乘法原理,得出上述公式。

排列数性质#

Anm=nAn1m1 可理解为“某特定位置”先安排,再安排其余位置。

Anm=mAn1m1+An1m 可理解为:含特定元素的排列有mAn1m1,不含特定元素的排列为An1m

组合问题#

组合数#

n个不同元素种取出m(mn)个元素的所有不同组合的个数,叫做从n个不同元素种取出m个元素的组合数,用符号Cnm表示。

组合数公式#

Cnm=AnmAmm=n(n1)(n2)(nm+1)m!=n!m!(nm)!,n,mN,并且mn

Cn0=Cnn=1

证明:利用排列和组合之间的关系以及排列的公式来推导证明。

将部分排列问题Anm分解为两个步骤:

第一步,就是从n个球中抽m个出来,先不排序,此即组合数问题Cnm

第二步,则是把这m个被抽出来的球排序,即全排列Amm

根据乘法原理,Anm=CnmAmm,那么

Cnm=AnmAmm=n(n1)(n2)(nm+1)m!=n!m!(nm)!

组合数的性质#

Cnm=Cnnm 可以理解为:将原本的每个组合都反转,把原来没选的选上,原来选了的去掉,这样就变成从n个元素种取出nm个元素,显然方案数是相等的。

递推公式Cnm=Cn1m+Cn1m1 可理解为:含特定元素的组合有Cn1m1,不含特定元素的排列为Cn1m。还不懂?看下面。

Example

从1,2,3,4,5(n=5)中取出2(m=2)个元素的组合(Cnm):

12 13 14 15 23 24 25 34 35 45

显然,这些组合中要么含有元素“1”,要么不含。

  • 其中含有“1”的是:12 13 14 15

    把里面的“1”都挖掉:2 3 4 5

    而上面这个等价于从2,3,4,5(n1)中取出1(m1)个元素的组合。

  • 其中不含“1”的是:23 24 25 34 35 45
    上面等价于从2,3,4,5(n1)中取出2(m)个元素的组合。

而总方案数等于上面两种情况方案数之和,即Cnm=Cn1m+Cn1m1

组合数求和公式#

Cn0+Cn1+Cn2++Cnn=2n

我们感性认知一下,上面这个式子的左边表示什么呢?

把从n个球中抽出0个球的组合数(值为1)、抽出1个球的组合数、抽出2个球的组合数、……、抽出n个球的组合数相加。

换句话说,就是从n个球中随便抽出一些不定个数球,问一共有多少种组合。

对于第1个球,可以选,也可以不选,有2种情况。
对于第2个球,可以选,也可以不选,有2种情况。
对于任意一个球,可以选,也可以不选,有2种情况。

根据乘法原理,一共2×2××2n个2相乘=2n种组合。

想要严谨的证明?数学归纳法:

  1. n=1时,C10+C11=2=21成立。
  2. 假设n=k(kN)时等式成立,即

    i=0kCki=2n

    成立,当n=k+1时,

    Ck+10+Ck+11+Ck+12++Ck+1k+Ck+1k+1=Ck+10+(Ck0+Ck1)+(Ck1+Ck2)++(Ckk1+Ckk)+Ck+1k+1=(Ck0+Ck1+Ck2++Ckk)+(Ck0+Ck1+Ck2++Ckk)=2×2k=2k+1

    等式也成立。
  3. 由1、2得,等式对nN都成立。

也可偷懒地用二项式定理证明:

(a+b)n=k=0nCnkankbk

a=b=1,就得到了

i=0nCni=2n

类似的公式(由Cnm=Cnnm推导):

Cn0+Cn2+Cn4+=Cn1+Cn3+Cn5+=2n1

杨辉三角#

这个神奇的图形和组合数、二项式定理密切相关。(图片来自百度百科)

杨辉三角可以帮助你更好地理解和记忆组合数的性质:

  1. n行的m个数可表示为 Cn1m1,即为从n1个不同元素中取m1个元素的组合数。
  2. n行的数字有n项。
  3. 每行数字左右对称(第n行的第m个数和第nm+1个数相等,Cnm=Cnnm),由1开始逐渐变大。
  4. 每个数等于它上方两数之和(第n+1行的第i个数等于第n行的第i1个数和第i个数之和,即Cn+1i=Cni+Cni1)。
  5. (a+b)n的展开式中的各项系数依次对应杨辉三角的第n+1行中的每一项(二项式定理)。

以下来自维基百科(我只是随便贴这)

二项式系数

二项式系数可排列成帕斯卡三角形。
在数学上,二项式系数是二项式定理中各项的系数。一般而言,二项式系数由两个非负整数nk为参数决定,写作,定义为的多项式展开式中,项的系数,因此一定是非负整数。如果将二项式系数写成一行,再依照顺序由上往下排列,则构成帕斯卡三角形。 (nk)(1+x)nxk(n0),(n1),,(nn)n=0,1,2,

二项式系数常见于各数学领域中,尤其是组合数学。事实上,可以被理解为从n个相异元素中取出k个元素的方法数,所以大多读作「nk」。二项式系数的定义可以推广至n是复数的情况,而且仍然被称为二项式系数。

二项式系数亦有不同的符号表达方式,包括:C(n,k)nCknCk、、[注3],其中的C代表组合(combinations)或选择(choices)。很多计算机使用含有C的变种记号,使得算式只占一行的空间,相同理由也发生在置换数,例如写作P(n,k)CnkCknPkn

定义及概念
对于非负整数nk,二项式系数定义为的多项式展开式中,项的系数,即 (nk)(1+x)nxk

(1+x)n=k=0n(nk)xk=(n0)+(n1)x++(nn)xn
事实上,若xy为交换环上的元素,则

(x+y)n=k=0n(nk)xnkyk

此数的另一出处在组合数学,表达了从n物中,不计较次序取k物有多少方式,亦即从一n元素集合中所能组成k元素子集的数量。

计算二项式系数

除展开二项式或点算组合数量之外,尚有多种方式计算的值。 (nk)

递归公式
以下递归公式可计算二项式系数:

(nk)=(n1k1)+(n1k)n,kN

其中特别指定:

(n0)=1nN{0},(0k)=0kN.

此公式可由计算(1 + X ) n −1 (1 + X )中的X k项,或点算集合{1, 2, ..., n }的k个元素组合中包含n与不包含n的数量得出。

显然,如果k > n,则。而且对所有n,,故此上述递归公式可于此等情况下中断。递归公式可用作建构帕斯卡三角形。 \tbinom nk=0\tbinom nn=1

帕斯卡三角形(杨辉三角)

有关二项式系数的恒等式

关系式

阶乘公式能联系相邻的二项式系数,例如在k是正整数时,对任意n有:

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

(nk)=nk(n1k1)

(n1k)(n1k1)=n2kn(nk)

两个组合数相乘可作变换:

(ni)(im)=(nm)(nmim)

r=0n(nr)=2n

r=0k(n+r1r)=(n+kk)

r=0nk(1)r(n+1)k+r+1(nkr)=(nk)1

r=0n(dndr)=1dr=1d(1+e2πrid)dn

i=mn(a+ii)=(a+n+1n)(a+mm1)

(a+mm1)+(a+mm)+(a+m+1m+1)+...+(a+nn)=(a+n+1n)

Fn=i=0(nii)

Fn1+Fn=i=0(n1ii)+i=0(nii)=1+i=1(nii1)+i=1(nii)=1+i=1(n+1ii)=i=0(n+1ii)=Fn+1

主条目:朱世杰恒等式

i=mn(ia)=(n+1a+1)(ma+1)

(ma+1)+(ma)+(m+1a)...+(na)=(n+1a+1)

二阶求和公式

r=0n(nr)2=(2nn)

i=0n(r1+n1ir11)(r2+i1r21)=(r1+r2+n1r1+r21)

(1x)r1(1x)r2=(1x)r1r2

(1x)r1(1x)r2=(n=0(r1+n1r11)xn)(n=0(r2+n1r21)xn)=n=0(i=0n(r1+n1ir11)(r2+i1r21))xn

(1x)r1r2=n=0(r1+r2+n1r1+r21)xn

主条目:范德蒙恒等式

i=0k(ni)(mki)=(n+mk)

三阶求和公式
主条目:李善兰恒等式

(n+kk)2=j=0k(kj)2(n+2kj2k)

## 转载自 [樱花赞](https://www.cnblogs.com/1024th/p/10623541.html)
posted @   墨镜一戴谁也不爱  阅读(734)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示