前言
组合数,一个令人头大的东西
参考资料
组合数:https://www.luogu.com.cn/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi
定义
(n!=1*2*3*...*n)
([p])仅当条件(p)成立时此式子的值为(1),否则为(0)。
有标号的东西:简单来说就是东西之间存在不同,比如(1,2)和(2,1)是两个不同的排列,而(aa)和(aa)则是两个相同的排列。
(ar{A})表示(A)的补集。
(S)表示全集。
组合数初解
代数意义
什么是组合数?
比如说有(n)个不同的人,问你他们不同的排列数,你一下子就说(n!)啊。
毕竟第一个位置有(n)个选择,第二个位置有(n-1)个选择,第三个(n-2)个选择以此类推。
那么如果从中抽(m)个人并进行排列呢?
第一个位置(n)种选择,到第(m)个位置停止,那不就是(frac{n!}{(n-m)!})吗
但是,如果只是问你从(n)个人中随便选(m)个人的方案是多少,你就一下子懵了。
但是你想想看,同(m)个人,他们能组成的排列数是(m!)种,那么我们用(frac{n!}{(n-m)!})除(m!)不就可以得到结果了吗?
也就是(frac{n!}{(n-m)!m!})。
具体的,从(n)个人中选(m)个的方案数的数学符号为(C_{n}^m),或者为(inom{n}{m}),从(n)个人中选(m)个人出来排列为(A_{n}^m)。
(C_{n}^m=frac{n!}{(n-m)!m!},A_{n}^m=frac{n!}{(n-m)!})
图形意义
你知道杨辉三角形吗?
是的,就是下面这坨东西:
每个数字都等于上面两个数字的和,图中给出了两个例子:(2=1+1,6=3+3),特别的,每行的最左边和最右边都是(1),实际上,第(i)行第(j)个数字就是(C_{i-1}^{j-1})。
具体的证明可以看简单恒等式中的第3条
二项式意义
如果要说组合数最NB的意义,就是这个意义了。
((a+1)^k=sumlimits_{i=0}^kC_{k}^ia^i(k∈N_{+}))
所以(C_{k}^i)就是(a_{i})的系数。
简单恒等式
是的,这里的恒等式非常的简单。
注:一下证明都是在假定左边的式子有意义的情况下予以证明,如果(C_{n}^i(i>n或者i<0)),那么值为(0)。
- (C_{n}^i=C_{n}^{n-i})
证明:(C_{n}^i=frac{n!}{(n-i)!i!}=frac{n!}{i!(n-i)!}=C_{n}^{n-i}) - (C_{n}^i=frac{n}{i}C_{n-1}^{i-1})
证明:(C_{n}^i=frac{n!}{i!(n-i)!}=frac{n}{i}frac{(n-1)!}{(i-1)!(n-i)!}=frac{n}{i}C_{n-1}^{i-1}) - (C_{n}^i=C_{n-1}^{i-1}+C_{n-1}^i(n>0))
如果(n=i)或者(i=0),显然成立,然后开始代数证明(从右边的式子推到左边):
(frac{(n-1)!}{(i-1)!(n-i)!}+frac{(n-1)!}{i!(n-i-1)!}=frac{i}{n}frac{n!}{i!(n-i)!}+frac{n}{n-i}frac{n!}{i!(n-i)!}=C_{n}^i)。
当然,这也就证明了上面杨辉三角形代表的组合意义。 - (sumlimits_{i=0}^n(-1)^iC_{n}^i=[n=0])
这个用杨辉三角形非常的好证明,对于第(n(n>0))行,奇数位置为蓝色,偶数位置为红色,然后全部向上一行指过去,上一行每个数字都被一个红色和一个蓝色指到,刚好相消,只有当(n=0)时,该式子的值为(1)。
- (sumlimits_{i=0}^nC_{n}^i=2^n)
这个我只能从组合意义去证明,对于(n)个硬币,(2^n)就表示不同的硬币朝上的情况,如果设(k)个硬币朝上的方案其实就是(C_{n}^k) - (C_{n}^iC_{i}^m=C_{n}^mC_{n-m}^{n-i})
证明:(frac{n!}{i!(n-i)!}*frac{i!}{m!(i-m)!}=frac{n!}{(n-m)!(n-i)!}*frac{(n-m)!}{m!(i-m)!}=frac{n!}{(n-m)!m!}*frac{(n-m)!}{(n-i)!(i-m)!}=C_{n}^m*C_{n-m}^{n-i})
分析组合数
参考:https://www.luogu.com.cn/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi
这里主要就是如何分析出这个用什么组合数,当然,这也是组合数中最难的部分,这里只讲一个初等的方法,至于超级大佬的方法,需要自己去积累了。
容斥原理
(|A|)表示这个集合中的元素个数。
两个集合的容斥:(|A∪B|=|A|+|B|-|A∩B|)
对于多个集合的容斥:
(A_1,A_2,A_3,A_4,...)
设(S_{k})为(k)个(A)集合的交集
(|A_1∪A_2∪A_3∪A_4.....∪A_n|=sumlimits_{j=1}^n(-1)^{j-1}sumlimits_{1≤i_1<i_2<...<i_j≤n}|A_{i_1}∩A_{i_2}|)
证明的话也是灰常的简单:
一个元素被(k)个集合包含,那么其会被统计多少次呢?
就是:(C_{k}^1-C_{k}^2+.....+(-1)^{k-1}C_{k}^k=0+C_{k}^0=1)
当然,容斥原理也有其余形式:
(|ar{A_1}∩ar{A_2}∩ar{A_3}...∩ar{A_n}|=|S|-|A_1∪A_2∪A_3...∪A_n|)
证明:
(overline{A_{1}∪A_{2}∪A_{2}∪...∪A_n}=overline{A_1}∩overline{A_2}∩overline{A_3}...∩overline{A_n})
换一下,证毕。
当然,还有一个奇怪的式子:
(overline{A_{1}∩A_{2}∩A_{2}∩...∩A_n}=overline{A_1}∪overline{A_2}∪overline{A_3}...∪overline{A_n})
证明:
你只需要把(A)全部取补代入(overline{A_{1}∪A_{2}∪A_{2}∪...∪A_n}=overline{A_1}∩overline{A_2}∩overline{A_3}...∩overline{A_n}),然后左右取补集即可。
插板法
插板法,顾名思义:插板
举个例子:
假设现在有(n)个小球,没有编号,但是又有(m)个有标号的框,问有多少种放球方法,不允许一个框没有球。
那么我们可以把小球排成一排,然后在球与球的空隙之间插板,第一个板左边是第一个框,第一个板到第二板就是第二个框,以此类推,只需要插(m-1)个板即可。
也就是:(C_{n-1}^{m-1})
那这个方法有什么用呢?在分析组合数时会比较直观,比较方便,当然也要运用合理,否则就会闹不小的笑话。
那如果是允许框是空的呢?
非常simple的方法就是给每个框都放上一个球,这样就跟上面的题一摸一样啦。
捆绑法
其实就是把物体当成一个整体,用参考资料中的一个例子:
例子:有 8本不同的书;其中数学书 3本,外语书 2本,其它学科书 3本.若将这些书排成一列放在书架上,求数学书和外语书都放在一起的方案数
把 3本数学书“捆绑”在一起看成一个整体, 2本外语书也“捆绑”在一起看成一个整体,与其它 3本书一起看作 5个元素,然后就可以求了
本源出发
有时候想组合数要从组合出发,直接考虑方案,这样有时候会好搞很多,尤其是容斥判重以及理解时也十分需要这种思想,掌握了方法,也不要忘记根本啊。
坑
补齐恒等式如果没有意义时证明是否成立
增加较难的组合数