组合数的各种性质和定理

组合数的各种性质和定理从m个物品里选出n个的方案数,记作CnmCmnC_m^n,即为组合数组合数有很多很多的性质和定理。。。注意由于本人沉迷玩梗无法自拔,如果看见您看不懂的梗请随意跳过。组合数通项公式Cnm=m!n!∗(m−n)!Cmn=m!n!∗(m−n)!C_m^n=\frac{m!}{n!*(m-n)!}证明:现在我们从m个不同的数里选出n个数组成一个排列,第一个位子上的数有m种取法,第二…

大家好,又见面了,我是你们的朋友全栈君。

从m个物品里选出n个的方案数,记作 Cnm C m n ,即为组合数
组合数有很多很多的性质和定理。。。
注意由于本人沉迷玩梗无法自拔,如果看见您看不懂的梗请随意跳过。

组合数通项公式

Cnm=m!n!(mn)! C m n = m ! n ! ∗ ( m − n ) !




证明:现在我们从m个不同的数里选出n个数组成一个排列,第一个位子上的数有m种取法,第二个位子上的有m-1种,第三个位子上有m-2种。。。共有

m!(mn)! m ! ( m − n ) !


然而,我们对于顺序没有要求,假设取出了n个数,第一个位子上有n种放法,第二个位子上有n-1种。。。所以我们刚才得到的哪个东西还要除一个

n! n !

组合数递推公式

Cnm=Cnm1+Cn1m1 C m n = C m − 1 n + C m − 1 n − 1




证明:从m个不同的数中取n个,第m个数如果取的话有

Cn1m1 C m − 1 n − 1
种取法,如果不取则有

Cnm1 C m − 1 n
种。

如果您是组合数新手,请牢记以上两个公式

性质1

Cnm=Cmnm C m n = C m m − n




证明:显然从m个物品里选n个和从m个物品里选m-n个丢掉的方案数是一样的。

性质2

Crm+r+1=i=0rCim+i C m + r + 1 r = ∑ i = 0 r C m + i i




证明:用组合数的递推公式。

首先

C0m=C0m+1=1 C m 0 = C m + 1 0 = 1




C0m+C1m+1+C2m+2+...+Crm+r C m 0 + C m + 1 1 + C m + 2 2 + . . . + C m + r r
=



C1m+C1m+1+C2m+2+...+Crm+r C m 1 + C m + 1 1 + C m + 2 2 + . . . + C m + r r
=



C1m+2+C2m+2+...+Crm+r C m + 2 1 + C m + 2 2 + . . . + C m + r r
=



Crm+r+1 C m + r + 1 r

性质3

CnmCrn=CrmCnrmr C m n ∗ C n r = C m r ∗ C m − r n − r




证明:用组合数的通项公式



CnmCrn= C m n ∗ C n r =




m!n!(mn)!n!r!(nr)!= m ! n ! ( m − n ) ! ∗ n ! r ! ( n − r ) ! =




m!r!(mr)!(mr)!(mn)!(nr)!= m ! r ! ( m − r ) ! ∗ ( m − r ) ! ( m − n ) ! ( n − r ) ! =




CrmCnrmr C m r ∗ C m − r n − r

性质4(二项式定理)

i=0mCim=2m ∑ i = 0 m C m i = 2 m




证明:显然

Cim C m i
代表一个m位二进制数有i个0的情况下的数量,那么这个和就是m位二进制数的数量了。

推广一下这个二项式定理:


i=0mCimxi=(x+1)m ∑ i = 0 m C m i ∗ x i = ( x + 1 ) m



这个又怎么证明呢?先把

(x+1)m ( x + 1 ) m
写成

(x+1)(x+1)(x+1)... ( x + 1 ) ( x + 1 ) ( x + 1 ) . . .
的格式,然后每一项很精妙啊,比如说i次方项,选的

i i



x

x

是从哪个括号里来呢?有

Cim C m i
种方案吧,所以

xi x i
项的系数是

Cim C m i


这就是杨辉三角的应用(可以自行百度)

性质5

C0mC1m+C2m...±Cmm=0 C m 0 − C m 1 + C m 2 − . . . ± C m m = 0




证明:假如m是奇数的花,由性质1可知正确。

假如m是偶数的花,这个里面的花,用一下递推公式,然后显然

C0m1=C0m=1 C m − 1 0 = C m 0 = 1
并且

Cm1m1=Cmm=1 C m − 1 m − 1 = C m m = 1
,则:



C0mC1m+C2m...+Cmm= C m 0 − C m 1 + C m 2 − . . . + C m m =




C0m1C0m1C1m1+C1m1+C2m1...+Cm1m1=0 C m − 1 0 − C m − 1 0 − C m − 1 1 + C m − 1 1 + C m − 1 2 − . . . + C m − 1 m − 1 = 0

性质6

C0m+C2m+C4m...=C1m+C3m+C5m+...=2m1 C m 0 + C m 2 + C m 4 . . . = C m 1 + C m 3 + C m 5 + . . . = 2 m − 1




证明:这个根据性质4和性质5可知正确。

性质7

Crm+n=C0mCrn+C1mCr1n++CrmC0n C m + n r = C m 0 ∗ C n r + C m 1 ∗ C n r − 1 + … + C m r ∗ C n 0




证明:很简单,考虑我选出的r个物品在前m个物品有几个,在后n个物品里有几个即可。

特别的:

Cnm+n=C0mC0n+C1mC1n++CmmCmn C m + n n = C m 0 ∗ C n 0 + C m 1 ∗ C n 1 + … + C m m ∗ C n m



这个是根据性质1变形得到的。

性质8

nCnm=mCn1m1 n ∗ C m n = m ∗ C m − 1 n − 1




证明:运用通项公式



nCnm= n ∗ C m n =




nm!n!(mn)!= n ∗ m ! n ! ( m − n ) ! =




m!(n1)!(mn)!= m ! ( n − 1 ) ! ( m − n ) ! =




m(m1)!(n1)!(mn)!=mCn1m1 m ∗ ( m − 1 ) ! ( n − 1 ) ! ( m − n ) ! = m ∗ C m − 1 n − 1

性质9

i=1nCini=n2n1 ∑ i = 1 n C n i ∗ i = n ∗ 2 n − 1




证明:用通项公式



ni=1Cini=n2n1= ∑ i = 1 n C n i ∗ i = n ∗ 2 n − 1 =




ni=1n!(i1)!(ni)!= ∑ i = 1 n n ! ( i − 1 ) ! ( n − i ) ! =




(ni=1(n1)!(i1)!(ni)!)n= ( ∑ i = 1 n ( n − 1 ) ! ( i − 1 ) ! ( n − i ) ! ) ∗ n =




(n1i=0Cin)n= ( ∑ i = 0 n − 1 C n i ) ∗ n =


现在看性质4。



n2n1 n ∗ 2 n − 1

性质10

i=1nCini2=n(n+1)2n2 ∑ i = 1 n C n i ∗ i 2 = n ∗ ( n + 1 ) ∗ 2 n − 2




证明

和上一个性质有些类似。



ni=1Cini2= ∑ i = 1 n C n i ∗ i 2 =


用和上面差不多的方法得到:



(n1i=0Cin1(i+1))n= ( ∑ i = 0 n − 1 C n − 1 i ∗ ( i + 1 ) ) ∗ n =




(n1i=0Cin1i+n1i=0Cin1)n= ( ∑ i = 0 n − 1 C n − 1 i ∗ i + ∑ i = 0 n − 1 C n − 1 i ) ∗ n =


用性质9和性质4可以得到:



(2n2(n1)+2n1)n= ( 2 n − 2 ∗ ( n − 1 ) + 2 n − 1 ) ∗ n =


很明显

2n1=22n2 2 n − 1 = 2 ∗ 2 n − 2


所以原式=

2n2(n+1)n 2 n − 2 ∗ ( n + 1 ) ∗ n

性质11

i=0n(Cin)2=Cn2n ∑ i = 0 n ( C n i ) 2 = C 2 n n




证明:boshi说,他的门前有两棵树,
一棵是枣树,另一棵也是枣树,每棵树上有n个枣子,每个枣子都有一个不同的神奇的膜法符号。现在boshi从两棵树上一共打下了n个枣子,那么一共有多少种方案?是

Cn2n C 2 n n
,也是第一棵树上打下i个枣子,从第二棵树上打下(n-i)棵枣子的方案,根据乘法原理乘起来,又因为

Cin=Cnin C n i = C n n − i
,所以得到上一个式子。

卢卡斯定理

简单的说就是求 Cnm%p C m n % p 的时候可以化作 Cnm=Cn/pm/pCn%pm%p C m n = C m / p n / p ∗ C m % p n % p ,那么只要递归 Cn/pm/p C m / p n / p 即可。
证明我蠢我不会自己想

后记

啊啊啊搞了一下午终于证完了累死了。。。感觉自己和组合数的感情有了明显的提升(才怪)。。。
在文章的最后%一发数王。。。
%%%%%%%%%数王您太强了%%%%%%%%%%%
数王说以上所有定理都可以用那个那个那个证,虽然我不知道那个是哪个,但是反正好强啊%%%%%%%%
好吧以上都是不正经内容,正经内容是:
在做题的时候大家可能不一定都会遇到这些性质,但是在手动证明完这些性质后对于组合数变形的问题就会有更深一层的理解,总之,组合数性质可以用一下方法推出:
1.情景假设法(假设boshi从枣树选枣子的方案。。。
2.隔板法(boshi把枣子放成一排,通过在枣子间添加隔板来分组。。。
3.通向公式法
4.递推公式法
以上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159936.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 除法取整_java 除法运算只保留整数位的4种方式

    java 除法取整_java 除法运算只保留整数位的4种方式1.情景展示根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推…2.情况分析可以使用3个函数实现Math.floor(num)  只保留整数位Math.rint(num)  余数四舍五入Math.ceil(num)  取整位,再+1举例:doublenum=3.1415926;System.out.println(Math.floor…

    2022年6月5日
    116
  • 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    小疯手把手带你整合SpringMVC+Spring+MyBatis三大框架,俗称SSM,用它完全代替传统的SSH框架,把它们最优雅的一面发挥出来。整合配置结束后,会有一个应用实例“图书管理系统”带给大家,希望能快速上手这个框架!

    2022年4月16日
    31
  • 机械振动论文带有simulink分析的_matlab振动仿真实例

    机械振动论文带有simulink分析的_matlab振动仿真实例1、内容简介1、汽车传动系统的力学模型的讨论2、SIMULINK介绍3、(激励源分析并建立相应的SIMULINK模块)包括发动机动力源模型,行驶工况等4、分析扭振特性5、提出改进手段并比较改进前后系统扭振响应340-可以交流、咨询、答疑2、内容说明汽车动力传动系统是一个具有多自由度的、连续的、有阻尼系统。传动系统的振动主要有横向振动、扭转振动、纵向振动。并且汽车传动系统的扭转振动是一个非常重要的振动形式。当汽车制动、起步、换档时,这些非稳定工况下汽车传动系由于受到非周期的冲击性干扰力而产生的振动。当汽车正

    2022年10月15日
    4
  • 基于Bootstrap的Metro风格模板

    基于Bootstrap的Metro风格模板这几天在看Bootstrap的一些书,这里整理一下书中的一些模板,方便以后使用。1.BootMetrohttp://www.guoxiaoming.com/bootmetro/2.Bootswatchhttp://bootswatch.com/3.MetroUICSS官网:http://metroui.org.ua/中文:http://www.bootcss.com/

    2025年7月3日
    3
  • spring boot框架介绍_Spring框架是什么

    spring boot框架介绍_Spring框架是什么前面的铺垫文章已经连着写了六篇了,主要是介绍了Spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说过“约定大于配置”这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的话依然有许多这样的东西需要我们进行配置,这样不仅徒增工作量

    2022年8月12日
    11
  • win10jdk环境变量配置[通俗易懂]

    win10jdk环境变量配置[通俗易懂]在win10上安装jdk后,发现命令行中java-version命令可运行,但javac则提示“javac不是内部或外部命令……”,经过尝试发现需要将两个bin的路径都设置到环境变量中,而且需要使用绝对路径,不可以引用其他环境变量,例如我的环境变量设置是:C:\ProgramFiles(x86)\Java\jdk1.8.0_112\jre\bin;C:\ProgramFiles(

    2022年7月21日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号