组合数学相关知识笔记

组合数及相关推论

  • 组合数递推:\(\binom nk=\binom {n-1}k+\binom{n-1}{k-1}\)。组合意义易证。

  • 经典组合恒等式:\(k\binom nk=n\binom{n-1}{k-1}\)。展开即可证明。

  • 带下指标系数前缀和:\(\sum_{i=1}^n i\binom ni=n\sum_{i=1}^n\binom {n-1}{i-1}=n2^{n-1}\)

  • 指标相消:\(\binom nk\binom kl=\binom nl\binom {n-l}{k-l}\)。这涉及到组合数的一个很重要的化简方式:展开成阶乘形式,在抵消后的分子分母补充另一个阶乘,形成另外的组合数乘积形式。

  • 范德蒙德卷积:\(\sum_{k=0}^n\binom{x}{k}\binom{y}{n-k}=\binom{x+y}{n}\)

    推论:取 \(n=x=y\) 得到 \(\sum_{k=0}^n\binom nk^2=\binom{2n}n\)

  • 上指标求和:\(\sum_{i=0}^n\binom{i}{x}=\binom{n+1}{x+1}\)

  • 下指标求和的若干递推:下设 \(S(i,j)=\sum_{k=0}^j \binom{i}{k}\)

    • \(S(i,j)=S(i,j-1)+\binom{i}{j}\),这是显然的。
    • \(S(i,j)=2S(i-1,j)-\binom{i-1}{j}\),可以根据组合数递推式把每一个 \(\binom ij\) 的上指标变成 \(i-1\) 得出。

    利用这些递推式,我们可以用莫队批量求组合数前缀和的值。

  • 二项式反演:\(f(n)=\sum_{k=0}^n\binom nk(-1)^kg(k)\leftrightarrow g(n)=\sum_{k=0}^n\binom nk(-1)^kf(k)\)。也即交换函数位置,等式依然成立。

    此处利用一些乘除 \((-1)^k\) 之类的恒等变换,可以得到形式二:

    \[f(n)=\sum_{k=0}^n\binom{n}{k}g(k)\leftrightarrow g(n)=\sum_{k=0}^n\binom{n}{k}(-1)^{n-k}f(k) \]

    以及我们有向上方向的形式三:

    \[f(n)=\sum_{k=n}^N\binom{k}{n}(-1)^kg(k)\leftrightarrow g(n)=\sum_{k=n}^N\binom{k}{n}(-1)^{k}f(k) \]

    同样用恒等变换,得到形式四:

    \[f(n)=\sum_{k=n}^N\binom{k}{n}g(k)\leftrightarrow g(n)=\sum_{k=n}^N\binom{k}{n}(-1)^{k-n}f(k) \]

    应用:\(f(n)\) 表示恰有 \(n\) 种满足条件,\(g(n)\) 表示钦定某 \(n\) 种满足条件的和,则枚举实际上有几种满足条件,有 \(g(n)=\sum_{k=n}^N\binom{k}{n}f(k)\)。一般来说 \(g\) 有另一个好求形式,故利用形式四即可求出 \(f\) 的表达式。

第二类斯特林数

意义:把 \(n\) 个不同的球放进 \(m\) 个非空的、不做区分的盒子里。

递推

\(S(n,k)=S(n-1,k-1)+kS(n-1,k)\)。考虑最后一个球是否单开即可。注意 \(S(i,0)=[i=0]\)

通项公式及其证明

考察一个大小为 \(n\) 的集合到一个大小为 \(k\) 的集合的满射个数为 \(S(n,k)\times k!\)。大小为 \(n\) 的集合到一个大小为 \(m\) 的集合的映射个数(不要求 \(m\) 个全部被射到)为 \(m^n\)。枚举 \(m\) 个中有多少个被射到,保证 \(n\geq m\),有:

\[\begin{align} m^n&=\sum_{k=0}^m\binom mkk!S(n,k)\tag 1\\ m^n&=\sum_{k=0}^m\binom mk(-1)^k((-1)^kk!S(n,k))\notag\\ (-1)^mm!S(n,m)&=\sum_{k=0}^m\binom mk(-1)^kk^n\tag{二项式反演}\\ S(n,m)&=\frac{1}{m!}\sum_{k=0}^m\binom mk(-1)^{m-k}k^n\tag 2 \end{align} \]

上述推导过程中的 \(1\) 式是经典的普通幂转化形式,\(2\) 式是第二类斯特林数的通项公式。

下降幂的二类斯特林数表示

根据上面的 \((1)\),可以直接得到下降幂利用第二类斯特林数与普通幂转化的式子:

\[\begin{align} m^n&=\sum_{k=0}^m\binom mkk!S(n,k)\tag 1\\ m^n&=\sum_{k=0}^m S(n,k)m^{\underline{k}}\notag \end{align} \]

很多地方把求和的 \(m\) 写成 \(n\)。原因是此处 \(m\le n\),当 \(k\geq m\)\(\binom mk=0\),下降幂部分 \(=0\),实际上是无效的。考虑 \(n\leq m\) 的情况,我们会多算 \(k>n\) 的部分,但斯特林数部分为 \(0\),也是无效的。

第一类斯特林数

意义:有多少个 \(n\) 阶排列的置换环数量为 \(k\) 个。约定 \(s(0,0)=1\)

递推

\(s(n,k)=s(n-1,k-1)+(n-1)s(n-1,k)\),考虑 \(n\) 自己成环,或者插入到某个已有的环中即可。

上升幂与下降幂的一类斯特林数表示

\[\begin{align} x^{\underline n}&=\sum_{k=0}^n(-1)^{n-k}s(n,k)x^k\tag 3\\ x^{\overline n}&=\sum_{k=0}^ns(n,k)x^k\tag 4 \end{align} \]

上述两个式子等价,考虑 \((4)\to (3)\)

\[\begin{align} (-x)^{\overline n}&=(-x)(-x+1)...(-x+n-1)=\sum_{k=0}^ns(n,k)(-x)^k\notag\\ x_{\underline n}&=(-1)^n(-x)^{\overline n}=\sum_{k=0}^n(-1)^{n-k}s(n,k)\notag \end{align} \]

记忆 \((4)\) 即可。

斯特林反演

\[\begin{align} f(n)=\sum_{k=0}^ns(n,k)(-1)^kg(k)\leftrightarrow g(n)=\sum_{k=0}^nS(n,k)(-1)^kf(k)\tag 5 \end{align} \]

  • 考察第一类斯特林数的定义:\(n\) 的排列中置换环个数为 \(k\) 的排列数量,我们有 \(n!=\sum_{k=0}^ns(n,k)\)

\[\begin{aligned} n!&=\sum_{k=0}^ns(n,k)\notag\\ n!&=\sum_{k=0}^n(-1)^ks(n,k)(-1)^k\notag\\ \end{aligned} \]

​ 令 \(f(n)=n!\)\(g(k)=(-1)^k\),由斯特林反演得到 \(\sum_{k=0}^nS(n,k)(-1)^kk!=(-1)^n\)

  • 考察上述上升/下降幂利用分别利用一二类斯特林数的表示,不难发现可以通过斯特林反演互相转换。因此也可以通过记忆斯特林反演的式子和第二类斯特林数通项的组合意义推导,来推出其他上升/下降幂与普通幂的转化。

Bell 数

意义:把 \(n\) 个数分成若干个非空块的个数,约定 \(B_0=1\),显然有 \(B_n=\sum_{i=1}^nS(n,i)\)

递推\(B_{n+1}=\sum_{k=0}^n\binom nk B_k\),枚举哪些元素不在新进的那个数的块里即可。

错位排列

约定 \(D_0=1\)\(D_1=0\)

递推

\(D_n=(n-1)(D_{n-1}+D_{n-2})\),考察 \(p_1=k\),若 \(p_k=1\),则是一个 \(n-2\) 的子问题,否则把 \(1,k\) 缩起来,是 \(n-1\) 的子问题。枚举 \(k\) 的取值有 \((n-1)\) 的系数。

那么有推论:

\[\begin{align} D_n-nD_{n-1}&=(n-1)D_{n-2}-D_{n-1}\notag\\ &=-(D_{n-1}-(n-1)D_{n-2})\notag\\ &...\notag\\ &=(-1)^{n-1}(D_1-D_0)\tag{递归到子问题}\\ &=(-1)^n\notag\\ D_n&=nD_{n-1}+(-1)^n\tag 6 \end{align} \]

推论

\[D_n=n!\sum_{k=0}^n\frac{(-1)^k}{k!} \]

证明:考虑长度为 \(n\) 的全排列中,恰好有 \(k\) 个错位的有 \(\binom nk D_k\) 种,则有:

\[\begin{align} n!&=\sum_{k=0}^n\binom nkD_k\notag\\ n!&=\sum_{k=0}^n\binom nk(-1)^k((-1)^kD_k)\notag\\ (-1)^nD_n&=\sum_{k=0}^n\binom nk(-1)^kk!\tag{二项式反演}\\ D_n&=\sum_{k=0}^n(-1)^{n-k}\frac{n!}{(n-k)!}\notag\\ D_n&=n!\sum_{k=0}^n\frac{(-1)^k}{k!}\tag 7 \end{align} \]

卡特兰数

意义:给 \(a_0a_1...a_n\) 加括号变为二元运算的方式数量。这等价于 \(n\) 组括号的合法括号串数量。约定 \(C_0=1\)

递推

\(C_{n+1}=\sum_{i=0}^nC_iC_{n-i}\)。考察最后一个右括号匹配的左括号的位置即可。

通项公式

\(C_n=\frac{\binom{2n}n}{n+1}\)。反射容斥易证。

应用

很多有上述递推式结构的问题都是卡特兰数,如 \(n\) 边形三角剖分数量、\(n\) 个点的有标号二叉搜索树数量等。

容斥原理相关应用

容斥原理推导 \(\varphi(n)\) 表达式

\(\varphi(n)\) 表示 \(1\sim n\)\(n\) 互质的数的个数。设 \(n=p_1^{a_1}\dots p_k^{a_k}\),考虑减去能被某个 \(p\) 整除的数的数量,再加回来能被某两个数整除的数的数量......于是有:

\[\begin{align} \varphi(n)&=n-\sum_{i=1}^k\frac{n}{p_i}+\dots+(-1)^k\frac{n}{p_1\dots p_n}\notag\\ &=n(1-\sum_{i=1}^k\frac{1}{p_i}+\sum_{1\le i<j\le k}\frac{1}{p_ip_j}-\dots+(-1)^k\frac{1}{p_1\dots p_n})\notag\\ &=n\prod_{i=1}^k(1-\frac{1}{p_i})\notag\\ &=\prod_{i=1}^kp_i^{a_i}(1-\frac1{p_i})\notag\\ &=\prod_{i=1}^k p_i^{a_i-1}(p_i-1)\tag 8 \end{align} \]

容斥原理推导第二类斯特林数通项

注意到容斥原理和二项式反演结构类似,因此利用二项式反演求得通项的第二类斯特林数、错排数等均可使用容斥推出。下面以第二类斯特林数举例:

仍然沿用集合映射的场景,我们考虑用总的映射数量减去有一个未被映射到的数量,加上有两个......于是有:

\[\begin{align} m!S(n,m)&=m^n+\sum_{i=1}^m(-1)^i\binom mi(m-i)^n\notag\\ &=\sum_{i=0}^m(-1)^i\binom mi(m-i)^n\tag 9 \end{align} \]

不难发现 \((9)\) 与上文所述的 \((2)\) 等价。

另外,取 \(m=n\),有

\[\begin{align} n!S(n,n)&=\sum_{i=0}^n(-1)^i\binom ni(n-i)^n\notag\\ n!&=\sum_{i=0}^n(-1)^i\binom ni i^n\tag {10} \end{align} \]

加权的容斥原理

约定对每个元素赋权 \(w\),则集合 \(S\)\(w(S)\) 记作所有元素的 \(w\) 的和。若 \(S_1\dots S_k\)\(S\) 的子集,我们有如下容斥式子:

\[w(\{a|a 恰好属于 S_1\sim S_k 中的 m 个集合\})=\sum_{i=0}^k\binom im(-1)^{i-m}W_i\tag{11} \]

其中 \(W_i=\sum_{1\leq p_1<p_2<\dots<p_l\le k}w(S_{p_1}\cap\dots\cap S_{p_l})\)

注意到 \(i<m\) 的时候,求和值为 \(0\),因此也可以将起点设置在 \(m\)。这个问题有一个另外的朴素容斥形式,即注意到 \(W_i\) 表示至少属于其中 \(i\) 个的权值和,则恰好属于 \(m\) 个等于 \(W_m-W_{m+1}\)。下面简单证明 \((11)\) 的正确性:

考察元素 \(a\),假定其属于 \(1\sim k\) 中的恰好 \(n\) 个:

  • \(n<m\),则 \(i\) 起点在 \(m\) 的情况下,\(a\) 不会被计入,合法。

  • \(n\geq m\),则有如下推导:

    \[\begin{align} N_a&=\sum_{i=m}^k\binom im(-1)^{i-m}\binom ni\notag\\ &=\sum_{i=m}^n\binom nm\binom{n-m}{i-m}(-1)^{i-m}\tag {组合恒等式,同时缩小上界}\\ &=\binom nm\sum_{j=0}^{n-m}\binom{n-m}{j}(-1)^j\tag{令j=i-m}\\ &=\binom nm(1+(-1))^{n-m}\tag {二项式定理} \end{align} \]

    不难发现上述式子当且仅当 \(n=m\) 时值为 \(1\),否则值为 \(0\)。因此正确性得证。

posted @ 2025-03-02 16:18  烟山嘉鸿  阅读(287)  评论(0)    收藏  举报