【学习笔记】组合数学

基础定义、式子之类的

排列:\(A^{m}_{n}\) 表示在 \(n\) 个人中选 \(m\) 个人,顺序对答案有影响(即 \(12345\)\(42351\) 算作不同)。\(A^{m}_{n}=\frac{n!}{(n-m)!}\),意义就是第一个可以有 \(n\) 种选择,第二个有 \(n-1\) 种选择,一直到第 \(m\) 个有 \(n-m+1\) 个选择。撑起来就是上面那个式子。特殊的有 \(A_{n}^{n}=n!\)

组合:\(C_{n}^{m}\) 或者 \(\binom{n}{m}\) 表示在 \(n\) 个人中选 \(m\) 个人,顺序对答案无影响(即 \(12345\)\(21543\) 算作相同)。组合的计算方法有很多,比较常见的是递推和算阶乘。

递推式是 \(C_{n}^{m}=C_{n-1}^{m-1}+C_{n-1}^{m}\),就是说多加的那个人可能是新加的那个人,也可能是原来的序列中再挑了一个人。

阶乘算法是 \(C_{n}^{m}=\frac{n!}{m!(n-m)!}\)。发现就是相对于 \(A_{n}^{m}\) 多乘上一个 \(\frac{1}{m!}\)。也就是说对于选择的 \(m\) 个人相同的情况在排列中会算 \(A_{m}^{m}\) 中算了 \(m!\) 次,但是在组合中只会被算 \(1\) 次,所以乘上一个 \(\frac{1}{m!}\) 就好了。有 \(\binom{n}{m}=\binom{n}{n-m}\)

吸收公式:\(\binom{r}{k}=\frac{r}{k}\times\binom{r-1}{k-1}\),把组合数代进去很容易看出来。

吸收指标:\(\binom{n}{m}\binom{m}{k}=\binom{n}{k}\binom{n-k}{m-k}\)。把阶乘代进左边得到 \(\frac{n!}{k!(n-m)!(m-k)!}\),分子分母同时乘 \((n-k)!\) 然后就得到右边。

上指标求和:\(\sum_{i=0}^n\binom{i}{m}=\binom{n+1}{m+1}\)。理解为在 \(n+1\) 个数中选 \(m+1\) 个数的子集个数。枚举最后一个数选择第 \(i\) 个,\(\binom{n+1}{m+1}=\sum_{i=1}^{n+1}\binom{i-1}{m}=\sum_{i=0}^n\binom{i}{m}\)

平行求和:\(\sum_{i=0}^n\binom{m+i}{i}=\binom{m+n+1}{n}\)。这个不会证。

和斐波那契数列有关的:\(\sum_{i=0}^n\binom{n-i}{i}=F_{n+1}\),其中 \(F_i\) 为斐波那契数列的第 \(i\) 项。不会证。

不知名式子:\(\sum_{i=0}^ni^2\binom{n}{i}=n(n+1)2^{n-2}\)

证明:

  • 考虑组合推理形式。如果在 \(n\) 个人中枚举选 \(i\) 个人,给两个人打上标记(可以是同一个),方案数是 \(\sum_{i=0}^n i^2\binom{n}{i}\)
  • 考虑根据被标记的人重新计算。如果标记同一个人,方案数为 \(n2^{n-1}\)
  • 如果标记两个人,方案数为 \(n(n-1)2^{n-2}\)。加上之后得到 \(2^{n-2}(2n+n^2-n)=n(n+1)2^{n-2}\)

范德蒙徳卷积:\(\sum_{i=0}^k\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k}\)。考虑组合意义证明。在大小为 \(n+m\) 的集合中选择出 \(k\) 个数,相当于把集合拆成 \(n\)\(m\) 两个部分,在 \(n\) 中选 \(i\) 个,然后在 \(m\) 中选剩下的 \(k-i\) 个。

二项式定理:

定理本身是这个:\((x+y)^n=\sum_{i=0}^n\binom{n}{i}x^iy^{n-i}\)

证明:

  • 对于 \(n=1\) 显然成立。考虑使用归纳法。假设对于 \(n=k\) 成立,令现在 \(n=k+1\)
  • \((x+y)^{k+1}=x(x+y)^k+y(x+y)^k\),代入得 \(x\sum_{i=0}^k\binom{k}{i}x^iy^{n-i}+y\sum_{j=0}^k\binom{k}{j}x^jy^{n-j}\)
  • 乘进去得到 \(\sum_{i=0}^k\binom{k}{i}x^{i+1}y^{k-i}+\sum_{j=0}^k\binom{k}{j}x^jy^{k-j+1}\)。为了合并让指数相同,令 \(i=j-1\),为了避免出现负数提出 \(j=0\) 项。
  • \(y^{k+1}+\sum_{j=1}^{k+1}\binom{k}{j-1}x^jy^{k-j+1}+\sum_{j=1}^{k}\binom{k}{j}x^jy^{k-j+1}\)。发现很像了,把 \(j=k+1\) 提出来。
  • \(y^{k+1}+x^{k+1}+\sum_{j=1}^kx^jy^{k-j+1}(\binom{k}{j-1}+\binom{k}{j})\)。根据递推式可以把后面的那一坨换成 \(\binom{k+1}{j}\)\(y^{k+1}=\binom{k+1}{0}x^0y^{k-0+1},x^{k+1}=\binom{k+1}{k+1}x^{k+1}y^{k-k-1+1}\)
  • 把两个零散的代回去就会得到二项式定理的式子。

根据二项式定理可以得到很多有用的东西。

二项式定理中取 \(x=y=1\) 可以得到 \(\sum_{i=0}^n\binom{n}{i}=2^n\),取 \(x=-1,y=1\) 可以得到 \(\sum_{i=0}^n(-1)^i\binom{n}{i}=[n=0]\)

\(\sum_{i=0}^ni\binom{n}{i}=n2^{n-1}\)

证明:

  • \(S=\sum_{i=0}^ni\binom{n}{i}\)。则 \(S\) 同时等于 \(\sum_{i=0}^{n}(n-i)\binom{n}{i}\)
  • 所以 \(2S=\sum_{i=0}^nn\binom{n}{i}=n2^n\)。除以二即得证。

模质数 \(p\) 意义下的的类似二项式定理的东西:\((x+y)^p\equiv x^p+y^p\pmod p\)

证明:

  • 把组合数拆开,\(\binom{p}{i}=\frac{p!}{i!(p-i)!}\)。发现分子是 \(p!\),如果不被约掉的话就会使这一项变成 \(0\)
  • 因为 \(p\) 是质数,所以只有在 \(i=0\) 或者 \(i=p\) 时分母会出现 \(p!\)。所以只需要考虑 \(i=0\)\(i=p\) 时取值。就会得到 \(x^p+y^p\)

插板法

常用的组合数学技巧。诸如此类其实有一个叫小球盒子问题,这篇日报有很详细的讲法

经典问题:给定 \(n\) 个相同的球,分成相同的 \(m\) 组,每组不能空,方案数为 \(\binom{n-1}{m-1}\)

考虑分组即为在一些球的空隙间插板子,用 \(m-1\) 个板子隔开出 \(m\) 组。一共有 \(n-1\) 个空位,所以答案就是 \(\binom{n-1}{m-1}\)

经典问题:给定 \(n\) 个相同的球,分成相同的 \(m\) 组,每组可以空,方案数为 \(\binom{n+m-1}{n}\)

考虑现在多了 \(m\) 个球,然后题目条件变为每组不能空,方案数为 \(\binom{n+m-1}{m-1}=\binom{n+m-1}{n}\)。可以认为我们对每组都加一个球,然后把这些球都拿走,发现是一一对应的,所以和上一个问题的解法相同。

经典问题:给定 \(n\) 个相同的球,分成不同 \(m\) 组,第 \(i\) 组至少要有 \(a_i\) 个球,方案数为 \(\binom{n-\sum a+m-1}{n-\sum_a}\)

显然,类比上面的,考虑把每个组的 \(a_i\) 个球减去,问题变成给 \(n-\sum a\) 个球分成相同 \(m\) 组每组可以空的方案数,按第二个算就好。

不相邻的排列:在 \(1\)\(n\)\(m\) 个数,这 \(m\) 个数互不相邻的组合有 \(\binom{n-m+1}{m}\) 种。可以假设选一个用了两个数,当前选择的数并且这个数后面那个不能选,那么就等于在 \(n-m+1\) 个数(选择 \(n\) 不需要占用两个)中随便选 \(m\) 个数的方案数。

第二类斯特林数(斯特林子集数)

记作 \(\begin{Bmatrix}n\\m\end{Bmatrix}\)\(S(n,m)\) 。表示将 \(n\) 个不同的球分进相同的 \(m\) 个盒子,盒子不允许空的方案数。递推式是 \(S(n,m)=S(n-1,m-1)+m\times S(n-1,m)\)。边界是 \(S(0,0)=1\)。证明显然,考虑增加一个新球时有两种可能,新开一个,是 \(S(n-1,m-1)\);或者放进原来一个盒子,是 \(S(n-1,m)\),每个盒子都有可能,再乘上 \(m\)

通项公式:\(S(n,m)=\sum_{i=0}^m\frac{(-1)^{m-i}i^n}{i!(m-i)!}\)

证明:

  • 使用容斥原理。设将 \(n\) 个不同的球分到 \(i\) 个不同的盒子,盒子能空的方案数记为 \(g_i\)\(n\) 个不同的球分到 \(i\) 个不同的盒子,盒子不能空的方案数记为 \(f_i\)。显然对于 \(g_i\)\(f_i\),有 \(g_i=i^n=\sum_{j=0}^i\binom{i}{j}f_j\)。发现这个东西就是一个二项式反演。
  • \(f_i=\sum_{j=0}^n\binom{i}{j}(-1)^{i-j}g_j=\sum_{j=0}^n\binom{i}{j}(-1)^{i-j}j^n=\sum_{j=0}^n\frac{i!(-1)^{i-j}j^n}{j!(i-j)!}\)
  • 考虑 \(f_i\)\(S_{n,i}\) 的关系,发现问题里不同的在于第二类斯特林数的盒子是相同的,所以就是一个类似排列和组合的区别,乘以 \(\frac{1}{i!}\) 就好。
  • \(S(n,m)=\frac{f_m}{m!}\)。代进去就是上面那个通项公式。

所以根据这个推出来的还有一个重要公式是 \(x^n=\sum_{i=0}^xi!\binom{x}{i}S(n,i)=\sum_{i=0}^xS(n,i)\frac{x!}{(x-i)!}\)

卡特兰数

写了一大堆不如 OI-wiki

posted @ 2024-07-15 22:24  If_miao  阅读(85)  评论(0)    收藏  举报