组合数学

定义与符号

  1. 用 \(n!\) 表示 \(n\) 的阶乘;\(n^{\underline k}\) 表示其下降阶乘幂;\(n^{\overline k}\) 表示其上升阶乘幂。\(n!=1\times 2\times...\times n,n^{\underline k}=n\times(n-1)\times...\times(n-k+1),n^{\overline k}=n\times(n+1)\times...\times(n+k-1)\)
  2. 用 \(A_n^m\) 表示从 \(n\) 个元素中有序 选 \(m\) 个的数量(排列),\(A_n^m=\frac{n!}{(n-m)!}=n^{\underline m}\)
  3. 用 \(C_n^m\) 或 \(n\choose m\) 表示从 \(n\) 个元素中选 \(m\) 个元素所组成的集合的数量(组合),\(C_n^m=\)\(n\choose m\)\(=\frac{n!}{(n-m)!m!}=\frac{n^{\underline m}}{m!}\)

计数

计数原理

  1. 加法原理:如果完成一件事有 \(n\) 类方法,且第 \(i\) 类方法有 \(a_i\) 种方案,则完成这件事共有 \(\Sigma a_i\) 种方案。
  2. 乘法原理:如果完成一件事有 \(n\) 个步骤,且第 \(i\) 个步骤有 \(a_i\) 种方案,则完成这件事共有 \(\Pi a_i\) 种方案。

计数方法

  1. 捆绑法。将一些元素看成一个整体,先将有限制的元素先进行计算,再将所有元素进行计算。
  2. 插空法。当要求某些元素不相邻 时,将有限制的 \(m\) 个元素放入 \(n-m+1\) 个空格之中。
  3. 隔板法。将 \(n\) 个元素放入 \(m\) 个容器中,相当于将元素分成 \(m\) 组。

组合有关恒等式

对称:

\{n\\choose k}={n \\choose n-k} \\

吸收、提取:

\{n\\choose k}=\\frac{n}{k}{n-1\\choose k-1} \\

加法、归纳:

\{n\\choose k}={n-1\\choose k}+{n-1\\choose k-1} \\

证明1(组合意义):最后一个人可选可不选。

证明2:写成定义式直接加。

相伴:

\(n-k){n\\choose k}=n{n-1\\choose k},k{n\\choose k}=(n-k+1){n\\choose k-1} \\

证明:写成定义式直接化即可。

上指标反转:

\{n\\choose k}=(-1)\^k{k-n-1\\choose k} \\

证明:

\\\begin{aligned} {n\\choose k}\&=\\frac{n\^{\\underline k}}{k!}\\\\ \&=\\frac{n\\times(n-1)\\times...\\times(n-k+1)}{k!}\\\\ \&=\\frac{(-1)\^k\\times(-n)\\times(1-n)\\times...\\times(k-n-1)}{k!}\\\\ \&=(-1)\^k\\frac{(k-n-1)\^{\\underline k}}{k!}\\\\ \&=(-1)\^k{k-n-1\\choose k} \\end{aligned} \\

三项式系数:

\{n\\choose m}{m\\choose k}={n\\choose k}{n-k\\choose m-k} \\

证明1(组合意义):从 \(n\) 个元素中选 \(m\) 个再从 \(m\) 个元素中选 \(k\) 个,等价于直接从 \(n\) 个数中选 \(k\) 个,再从 \(n-k\) 个中选剩余 \(m-k\) 个。

证明2:写成定义式直接化即可。

上指标求和:

\\\sum_{i=m}\^{n}{i\\choose m}={n+1\\choose m+1} \\

证明1(组合意义):在 \(n+1\) 个元素中选 \(m+1\) 个元素,等价于强制在前 \(i\) 个元素中选 \(m\) 个元素,再在后面元素中选一个的方案数。

证明2:

\\\begin{aligned} {n+1\\choose m+1}\&={n\\choose m}+{n\\choose m+1}\\\\ \&={n\\choose m}+{n-1\\choose m}+{n-1\\choose m+1}\\\\ \&={n\\choose m}+{n-1\\choose m}+{n-2\\choose m}+{n-2\\choose m+1}\\\\ \&=\\sum_{i=0}\^n{i\\choose m}=\\sum_{i=m}\^n{i\\choose m} \\end{aligned} \\

平行恒等式:

\\\sum_{i=0}\^n{m+i\\choose i}={m+n+1\\choose n} \\

证明:

\\\sum_{i=0}\^n{m+i\\choose i}=\\sum_{i=0}\^n{m+i\\choose m}={m+n+1\\choose m+1}={m+n+1\\choose n} \\

范德蒙德卷积/下指标卷积:

\\\sum_{i=0}\^k{n\\choose i}{m\\choose k-i}={n+m\\choose k} \\

证明:一共有 \(n+m\) 个元素,以 \(n\) 为断点,在两边分别选一些元素,等价于直接在 \(n+m\) 个元素中选 \(k\) 个元素。

下指标点积:

\\\sum_{i=0}\^m{n\\choose i}{m\\choose i}={n+m\\choose m} \\

证明同上。

上指标卷积:

\\\sum_{i=0}\^{k}{i\\choose n}{k-i\\choose m}={k+1\\choose n+m+1} \\

证明:把 \(k\) 个元素分成两部分,每部分分别选 \(n\)、\(m\) 个,等价于有 \(k+1\) 个元素,先选择其中一个作为隔板,然后再选出 \(n+m\) 个元素。

组合数相关

\(\texttt{Lucas}\) 定理

\{n\\choose m}\\equiv{\\lfloor\\frac{n}{p}\\rfloor\\choose\\lfloor\\frac{m}{p}\\rfloor}{n\\bmod p\\choose m\\bmod p}\\pmod p,p\\in prime \\

证明:\(\because{p\choose i}\bmod p=m=1\\or m=p\) \(\therefore(a+b)^p\equiv a^p+b^p\pmod{p}\)

\(\because{n\choose m}=x\^m(1+x)^n\) \(\therefore(1+x)^n=(1+x)^{p\lfloor\frac{n}{p}\rfloor}(1+x)^{n\bmod p}\)

\(\therefore(1+x)^n\equiv(1+x^p)^{\lfloor\frac{n}{p}\rfloor}+(1+x)^{n\bmod p}\pmod{p}\)

对于每一个 \(m\),都有 \(m=p\lfloor\frac{m}{p}\rfloor+{m\bmod p}\)

\(\therefore{n\choose m}\equiv{\lfloor\frac{n}{p}\rfloor\choose\lfloor\frac{m}{p}\rfloor}{n\bmod p\choose m\bmod p}\pmod p\)

二项式定理

\(x+y)\^n=\\sum_{i=0}\^n{{n\\choose i}x\^iy\^{n-i}} \\

证明:在 \(n\) 个 \((x+y)\) 中分别选一项,可以考虑枚举 \(x\) 个数分别算贡献。

拓展

\(x+y)\^{\\underline n}=\\sum_{i=0}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i}}} \\

\(x+y)\^{\\overline n}=\\sum_{i=0}\^n{{n\\choose i}x\^{\\overline i}y\^{\\overline {n-i}}} \\

证明:数学归纳法。(以第一个为例子)

  • 基本情况:当 \(n=1\) 时,有 \(x+y=x+y\)
  • 归纳步骤:已知 \(n\) 成立,当 \(n\) 变成 \(n+1\) 时,左式多出 \(x+y-n\),代入右式得到:

\\\begin{aligned} \\sum_{i=0}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i}}(x+y-n)}\&=\\sum_{i=0}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i}}((x-i)+(y-n+i))}\\\\ \&=\\sum_{i=0}\^n{{n\\choose i}x\^{\\underline {i+1}}y\^{\\underline {n-i}}}+\\sum_{i=0}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i+1}}}\\\\ \&=\\sum_{i=1}\^{n+1}{{n\\choose i-1}x\^{\\underline {i}}y\^{\\underline {n-i+1}}}+\\sum_{i=0}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i+1}}}\\\\ \&=x\^{n+1}+y\^{n+1}+\\sum_{i=1}\^{n}{{n\\choose i-1}x\^{\\underline {i}}y\^{\\underline {n-i+1}}}+\\sum_{i=1}\^n{{n\\choose i}x\^{\\underline i}y\^{\\underline {n-i+1}}}\\\\ \&=x\^{n+1}+y\^{n+1}+\\sum_{i=1}\^n{{n+1\\choose i}x\^{\\underline i}y\^{\\underline {n-i+1}}}\\\\ \&=\\sum_{i=0}\^{n+1}{{n+1\\choose i}x\^{\\underline i}y\^{\\underline {n+1-i}}}\\\\ \\end{aligned} \\

牛顿级数

记 \(\Delta^na\) 表示数列 \(a\) 差分 \(n\) 次后的数列,则有:

\\\Delta\^na_i=\\sum_{j=0}\^n(-1)\^j{n\\choose j}a_{i-j} \\

证明1:数学归纳法。

  • 基本情况:当 \(n=0\) 时,有 \(a_i=a_i\)
  • 归纳步骤:已知 \(n\) 成立,当 \(n\) 变成 \(n+1\) 时

\\\begin{aligned} \\Delta\^{n+1}a_i\&=\\Delta\^na_i-\\Delta\^na_{i-1}\\\\ \&=\\sum_{j=0}\^n(-1)\^j{n\\choose j}a_{i-j}-\\sum_{j=0}\^n(-1)\^j{n\\choose j}a_{i-j-1}\\\\ \&=\\sum_{j=0}\^{n}(-1)\^j{n\\choose j}a_{i-j}+\\sum_{j=1}\^{n+1}(-1)\^j{n\\choose j-1}a_{i-j}\\\\ \&=a_{i-1}+(-1)\^{n+1}a_{i-n}+\\sum_{j=1}\^{n}(-1)\^j{n\\choose j}a_{i-j-1}+\\sum_{j=1}\^{n}(-1)\^j{n\\choose j-1}a_{i-j}\\\\ \&=a_{i-1}+(-1)\^{n+1}a_{i-n-1}+\\sum_{j=1}\^{n}(-1)\^j{n+1\\choose j}a_{i-j}\\\\ \&=\\sum_{j=0}\^{n+1}(-1)\^j{n+1\\choose j}a_{i-j}\\\\ \\end{aligned} \\

证明2:定义平移算子 \(E\),不变算子 \(I\),则差分算子 \(\Delta=I-E\)。所以有:

\\\Delta\^na_i=(I-E)\^na_i=(\\sum_{j=0}\^n{(-1)\^j{n\\choose j}E\^jI\^{n-j}})a_i=\\sum_{j=0}\^n{(-1)\^j{n\\choose j}a_{i-j}} \\

错排

记 \(f_n\) 表示长度为 \(n\) 的、不存在 \(p_i=i\) 的排列个数,则有:

\f_n=(n-1)(f_{n-1}+f_{n-2}) \\

证明:考虑第一个元素有 \(n-1\) 种放法,设放到位置 \(k\),那么元素 \(k\) 就有两种情况:如果放在一,则剩余元素有 \(f_{n-2}\) 种放法;否则则视为元素一加入含 \(k\) 的置换环中,等价于在 \(n-1\) 元素组成的置换环中插入元素一,则有 \(f_{n-1}\) 种。

拓展鸽巢原理

将 \((\sum_{i=1}^np_i)-n+1\) 个元素放入 \(n\) 个集合,一定存在一个集合 \(i\),使得第 \(i\) 个集合至少包含 \(p_i\) 个元素。

证明:反证法。先假设第 \(i\) 个集合中放了 \(p_i-1\) 个元素,则会有一个元素不在集合中。

相关推荐
aWty_14 小时前
实分析入门(12)--可测函数
学习·数学·算法·实变函数
databook16 小时前
一次函数图像工厂:用 SymPy 自动生成 y=kx+b 对比动画
python·数学·动效
装不满的克莱因瓶2 天前
图像尺寸调整:缩放矩阵如何改变像素坐标?
人工智能·线性代数·数学·算法·机器学习·矩阵
闻缺陷则喜何志丹2 天前
【几何】指定半径倒角的实现,暂不考虑误差
数学·计算几何·几何·倒角
装不满的克莱因瓶2 天前
什么是特征分解?从数学定义到现实问题的映射
人工智能·数学·算法·机器学习·ai·特征分解
aWty_2 天前
实分析入门(11)--Cantor三分集
学习·数学·算法·实变函数
databook3 天前
用 SymPy 解决 Manim 曲线绘制速度不均的问题
python·数学·动效
Luhui Dev5 天前
大角几何 MCP 服务上线:让 AI Agent 直接完成几何作图
人工智能·数学·机器学习·大角几何·luhuidev
Tisfy5 天前
LeetCode 3300.替换为数位和以后的最小元素:一次遍历
数学·算法·leetcode·模拟
databook9 天前
Manim物理模拟:别自己写欧拉了!
python·数学·动效