组合数学总结
组合数学总结
\(Day1\):
-
简单格路问题:\(|(0,0)->(m,n)|={m+n \choose n}\qquad\),\(|(0,1)->(m,n)|(m>n)\)且不经过\(y=x\)方案数:所有经过\(y=x\)的方案树一定和\((1,0)->(m,n)\)的方案数一一对应。
-
\(Wallis\)公式:
注:以下的\(n!!=\left\{\begin{array}{}1*3*5*...*n&\textrm{n%2=1}\\2*4*5*...*n & \textrm{n%2=0}\end{array} \right.\)
\[\lim_{k\to\infty}[\frac{2^{2k}(k)!^2}{(2k)!}]^2\frac{1}{2k+1}=\frac{\pi}{2} \]\[\lim_{k\to\infty}[\frac{(2k)!!}{(2k-1)!!}]^2\frac{1}{2k+1}=\frac{\pi}{2} \]\[\lim_{k\to\infty}[\frac{(2k)!!(2k)!!}{(2k)!}]^2\frac{1}{2k+1}=\frac{\pi}{2} \] -
\(Stirling\)公式:\(n!\sim \sqrt{2\pi n}(\frac{n}{e})^n\)
\(Day2\):
-
\(Cayley\)定理:有\(n\)个顶点的树的个数为\(n^{n-2}\)
对于一棵树,它一定和一个序列一一对应,下附证明:
每次删去树的叶子中编号最小的节点及其连边,按删去顺序记下其相邻节点,最终生成序列\(b_1,b_2,...,b_{n-2}\)(又称\(prufer\)序列),即树可以生成唯一的序列,下面只用证明序列可以生成唯一的树即可,我们观察这样的两个序列
\(\left\{\begin{array}{}1,2,3,...,n\\b_1,b_2,b_3...,b_n\end{array} \right.\)
我们找到第一个序列中的最小无重元\(k\)(最小的不在\(b\)中出现的数),它一定为树上最先删去的节点,\((k,b_{first})\)一定为最先删去的边,从第一个序列中去掉\(k\),\(b\)中去掉第一个数,重复执行这一过程,就可以还原唯一的一棵树。(有空补上一张图来说明,
咕了)- 性质\(1\):度数为\(d_i\)的点在序列中会出现\(d_i-1\)次
- 性质\(2\):对于给定度数为\(d_{1\sim n}\)的一棵无根树共有\(\frac{(n-2)!}{\prod_{i=1}^n(d_i-1)!}\)种情况。(\(d_i-1\)个\(i(i\in [1,n])\)的可重全排)
-
全排列生成算法(生成一个全排列下一个排列,生成一个全排列的编号)
-
生成下一个排列:对于一个排列\(P_1,P_2,...,P_n\),我们找到\(j=max\{P_i<P_{i+1}\},k=max\{P_i>P_j\}\)对换\(P_j,P_k\),将新后缀\(P_{j+1},...P_{k-1},P_j,P_{k+1},...P_n\)翻转即可。
-
生成一个全排列的编号:我们生成一个被称为中介数的序列\(a\)即可,\(a_i=\Sigma[P_i>P_j](i<j\leq n)\)(即\(a_i\)为\(P_i\)后面小于\(P_i\)的数的个数),则编号为:
\[Id=\sum^{n-1}_{i=1}a_i(n-i)! \] -
延伸:\(n!=(n-1)(n-1)!+(n-2)(n-2)!+...+1*1!+1\)
-
-
多重集:元素可以多次出现的集合,设\(a_i\)出现\(n_i\)次,记含有\(k\)种不同元素的可重集为\(S=\{n_1a_1,n_2a_2,...n_ka_k\}\)
-
排列:对于一个可重集\(S=\{n_1a_1,n_2a_2,...,n_ka_k\},n=\Sigma n_i\)从中选出\(r\)个元素做排列的个数\(N\)为:
- \(r>n\)时,\(N=0\)
- \(r=n\)时,\(N=\frac{n!}{n_1!n_2!...n_k!}\)
- \(r<n,\forall n_i>r\)时,\(N=k^r\)
-
\(r<n,\exist n_i<r\)时,无通式,看情况。
-
组合:对于一个可重集\(S=\{n_1a_1,n_2a_2,...,n_ka_k\},n=\Sigma n_i\)从中选出\(r\)个元素做组合的个数\(N\)为:
-
\(r>n\)时,\(N=0\)
-
\(r=n\)时,\(N=1\)
-
\(r<n,\forall n_i>r\)时,\(N={r+k-1 \choose r}\)
证明如下:设有\(k\)类元素\(1,2,...k\)取出可重集\(b_1,b_2,...,b_k\),则有\(b_1\leq b_2\leq...\leq b_k\)。设\(c_i=b_i-i+1\),则一定有\(c_1\leq c_2\leq ...\leq c_k\leq k+r-1\),证毕。
推论:\(S=\{n_1a_1,n_2a_2,...,n_ka_k\},r\geq k\),则\(S\)中每个元素至少取一个的\(r\)可重集组合为:\({r-1 \choose k-1}={r-1 \choose r-k}\)
-
\(r<n,\exist n_i<r\)时,无通式,看情况。
-
-
不相邻组合:即要求从\(1,2,...,n\)中选出的数不相邻,方案数为:\({n-r+1 \choose r}\)
证明如下:设\(b_1,b_2,...,b_r\)为取出的一个组合一定满足\(b_1<b_2<...<b_r\)且相邻的两数差\(\geq2\)
设\(c_i=b_i-i+1\),这样相当于去掉了相邻这一限制,一定满足\(c_1<c_2<...<c_r<n-r+1\)
-
-
组合中的常用的公式(懒得附证明了,证法多样,常见的证法为分多种情况考虑):
- \({n \choose r}={n \choose n-r}\)
- \({n \choose r}={n-1 \choose r}+{n-1 \choose r-1}\)
- \({n \choose n}+{n+1 \choose n}+{n+2 \choose n}+...+{n+r \choose n}={n+r+1 \choose n+1}\)
- \({n \choose l}{l \choose r}={n \choose r}{n-r \choose l-r}\)
- \({m \choose 0}+{m \choose 1}+{m \choose 2}+...+{m \choose m}=2^m\)(本条和下一条均与二项式定理有关)
- \({m \choose 0}-{m \choose 1}+{m \choose 2}+...\pm {m \choose m}=0\)
- \({m+n \choose r}={m \choose 0}{n \choose r}+{m \choose 1}{n \choose r-1}+{m \choose 2}{n \choose r-2}+...+{m \choose r}{n \choose 0}\)
- \({m+n \choose m}={m \choose 0}{n \choose 0}+{m \choose 1}{n \choose 1}+{m \choose 2}{n \choose 2}+...+{m \choose m}{n \choose m},m\leq n\)
\(Day3\):
-
母函数:对于数列\(C\),构造一个函数\(G(x)=C_0+C_1x_1+C_2x_2+C_3x_3+...\),我们称\(G(x)\)为序列\(C\)母函数。
-
重要桥梁:\(\frac{1}{1-x}=1+x+x^2+x^3+...\)。(用等比数列即可证明)
-
已知递推式,利用母函数求通项:(以下用\(Fibonacci\)数列\((F_n=F_{n-1}+F_{n-2},F_1=F_2=1)\)举例)
- 列出母函数,代入递推式。\[G(x)=F_1x+F_2x^2+F_3x^3+... \\\Rightarrow G(x)=F_1x+F_2x^2+(F_1+F_2)x^3+... \\\Rightarrow G(x)=x[G(x)-x]+x^2G(x)+x^2+x \\\Rightarrow G(x)=\frac{x}{1-x-x^2} \]
- 列出母函数,代入递推式。
-
-
将分母化为\((1-k_1x)(1-k_2x)...\)的形式
$$
G(x)=\frac{x}{(1-\frac{1+\sqrt{5}}{2}x)(1-\frac{1-\sqrt{5}}{2}x)}
$$ -
用待定系数法母函数转化为\(G(x)=\frac{A_1}{1-k_1x}+\frac{A_2}{1-k_2x}+...\)
$$
G(x)=\frac{\frac{1}{\sqrt{5}}}{1-\frac{1+\sqrt{5}}{2}x}+\frac{-\frac{1}{\sqrt{5}}}{1-\frac{1-\sqrt{5}}{2}x}
$$ -
对于每一个\(\frac{A_i}{1-k_ix}\),都可以化为\(A_i(1+k_ix+k_i^2x^2+...)\),然后比对系数,返回定义即可
$$
\alpha=\frac{1+\sqrt{5}}{2},\beta=\frac{1-\sqrt{5}}{2}
\\Rightarrow F_n=\frac{\alphan-\betan}{\sqrt{5}}
$$ -
母函数的性质:
-
\[ b_k = \left\{ \begin{array}{ll}0 & k<l\\a_{k-l} & k\geq l\\\end{array} \right.\Rightarrow B(x)=x^lA(x) \]
-
\[ b_k=a_{k-l}\Rightarrow B(x)=[A(x)-\sum^{l-1}_{k=0}a_kx_k]/x^l \]
-
\[ b_k=\sum^k_{k=0}a_i\Rightarrow B(x)=\frac{A(x)}{1-x} \]
-
\[ \sum^\infty_{k=0}a_k\textrm{收敛},b_k=\sum^\infty_{k=0}a_k\Rightarrow B(x)=\frac{A(1)-xA(x)}{1-x} \]
-
\[ b_k=ka_k\Rightarrow B(x)=xA'(x)(A'(x)=\frac{d}{dx}A(x)) \]
-
\[ c_k=a_0b_k+a_1b_{k-1}+...+a_kb_0=\sum^k_{h=0}a_hb_{k-h}\Rightarrow C(x)=A(x)B(x) \]
-
\[ b_k=\frac{a_k}{1+k}\Rightarrow B(x)=\frac{1}{x}\int^x_0A(x)dx \]
-
-
定义从\(n\)各不同元素中取出\(r\)个进行允许重复的组合为\(\mathbb{C}(n,r)\):
- 递推式:\(\mathbb{C}(n,r)=\mathbb{C}(n-1,r)+\mathbb{C}(n,r-1)\)
- 设\(\{\mathbb{C}(n,r)\}\)母函数为\(G_n(x)\),推出\(G_n(x)=(1-x)^{-n}\)
- 对上式运用麦克劳林公式,得\(G_n(x)=1+nx+\frac{n(n+1)}{2!}x+...+\frac{n(n+1)...(n+r)}{(r+1)!}x^{r+1}\)
-
\(Fibonacci\)数列重要性质:
- \(F_1+F_2+...+F_n=F_{n+2}-1\)
- \(F_1+F_3+F_5+...+F_{2n-1}=F_{2n}\)
- \(F_1^2+F_2^2+...+F_n^2=F_nF_{n+1}\)
-
行列式(因为懒得打,就不写出来了),对于一个方程组:
\[\left\{\begin{array}{ll}a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_n\\a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_n\\...\\a_{n1}x_1+a_{n2}x_2+...+a_{nn}x_n=b_n\end{array} \right. \]-
我们定义\(D\)为由系数\(a_{ij}\)组成的行列式,\(D_j\)表示将第\(j\)列替换为\(b\)后的行列式,则有\(x_j=\frac{D_j}{D}\)
-
定义\(D_{i,j}\)为\(D\)去掉\(i\)行\(j\)列后的行列式。
-
\(D=a_{i1}(-1)^{i+1}D_{i1}+a_{i2}(-1)^{i+2}D_{i2}+...a_{in}(-1)^{i+n}D_{in}\)
-
实际上\(D\)就等于从距震中取\(n\)个数相乘,保证每行每列仅取一个数的所有方案答案和,每种方案的系数遵循正负对角线。
-
\(Day4:\)
-
线性常系数齐次递推关系:
-
定义:\(a_n+c_1a_{n-1}+c_2a_{n-2}+...+c_ka_{n-k}=0,a_0=d_0,a_1=d_1,...,a_{k-1}=d_{k-1}\)
-
\(C(x)=x^k+c_1x^{k-1}+...+c_k\)为\(\{a_n\}\)的特征多项式
-
- 我们将以下式子相加:\[x^k(a_k+c_1a_{k-1}+c_2a_{k-2}+...+c_ka_0)=0\\ x^{k+1}(a_{k+1}+c_1a_k+c_2a_{k-1}+...+c_ka_1)=0\\ ...\\ x^n(a_n+c_1a_{n-1}+c_2a_{n-2}+...+c_ka_{n-k})=0\\ \Rightarrow \sum^k_{i=1}c_ix^iG(x)=\sum^{k-1}_{j=0}c_jx^j\sum^{k-1-j}_{i=0}a_ix_i=P(x) \]
- 我们将以下式子相加:
-
设\(C(x)=0\)在复数域上\(i\)个根为\(\alpha_1,\alpha_2,...,\alpha_i\),有\(C(x)=(x-\alpha_1)^{k_1}(x-\alpha_2)^{k_2}...(x-\alpha_i)^{k_i}\)
-
\[\sum^k_{i=1}c_ix^i=x^kC(\frac{1}{x})\\ \Rightarrow G(x)=\frac{P(x)}{\overset{i}{\underset{j=1}{\prod}}(1-\alpha_jx)^{k_j}}\\ \Rightarrow G(x)=\sum^i_{t=1}\sum^{k_t}_{j=1}\frac{A_{tj}}{(1-\alpha_tx)^j}\\ \Rightarrow a_n=\sum^i_{t=1}\sum^{k_t}_{j=1}A_{tj}{n+j-1 \choose j}\alpha_t \]
- 无重根:\(A_i\)用范德蒙德行列式求即可\[a_n=\sum^{k}_{i=1}A_i\alpha_i^n \]
- 无重根:\(A_i\)用范德蒙德行列式求即可
-
-
共轭根:设\(\alpha_1,\alpha_2\)为一对共轭根,\(\alpha_1=\rho(cos\theta+isin\theta),\alpha_2=\rho(cos\theta-isin\theta)\)所以有:\(\frac{A_1}{1-\alpha_1x}+\frac{A_2}{1-\alpha_2x},x^n\)系数为\(A\rho^ncosn\theta+B\rho^nsinn\theta\)
-
\(k\)重根:\(a_n=(A_1+A_2n+A_3n^2+...+A_kn^{k-1})k^n\)
-
整数的拆分:
-
用\(a_1,a_2,a_3,...,a_n\)的砝码,各有\(b_1,b_2,b_3,...,b_n\)个,问能称出的重量及称法个数,母函数(组合):
\[G(x)=\prod^n_{i=1}(1+x^{a_i}+x^{a_i*2}+...+x^{a_i*b_i}) \] -
母函数拆开后,每一项的次数表示重量,系数表示该重量的方案数。
-
设将\(n\)拆为\(1,2,3,...\)之和,允许重复的方案数为\(p_n\),\(\{p_n\}\)其母函数为:
\[G(x)=\prod^\infty_{i=1}(1-x^i)^{-1} \]
-
-
设将\(n\)拆为\(1,2,3,...m\)之和,允许重复,且\(m\)至少出现一次的方案数为\(p'_n\),\(\{p'_n\}\)其母函数为:
\[ G(x)=\prod^m_{i=1}(1-x^i)^{-1}-\prod^{m-1}{i=1}(1-x^i)^{-1} \]- 拆分数估计:\(p_n\leq e^{\sqrt{\frac{20}{3}n}}(p_n< e^{\sqrt{\frac{2}{3}n\pi}})\)证明略!!!
-
指数型母函数(用于求排列):定义:\(G(x)=a_0+\frac{a_1}{1!}x+\frac{a_2}{2!}x^2+\frac{a_3}{3!}x^3...\)
-
用\(a_1,a_2,a_3,...,a_n\)的元素,各有\(b_1,b_2,b_3,...,b_n\)个,问其取\(r\)个做排列的个数,母函数为:
\[G(x)=\prod^n_{i=1}(1+\frac{x^{1}}{1!}+\frac{x^{2}}{2!}+...+\frac{x^{b_i}}{b_i!}) \] -
母函数拆开后,\(x^r\)的系数化为\(\frac{t}{r!}\)形式后,\(t\)为取\(r\)个做排列的个数。
-
常用式子:\(e^x\)的麦克劳林展开。
-
-
错排:\(n\)个元素做排列,要求每个元素不在其位置上。(可用容斥和棋盘多项式理解)
- 设\(D_n\)表示\(n\)个数的错排,有递推式:\(D_n=(n-1)(D_{n-1}+D_{n-2})\),即为任选一个数\(i\),和其他\(n-1\)个数一一互换,其余\(n-2\)个数错排的方案数与除\(i\)的\(n-1\)个数错排,再将\(i\)和其他的数互换的方案数之和。
- 将原式化为:\(D_n-nD_{n-1}=(-1)^n\),令\(G(x)=D_0+D_1x+\frac{D_2}{2!}x^2+\frac{D_3}{3!}x^3...\)
- 带入化简得:\(G(x)=\frac{e^{-x}}{1-x}\),所以有\(D_n=(1-1+\frac{1}{2!}-\frac{1}{3!}+...\pm\frac{1}{n!})n!\)
-
\(Ferrer\)图像
- 定义:从上到下每行点数为\(n_1,n_2,n_3,...,n_m\),满足:\(n_1>n_2>n_3>...>n_m\)
- 共轭图像:将原图像的第\(1\)行和第\(1\)列,第\(2\)行和第\(2\)列。。。第\(k\)行和第\(k\)列互换。
- 性质\(1:\)正整数\(n\)拆分为\(k\)个数和的拆分数和将\(n\)拆分为最大数为\(k\)的拆分数相等。
- 性质\(2:\)正整数\(n\)拆分为不超过\(k\)个数和的拆分数和将\(n\)拆分为最大数不超过为\(k\)的拆分数相等。
-
棋盘多项式(棋盘放棋子,满足每行每列仅有一个棋子):
-
设\(C\)表示一种棋盘,\(r_k(c)\)表示在棋盘\(C\)上放\(k\)个棋子的个数,则棋盘多项式为:
\[R(C)=\sum^n_{k=0}r_k(C)x^k \] -
棋盘多项式的系数为方案数(看定义)
-
性质:\(R(c)=xR(C_{(i)})+R(C_{(e)})\),\(C_{(i)}\)表示将\(C\)上的指定格子的行列删去,\(C_{(e)}\)表示将指定格子删去
-
若\(C_1,C_2\)相互隔离(\(C_1\)中每个格子都与\(C_2\)的格子同行同列),有:\(R(C)=R(C_1)R(C_2)\)
-
有禁区的排列:\(n!-r_1(n-1)!+r_2(n-2)!-...\pm r_n\),其中\(r_i\)是有\(r_i\)个格子放在禁区的方案数。
-