331 lines
16 KiB
TeX
331 lines
16 KiB
TeX
\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, \dots, v_n \in N$,$e_1, e_2, \dots, e_n \in E$,其中$e_i$是关联于顶点$v_{i-1},v_i$的边,那么交替序列$v_0 e_1 v_1 e_2 \dots e_n v_n$称为顶点$v_0$到$v_n$的\newnoun{途}{walk}。$v_0$和$v_n$分别称为途的起点和终点,边的数目$n$称为途的长度。
|
||
|
||
当$v_0 = v_n$时,这条途称作\newnoun{闭途}{closed walk}或回路。
|
||
|
||
若一条途中的所有的边$e_1, \dots, e_n$均不相同,则称为一条\newnoun{迹}{trail}。
|
||
|
||
若一条途中所有的顶点$v_0, v_1, \dots, 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, \dots V_m$,使得两个顶点$u$和$v$是连通的当且仅当它们属于同一个$V_i$。把子图$G[V_1], G[V_2], \dots, G[V_m]$称为图$G$的\newnoun{连通分支}{connected components}。$m$为分支数,记为$c(G)$。
|
||
\end{definition}
|
||
|
||
\section{欧拉迹与哈密顿圈}
|
||
\subsection{欧拉回路}
|
||
\begin{definition}
|
||
如果无孤立顶点图$G$上有一条经过$G$的所有边一次且仅一次的迹,则称该迹为图$G$的\newnoun{Euler迹}{Eulerian walk}。
|
||
|
||
如果图$G$上有一条经过$G$的所有边一次且仅一次的回路,则称改回路为图$G$的Euler回路。
|
||
|
||
具有Euler回路的图称为Eulerian graph。
|
||
\end{definition}
|
||
|
||
\begin{theorem}
|
||
图$G$有一条Euler迹等价于图$G$连通并且有零个或两个奇数度的顶点。
|
||
\end{theorem}
|
||
|
||
\begin{corollary}
|
||
图$G$是Euler图等价于图$G$连通且所有顶点的度数皆为偶数。
|
||
\end{corollary}
|
||
|
||
\begin{proof}
|
||
先证必要性:已知$G$有Euler迹,证明$G$连通且有零个或者两个奇数度的顶点。
|
||
|
||
设$G$的Euler迹是点边序列$v_0 e_1 v_1 e_2 \dots e_k v_k$,其中的顶点可能重复但是边不重复。因为Euler迹经过了所有边,因此它一定经过了所有顶点,从而图$G$是连通的。
|
||
|
||
对于任意一个非端点的$v_i$,在Euler迹中每当$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$有Euler迹。直接找出一条欧拉迹(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 \dots e_k v_k$。
|
||
|
||
若$G$中没有奇数度的顶点,则从任一顶点$v_0$出发,用上述方法一定可以回到顶点$v_0$,得到一条闭迹。
|
||
\item 若$L_1$通过了$G$的所有边,则$L_1$就是一条Euler迹。
|
||
\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$,则找到了Euler迹;否则重复(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) {$\dots$};
|
||
\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}
|
||
|