Files
DiscretMathematics/07Graphs.tex
2022-12-01 16:13:39 +08:00

331 lines
16 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\chapter{图论}
\section{}
\subsection{图的概念}
\begin{example}\label{图论引导问题}
证明:在奇数个人参加的聚会中,一定有人认识偶数个人。
\end{example}
\begin{wrapfigure}{r}{5cm}
\begin{center}
\begin{tikzpicture}
\draw node[circle, draw=black, minimum height=25pt] (v) at (18:2) {$v$};
\draw node[circle, draw=black, minimum height=25pt] (u) at (90:2) {$u$};
\draw node[circle, draw=black, minimum height=25pt] (y) at (162:2) {$y$};
\draw node[circle, draw=black, minimum height=25pt] (x) at (234:2) {$x$};
\draw node[circle, draw=black, minimum height=25pt] (w) at (306:2) {$w$};
\draw (u)--(y);
\draw (u)--(x);
\draw (u)--(w);
\draw (u)--(v);
\draw (y)--(w);
\draw (v)--(w);
\end{tikzpicture}
\end{center}
\caption{一个5阶图}
\label{图概念例子}
\end{wrapfigure}
为了解决这个问题,我们引入\newnoun{}{graph}的概念。
\begin{definition}
如右是一张\newnoun{}{graph}。也记为$G = \{V,E\}$,其中$V$代表图中顶点的集合,$E$代表图中边的集合。
其中$u, v, w, x, y$称为\newnoun{顶点}{vertex},连接两个点的线段称为\newnoun{}{edge},它是一个包含了起点和终点的二元集合,如$\{u, v\}$,也简记为$uv$
$uv$存在,则称$u,v$相邻,$u,v$互为邻点。图中某点$v$的所有邻点组成的集合称为它的\newnoun{临域}{neighborhood},记作$N_G(v)$。例如,右图中$N_G(v) = \{u,w\}$
与某点$v$相关联的边的数量称为$v$\newnoun{}{degree},记作$d(v)$。例如,右图中$d(v)=2$$d(u)=4$
一张图的顶点数称为它的阶数。
\end{definition}
有了这些概念,我们就能将例\ref{图论引导问题}中的问题简化为:奇数阶图必有一度为偶数的点。进一步我们可以把它扩展为:奇数阶图必有奇数个度为偶数的点。类似地我们应还有:偶数阶图有偶数个度为偶数的点。
将这些命题合并起来有
\begin{theorem}\label{偶数奇度点}
在任意图中,必有偶数个度为奇数的点。
\end{theorem}
要想证明这个定理,我们首先需要一个更基本的定理:
\begin{theorem}[握手定理]
任意图中所有点的度的和为图中边数的两倍,即
\[\sum_{v \in V} d(v) = 2 \lvert E \rvert\eqper\]
\end{theorem}
\begin{proof}
\begin{equation*}
a_{v,e}
\begin{cases}
1,\ v \in e\\
0,\ v \notin e
\end{cases}
\text{在这里,$v$是一个顶点,$e$是一条边。}
\end{equation*}
那么
\begin{align*}
\sum_{v\in V} d(v) & = \sum_{v \in V}\sum_{e \in E} a_{v,e}\\
& = \sum_{e \in E}\sum_{v \in V} a_{v,e}\\
& = 2\lvert E \rvert \eqper\qedhere
\end{align*}
\end{proof}
$\left[a_{v,e}\right]_{\lvert V \rvert \times \lvert E \rvert}$称为图的关联矩阵。例如,图\ref{图概念例子}的关联矩阵是
\[\begin{bNiceMatrix}[first-row,first-col]
& e_1 & e_2 & e_3 & e_4 & e_5 & e_6 \\
u & 1 & 1 & 1 & 1 & 0 & 0 \\
v & 1 & 0 & 0 & 0 & 1 & 0 \\
w & 0 & 1 & 0 & 0 & 1 & 1 \\
x & 0 & 0 & 1 & 0 & 0 & 0 \\
y & 0 & 0 & 0 & 1 & 0 & 1 \\
\end{bNiceMatrix}\]
由此我们可以证明定理\ref{偶数奇度点}
\begin{proof}
已知
\[\sum_{v \in V} d(v) = 2 \lvert E \rvert\]
那么令
\begin{align*}
V_o & := \{v \in V \mid d(v)\text{为奇数}\}\\
V_e & := \{v \in V \mid d(v)\text{为偶数}\}
\end{align*}
那么有
\begin{align*}
\sum_{v \in V_o}d(v) + \sum_{v \in V_e} d(v) & = 2 \lvert E \rvert\\
\sum_{v \in V_o}d(v) & = 2 \lvert E \rvert - \sum_{v \in V_e}d(v)
\end{align*}
因此$\sum \limits_{v \in V_o}d(v)$为偶数,因此$\lvert V_o \rvert$为偶数。
\end{proof}
\subsection{特殊的图}
\begin{enumerate}
\item \newnoun{简单图}{simple graph}:不含重边和环的图称为简单图;
\item \newnoun{多重图}{multigraph}:含有重边的图称为多重图;
\item \newnoun{无边图}{edgeless graph}:只有顶点而无边的图;
\item \newnoun{完全图(团)}{complete graph or clique}:在一个简单图中,若每一对顶点间均有边相连,则称该图为完全图。有$n$个顶点的完全图记为$K_n$
\item \newnoun{}{star}:一个点连接另外所有$n-1$个点的图,记为$S_n$
\item \newnoun{正则图}{regular graph}:所有顶点的度相同的图;
\item 相对于完全图的\newnoun{补图}{complement}:给定一个简单图$G$,由$G$中所有顶点和所有非边组成的图,称为$G$的相对于完全图的补图,或简称为$G$的补图,记为$\setcom{G}$$\overline{G}$。即对$G = (V,E_1)$$\setcom{G} = (V, E_2)$,其中$E_2 = \{uv \mid u, v \in V,\ uv \notin E_1\}$
\begin{figure}[H]
\centering
\subfloat[完全图$K_5$]{
\begin{tikzpicture}[scale=0.8]
\draw node[circle, draw=black, minimum height=23pt] (v) at (18:2) {$v$};
\draw node[circle, draw=black, minimum height=23pt] (u) at (90:2) {$u$};
\draw node[circle, draw=black, minimum height=23pt] (y) at (162:2) {$y$};
\draw node[circle, draw=black, minimum height=23pt] (x) at (234:2) {$x$};
\draw node[circle, draw=black, minimum height=23pt] (w) at (306:2) {$w$};
\draw (u)--(y);
\draw (u)--(x);
\draw (u)--(w);
\draw (u)--(v);
\draw (y)--(w);
\draw (y)--(x);
\draw (y)--(v);
\draw (x)--(w);
\draw (x)--(v);
\draw (w)--(v);
\end{tikzpicture}
}
\hspace{1cm}
\subfloat[图$G$]{
\begin{tikzpicture}[scale=0.8]
\draw node[circle, draw=black, minimum height=23pt] (v) at (18:2) {$v$};
\draw node[circle, draw=black, minimum height=23pt] (u) at (90:2) {$u$};
\draw node[circle, draw=black, minimum height=23pt] (y) at (162:2) {$y$};
\draw node[circle, draw=black, minimum height=23pt] (x) at (234:2) {$x$};
\draw node[circle, draw=black, minimum height=23pt] (w) at (306:2) {$w$};
% \draw (u)--(y);
\draw (u)--(x);
\draw (u)--(w);
\draw (u)--(v);
% \draw (y)--(w);
% \draw (y)--(x);
\draw (y)--(v);
% \draw (x)--(w);
\draw (x)--(v);
\draw (w)--(v);
\end{tikzpicture}
}
\hspace{1cm}
\subfloat[图$G$的补图$\setcom{G}$]{
\begin{tikzpicture}[scale=0.8]
\draw node[circle, draw=black, minimum height=23pt] (v) at (18:2) {$v$};
\draw node[circle, draw=black, minimum height=23pt] (u) at (90:2) {$u$};
\draw node[circle, draw=black, minimum height=23pt] (y) at (162:2) {$y$};
\draw node[circle, draw=black, minimum height=23pt] (x) at (234:2) {$x$};
\draw node[circle, draw=black, minimum height=23pt] (w) at (306:2) {$w$};
\draw (u)--(y);
% \draw (u)--(x);
% \draw (u)--(w);
% \draw (u)--(v);
\draw (y)--(w);
\draw (y)--(x);
% \draw (y)--(v);
\draw (x)--(w);
% \draw (x)--(v);
% \draw (w)--(v);
\end{tikzpicture}
}
\end{figure}
\item \newnoun{子图}{subgraphs}设图$G = (V,E)$,如果有图$G^\prime = (V^\prime, E^\prime)$,且$V^\prime \subseteq V$$E^\prime \subseteq E$,则称$G^\prime$$G$的子图,记$G^\prime \subseteq G$。当$V^\prime = V$时,则称$G^\prime$$G$\newnoun{生成子图}{spanning subgraph}
\end{enumerate}
\section{路、圈与连通性}
\subsection{}
\begin{definition}
给定图$G = (V,E)$,设$v_0, v_1, \cdots, v_n \in N$$e_1, e_2, \cdots, e_n \in E$,其中$e_i$是关联于顶点$v_{i-1},v_i$的边,那么交替序列$v_0 e_1 v_1 e_2 \cdots e_n v_n$称为顶点$v_0$$v_n$\newnoun{}{walk}$v_0$$v_n$分别称为途的起点和终点,边的数目$n$称为途的长度。
$v_0 = v_n$时,这条途称作\newnoun{闭途}{closed walk}或回路。
若一条途中的所有的边$e_1, \cdots, e_n$均不相同,则称为一条\newnoun{}{trail}
若一条途中所有的顶点$v_0, v_1, \cdots, v_n$均不相同,则称为一条\newnoun{}{path}
闭的路,即除$v_0 = v_n$之外,其余顶点均不相同的路,称作\newnoun{}{cycle}
\end{definition}
即,途允许重复路过多个点、也允许重复经过同一边;迹允许重复通过同一个点,但不允许重复通过同一边(若两点间有多个边,可以每个边都走一次);路则既不允许重复通过同一个点,也不允许重复通过同一个边。
\subsection{连通性}
\begin{definition}
在图$G$中,如果从顶点$u$到顶点$v$之间存在一条路,则称顶点$u$和顶点$v$\newnoun{连通的}{connected}
顶点之间的连通性是顶点集$V$上的定价关系。对应该等价关系,必可将$V$做出一个划分,即把$V$分成非空子集$V_1, V_2, \cdots V_m$,使得两个顶点$u$$v$是连通的当且仅当它们属于同一个$V_i$。把子图$G[V_1], G[V_2], \cdots, G[V_m]$称为图$G$\newnoun{连通分支}{connected components}$m$为分支数,记为$c(G)$
\end{definition}
\section{欧拉迹与哈密顿圈}
\subsection{欧拉回路}
\begin{definition}
如果无鼓励顶点图$G$上有一条经过$G$的所有边一次且仅一次的迹,则称该迹为图$G$\newnoun{Eular迹}{Eularian walk}
如果图$G$上有一条经过$G$的所有边一次且仅一次的回路,则称改回路为图$G$的Euler回路。
具有Euler回路的图称为Eulerian graph。
\end{definition}
\begin{theorem}
$G$有一条Euler迹等价于图$G$连通并且有零个或两个奇数度的顶点。
\end{theorem}
\begin{corollary}
$G$是Eular图等价于图$G$连通且所有顶点的度数皆为偶数。
\end{corollary}
\begin{proof}
先证必要性:已知$G$有Eular迹证明$G$连通且有零个或者两个奇数度的顶点。
$G$的Eular迹是点边序列$v_0 e_1 v_1 e_2 \cdots e_k v_k$其中的顶点可能重复但是边不重复。因为Eular迹经过了所有边因此它一定经过了所有顶点从而图$G$是连通的。
对于任意一个非端点的$v_i$在Eular迹中每当$v_i$出现一次,必关联两条边(``有进必有出''),因此不论$v_i$重复出现多少次,$d(v_i)$一定是偶数。
对于一个端点,若$v_0 = v_k$,则$d(v_0)$一定是偶数,即$G$中无奇数度的顶点。
$v_0 \neq v_k$,那么$d(v_0), d(v_k)$均为奇数,即$G$中有两个奇数项点。
再证必要性:已知$G$连通且有零个或者两个奇数度的顶点,证明$G$有Eular迹。直接找出一条欧拉迹Hierholzer's Algorithm
\begin{enumerate}[label=(\arabic{*})]
\item 若有两个奇数度的顶点,则从其中一个顶点开始构造一条迹,即从$v_0$出发经关联边$e_1$进入$v_1$,若$d(v_1)$为偶数,则必可由$v_1$再经关联边$e_2$进入$v_2$,如此下去,保证每个边最多只被取一次,由于$G$是连通的,因此必可到达另一奇数度顶点停下,得到一条迹$L_1$$v_0 e_1 v_1 e_2 \cdots e_k v_k$
$G$中没有奇数度的顶点,则从任一顶点$v_0$出发,用上述方法一定可以回到顶点$v_0$,得到一条闭迹。
\item$L_1$通过了$G$的所有边,则$L_1$就是一条Eular迹。
\item 否则$G$中去掉$L_1$的边后得到的子图$G^\prime$中每个顶点的度都为偶数,因为原来的图$G$是连通的,故$L_1$$G^\prime$至少有一个顶点$v_i$重合,在$G^\prime$中以$v_i$为起点和终点重复1中的方法得到闭迹$L_2$
\item$L_1$$L_2$组合,若恰好为$G$则找到了Eular迹否则重复3可得到闭迹$L_3$,依此类推可以得到一条欧拉迹。\qedhere
\end{enumerate}
\end{proof}
\subsection{哈密顿圈}
\begin{example}
能否在正十二面体中找到一个回路,使它包含所有顶点一次且仅一次?
\end{example}
\begin{proof}[解]
哈密顿给出的解法:
\begin{figure}[H]
\centering
\begin{tikzpicture}
\draw[line width=1.5pt, color=red] (54:1)--(126:1)--(198:1)--(270:1)--(342:1);
\draw (342:1)--(54:1);
\draw[line width=1.5pt, color=red] (54:1)--(54:1.5);
\draw (126:1)--(126:1.5);
\draw (198:1)--(198:1.5);
\draw (270:1)--(270:1.5);
\draw[line width=1.5pt, color=red] (342:1)--(342:1.5);
\filldraw (54:1) circle (.1);
\filldraw (126:1) circle (.1);
\filldraw (198:1) circle (.1);
\filldraw (270:1) circle (.1);
\filldraw (342:1) circle (.1);
\draw (54:1.5)--(90:2);
\draw[line width=1.5pt, color=red] (90:2)--(126:1.5)--(162:2)--(198:1.5)--(234:2)--(270:1.5)--(306:2)--(342:1.5);
\draw (342:1.5)--(18:2);
\draw[line width=1.5pt, color=red] (18:2)--(54:1.5);
\filldraw (54:1.5) circle (.1);
\filldraw (126:1.5) circle (.1);
\filldraw (198:1.5) circle (.1);
\filldraw (270:1.5) circle (.1);
\filldraw (342:1.5) circle (.1);
\draw[line width=1.5pt, color=red] (18:2)--(18:3);
\draw[line width=1.5pt, color=red] (90:2)--(90:3);
\draw (162:2)--(162:3);
\draw (234:2)--(234:3);
\draw (306:2)--(306:3);
\filldraw (18:2) circle (.1);
\filldraw (90:2) circle (.1);
\filldraw (162:2) circle (.1);
\filldraw (234:2) circle (.1);
\filldraw (306:2) circle (.1);
\draw[line width=1.5pt, color=red] (90:3)--(162:3)--(234:3)--(306:3)--(18:3);
\draw (18:3)--(90:3);
\filldraw (18:3) circle (.1);
\filldraw (90:3) circle (.1);
\filldraw (162:3) circle (.1);
\filldraw (234:3) circle (.1);
\filldraw (306:3) circle (.1);
\end{tikzpicture}
\end{figure}
\end{proof}
\begin{definition}
给定图$G$若存在一条经过图中的每个顶点恰好一次的路这条路被称作Hamilton路。若存在一个圈经过图中的所有顶点这个圈称作Hamilton圈。具有Hamilton圈的图称作Hamilton图。
\end{definition}
\begin{theorem}
若图$G = (V,E)$具有Hamilton圈则对于顶点集$V$的每个非空子集$S$均有
\[c(G-S) \leq \lvert S \rvert\eqper\]
\end{theorem}
\begin{proof}
$C$使$G$的一个Hamilton圈对于$V$的任一非空子集$S$$C$经过了$G$的所有顶点,$C$$G$的顶点集合相同,$C-S$$G-S$的生成子图,因此$c(G-S) \leq c(C-S)$
再考虑$c(C-S)$$\lvert S \rvert$的关系。可以将$C$画成下图样式:
\begin{figure}[H]
\begin{center}
\begin{tikzpicture}
\filldraw (-36:2) circle (.1);
\filldraw (0:2) circle (.1);
\filldraw (36:2) circle (.1);
\filldraw (72:2) circle (.1);
\filldraw (108:2) circle (.1);
\filldraw (144:2) circle (.1);
\filldraw (180:2) circle (.1);
\filldraw (216:2) circle (.1);
\draw (-80:2) arc (-80:260:2);
\node at(270:2) {$\cdots$};
\end{tikzpicture}
\end{center}
\end{figure}
可见减去1个点最多有1个连通分支、减去2个点最多有2个连通分支……由此可得
\[c(C-S) \leq \lvert S \rvert\]
因此
\[c(G-S) \leq c(C-s) \leq \lvert S \rvert \eqper\qedhere\]
\end{proof}