本文主要参考于《离散数学及其应用》(傅彦 著)中的图论篇
一个 图(graph) 是一个序偶 < V , E >
<V,E>,记为 G = < V , E > G = G=<V,E>,其中:
(1) V = v 1 , v 2 , . . . , v n V = { v_1, v_2, ..., v_n} V=v1,v2,...,vn 是有限非空集合, v i v_i vi称为 节点(nodal point),简称 点(point), V V V 称为 节点集(nodal set).
(2) E E E 是有限集合,称为 边集(frontier set), E E E 中的每个元素都有 V V V中的节点对与之对应,称之为 边(edge).
图的集合表示
图的图形表示
图的矩阵表示
优点:便于用代数知识来研究图的性质,特别是便于用计算机来处理。
邻接矩阵(adjacency matrix) :
设图 G = < V , E > G =
G=<V,E>, 其中 V = v 1 , v 2 , . . . , v n V = {v_1, v_2, ..., v_n} V=v1,v2,...,vn,并假定节点已经有了从 v 1 v_1 v1到 v n v_n vn的次序,则 n n n 阶方阵 A G = ( a i j ) n × n A_G = (a_{ij})_{n \times n} AG=(aij)n×n称为 G G G的邻接矩阵,其中
a i j = { 1 , 若 ( v i , v j ) ∈ E 或 < v i , v j > ∈ E 0 , 否则 a_{ij} = \begin{cases} 1, & \text{若$(v_i,v_j) \in E$ 或 $\in E$} \\ 0, & \text{否则} \end{cases} aij={1,0,若(vi,vj)∈E 或 <vi,vj>∈E否则
设图 G = < V , E > G =
G=<V,E>
(1) 设 e ∈ E e \in E e∈E,用 G − e G - e G−e表示从 G G G中去掉边 e e e得到的图,称为删除边 e e e。
(2) 设 v ∈ V v \in V v∈V,用 V − v V - v V−v表示从 G G G中去掉节点 v v v及 v v v关联的所有边得到的图,称为删除节点 v v v。
(3) 设 e = ( u , v ) ∈ E e=(u,v) \in E e=(u,v)∈E,用 G \ e G \backslash e G\e表示从 G G G中删除边 e e e,将 e e e的两个端点 u , v u,v u,v用一个新的节点 w w w代替,使 w w w关联除 e e e外的 u u u和 v v v关联的一切边,称为边 e e e的收缩。一个图 G G G可以收缩为图 H H H,是指 H H H可以从 G G G经过若干次边的收缩而得到。
(4) 设 u , v ∈ V u,v \in V u,v∈V( u , v u,v u,v可能相邻,也可能不相邻),用 G ⋃ ( u , v ) G \bigcup (u,v) G⋃(u,v)表示在 u , v u,v u,v之间加一条边 ( u , v ) (u,v) (u,v),称为加新边。
在图$G =
中,
若两个节点 v i v_i vi 和 v j v_j vj 是边 e e e 的端点,则称 v i v_i vi 与 v j v_j vj 互为 邻接点(adjacent point),否则 v i v_i vi 与 v j v_j vj称为不邻接的;
具有公共节点的两条边称为 邻接边(adjacent edge);
两个端点相同的边称为 环(ring) 或 自回路(self-loop);
图中不与任何节点相邻的节点称为 孤立节点(isolated point);
仅由孤立节点组成的图称为 零图(null graph);
仅含一个节点的零图称为 平凡图(trivial graph);
含有 n n n个节点, m m m条边的图称为 ( n , m ) (n, m) (n,m) 图。
每条边都是无向边的图称为无向图(undirected graph);
每条边都是有向边的图称为有向图(directed graph);
有些边是无向边,有些边是有向边的图称为混合图(mixed graph)
在有向图中,两节点间(包括节点自身间)若有同始点和同终点的几条边,则这几条边称为 平行边(parallel edge);
在无向图中,两节点间(包括节点自身间)若有几条边,则这几条边称为 平行边(parallel edge);
两节点 a , b a,b a,b间相互平行的边的条数称为边 ( a , b ) (a,b) (a,b)或 < a , b > <a,b>的 重数(repeated number);
含有平行边的图称为 多重图(multigraph);
非多重图称为 线图(line graph);
无环的线图称为 简单图(simple graph)。
简单图是一种特殊的线图,仅仅无环而已
赋权图(weight graph) G G G是一个三重组 < V , E , g >
<V,E,g>或四重组 < V , E , f , g > <V,E,f,g>,其中 V V V是节点集合, E E E是边的集合, f f f是从 V V V到非负实数集合的函数, g g g是从 E E E到非负实数集合的函数。
设有图 G = < V , E > G =
G=<V,E>和图 G 1 = < V 1 , E 1 > G_1 = G1=<V1,E1>,
(1) 若 V 1 ⊆ V , E 1 ⊆ E V_1 \subseteq V, E_1 \subseteq E V1⊆V,E1⊆E,则称 G 1 G_1 G1 是 G G G的 子图(subgraph),记为 G 1 ⊆ G G_1 \subseteq G G1⊆G;
(2) 若 G 1 ⊆ G G_1 \subseteq G G1⊆G,且 G 1 ≠ G G_1 \neq G G1=G(即 V 1 ⊂ V V_1 \subset V V1⊂V或 E 1 ⊂ E E_1 \subset E E1⊂E),则称 G 1 G_1 G1是 G G G的 真子图(proper subgraph),记为 G 1 ⊂ G G_1 \subset G G1⊂G;
(3) 若 V 1 = V , E 1 ⊆ E V_1 = V, E_1 \subseteq E V1=V,E1⊆E,则称 G 1 G_1 G1是 G G G的 生成子图(spanning subgraph);
(4) 设 V 2 ⊆ V V_2 \subseteq V V2⊆V且 V 2 ≠ ∅ V_2 \neq \emptyset V2=∅,以 V 2 V_2 V2为节点集,以两个端点均在 V 2 V_2 V2中的边的全体为边集的 G G G的子图,称为 V 2 V_2 V2导出的 G G G的子图,简称 V 2 V_2 V2的 导出子图(induced subgraph)。
设 G = < V , E > G=
G=<V,E>为一个具有 n n n个节点的无向简单图,如果 G G G中任意两个节点间都有边相连,则称 G G G为 无向完全图(undirected complete graph),简称 G G G为 完全图(complete graph),记为 K n K_n Kn;
设 G = < V , E > G=G=<V,E>为一个具有 n n n个节点的有向简单图,如果 G G G中任意两个节点间都有两条方向相反的有向边相连,则称 G G G为 有向完全图(directed complete graph),在不发生误解的情况下,也记为 K n K_n Kn。
设 G = < V , E > G=
G=<V,E>为简单图, G ′ = < V , E 1 > G'= G′=<V,E1>为完全图,则称 G 1 = < V , E 1 − E > G_1= G1=<V,E1−E>为 G G G的 补图(complement of graph),记为 G ‾ \overline{G} G。
(1) 图 G = < V , E > G=
G=<V,E>中以节点 v ∈ V v \in V v∈V为端点的边数(有环时计算两次)称为节点 v v v的 度数(degree),简称度,记为 d e g ( v ) deg(v) deg(v)。
(2) 有向图 G = < V , E > G=G=<V,E>中以节点 v v v为始点的边数称为 v v v的 出度(out-degree),记为 d e g + ( v ) deg^+(v) deg+(v);以节点 v v v为终点的边数称为 v v v的 入度(in-degree),记为 d e g − ( v ) deg^-(v) deg−(v)。显然 d e g ( v ) = d e g + ( v ) + d e g − ( v ) deg(v) = deg^+(v) + deg^-(v) deg(v)=deg+(v)+deg−(v)。
(3) 对于图 G = < V , E > G=G=<V,E>,度数为1的节点称为 悬挂节点(hanging point),以悬挂节点为端点的边称为 悬挂边(hanging edge)。
在邻接矩阵中:
图中节点度数的总和等于边数的二倍,即设图 G = < V , E > G=
G=<V,E>,则有:
∑ v ∈ V d e g ( v ) = 2 ∣ E ∣ \sum_{v \in V} deg(v) = 2 |E| v∈V∑deg(v)=2∣E∣
证明:因为每条边都有两个端点(环的两个端点相同),所以加上一条边就使得个节点的度数之和增加2. 称为 图论的基本定理 或 握手定理
推论:
- 图中度数为奇数的节点个数为偶数
- 有向图中个各节点的出度之和等于各节点的入度之和,等于边数,即设有向图 G = < V , E > G=
G=<V,E>,则有
∑ v ∈ V d e g + ( v ) = ∑ v ∈ V d e g − ( v ) = ∣ E ∣ \sum_{v \in V}deg^+(v) = \sum_{v \in V}deg^-(v) = |E| v∈V∑deg+(v)=v∈V∑deg−(v)=∣E∣
度数序列:
设 V = v 1 , v 2 , . . . , v n V={v_1, v_2,..., v_n} V=v1,v2,...,vn为图 G G G的节点集,称 ( d e g ( v 1 ) , d e g ( v 2 ) , . . . , d e g ( v n ) ) (deg(v_1), deg(v_2),..., deg(v_n)) (deg(v1),deg(v2),...,deg(vn))为 G G G的 度数序列(degree sequence)。
设两个图 G = < V , E > G=
G=<V,E>和 G ′ = < V ′ , E ′ > G'= G′=<V′,E′>,如果存在双射函数 g : V → V ′ g: V \rightarrow V' g:V→V′,使得对于任意的 e = ( v i , v j ) ( 或者 < v i , v j > ) ∈ E e=(v_i, v_j)(\text{或者} ) \in E e=(vi,vj)(或者<vi,vj>)∈E当且仅当 e ′ = ( g ( v i ) , g ( v j ) ) ( huozhe < g ( v i ) , g ( v j ) > ) ∈ E ′ e'=(g(v_i), g(v_j))(\text{huozhe}) \in E' e′=(g(vi),g(vj))(huozhe<g(vi),g(vj)>)∈E′,并且 e e e与 e ′ e' e′的重数相同,则称 G G G与 G ′ G' G′同构(isomor-phism),记为 G ≅ G ′ G\cong G' G≅G′。