组合数学详解
正题
排列组合
(
a
+
b
)
m
=
∑
i
=
0
m
C
m
i
a
i
b
m
−
i
∑
i
=
0
m
C
n
i
C
m
i
=
C
n
+
m
m
∑
i
=
0
n
i
C
n
i
=
2
n
−
1
n
∑
i
=
0
n
i
2
C
n
i
=
2
n
−
2
n
(
n
+
1
)
∑
i
=
0
n
C
i
k
=
C
n
+
1
k
+
1
C
n
r
C
r
k
=
C
n
k
C
n
−
k
r
−
k
C
n
k
k
i
‾
=
C
n
−
i
k
−
i
n
i
‾
\\(a+b)^m=\sum_{i=0}^m C_m^i a^ib^{m-i} \\\sum_{i=0}^m C_n^i C_m^i =C_{n+m}^{m} \\\sum_{i=0}^n iC_n^i=2^{n-1}n \\\sum_{i=0}^n i^2C_n^i =2^{n-2}n(n+1) \\\sum_{i=0}^n C_i^k=C_{n+1}^{k+1} \\C_n^r C_r^k=C_n^k C_{n-k}^{r-k} \\C_n^k k^{\underline i}=C_{n-i}^{k-i}n^{\underline i}
(a+b)m=i=0∑mCmiaibm−ii=0∑mCniCmi=Cn+mmi=0∑niCni=2n−1ni=0∑ni2Cni=2n−2n(n+1)i=0∑nCik=Cn+1k+1CnrCrk=CnkCn−kr−kCnkki=Cn−ik−ini
1.广义二项式定理。
2.可以看成
n
n
n 个里面选
i
i
i 个,再从
m
m
m 个里面选
m
−
i
m-i
m−i 个,考虑直接从前
n
n
n 个和后
m
m
m 个里面选出
m
m
m 个,每一个方案肯定都会被算到。
3.相当于计算的是子集大小和,对于每一个元素来说,被计算的次数肯定是
2
n
−
1
2^{n-1}
2n−1,当然也可以用导数证明
4.计算的是选出一个子集,子集大小的平方和,相当于把两个球放进
i
i
i 个有标号的箱子的方案数,同样可以反着考虑,假若只有一个箱子有球,那么答案是
n
2
n
−
1
n2^{n-1}
n2n−1 ,如果有两个箱子有球,那么答案就是
n
(
n
−
1
)
2
n
−
2
n(n-1)2^{n-2}
n(n−1)2n−2 。同样也可以用生成函数求导证明。
考虑把上面的两条式子推广,那么就有
∑
i
=
0
n
i
k
C
n
i
=
∑
j
=
1
k
C
n
j
S
(
k
,
j
)
j
!
2
n
−
j
\sum_{i=0}^n i^k C_n^i=\sum_{j=1}^k C_n^j S(k,j)j!2^{n-j}
i=0∑nikCni=j=1∑kCnjS(k,j)j!2n−j
5.第五条可以用组合意义来证明,考虑在一个长为
n
+
1
n+1
n+1 的序列当中选出
k
+
1
k+1
k+1 个数,左边相当于枚举所选中的最右边的数。用杨辉三角也很好证明,大概
C
k
k
C_k^k
Ckk 就是将挪到
C
k
+
1
k
+
1
C_{k+1}^{k+1}
Ck+1k+1上,然后不断两两相加就可以得到。
6.直接考虑每个点被染成第几种颜色就可以了。
7.化系数可得
二项式反演
二项式反演基于二项式定理,证明将两式相互带入即可,不再赘述。
上一篇:
LeetCode 的 C++ 实现(179.最大组合数)
下一篇:
组合数的 C 语言实现
推荐阅读
f
(
n
)
=
∑
k
=
0
n
(
−
1
)
k
C
n
k
g
(
k
)
⇔
g
(
n
)
=
∑
k
=
0
n
(
−
1
)
k
C
n
k
f
(
k
)
f
(
n
)
=
∑
k
=
0
n
C
n
k
g
(
k
)
⇔
g
(
n
)
=
∑
k
=
0
n
(
−
1
)
n
−
k
C
n
k
f
(
k
)
f
(
k
)
=
∑
i
=
k
n
(
−
1
)
i
C
i
k
g
(
i
)
⇔
g
(
k
)
=
∑
i
=
k
n
(
−
1
)
i
C
i
k
f
(
i
)
f
(
k
)
=
∑
i
=
k
n
C
i
k
g
(
i
)
⇔
g
(
k
)
=
∑
i
=
k
n
(
−
1
)
i
−
k
C
i
k
f
(
i
)
f(n)=\sum_{k=0}^n(-1)^kC_n^kg(k)\Leftrightarrow g(n)=\sum_{k=0}^n(-1)^kC_n^kf(k)\\ f(n)=\sum_{k=0}^nC_n^kg(k)\Leftrightarrow g(n)=\sum_{k=0}^n(-1)^{n-k}C_n^kf(k)\\ f(k)=\sum_{i=k}^n (-1)^iC_i^kg(i)\Leftrightarrow g(k)=\sum_{i=k}^n(-1)^iC_i^kf(i)\\ f(k)=\sum_{i=k}^nC_i^kg(i)\Leftrightarrow g(k)=\sum_{i=k}^n (-1)^{i-k}C_i^kf(i)\\
f(n)=k=0∑n(−1)kCnkg(k)⇔g(n)=k=0∑n(−1)
Mobile Telecom 推出另一系列高性能卫星、5G、GNSS 和三合一组合天线
稳定扩散原理详解
路径规划 - 搜索算法详解 (III):用 MATLAB 代码解释 RRT 算法
Python Office Automation [合并单元格-openpyxl, 添加图表-openpyxl, 合并工作表-openpyxl, 合并多个文件工作表-openpyxl] (III)- 全面详解(学习总结-由浅入深) (Next)
10 个数学悖论,让你烧脑又头晕!
欧洲数学一眼假系列 3.超级立方体与托里小号
数学之美(34)--吹奏托里切利的小号,聆听自然数学的旋律
世界最高数学奖迎来第二位女性获奖者,还有一位想成为诗人的获奖者
java 的数学得到小数部分
数学中的不可能定理