From f11992233e2b43ad4962ff8a310fc27d9cbe0ba2 Mon Sep 17 00:00:00 2001 From: unlockable Date: Thu, 22 Sep 2022 12:25:26 +0800 Subject: [PATCH] =?UTF-8?q?02=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02CombinatorialTools.tex | 209 +++++++++++++++++++++++++++++++++++++++ 离散数学.tex | 6 ++ 2 files changed, 215 insertions(+) create mode 100644 02CombinatorialTools.tex diff --git a/02CombinatorialTools.tex b/02CombinatorialTools.tex new file mode 100644 index 0000000..c3e1931 --- /dev/null +++ b/02CombinatorialTools.tex @@ -0,0 +1,209 @@ +\chapter{组合工具} +\section{归纳法(略)} +见《线性代数》。 + +\section{估算} +阶乘的估算:$n!$随$n$的增大增长迅速。粗略地估计,有$2^{n-1} \leq n! \leq n^{n-1}$。 + +Striling给出了一个近似公式:$n! \sim \sqrt{2\pi n} \left(\dfrac{n}{e}\right)^n$。 +思路:左边取对数: +\begin{equation*} + \sum \ln{n} \approx \int_1^n \ln{x} \dif x = n \ln{n} - n + 1 \eqper +\end{equation*} + +相对误差:$\toinf \dfrac{n!}{\sqrt{2\pi n}\left(\frac{n}{e}\right)^n} = 1$; +绝对误差:$\toinf \left[n! - \sqrt{2 \pi n} \left(\dfrac{n}{e}\right)^n\right] = +\infty$。 + +\section{容斥原理} +\subsection{引言} +容斥原理研究与集合交、并、差有关的技术。在一些问题中,间接计算比直接计算来得简单。 + +\subsection{容斥原理} +\begin{theorem}[两个集合的容斥原理] + 设$A$和$B$是两个有限的集合,则 + \begin{equation*} + \vert A \cup B \vert = \vert A \vert + \vert B \vert - \vert A \cap B \vert \eqper + \end{equation*} +\end{theorem} + +\begin{corollary}[加法原理] + 若$A \cap B = \varnothing$,则$\vert A \cup B \vert = \vert A \vert + \vert B \vert$ +\end{corollary} + +\begin{corollary}[减法原理] + $\vert A \vert = \vert E \vert - \vert A^\mathrm{C} \vert $,$\vert A^\mathrm{C} \vert = \vert E \vert - \vert A \vert$。 +\end{corollary} + +\begin{theorem}[三个集合上的容斥原理] + $A$,$B$,$C$为任意有限集合,有 + \begin{equation*} + \vert A \cup B \cup C \vert = \vert A \vert + \vert B \vert + \vert C \vert - \vert A \cap B \vert - \vert B \cap C \vert - \vert A \cap C \vert + \vert A \cap B \cap C \vert + \end{equation*} +\end{theorem} + +\begin{theorem}[$n$个集合上的容斥原理] + $A_1, A_2, \cdots , A_n$是有限集合。 + \begin{equation*} + \begin{aligned} + \vert A_1 \cup A_2 \cup \cdots \cup A_n \vert & = \sum_i^n \vert A_i \vert - \sum_i^n \sum_{j > i} \vert A_i \cap A_j \vert + \sum_i^n \sum_{j>i} \sum_{k > j} \vert A_i \cap A_j \cap A_k \vert - \cdots\\ + & + (-1)^{n-1}\vert A_1 \cap A_2 \cap \cdots \cap A_n \vert \eqper + \end{aligned} + \end{equation*} +\end{theorem} + +\begin{theorem}[容斥原理的补集形式] + \begin{equation*} + \vert A_1^\mathrm{C} \cap A_2^\mathrm{C} \cap \cdots \cap A_n^\mathrm{C}\vert = \vert E \vert - \vert A_1 \cup A_2 \cup \cdots \cup A_n \vert \eqper + \end{equation*} +\end{theorem} + +\subsection{容斥原理的应用} +\subsubsection{错排问题} +给定$n$个元素的一个排列,使得所有的元素都不在原来的位置上的排列叫做愿排列的\textbf{错排}。 + +\emph{应用加法原理:} +设$1, 2, \cdots , n$的的错排数为$D_n$,那么错排可通过如下两种方式得到: +\begin{enumerate}[label=({\arabic*}) ] + \item 把$n$与$i (i = 1, 2, \cdots, n-1)$互换,再让剩余$n-2$个数进行错排。共有$(n-1)D_{n-2}$种。 + \item 让$1, 2, \cdots , n-1$任意排列,然后把$n$分别与错排后的第1个、第2个……第$n-1$个交换。共有$(n-1)D_{n-1}$种。 +\end{enumerate} + +综上,由加法原理,有$D_n = (n-1)D_{n-1} + (n-1)D_{n-2}$。由$D_1 = 0, D_2 = 1$,可得$D_0 = 1$。 + +估计:$(n-1)(D_{n-2} + D_{n-1}) \leq D_n \leq n!$,可以知道$D_n$与$n!$相差不大,因此可设 +\begin{equation*} + D_n = E_n \cdot n! \eqco +\end{equation*} +即 +\begin{equation*} + E_n = \dfrac{D_n}{n!}\eqper +\end{equation*} + +那么有 +\begin{equation*} + \begin{aligned} + E_n & = \dfrac{(n-1)(D_{n-2} + D_{n-1})}{n!}\\ + & = \dfrac{n-1}{n} \cdot \dfrac{D_{n-1}}{(n-1)!} + \dfrac{1}{n} \cdot \dfrac{D_{n-2}}{(n-2)!}\\ + & = \left(1 - \dfrac{1}{n}\right)E_{n-1} + \dfrac{1}{n} E_{n-2} + \end{aligned} +\end{equation*} + +于是 +\begin{equation*} + \begin{aligned} + E_n & = \left(1 - \dfrac{1}{n}\right)E_{n-1} + \dfrac{1}{n} E_{n-2}\\ + E_n - E_{n-1} & = - \dfrac{1}{n}(E_{n-1} - E_{n-2})\\ + & = \left(-\dfrac{1}{n}\right) \left(-\dfrac{1}{n-1}\right) (E_{n-2} - E_{n-3})\\ + & = \cdots\\ + & = (-1)^{n-1} \dfrac{1}{n!}(E_1 - E_0)\\ + & = \dfrac{(-1)^n}{n!}\eqper + \end{aligned} +\end{equation*} + +因此 +\begin{equation*} + \begin{aligned} + E_n & = \dfrac{(-1)^n}{n!} + E_{n-1}\\ + & = \dfrac{(-1)^n}{n!} + \dfrac{(-1)^{n-1}}{(n-1)!} + E_{n-2}\\ + & = \cdots\\ + & = \dfrac{(-1)^n}{n!} + \dfrac{(-1)^{n-1}}{(n-1)!} + \cdots + \dfrac{(-1)^1}{2!} \eqper + \end{aligned} +\end{equation*} + +即 +\begin{equation*} + D_n = n!\cdot E_n = n!\left(1 - \dfrac{1}{1!} + \dfrac{1}{2!} - \dfrac{1}{3!} + \cdots + \dfrac{(-1)^n}{n!}\right) \approx \dfrac{n!}{e} \eqper +\end{equation*} + +\emph{应用容斥原理:}设$E$:所有$n!$种排列的集合;$A_j$:$j$在第$j$位的排列的集合。那么所求错排的集合为 +\begin{equation*} + A_1^\mathrm{C} \cap A_2^\mathrm{C} \cap \cdots \cap A_n^\mathrm{C} \eqper +\end{equation*} + +另外可以看到, +\begin{equation*} + \begin{aligned} + \vert A_j \vert & = (n-1)! \eqco j = 1, 2, \cdots, n\\ + \vert A_i \cap A_j \vert & = (n-2)! \eqco i, j = 1, 2, \cdots, n \text{且} i \neq j\\ + & \cdots\\ + \vert A_{i_1} \cap A_{i_2} \cap \cdots \cap A_{i_k} \vert & = (n - k)!\eqco\text{共有}\dbinom{n}{k}\text{种组合方式} + \end{aligned} +\end{equation*} + +那么 +\begin{equation*} + \begin{aligned} + D_n & = \vert A_1^\mathrm{C} \cap A_2^\mathrm{C} \cap \cdots \cap A_n^\mathrm{C}\vert\\ + & = n! - \dbinom{n}{1}(n-1)! + \dbinom{n}{2}(n-2)! - \dbinom{n}{3}(n-3)! + \cdots + (-1)^n\dbinom{n}{n}0!\\ + & = n! - \dfrac{n!}{1} + \dfrac{n!}{2} - \dfrac{n!}{3} + \cdots + (-1)^n \dfrac{n!}{n!}\\ + & = n! \left(1 - \dfrac{1}{1!} + \dfrac{1}{2!} - \dfrac{1}{3!} + \cdots + \dfrac{(-1)^n}{n!}\right) \eqper + \end{aligned} +\end{equation*} + +\subsubsection{限制排列} + +\subsubsection{相对禁位排列} + +\section{鸽巢原理} +鸽巢原理是解决存在性问题的基本而有力的工具。 + +\begin{theorem} + 若有$n+1$只鸽子飞回$n$个鸽巢,则至少有两只鸽子飞入了同一个鸽巢。 +\end{theorem} + +鸽巢原理只能证明某种安排或者某种现象存在,而并未指出怎样构造这样的安排或者怎样寻找这种现象出现的场合。 + +利用鸽巢原理解决问题的关键就在于看出要解决的问题是鸽巢问题,建立``鸽巢'',寻找``鸽子''。 + +\begin{example} + 在一个边长为1的正三角形中任意取5个点,必然有两个点之间的距离不超过$\dfrac{1}{2}$。 +\end{example} +\begin{proof} + 将三角形三边的终点连接,可以将三角形等分成四块。在三角形中取五个点,则一定存在一个部分中有至少两个点。这两个点之间的距离小于$\dfrac{1}{2}$。 +\end{proof} + +\begin{theorem} + 设$m_1, m_2, \cdots , m_n$均为正整数,如果有$m_1 + m_2 + \cdots + m_n - n + 1$只鸽子飞回$n$个鸽巢,则或者第1个鸽巢至少有$m_1$只鸽子,则或者第2个鸽巢至少有$m_2$只鸽子,……,则或者第$n$个鸽巢至少有$m_n$只鸽子。 +\end{theorem} + +\begin{proof} + (反证法)假若第1鸽巢少于$m_1$只鸽子,第2鸽巢少于$m_2$只鸽子,……,第n鸽巢少于$m_n$只鸽子,则鸽子总数至多为: + \begin{equation*} + (m_1 - 1) + (m_2 - 1) + \cdots + (m_n - 1) = m_1 + m_2 + \cdots + m_n -n \eqco + \end{equation*} + 这比假定的鸽子数少了一个,矛盾! +\end{proof} + +\begin{corollary} + 如果$m_1 = m_2 = \cdots = m_n = r$,若将$n(r-1)+1$个球放入$n$个盒子中,则至少有一个盒子含有不少域$r$个球。 +\end{corollary} + +\begin{corollary} + 如果$n$个正整数$m_1, m_2, \cdots , m_n$的平均数$\dfrac{m_1 + m_2 + \cdots + m_n}{n} > r-1$,则$m_1, m_2, \cdots, m_n$中至少有一个不会小于$r$。 +\end{corollary} + +\begin{corollary} + 有$m$个球放入$n$个盒子,则至少有一个盒子中有不少于$\lfloor \dfrac{m-1}{n}\rfloor + 1$个球。 +\end{corollary} + +\begin{theorem}[Erdös] + 由$n^2 + 1$个不同实数构成的数列中,存在一个至少有$n+1$项的单调递增子数列或单调递减子数列。 +\end{theorem} + +\section{The Twin Paradox生日悖论} +随机找$n(n < 365)$名学生,问有多大可能两人在同一天过生日? + +\begin{proof}[解] + 设$A$:有两个人在同一天过生日。 + + 则$A^\mathrm{C}$:所有学生生日彼此不同。 + + \begin{equation*} + \begin{aligned} + \vert A^\mathrm{C} \vert & = 365 \times 364 \times \cdots \times (365-n+1)\\ + P(A) & = 1 - P(\setcom{A}) = 1 - \dfrac{\vert \setcom{A} \vert}{365^n}\\ + & = 1 - \dfrac{365 \times 364 \times \cdots \times (365-n+1)}{365^n}\\ + & = 1 - \left(1 - \dfrac{1}{365}\right) \left(1 - \dfrac{2}{365}\right) \cdots \left(1 - \dfrac{n-1}{365}\right)\eqper + \end{aligned} + \end{equation*} +\end{proof} diff --git a/离散数学.tex b/离散数学.tex index 2e0eb01..9b8801a 100644 --- a/离散数学.tex +++ b/离散数学.tex @@ -28,6 +28,11 @@ \newcommand{\newnoun}[2]{ \textbf{#1}(\textit{#2}) } +\newcommand{\dif}{\mathop{}\!\mathrm{d}} +\newcommand{\eqco}{\text{,}} % Chinese comma in equation +\newcommand{\eqper}{\text{。}} % Chinese period in equation +\newcommand{\toinf}{\lim \limits_{n \to \infty}} +\newcommand{\setcom}[1]{{#1}^\mathrm{C}} % Complement Set \title{{\Huge{\textbf{离散数学}}}} \author{} @@ -44,4 +49,5 @@ \setcounter{page}{1} \pagenumbering{arabic} \include{01LetsCount.tex} + \include{02CombinatorialTools.tex} \end{document} \ No newline at end of file