图论初步

图的定义

GG 是一个三元组 G=(V,E,φ)G = (V, E, \varphi),其中

  • VV 是非空顶点集
  • EE 是边集
  • VE=V \cap E = \empty
  • φ ⁣:EP(V)\varphi\colon E \to \mathcal{P}(V),且 eE,1φ(e)2\forall e \in E, 1 \le |\varphi(e)| \le 2φ(e)\varphi(e) 是边 ee端点集

常省略 φ\varphi,简记为 G=(V,E)G = (V, E)

G=(V,E,φ)G = (V, E, \varphi)简单图当且仅当同时满足以下条件

  1. 每条边有两个端点(即 eE,φ(e)=2\forall e \in E, |\varphi(e)| = 2
  2. 不同边有不同端点集(即 e1,e2E,e1e2    φ(e1)φ(e2)\forall e_1, e_2 \in E,\, e_1 \ne e_2 \implies \varphi(e_1) \ne \varphi(e_2)

G=(V,E,φ)G = (V, E, \varphi)伪图当且仅当满足以下其中一个条件

  • 存在至少一条只有一个端点的边(即 e0E,φ(e0)=1\exists e_0 \in E, |\varphi(e_0)| = 1
  • 有两条边具有相同的端点集(即 e1,e2E,e1e2,φ(e1)=φ(e2)\exists e_1, e_2 \in E, e_1 \ne e_2, \varphi(e_1) = \varphi(e_2)

即伪图包含「顶点环」或「多重边」。

有向图 GG 是一个三元组 G=(V,E,φ)G = (V, E, \varphi),其中

  • VV 是非空顶点集
  • EE 是有向边(弧)集
  • VE=V \cap E = \empty
  • φ ⁣:EV×V\varphi\colon E \to V \times V,若 φ(e)=(u,v)\varphi(e) = (u, v),则称 u,vu, v 分别为弧 ee起点终点

无向图 GG 是一个三元组 G=(V,E,φ)G = (V, E, \varphi),其中

  • VV 是非空顶点集
  • EE 是无向边集
  • VEV \cap E \ne \empty
  • φ ⁣:EP(V)\varphi\colon E \to \mathcal{P}(V)φ(e)={u,v}\varphi(e) = \left\lbrace u, v \right\rbrace,称 u,vu, vGG邻接(相邻),或 ee 关联(连接)顶点 u,vu, v

顶点 vv deg(v)\deg(v)(或 dG(v)d_G(v))是与 vv 相关联的边的数目。

11 个环为顶点的度做出贡献 22

有向图中顶点的出度和入读:

  • vv出度 deg+(v)\deg^+(v) 是以 vv 为起点的弧的数目
  • vv入度 deg(v)\deg^-(v) 是以 vv 为终点的弧的数目

握手定理

无向图 G=(V,E)G = (V, E) 中所有顶点的度数之和等于边数的两倍,即

vVdeg(v)=2E\sum_{v \in V} \deg(v) = 2|E|

有向图中,所有顶点的出度之和等于入度之和,即

vVdeg+(v)=vVdeg(v)=E\sum_{v \in V} \deg^+(v) = \sum_{v \in V} \deg^-(v) = |E|

完全图

若简单图 GG 中任意两点均相邻,则称 GG完全图,记为 KnK_n,其中 n=Vn = |V|

KnK_n 中每个顶点 vv 都有 deg(v)=n1\deg (v) = n - 1,即 E=n(n1)2|E| = \dfrac{n(n-1)}{2}

圈图与轮图

立方体图

正则图

正则图 GG 是一个简单图,其中每个顶点的度数相同。

GGrr-正则图,且 r=V1r = |V| - 1,则 GG 是完全图。

G=(V,E)G = (V, E) 是一个图,G=(V,E)G' = (V', E')GG 的子图,当且仅当

  • VVV' \subseteq V
  • EEE' \subseteq E

VVV' \subset V EEE' \subset E,则称 GG'GG真子图

诱导子图:可以由顶点集的子集,或者由边集的子集导出一个子图。

图的表示

无向图 G=(V,E,φ)G = (V, E, \varphi),不妨设 V={v1,,vn},E={e1,,em}V = \left\lbrace v_1, \cdots, v_n \right\rbrace,\, E = \left\lbrace e_1, \cdots, e_m \right\rbrace

M(G)=[mij]M(G) = [m_{ij}] 称为 GG关联矩阵n×mn \times m 阶矩阵),其中

mij={1,若 ej 关联到 vi0,否则m_{ij} = \begin{cases} 1, & \text{若 } e_j \text{ 关联到 } v_i \\ 0, & \text{否则} \end{cases}

关联矩阵表示法不适用于有向图。

flowchart TB
    V1 ---|e1| V2
    V1 ---|e5| V3
    V1 ---|e4| V4
    V2 ---|e2| V3
    V3 ---|e3| V4

[10011110000110100110]\begin{bmatrix} 1 & 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 & 0 \end{bmatrix}

简单有向图 G=(V,E,φ)G = (V, E, \varphi),不妨设 V={v1,,vn},E={e1,,em}V = \left\lbrace v_1, \cdots, v_n \right\rbrace,\, E = \left\lbrace e_1, \cdots, e_m \right\rbrace

A(G)=[aij]A(G) = [a_{ij}] 称为 GG邻接矩阵n×nn \times n 阶矩阵),其中

aij={1,若 vi 邻接到 vj0,否则a_{ij} = \begin{cases} 1, & \text{若 } v_i \text{ 邻接到 } v_j \\ 0, & \text{否则} \end{cases}

vi,vjv_i, v_{j} 相邻即存在 eEe \in E 使得 φ(e)=(vi,vj)\varphi(e) = (v_i, v_j)

flowchart TB
    V1 --> V2 --> V3 --> V4 --> V1
    V3 --> V2
    V2 --> V4
    V3 --> V1

[0100001111011000]\begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}

邻接表:对于每个顶点 viv_i,记录与之相邻的顶点。(有向图无向图均可用)

顶点 相邻顶点

邻接矩阵中元素为 0,10, 1,称为布尔矩阵。若表示包含多重边的图,则不是布尔矩阵。

  • 当有向图中的有向边表示关系时,邻接矩阵就是关系矩阵。无向图的邻接矩阵是对称的。
  • GG 的邻接矩阵中的元素的次序是无关紧要的,只要进行和行、列和列的交换,则可得到相同的矩阵。
    • 若有二个简单有向图,则可得到二个对应的邻接矩阵,若对某一矩阵进行行和行、列和列之间的交换后得到和另一矩阵相同的矩阵,则此二图同构

邻接矩阵的运算

顶点的度:

  • 11 的个数即为行对应结点的出度
  • 11 的个数即为列对应结点的入度

[0100001111011000]\begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}

deg+(1)=1,deg(1)=2deg+(2)=2,deg(2)=2deg+(3)=3,deg(3)=1deg+(4)=1,deg(4)=2\begin{aligned} & \deg^{+}(1)=1, \deg^{-}(1)=2 \\ & \deg^{+}(2)=2, \deg^{-}(2)=2 \\ & \deg^{+}(3)=3, \deg^{-}(3)=1 \\ & \deg^{+}(4)=1, \deg^{-}(4)=2 \end{aligned}

GG 邻接矩阵为 AA,则 GG 的逆图的邻接矩阵是 ATA^{\mathrm{T}}

A=[0100001111011000]AT=[0011101001000110]A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}\\ A^{\mathrm{T}} = \begin{bmatrix} 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \end{bmatrix}

A×AT=B=[bij]A \times A^{\mathrm{T}} = B = [b_{ij}]

bij=k=1naikajk=ai1aj1++ainajnb_{ij} = \sum_{k=1}^{n} a_{ik} a_{jk} = a_{i1} a_{j1} + \cdots + a_{in} a_{jn}

其中 bijb_{ij} 表示结点 ii 和结点 jj 均有边指向的那些结点的个数。biib_{ii} 表示结点 ii 的出度。

AT×A=C=[cij]A^{\mathrm{T}} \times A = C = [c_{ij}]

cij=k=1nakiakj=a1ia1j++anianjc_{ij} = \sum_{k=1}^{n} a_{ki} a_{kj} = a_{1i} a_{1j} + \cdots + a_{ni} a_{nj}

其中 cijc_{ij} 表示同时有边指向结点 ii 和结点 jj 的那些结点的个数。ciic_{ii} 表示结点 ii 的入度。

flowchart TB
    V1 --> V2 --> V3 --> V4 --> V1
    V3 --> V2
    V2 --> V4
    V3 --> V1

A=[0100001111011000]A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}

A×AT=[1000021011310011]AT×A=[2101120100111112]A \times A^{\mathrm{T}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 2 & 1 & 0 \\ 1 & 1 & 3 & 1 \\ 0 & 0 & 1 & 1 \end{bmatrix}\\ A^{\mathrm{T}} \times A = \begin{bmatrix} 2 & 1 & 0 & 1 \\ 1 & 2 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 1 & 2 \end{bmatrix}

A×A=A2=D=[dij]A \times A = A^2 = D = [d_{ij}]

dij=k=1naikakj=ai1a1j++ainanjd_{ij} = \sum_{k=1}^{n} a_{ik} a_{kj} = a_{i1} a_{1j} + \cdots + a_{in} a_{nj}

aikakj=1a_{ik} a_{kj} = 1,则表示有 ikji \to k\to j 长度为 22 的有向边。

dijd_{ij} 表示结点 ii 到结点 jj 的长度为 22 的通路的个数。

flowchart TB
    V1 --> V2 --> V3 --> V4 --> V1
    V3 --> V2
    V2 --> V4
    V3 --> V1

A=[0100001111011000]A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}

A2=[0011210111110100]A3=[2101121122120011]A^2 = \begin{bmatrix} 0 & 0 & 1 & 1\\ 2 & 1 & 0 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 1 & 0 & 0 \end{bmatrix}\\ A^3 = \begin{bmatrix} 2 & 1 & 0 & 1\\ 1 & 2 & 1 & 1 \\ 2 & 2 & 1 & 2 \\ 0 & 0 & 1 & 1 \end{bmatrix}

长度不大于 nn 的通路个数,可由 Bn=k=1nAkB_{n} = \sum_{k=1}^{n}A^{k} 确定。

图的运算

  • 加新边:G+eG + e
  • 减边或边集:GeG - e
  • 减点或点集:GvG - v(同时删除与 vv 关联的边)
  • 边的收缩:G/eG / e(将边 ee 收缩为一个顶点)

简单图 GGGG' 的并 GGG \cup G' 为:以 V(G),V(G)V(G), V(G') 中的顶点组成的集合为顶点集,以 E(G)E(G)E(G) \cup E(G') 为边集。

设图 G,GG, G'不交的无向图,定义 GGG * G' 如下:

  • V(G)V(G)V(G) \cup V(G') 为顶点集
  • E(G)E(G){(x,y)xV(G),yV(G)}E(G) \cup E(G') \cup \left\lbrace (x, y) \mid x \in V(G), y \in V(G') \right\rbrace 为边集。

简单图 G=(V,E)G = (V, E) 的补图 Gˉ=(V,[V]2\E)\bar{G} = (V, [V]^2 \backslash E)

G1=(V1,E1,φ1)G_{1}=\left(V_{1}, E_{1}, \varphi_{1}\right)G2=(V2,E2,φ2)G_{2}=\left(V_{2}, E_{2}, \varphi_{2}\right) 是两个简单无向图。若存在双射 f ⁣:V1V2f\colon V_{1} \to V_{2}uuvvG1G_{1} 中相邻当且仅当 f(u)f(u)f(v)f(v)G2G_{2} 中相邻。此时称 ff 是一个同构函数。

G1=(V1,E1,φ1)G_{1}=\left(V_{1}, E_{1}, \varphi_{1}\right)G2=(V2,E2,φ2)G_{2}=\left(V_{2}, E_{2}, \varphi_{2}\right) 是两个无向图。若存在双射 f:V1V2,g ⁣:E1E2,eE1,φ1(e)={u,v}f: V_{1} \rightarrow V_{2}, g\colon E_{1} \to E_{2},\, \forall e \in E_{1}, \varphi_{1}(e)=\{u, v\} 当且仅当 g(e)E2g(e) \in E_{2},且 φ2(g(e))={f(u),f(v)}\varphi_{2}(g(e))=\{f(u) , f(v)\}

判断两个简单图是否同构:邻接矩阵表示有 n!n! 个。现有最好算法在最坏情况下时间复杂度为指数级。

图同构下保持的性质称为图不变的性质,如

  • 顶点数
  • 度序列

图的连通性

通路

GG 中从 v0v_0vnv_n 的长度为 nn通路(walk)是 GGnn 条边 e1,,ene_1, \cdots, e_n 的序列,满足

  • 存在 viV,0<inv_i \in V, 0 < i \le n 使得 vi1,viv_{i-1}, v_ieie_i 的两个端点
  • 回路(closed walk):起点与终点相同,长度大于 00
  • 简单通路(trail):边不重复,即 ij,eiej\forall i \ne j, e_i \ne e_{j}
  • 初级通路(path):点不重复,也成为路径
  • 不区分多重边时,可用相应顶点的序列表示通路
  • 长度为 00 的通路由单个顶点组成

有向图通路定义类似。

设图 GG 的邻接矩阵为 AA,则

  • (An)ij(A^{n})_{ij}viv_ivjv_{j} 的长度为 nn 的通路的个数
  • (An)ii(A^{n})_{ii}viv_iviv_{i} 的长度为 nn 的回路的个数

连通

若无向图 GG 中任意两个不同顶点之间都有通路,则称无向图 GG连通的(connected)。

flowchart TB
    a --- b
    c --- e --- d --- c

不连通的无向图。

连通分支是是一个无向子图,在分量中的任何两个顶点都可以经由该图上的边抵达另一个顶点,且没有任何一边可以连到其他子图的顶点。或者说连通分支即为「极大连通子图」。

77 个连通分支。

点的删除与连通分支的增减

p(G)p(G)GG 的连通分支个数。

GG 为图,vVGv \in V_G,若 p(Gv)>p(G)p(G - v) > p(G),则称 vv割点

只需考虑割点所在的连通分支,因此下面的讨论不妨只考虑连通图。

关于割点的等价命题:

  1. vv 是割点
  2. 存在 V{v}V - \left\lbrace v \right\rbrace 的分划 {V1,V2}\left\lbrace V_1, V_2 \right\rbrace,使得任意 uV1,wV2u \in V_1, w \in V_2uwuw-通路均包含 vv
  3. 存在顶点 u,wvu, w \ne v,使得任意 uwuw-通路均包含 vv
证明

(1)     \implies (2):

因为 vv 是割点,GvG - v 至少存在两个连通分支,设其中一个顶点集为 V1V_1,令 V2=V(V1{v})V_2 = V - (V_1 \cup \left\lbrace v \right\rbrace),则对于任意 uV1,vV2u \in V_1, v \in V_2u,wu, w 一定在 GvG - v 的不同连通分支中,即 GG 中任何 uwuw-通路必含 vv

(2)     \implies (3):

注意到 (3) 是 (2) 的特殊情况。

(3)     \implies (1):

显然,GvG - v 中不可能还有 uwuw-通路,则 GvG - v 不连通,则 vv 是割点。

边的删除与连通分支的增减

GG 为图,eEGe \in E_G,则

p(G)p(Ge)p(G)+1p(G) \le p(G - e) \le p(G) + 1

第一个不大于显然;第二个注意在图中任意两点加一条边,最多只能将两个连通分支连成一个。

GG 为图,eEGe \in E_G,若 p(Ge)>p(G)p(G - e) > p(G),则称 eeGG 中的割边(桥,cut edge, bridge)。

只需考虑割边所在的连通分支,因此下面的讨论不妨只考虑连通图。

ee 是割边当且仅当 ee 不在 GG 的任一简单回路上。

证明

    \implies

假设 CC 是包含 e=xye=xy 的初级回路,令 Ce=PC-e=PPP 是不含 eexyxy-路径。对 GG 中任意顶点 u,vu, v,若 uvuv-通路中不含 ee,则该通路也是 GeG-e 中的 uvuv-通路。

uvuv-通路中含 ee,则将所有的 ee 均替换为 PP,得到 GeG-e 中的 uvuv--通路,所以 GeG-e 仍连通,与 ee 是割边矛盾。

    \impliedby

假设 e=xye = xy 不是割边。则 GeG - e 仍连通,设 PPGeG-e 中的 xyxy-路径,PP 中不含 ee,则 P+eP + eGG 中的简单回路,矛盾。

关于割边的等价命题:

  1. ee 是割边
  2. ee 不在 GG 的任一简单回路上
  3. 存在 VV 的分划 {V1,V2}\left\lbrace V_1, V_2 \right\rbrace,使得 uV1,wV2\forall u \in V_1, w \in V_2uvuv-通路均包含 ee
  4. 存在顶点 u,wu, w,使得任意 uwuw-通路均包含 ee

连通度

使非平凡连通图 GG 成为不连通图平凡图需要删除的最少顶点数称为图 GG(点)连通度,记为 κ(G)\kappa(G)

约定不连通图或平凡图的连通度为 00。而 κ(Kn)=n1\kappa(K_n) = n - 1

若图 GG 的连通度不小于 kk,则称 GGkk-连通图

kk-连通图的意思是,删除少于 kk 个顶点,依然连通。

使非平凡连通图 GG 成为不连通图平凡图需要删除的最少边数称为图 GG边连通度,记为 λ(G)\lambda(G)

约定不连通图或平凡图的边连通度为 00。而 λ(Kn)=n1\lambda(K_n) = n - 1

若图 GG 的边连通度不小于 kk,则称 GGkk-边连通图

kk-边连通图的意思是,删除少于 kk 条边,依然连通。

二部图

二部图是一种特殊的图,其顶点集可以分为两个互不相交的子集 V1,V2V_1, V_2V1V2=V,V1V2=V_1 \cup V_2 = V, V_1 \cap V_2 = \empty),使得每条边的两个端点分别属于不同的子集。

GG 是非平凡图,记 δ(G)\delta(G) 为图 GG 中最小顶点度,则有

κ(G)λ(G)δ(G)\kappa(G) \le \lambda(G) \le \delta(G)

证明

易见 λ(G)δ(G)\lambda(G) \le \delta(G),因为对于任意一个图,找出其度数最小的那个点,删除与其关联的边,一定会使得图不连通。

FFEE 的极小子集使得 GFG - F 不连通,因此只需证明 Fκ(G)|F| \ge \kappa(G)

GG 中存在不与 FF 中的边相关联的点 vv,令 CCGFG - Fvv 所在的连通分支。则由 FF 的极小性,FF 中的任意一边,其两个端点不会都在 CC 中。

CC 中与 FF 中的边相关联的顶点集合分隔 vvGCG - C,于是 κ(G)F\kappa(G) \le |F|

下图中红圈点是 vv,其所在的黑圈是 CC,蓝边集合是 FF

GG 中各顶点均与 FF 中某条边关联。对任意顶点 vv,令 CCGFG - Fvv 所在的连通分支。

考虑 vv 邻居 ww。若 wwCC 中,则 ww 必与 FF 中某条边关联;若 wwGCG - C 中,则边 vwvw 属于 FF。因此 vv 的邻居数 N(v)|N(v)| 小于等于 F|F|,即 dG(v)Fd_G(v) \le |F|

VN(v)vV - N(v) - v \ne \empty,则删除 N(v)N(v) 后,vvVN(v)vV - N(v) - v 不连通,从而 κ(G)F\kappa(G) \le |F|

VN(v)v=V - N(v) - v = \empty,则取其它节点满足 VN(v)vV - N(v) - v \ne \empty 即可。若所有顶点都满足 VN(v)v=V - N(v) - v = \empty,则 GG 是完全图,κ(G)=λ(G)=G1\kappa(G) = \lambda(G) = |G| - 1

GG 是简单图,G=n3|G| = n \ge 3δ(G)n2\delta(G) \ge n - 2,则 κ(G)=δ(G)\kappa(G) = \delta(G)

Whitney 定理

GGG3|G| \ge 3)是 22-连通图当且仅当 GG 中任意两点被至少被 22 条除端点外顶点不相交的路径所连接。

即任意两点均处在同一初级回路上。

推广有

Menar 定理

  • GGkk-连通图当且仅当 GG 中任意两点被至少被 kk 条除端点外顶点不相交的路径所连接。
  • GGkk-边连通图当且仅当 GG 中任意两点被至少被 kk 条边不相交的路径所连接。

22-连通图

一个图是 22-连通的当且仅当它是一个回路,或可在已有的 22-连通图上依次添加 H-path[1]而得。

证明

充分性显然(回路是 22-连通的;删除 H-path 的两个顶点可以使得图不连通,因此添加 H-path 后还是 22-连通,而且新增 H-path 后每个点都在一个回路中,因此也不是 11-连通的)。

必要性:设 GG22-连通的,则 GG 必包含回路 CC22-连通的性质)。

HH 是包含 CC 并依次增加 H-path 得到的极大子图,则 HH 中一定包含 GG 中全部的点。

否则若 VHVGV_H \ne V_G,则存在 vVGVH,wVHv \in V_G - V_H, w \in V_HvwEGvw \in E_G,图 GG22-连通的,GwG - w 连通,vvHH 有路径 PP,则 wvPwvP 是 H-path,与 HH 的极大性矛盾。

EH<EGE_H < E_G,只需补齐 HH 中的边,使得 HH 仍然是 22-连通的,即可得到 GG


  1. 通路上有两个端点,且仅这两个端点在原图上。 ↩︎

有向图的连通性

若将有向图 DD 各边替换为无向边,得到的无向图是连通的,则称 DD弱连通的。

u,vVD\forall u, v \in V_D,存在一条从 uuvv(或相反)的有向通路,则称 DD单连通的。

u,vVD\forall u, v \in V_D,均存在 uuvvvvuu 的有向通路,则称 DD强连通的。

有向图 DD 强连通当且仅当 DD 中所有顶点在同一个有向回路上。

证明

充分性显然。

必要性:设 VD={v1,,vn}V_D = \left\lbrace v_1, \cdots, v_n \right\rbrace,设 Γi\Gamma_iviv_ivi+1v_{i+1} 的有向通路(i=1,,n1i = 1, \cdots, n-1),Γn\Gamma_nvnv_nv1v_1 的有向通路,则 Γ1,,Γn\Gamma_1, \cdots, \Gamma_n 依次连接是包含 DD 中一切顶点的有向回路。

若有向图 DD 是单向连通的,则任意非空顶点集 VVDV' \subseteq V_D,存在 vVv' \in V' 使得 vv' 可达 VV' 中的所有顶点。

边定向相关内容被快速略过了……

欧拉图

包含图(无向图或有向图)中每条边的简单通路称为欧拉通路

欧拉通路边不重复(简单通路),但顶点可以重复。

包含图中每条边的简单回路称为欧拉回路

若图 GG 中存在欧拉回路,则称 GG欧拉图。若图 GG 中存在欧拉通路但不存在欧拉回路,则称 GG半欧拉图

本节通常假设 GG 连通。

连通图 GG 是欧拉图当且仅当 GG 中每个顶点的度数均为偶数。

证明

必要性:设 CCGG 中的欧拉回路,则任意 vVGv \in V_Gdeg(v)\deg(v) 必等于 vvCC 上出现数的 22 倍(起点终点各算一次)。

充分性:可以证明 GG 中所有边可以分为由若干条相互没有公共边的简单回路,这些回路可以串成一个欧拉回路。

若无向图 GG 中任一顶点均为偶度数点,则 GG 中所有边包含在若干条相互没有公共边的简单回路中。

证明

根据 GG 边数 mm 进行归纳证明。m=1m = 1 时,GG 是环,结论成立。

k1k \ge 1,假设 mkm \le k 时结论成立。考虑 m=k+1m = k + 1 的情况:

我累了,后面再补充 8, 9 页

欧拉图等价命题:

  • GG 是欧拉图
  • GG 中每个顶点的度数均为偶数
  • GG 中所有的边包含在若干个相互没有公共边的简单回路中

连通图 GG 是半欧拉图当且仅当 GG 中恰有 22 个奇度数顶点。

证明

    \implies :设 PPGG 中的欧拉通路(非回路),起点与终点分别为 u,vu, v。则对 GG 中任意一点 xx,若 xx 不是 u,vu, v,则 deg(x)\deg (x) 等于其在 PP 中出现次数的 22 倍。而 u,vu, v 的度数为它们在 PP 中出现次数的 22 倍再加 11

    \impliedby :设 u,vu, vGG 中的两个奇度数顶点,则 G+uvG + uv 是欧拉图,设其欧拉回路为 CC,则 CC 中包含 uvuv 边,则 CuvC - uvGG 中的欧拉通路。

由此也可得,一笔画一个半欧拉图,必须要从一个奇度数顶点开始,到另一个奇度数顶点结束。

有向图定义类似:

  • 有向欧拉回路:有向图中含所有边的有向简单回路
  • 有向欧拉图:含有向欧拉回路的有向图

GG 是弱连通的有向图,则下列命题等价:

  • GG 是有向欧拉图
  • GG 中每个顶点的入度等于出度
  • GG 中所有的边包含在若干个相互没有公共边的有向简单回路中

弗勒里算法(Fleury)

构造欧拉回路的弗勒里算法

  • 输入:欧拉图 GG
  • 输出:简单回路 P=v0e1v1e2eiviei+1emvmP = v_0 e_1 v_1 e_2 \cdots e_i v_i e_{i+1} \cdots e_m v_m,其中包含了 EGE_G 中全部元素
  • 步骤:
    1. 任取 v0VGv_0 \in V_G,令 P0=v0P_0 = v_0
    2. Pi=v0e1v1e2eiviP_i = v_0 e_1 v_1 e_2 \cdots e_i v_i,按下面的原则从 EG{e1,e2,,ei}E_G - \left\lbrace e_1, e_2, \cdots, e_i \right\rbrace 中选择 ei+1e_{i+1}
      • ei+1e_{i+1}viv_i 相关联;
      • 除非别无选择,否则 ei+1e_{i+1} 不应是 G{e1,e2,,ei}G - \left\lbrace e_1, e_2, \cdots, e_i \right\rbrace 的割边。
    3. 重复步骤 22 直至 EGE_G 中的边全部被选中。
证明

哈密顿图

包含图中每个顶点的通路,且通路上各顶点不重复,称为哈密顿通路(Hamiltonian path)。

哈密顿通路顶点不重复,但边可以重复。

包含图中每个顶点的回路,且除了起点和终点相同外回路上各顶点不重复,称为哈密顿回路

哈密顿回路无重复地遍历图中诸点,欧拉回路则是无重复地遍历图中诸边。

  • 若图 GG 有一顶点度为 11,则无哈密顿回路
  • 若图 GG 有一顶点度大于 22,若存在哈密顿回路,则只用其中两条边
  • 若图 GG 中有 nn 个顶点,若存在哈密顿回路,则恰有 nn 条边

哈密顿图的必要条件。

若图 G=(V,E)G = (V, E) 是哈密顿图,则对 VV 任意非空子集 SS,有

P(GS)SP(G - S) \le |S|

其中 P(GS)P(G - S) 表示图 GSG - S 的连通分支个数。

理由:设 CCGG 中的哈密顿回路,则 P(GS)P(CS)SP(G -S) \le P(C - S) \le |S|,向一个图中顶点之间加边不会增加连通分支。

哈密顿图的充分条件。

狄拉克定理(Dirac)

GG 是无向简单图,G=n3|G| = n \ge 3,若 δ(G)n2\delta(G) \ge \dfrac{n}{2},则 GG 是哈密顿图。

奥尔定理(Ore)

GG 是无向简单图,G=n3|G| = n \ge 3,若对 GG 中任意两个不相邻的顶点 u,vu, v,有 deg(u)+deg(v)n\deg(u) + \deg(v) \ge n,则 GG 是哈密顿图。

证明

先证若无向简单图 GGG=n2|G| = n \ge 2,其任意不相邻顶点 u,vu, v 均满足 deg(u)+deg(v)n1\deg(u) + \deg(v) \ge n - 1,则 GG 是连通图。

GG 不连通,则至少存在 22 个连通分支,设为 G1,G2G_1, G_2,取 xVG1,yVG2x \in V_{G_1}, y \in V_{G_2},则 deg(x)+deg(y)n11+n21n2\deg(x) + \deg(y) \le n_1 - 1 + n_2 - 1 \le n - 2,矛盾!

反证法。设对无向简单图 GG 存在满足任意不相邻顶点有 deg(u)+deg(v)n\deg(u) + \deg(v) \ge n,但没有哈密顿回路。

不妨设 GG 是边极大的非哈密顿图(可以给 GG 增边,而完全图一定是哈密顿图,存在一个极大的临界情况)。

u,vu, vGG 中不相邻的顶点,于是 G+uvG + uv 是哈密顿图(由 GG 的极大性,再增边一定是哈密顿图),且其中每条哈密顿回路都要通过边 uvuv,因此 GG 中存在起点为 uu 终点为 vv 的哈密顿回路 v1,v2,,vnv_1, v_2, \cdots, v_n,其中 u=v1,v=vnu = v_1, v = v_n

不存在相邻顶点 vi1,viv_{i-1}, v_i 使得 vi1v_{i-1}vv 相邻且 viv_iuu 相邻,否则 v1,v2,,vi1,vn,,vi,v1v_1, v_2, \cdots, v_{i-1}, v_n, \cdots, v_i, v_1GG 的哈密顿回路。

设在 GGuuvi1,vi2,,vikv_{i_1}, v_{i_2}, \cdots, v_{i_{k}} 相邻,则 vvvi11,vi21,,vik1v_{i_1-1}, v_{i_2-1}, \cdots, v_{i_{k}-1} 不相邻,因此 deg(u)+deg(v)k+[(n1)k]=n1<n\deg(u) + \deg(v) \le k + [(n - 1) - k] = n - 1 < n,矛盾。

引理可得:对有限图 GG,若 u,vu, vGG 中不相邻的两个顶点,且 deg(u)+deg(v)G\deg(u) + \deg(v) \ge |G|,则 GG 是哈密顿图当且仅当 G+{uv}G + \{uv\} 是哈密顿图。

GG 的闭合图 C(G)C(G):连接 GG 中不相邻的且度数之和不小于 G|G| 的点对,直到不存在这样的点对的图。

有限图 GG 是哈密顿图的充要条件是其闭合图 C(G)C(G) 是哈密顿图。

奥尔定理推论有

GG 是简单图,G=n2|G| = n \ge 2,若 GG 中任意不相邻的顶点对 u,vu, vdeg(u)+deg(v)n1\deg(u) + \deg(v) \ge n - 1,则 GG 有哈密顿通路。

解释

对任意图 GG 与顶点 vGv \notin G,有新图 G=GvG' = G * v(即将 vvGG 中所有顶点相连)。若 GG 满足上面的条件,则 GG' 有哈密顿回路,从而可以绕过 vv 得到原图的哈密顿通路。

这里是通路,不是回路