zoukankan      html  css  js  c++  java
  • 排列组合的一些公式及推导(非常详细易懂)

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

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

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

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

    排列问题

    排列数

    (n)个不同元素种取出(m(mleq n))个元素的所有不同排列的个数,叫做从(n)个不同元素种取出(m)个元素的排列数,用符号(mathrm{A}_n^m)表示。

    排列数公式

    [mathrm{A}_n^m=n(n-1)(n-2)cdots(n-m+1)=frac{n!}{(n-m)!},quad n,min mathbb{N}^* , ext{并且}mleq n ]

    (规定(0!=1)

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

    取第一个:有(n)种取法;
    取第二个:有((n-1))种取法;
    取第三个:有((n-2))种取法;
    ……
    取第(m)个:有((n-m+1))种取法;

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

    排列数性质

    (mathrm{A}_n^m = nmathrm{A}_{n-1}^{m-1}) 可理解为“某特定位置”先安排,再安排其余位置。

    (mathrm{A}_n^m = mmathrm{A}_{n-1}^{m-1} + mathrm{A}_{n-1}^m) 可理解为:含特定元素的排列有(mmathrm{A}_{n-1}^{m-1}),不含特定元素的排列为(mathrm{A}_{n-1}^m)

    组合问题

    组合数

    (n)个不同元素种取出(m(mleq n))个元素的所有不同组合的个数,叫做从(n)个不同元素种取出(m)个元素的组合数,用符号(mathrm{C}_n^m)表示。

    组合数公式

    [mathrm{C}_n^m=frac{mathrm{A}_n^m}{mathrm{A}_m^m}=frac{n(n-1)(n-2)cdots (n-m+1)}{m!}=frac{n!}{m!(n-m)!},quad n,min mathbb{N}^* , ext{并且}mleq n ]

    [mathrm{C}_n^0=mathrm{C}_n^n=1 ]

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

    将部分排列问题(mathrm{A}_n^m)分解为两个步骤:

    第一步,就是从(n)个球中抽(m)个出来,先不排序,此即组合数问题(mathrm{C}_n^m)

    第二步,则是把这(m)个被抽出来的球排序,即全排列(mathrm{A}_m^m)

    根据乘法原理,(mathrm{A}_n^m=mathrm{C}_n^m mathrm{A}_m^m),那么

    [mathrm{C}_n^m=frac{mathrm{A}_n^m}{mathrm{A}_m^m}=frac{n(n-1)(n-2)cdots (n-m+1)}{m!}=frac{n!}{m!(n-m)!} ]

    组合数的性质

    (mathrm{C}_n^m = mathrm{C}_n^{n-m}) 可以理解为:将原本的每个组合都反转,把原来没选的选上,原来选了的去掉,这样就变成从(n)个元素种取出(n-m)个元素,显然方案数是相等的。

    递推公式(mathrm{C}_n^m=mathrm{C}_{n-1}^m+mathrm{C}_{n-1}^{m-1}) 可理解为:含特定元素的组合有(mathrm{C}_{n-1}^{m-1}),不含特定元素的排列为(mathrm{C}_{n-1}^m)。还不懂?看下面。

    Example

    从1,2,3,4,5((n=5))中取出2((m=2))个元素的组合((mathrm{C}_n^m)):

    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((n-1))中取出1((m-1))个元素的组合。

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

    而总方案数等于上面两种情况方案数之和,即(mathrm{C}_n^m=mathrm{C}_{n-1}^m+mathrm{C}_{n-1}^{m-1})

    组合数求和公式

    [mathrm{C}_n^0+mathrm{C}_n^1+mathrm{C}_n^2+cdots+mathrm{C}_n^n=2^n ]

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

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

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

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

    根据乘法原理,一共(underbrace{2 imes 2 imes cdots imes 2}_{n ext{个2相乘}} = 2^n)种组合。

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

    1. (m=1)时,(mathrm{C}_1^0+mathrm{C}_1^1=2=2^1)成立。
    2. 假设(n=k(kin mathbb{N}^*))时等式成立,即

      [sum_{i=0}^{k} mathrm{C}_k^i=2^n ]

      成立,当(n=k+1)时,

      [egin{aligned} & mathrm{C}_{k+1}^0 + mathrm{C}_{k+1}^1 + mathrm{C}_{k+1}^2 + cdots + mathrm{C}_{k+1}^{k} + mathrm{C}_{k+1}^{k+1}\ = & mathrm{C}_{k+1}^0+ left(mathrm{C}_k^0+mathrm{C}_k^1 ight) + left(mathrm{C}_k^1+mathrm{C}_k^2 ight) + cdots + left(mathrm{C}_k^{k-1}+mathrm{C}_k^k ight) + mathrm{C}_{k+1}^{k+1}\ = & left(mathrm{C}_k^0 + mathrm{C}_k^1 + mathrm{C}_k^2 + cdots + mathrm{C}_k^k ight) + left(mathrm{C}_k^0 + mathrm{C}_k^1 + mathrm{C}_k^2 + cdots + mathrm{C}_k^k ight)\ = & 2 imes 2^k\ = & 2^{k+1} end{aligned}]

      等式也成立。
    3. 由1、2得,等式对(nin mathbb{N}^*)都成立。

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

    [(a+b)^n=sum_{k=0}^{n}mathrm{C}_n^k a^{n-k}b^k ]

    (a=b=1),就得到了

    [sum_{i=0}^{n} mathrm{C}_n^i=2^n ]

    类似的公式(由(mathrm{C}_n^m = mathrm{C}_n^{n-m})推导):

    [mathrm{C}_n^0 + mathrm{C}_n^2 + mathrm{C}_n^4 + cdots = mathrm{C}_n^1 + mathrm{C}_n^3 + mathrm{C}_n^5 + cdots =2^{n-1} ]

    杨辉三角

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

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

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

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

    二项式系数

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

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

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

    定义及概念
    对于非负整数(n)(k),二项式系数定义为的多项式展开式中,项的系数,即 ( binom nk{displaystyle (1+x)^{n}}x^{k})

    ({displaystyle (1+x)^{n}=sum _{k=0}^{n}{inom {n}{k}}x^{k}={inom {n}{0} }+{inom {n}{1}}x+cdots +{inom {n}{n}}x^{n}})
    事实上,若(x)(y)为交换环上的元素,则

    ((x+y)^n=sum_{k=0}^ninom nk x^{n-k}y^k)

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

    计算二项式系数

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

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

    (inom nk = inom{n-1}{k-1} + inom{n-1}k quad forall n,kinN)

    其中特别指定:

    (inom n0 = 1 quad forall ninNcup{0}, inom 0k = 0 quad forall kinN).

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

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

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

    有关二项式系数的恒等式

    关系式

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

    [{inom {n+1}{k}}={inom {n}{k}}+{inom {n}{k-1}} ]

    [inom{n}{k} = frac{n}{k} inom{n-1}{k-1} ]

    [inom {n-1}{k} - inom{n-1}{k-1} = frac{n-2k}{n} inom{n}{k} ]

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

    [inom ni inom im=inom nm inom {n-m}{i-m} ]

    [sum_{r=0}^n inom nr = 2^{n} ]

    [{displaystyle sum _{r=0}^{k}{inom {n+r-1}{r}}={inom {n+k}{k}}} ]

    [{displaystyle sum _{r=0}^{n-k}{frac {(-1)^{r}(n+1)}{k+r+1}}{inom {n-k}{r} }={inom {n}{k}}^{-1}} ]

    [sum_{r=0}^n inom {dn}{dr}=frac{1}{d}sum_{r=1}^d (1+e^{frac{2 pi ri}{ d}})^{dn} ]

    [sum_{i=m}^n inom {a+i}{i} = inom {a+n+1}{n} - inom {a+m}{m-1} ]

    [inom {a+m}{m-1} + inom {a+m}{m} + inom {a+m+1}{m+1} + ... + inom {a+n} {n} = inom {a+n+1}{n} ]

    [F_n=sum_{i=0}^{infty} inom {ni}{i} ]

    [F_{n-1}+F_n=sum_{i=0}^{infty} inom {n-1-i}{i}+sum_{i=0}^{infty} inom {n-i }{i}=1+sum_{i=1}^{infty} inom {n-i}{i-1}+sum_{i=1}^{infty} inom {n-i}{i} =1+sum_{i=1}^{infty} inom {n+1-i}{i}=sum_{i=0}^{infty} inom {n+1-i}{ i}=F_{n+1} ]

    主条目:朱世杰恒等式

    [ sum_{i=m}^n inom ia = inom {n+1}{a+1} - inom {m}{a+1} ]

    [inom {m}{a+1} + inom ma + inom {m+1}a ... + inom na = inom {n+1}{a+1} ]

    二阶求和公式

    [{displaystyle sum _{r=0}^{n}{inom {n}{r}}^{2}={inom {2n}{n}}} ]

    [sum_{i=0}^n inom {r_1+n-1-i}{r_1-1} inom {r_2+i-1}{r_2-1}=inom {r_1+r_2+n-1 }{r_1+r_2-1} ]

    [(1-x)^{-r_1} (1-x)^{-r_2}=(1-x)^{-r_1-r_2} ]

    [(1-x)^{-r_1} (1-x)^{-r_2}=(sum_{n=0}^{infty} inom {r_1+n-1}{r_1-1} x^ n)(sum_{n=0}^{infty} inom {r_2+n-1}{r_2-1} x^n)=sum_{n=0}^{infty} (sum_{ i=0}^n inom {r_1+n-1-i}{r_1-1} inom {r_2+i-1}{r_2-1}) x^n ]

    [(1-x)^{-r_1-r_2}=sum_{n=0}^{infty} inom {r_1+r_2+n-1}{r_1+r_2-1} x^n ]

    主条目:范德蒙恒等式

    [sum_{i=0}^k inom ni inom m{k-i}=inom {n+m}k ]

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

    [{inom {n+k}k}^2=sum_{j=0}^k {inom kj}^2 inom {n+2k-j}{2k} ]

  • 相关阅读:
    深度解读设备的“万能语言”鸿蒙系统的分布式软总线能力
    懂分析、会预测,你见过这样的华为云DAS吗?
    华为云登顶HotpotQA多跳知识推理问答评测
    突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?
    六步带你完成博流wifi模组对接华为云流程
    Materialize MySQL引擎:MySQL到Click House的高速公路
    CWE 4.3:强化你的数据自我保护能力
    使用TENSORRT和NVIDIA-DOCKER部署深部神经网络
    用于ONNX的TensorRT后端
    循环IRNNv2Layer实现
  • 原文地址:https://www.cnblogs.com/1024th/p/10623541.html
Copyright © 2011-2022 走看看