组合数学学习笔记(持续完善中)

news/2024/11/13 10:28:26/文章来源:https://www.cnblogs.com/RyanAdam/p/18336474

基础知识

一、加法原理

完成某个工作有 \(n\) 类办法,第 \(i\) 类办法有 \(a_i\) 种,则完成此工作的方案数有 \(\sum\limits _{i=1}^n a_i\) 种。

二、乘法原理

完成某个工作有 \(n\) 个步骤,第 \(i\) 个步骤有 \(b_i\) 种,则完成此工作的方案数有 \(\prod\limits _{i=1}^n b_i\) 种。

排列组合(基础)

一、定义

1.排列数:从 \(n\) 个物体中选出 \(m\) 个物体按一定顺序排为一列的方案数,用 \(A_n ^m\ (\)\(P_n^m)\) 表示,
\(A_n^m=\dfrac{n!}{(n-m)!}\)

2.组合数:从 \(n\) 个物体种选出 \(m\) 个物体(不考虑顺序)的方案数,用 \(\begin{pmatrix} n \\ m \end{pmatrix}\ (\)\(C_n^m)\)表示,\(\dbinom{n}{m}=\dfrac{A_n^m}{m!}=\dfrac{n!}{m!(n-m)!}\)

3.插板法

现有 \(n\)完全相同的元素,要求将其分为 \(k\) 组。

  • 保证每组至少有一个元素,一共有多少种分法?

考虑拿 \(k - 1\) 块板子插入到 \(n\) 个元素两两形成的 \(n - 1\) 个空里面。因为元素完全相同,所以答案就是 \(\dbinom{n - 1}{k - 1}\)

本质是求 \(x_1+x_2+\cdots+x_k=n\) 的正整数解的组数。

  • 每组允许为空,一共有多少种分法?

给总体先加上 \(k\) 个,以保证每组至少一个,接下来处理同上,最后相当于每组减一还回去即可。答案为 \(\dbinom{n+k-1}{k-1}\)。因为 \(\dbinom{n}{m}=\dbinom{n}{n-m}\),答案即为 \(\dbinom{n+k-1}{n}\)

本质是求 \(x_1+x_2+\cdots+x_k=n\) 的非负整数解的组数。

  • 对于第 \(i\) 组,至少要分到 \(a_i\)\(\sum\limits a_i\le n\)),一共有多少种分法?

本质是求 \(x_1+x_2+\cdots+x_k=n\) 的整数解的组数。

模仿第三种情况,我们设 \(x'_i=x_i-a_i\) 以保证每组最少分到 \(a_i\) 个。现在相当于求 \(x'_1+x'_2+\cdots+x'_k=n\) 的整数解。

过程:

\[x'_1+x'_2+\cdots+x'_k=n \]

\[(x'_1+a_1)+(x'_2+a_2)+\cdots+(x'_k+a_k)=n \]

\[x_1+x_2+\cdots+x_k=n-a_1-a_2-\cdots-a_k \]

\[x_1+x_2+\cdots+x_k=n-\sum a_i \]

所以答案为 \(\dbinom{n-\sum a_i+k-1}{n-\sum a_i}\)


例:\(\ \ 1 \sim n\)\(n\) 个自然数中选 \(k\) 个,使得这 \(k\) 个数中任何两个数都不相邻的组合有 \(\dbinom {n-k+1}{k}\) 种。

证明:设选的 \(k\) 个数分别为 \(x_1,x_2,\cdots,x_k (x_1\le x_2\le \cdots \le x_k)\),设 \(x'_i=x_i+i-1\),则一定有 \(x'_1<x'_2<\cdots<x'_k\ \ (x'_k\le n)\),即两两都不相邻。因为 \(x'_k=x_k+k-1\le n\),所以 \(x_k\le n-k+1\),我们只需在 \(1\sim n-k+1\) 中选 \(k\) 个数即可,答案为 \(\dbinom{n-k+1}{k}\) 种。

二项式定理

内容

\[(a+b)^n=\sum_{i=0}^n\binom{n}{i}a^{n-i}b^i \]

证明

采用数学归纳法。

先理解一个引理:帕斯卡法则,即:

\[\dbinom{n}{k}+\dbinom{n}{k-1}=\dbinom{n+1}{k} \]

  • 证明帕斯卡法则:假设有 \(n+1\) 个人,要在其中选出 \(k\) 个人,很明显方案有 \(\dbinom{n+1}{k}\) 种;但不幸的是,一共的 \(n+1\) 个人中死了一个,现在我们总人数剩下 \(n\) 人,但还是要选 \(k\) 人,现在方案数为 \(\dbinom{n}{k-1}\) 种;我们发现少的方案数一定和那死的一个人有关,那我们所缺少的方案数就是在选种的 \(k\) 个人中有那个死人,所以我们还能自主选择 \(k-1\) 人,所以缺少的方案数为 \(\dbinom{n}{k-1}\)。所以我们有:

\[\dbinom{n+1}{k}-\dbinom{n}{k-1}=\dbinom{n}{k} \]

$\ \ \ \ \ \ \ \ \ $调换下顺序得到:

\[\dbinom{n}{k}+\dbinom{n}{k-1}=\dbinom{n+1}{k} \]

$\ \ \ \ \ \ \ \ \ $得证。

现在证明二项式定理。

\(n=1\) 时,原式显然成立。

假设当 \(n=k\) 时原式成立,设 \(n=k+1\)

\[(a+b)^{k+1}=a(a+b)^k+b(a+b)^k \]

\[=a\sum_{i=0}^k\dbinom{k}{i}a^{k-i}b^i+b\sum_{j=0}^k\dbinom{k}{j}a^{k-j}b^j \]

\(a、b\) 乘进来:

\[=\sum_{i=0}^k\dbinom{k}{i}a^{k-i+1}b^i+\sum_{j=0}^k\dbinom{k}{j}a^{k-j}b^{j+1} \]

把前半部分 \(i=1\) 时提出来:

\[=a^{k+1}+\sum_{i=1}^k\dbinom{k}{i}a^{k-i}b^i+\sum_{j=0}^k\dbinom{k}{j}a^{k-j}b^{j+1} \]

\(j\) 化为 \(i-1\):

\[=a^{k+1}+\sum_{i=1}^k\dbinom{k}{i}a^{k-i}b^i+\sum_{i=1}^{k+1}\dbinom{k}{i-1}a^{k-i+1}b^{i} \]

把后半部分 \(i=k+1\) 时提出来:

\[=a^{k+1}+\sum_{i=1}^k\dbinom{k}{i}a^{k-i}b^i+\sum_{i=1}^{k}\dbinom{k}{i-1}a^{k-i+1}b^{i}+b^{k+1} \]

将中间两个求和合并:

\[=a^{k+1}+b^{k+1}+\sum_{i=1}^k\left[\dbinom{k}{i}+\dbinom{k}{i-1}\right]a^{k-i}b^i \]

套用帕斯卡法则

\[=a^{k+1}+b^{k+1}+\sum_{i=1}^k\dbinom{k+1}{i}a^{k-i}b^i \]

\[=\sum_{i=0}^{k+1}\dbinom{k+1}{i}a^{k-i}b^i \]

所以当 \(n=k+1\) 时,结论仍成立。因此对任意 \(n\in \mathbb{N} ^{+}\),均可使所证等式成立,
得证。

鸽巢原理(抽屉原理)

内容

\(n\) 个物体,划分为 \(k\) 组,那么至少存在一个分组,含有大于或等于 \(\left \lceil \dfrac{n}{k} \right \rceil\) 个物品。

证明

反证法。

设每个分组含有小于 \(\left \lceil \dfrac{n}{k} \right \rceil\) 个物体,则其总和 \(S\leq (\left \lceil \dfrac{n}{k} \right \rceil -1 ) \times k=k\left\lceil \dfrac{n}{k} \right\rceil-k < k(\dfrac{n}{k}+1)-k=n\) ,矛盾。

容斥原理

内容

\(U\) 中元素有 \(n\) 种不同的属性,而第 \(i\) 种属性称为 \(P_i\),拥有属性 \(P_i\) 的元素构成集合 \(S_i\),那么

\[\left|\bigcup_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^mS_{a_i}\right| \]

证明

数学归纳法,懒得写了以后填坑()

卡特兰数

定义

定义卡特兰数 \(H_n\) 表示坐标轴上从 \((0,0)\) 点到 \((n,n)\) 的路径中不越过直线 \(y=x\) 的路径数。下图为一种不合法的方案。

求法

如下图,对每个非法的方案都可以通过把在第一个越过 \(y=x\) 的点之后的路径以直线 \(y=x+1\) 做对称从而构造一条自 \((0,0)\)\((n-1,n+1)\) 的路径。

因为一共需要走 \(2n\) 步,所以从 \((0,0)\)\((n,n)\) 的方案总数有 \(\dbinom{2n}{n}\) 种,从 \((0,0)\)\((n-1,n+1)\) 的方案数有 \(\dbinom{2n}{n-1}\) 种。

综上可得:

\[\begin{aligned} H_n&=\dbinom{2n}{n}-\dbinom{2n}{n-1}\\ &=\frac{(2n)!}{(n!)^2}-\frac{(2n)!}{(n+1)!(n-1)!}\\ &=\frac{(n+1)(2n)!}{n!(n+1)!}-\frac{n(2n)!}{n!(n+1)!}\\ &=\frac{(2n)!}{n!(n+1)!}\\ &=\frac{\dbinom{2n}{n}}{n+1}\\\end{aligned}\]

递推公式

  • \[H_n = \sum_{i=0}^{n-1}H_iH_{n-i-1} \]

  • \[H_n = \frac{4n-2}{n+1}H_{n-1} \]

证明:\((0,0)\)\((n,n)\) 的路径可以分作以下几步:

  • \((0,0)\) 走到 \((i,i)\),方案数为 \(H_i\)

  • \((i,i)\) 走到 \((n-1,n-1)\),方案数为 \(H_{n-i-1}\)

  • \((n-1,n-1)\) 走到 \((n,n)\),方案数为 \(1\)

枚举每一个 \(i\),由此得到 \(H_n = \sum_{i=0}^{n-1}H_iH_{n-i-1}\)

\[\begin{aligned} & H_n = \frac{4n-2}{n+1}H_{n-1} \\ \iff & \frac{C_{2n}^n}{n+1} = \frac{4n-2}{n+1} \times \frac{C_{2n-2}^{n-1}}{n} \\ \iff & \frac{(2n)!}{(n+1)(n!)^2} = \frac{4n-2}{n+1} \times \frac{(2n-2)!}{n(n-1)!^2} \\ \iff & \frac{(2n)!}{n} = (4n-2) \times {(2n-2)!} \\ \iff & \frac{(2n)(2n-1)}{n} = 4n-2 \\ \iff & 4n-2 = 4n-2 \\ \end{aligned} \]

故得证。

组合数性质

性质1

\[\dbinom{n}{m}=\dbinom{n}{n-m} \]

证明

正确性显然,用组合数意义理解,在 \(n\) 个中选 \(m\) 个相当于在 \(n\) 个中挑 \(n-m\) 个不选。

性质2

\[\dbinom{n}{m}=\dfrac{n}{m}\dbinom{n-1}{m-1} \]

证明

\[\begin{aligned} \dbinom{n}{m}&=\dfrac{n!}{m!(n-m)!}\\ &=\dfrac{n}{m}\times \dfrac{(n-1)!}{(m-1)!(n-m)!}\\ &=\dfrac{n}{m}\dbinom{n-1}{m-1} \end{aligned}\]

性质3

\[\dbinom{n}{m}=\dbinom{n-1}{m}+\dbinom{n-1}{m-1} \]

证明

即帕斯卡定理的略微转换,具体见上。

性质4

\[\sum_{i=0}^{n}\dbinom{n}{i}=2^n \]

证明

\(a=b=1\) 带入二项式定理即可。

\[\begin{aligned} 2^n&=(1+1)^n\\ &=\sum_{i=0}^n\dbinom{n}{i}1^{n-i}1^i\\ &=\sum_{i=0}^n\dbinom{n}{i} \end{aligned}\]

性质5

\[\sum_{i=0}^{n}(-1)^i\dbinom{n}{i}=[n=0] \]

\([a]\) 表示当 \(a\) 为真时答案为 \(1\),否则为 \(0\)(相当于一个 bool)。

证明

证法基本等同于性质 \(4\),将 \(a=1,b=-1\) 带入二项式定理即可。

我们这里认为 \(0^0=1\),所以 \(n=0\) 时答案为 \(1\)

具体证明略。

性质6

\[\sum_{i=0}^{m}\dbinom{n}{i}\dbinom{m}{m-i}=\dbinom{n+m}{m}\tag{$n\ge m$} \]

证明

考虑通过组合数意义来理解。

假设现在有 \(n\) 个男生,\(m\) 个女生,我们现在要从这 \(n+m\) 个人中选出 \(m\) 个人,方案数显然为 \(\dbinom{n+m}{m}\)。另一种思考方式是从男生中选 \(i\) 个,女生中选 \(m-i\) 个,对于每个 \(i\) 方案数为 \(\dbinom{n}{i}\dbinom{m}{m-i}\),枚举每个 \(i\) 即为总方案数。

性质7

\[\sum_{i=0}^n\binom{n}{i}^2=\binom{2n}{n} \]

证明

性质 \(6\) 的特殊情况,取 \(m=n\) 即可。

性质8

\[\sum_{i=0}^{n}i\dbinom{n}{i}=n2^{n-1} \]

证明

\[\begin{aligned} \sum_{i=1}^{n}i\dbinom{n}{i}&=n\cdot\sum_{i=1}^{n}\dfrac{i}{n}\dbinom{n}{i}\\ &=n\cdot\sum_{i=1}^{n}\dbinom{n-1}{i-1}\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\text{(套用性质2)}\\ &=n2^{n-1}\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\text{(套用性质4)}\\ \end{aligned}\]

性质9

\[\begin{aligned} \sum_{i=1}^{n}i^2\dbinom{n}{i}&=n(n+1)2^{n-2} \end{aligned}\]

证明

\[\begin{aligned} \sum_{i=1}^{n}i^2\dbinom{n}{i}&=n\cdot\sum_{i=1}^n\dfrac{i}{n}\dbinom{n}{i}\cdot i\\ &=n\cdot\sum_{i=1}^{n}i\dbinom{n-1}{i-1}\\ &=n\cdot\sum_{i=0}^{n-1}(i+1)\dbinom{n-1}{i}\\ &=n\cdot\sum_{i=0}^{n-1}i\dbinom{n-1}{i}+n\cdot\sum_{i=0}^{n-1}\dbinom{n-1}{i}\\ &=n\cdot\sum_{i=0}^{n-1}i\dbinom{n-1}{i}+n2^{n-1}\\ &=n(n-1)\cdot\sum_{i=0}^{n-1}\dfrac{i}{n-1}\dbinom{n-1}{i}+n2^{n-1}\\ &=n(n-1)\cdot\sum_{i=1}^{n-1}\dbinom{n-2}{i-1}+n2^{n-1}\\ &=n(n-1)2^{n-2}+n2^{n-1}\\ &=n(n+1)2^{n-2} \end{aligned}\]

拓展:求证 $$\begin{aligned}
\sum_{i=1}{n}im\dbinom{n}{i}&=n{\overline{m}}2
\end{aligned}$$。

性质10:

\[\binom{n}{r}\binom{r}{k} = \binom{n}{k}\binom{n-k}{r-k} \]

证明

\[\begin{aligned}\binom{n}{r}\binom{r}{k} &= \dfrac{n!}{r!(n-r)!}\cdot\dfrac{r!}{k!(r-k)!}\\ &= \dfrac{n!}{(n-r)!\cdot k!\cdot(r-k)!}\\ &= \dfrac{n!(n-k)!}{(n-r)!\cdot k!\cdot (r-k)!\cdot(n-k)!}\\ &=\dfrac{n!}{k!(n-k)!}\cdot \dfrac{(n-k)!}{(r-k)!(n-r)!}\\ &=\dbinom{n}{k}\dbinom{n-k}{r-k} \end{aligned}\]

二项式反演

内容

\(f_n\) 为恰好用 \(n\) 个不同元素来构成特定结构的方案数,\(g_n\) 为在 \(n\) 个不同元素中选出 \(i\)\((i\ge0)\) 来构成特定结构的方案数。

若我们已知 \(f_n\),显然有 \(g_n=\sum\limits_{i=0}^{n}\dbinom{n}{i}f_i\)

若已知 \(g_n\),则有 \(g_n=\sum\limits_{i=0}^{n}\dbinom{n}{i}(-1)^{n-i}g_i\)

已知 \(g_n\)\(f_n\) 的过程即为二项式反演

证明

\[\begin{aligned} \sum_{i=0}^n{n\choose i}(-1)^{n-i}f(i)&=\sum_{i=0}^n{n\choose i}(-1)^{n-i}\sum_{j=0}^i{i\choose j}g(j)\\ &=\sum_{i=0}^n\sum_{j=0}^i{n\choose i}{i\choose j}(-1)^{n-i}g(j)\\ &=\sum_{i=0}^n\sum_{j=0}^i{n\choose j}{n-j\choose i-j}(-1)^{n-i}g(j)\\ &=\sum_{j=0}^n{n\choose j}g(j)\sum_{i=j}^n{n-j\choose i-j}(-1)^{n-i}\\ &=\sum_{j=0}^n{n\choose j}g(j)\sum_{i=0}^{n-j}{n-j\choose i}(-1)^{n-j-i}\\ &=\sum_{j=0}^n{n\choose j}g(j)\cdot 0^{n-j}\\ &=g(n)\\ \end{aligned} \]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/776096.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载) 适用于 macOS Ventura 和 macOS Monterey 的 Safari 浏览器 17 请访问原文链接:https://sysin.org/blog/apple-safari-17/,查看最新版。原创作品,转载请保留出…

Gartner 魔力象限:安全信息和事件管理 (SIEM) 2024

Gartner Magic Quadrant for Security Information and Event Management 2024Gartner Magic Quadrant for Security Information and Event Management 2024 Gartner 魔力象限:安全信息和事件管理 2024 请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-siem-…

Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Jul 25, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。…

C#中常用集合类型

原文:C#中常用集合类型 - Y00 - 博客园 (cnblogs.com)在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点: 1. System.Collections 命名空间中…

[实践]wireguard安装和配置

wireguard安装和配置,实现异地组网目录Server Install & ConfigUbuntu 20.0.4 install wireguard生成私钥&公钥开启内核IP转发配置文件启动&停止wg-quicksystemctlClient Install & Config下载ConfigmacOS Server Install & Config Ubuntu 20.0.4 install…

费曼积分法——以一个简单的例子讲解

今天又又又刷到一个视频,很想睡觉(昨晚熬了个大夜),但是又临近午饭不能睡,只能水篇随笔来打发时间了。 什么是费曼积分法? 先看看官方解释: 费曼积分法(Feynman integral)是一种求解复变函数定积分的计算方法,由理查德费曼(Richard P. Feynman)提出。这种方法特别适…

wireguard安装和使用

wireguard安装和使用目录Server Install & ConfigUbuntu 20.0.4 install wireguard生成私钥&公钥开启内核IP转发配置文件启动&停止wg-quicksystemctlClient Install & Config下载ConfigmacOS Server Install & Config Ubuntu 20.0.4 install wireguard sud…

Adam-mini:内存占用减半,性能更优的深度学习优化器

Adam(W)目前为训练LLM的主流优化器,但其内存开销较大,这是因为Adam优化器需要存储一阶动量m和二阶动量v,总内存占用至少是模型大小的两倍,这对现有的高端显卡也是一种负担。论文提出一种新的优化器Adam-mini,在不牺牲性能的情况下减少Adam优化器的内存占用。 https://avo…

稀土领域生产一体化管控系统建设案例

经过2个月的详细调研,**稀土目前缺少生产车间之间数据协同交互、缺少完整的生产工序数据协同监测和分析,无法及时了解生产过程和经营情况,更无法进行有效的生产过程优化。本项目推动**稀土生产环节的数字化、信息化和智能化改造,从行业、战略、技术和市场等方案全面提升**稀…

使用keil进行51单片机的开发

首先下载Keil 打开https://www.keil.com/download/product/ 选择C51进行下载:表格里面的信息瞎填就完了。然后点击submit然后下载安装即可激活Keil 右键桌面的keil软件图标,使用管理员权限打开。 点击左上角的file->license management 复制CID打开注册机软件选择c51和pro…

使用 useState 管理响应式状态

title: 使用 useState 管理响应式状态 date: 2024/8/1 updated: 2024/8/1 author: cmdragon excerpt: 摘要:本文详细介绍了在Nuxt3框架中使用useState进行响应式状态管理的方法,包括其基本概念、优势、使用方法、共享状态实现以及性能优化技巧。useState支持服务器端渲染(…

自从用了这些监控工具,我连续几天没睡好觉!

今天分享一些很实用的系统监控告警工具。大家好,我是程序员鱼皮,今天分享一些很实用的系统监控告警工具。为什么要用监控告警? 说到监控告警,没有企业开发经验的同学非常容易忽视它,甚至会有同学觉得没有必要,大不了出了 Bug 再修就是了。这种想法大错特错! 我们把系统想…