2.概念与计算
2.1 图的定义
2.1.1 定义
图(graph) G G G 是一个有序的三元组,记作 G = < V ( G ) , E ( G ) , ψ ( G ) > G=<V(G),E(G),\psi (G)> G=<V(G),E(G),ψ(G)>。
V ( G ) V(G) V(G) 是顶点集。 E ( G ) E(G) E(G) 是边集。 ψ ( G ) \psi (G) ψ(G) 是关联函数,;例如 ψ G ( e ) = v i v j \psi_G (e)=v_iv_j ψG(e)=vivj。
N G ( v ) N_G(v) NG(v) 表示点 v v v 的一阶邻域点。
相邻:与同一个顶点关联的两条边是相邻的。
环:两个端点重合的边称为环。
连杆:端点不重合的边成为连杆。
k k k 重边:连接同一对顶点的 k k k 条边。
单边:一对顶点之间只有一条边。
简单图:无环无重边
2.1.2 度
度:与顶点 v v v 关联的边的数目,记作 d ( v ) d(v) d(v)。
度序列: ( d ( v 1 ) , d ( v 2 ) , . . . , d ( v v ) ) (d(v_1),d(v_2),...,d(v_v)) (d(v1),d(v2),...,d(vv))
孤立点:度为 0 0 0。
悬挂点:度为 1 1 1。
悬挂边:与悬挂点相关联的边。
偶点:度为偶数的顶点。
奇点:度为奇数的顶点。
最小度 δ ( G ) \delta(G) δ(G):图 G G G 顶点度的最小值。
最大度 Δ ( G ) \Delta(G) Δ(G):图 G G G 顶点度的最大值。
握手引理: ∑ v ∈ V = 2 ϵ \sum_{v\in V} = 2 \epsilon ∑v∈V=2ϵ。
例题:空间中不存在有奇数个面并且每个面只有奇数个棱的多面体。
思路:将面抽象为点,两面之间的棱为边,则转化成了有奇数个点且每个点都是奇数度的图,与握手引理矛盾,得证。
例题:证明非负整数序列 ( d 1 , d 2 , . . . , d v ) (d_1,d_2,...,d_v) (d1,d2,...,dv) 是某个图的度序列当且仅当 ∑ i = 1 v d i \sum_{i=1}^{v} d_i ∑i=1vdi 是偶数。
思路:先画出 v v v 个孤立点,然后选序列中度大于 1 1 1 的点连环直至将每个点仍需添加的度为 0 0 0 或 1 1 1。然后将两两选择度为 1 1 1 的点。能连通即可得证。
图序列:简单图的度序列。
判断是否为图序列:非负整数序列 ( d 1 , d 2 , . . . , d v ) ( d 1 ≥ d 2 ≥ . . . ≥ d v ) (d_1,d_2,...,d_v)(d_1 \geq d_2 \geq ... \geq d_v) (d1,d2,...,dv)(d1≥d2≥...≥dv) 是图序列当且仅当 ∑ i = 1 v d i \sum_{i=1}^v d_i ∑i=1vdi 是偶数,并且对一切整数 k ( 1 ≤ k ≤ v − 1 k(1\leq k\leq v-1 k(1≤k≤v−1,有 ∑ i = 1 k ≤ k ( k − 1 ) ≤ ∑ i = k + 1 v m i n { k , d i } \sum_{i=1}^{k} \leq k(k-1) \leq \sum_{i=k+1}^{v}min \{k,d_i\} ∑i=1k≤k(k−1)≤∑i=k+1vmin{k,di}.
例题:(1,2,2,4,5);(1,2,3,3,4,5);(1,2,3,4,4,5) 三个是否是图序列?
思路:第一个不是图序列,当点数为 5 5 5 时,不存在度为 5 5 5 的简单图。第二个是图序列。 第三个不是图序列,先画出度为 5 5 5 的点的连边,然后只有三个点还能连边,需要的度依次为 2 , 3 , 3 2,3,3 2,3,3,简单图中的三个点不可能连出度为 3 3 3 的连边情况。
2.1.3 同构
同构:若两个图顶点之间建立一一对应的关系,且任意一对顶点的边数对应相同,则称两图是同构的。
2.2 子图和连通分支
2.2.1 子图
子图:设 H H H 和 G G G 为两个图。若 V ( H ) ⊆ V ( G ) V(H) \subseteq V(G) V(H)⊆V(G) 且 E ( H ) ⊆ E ( G ) E(H) \subseteq E(G) E(H)⊆E(G),则 H H H 为 G G G 的子图。记作 H ⊆ G H \subseteq G H⊆G。
相等:设 H H H 和 G G G 为两个图。若 V ( H ) = V ( G ) V(H) = V(G) V(H)=V(G) 且 E ( H ) = E ( G ) E(H) = E(G) E(H)=E(G),则 H H H 为 G G G 相等。记作 H = G H = G H=G。
真子图:若 H ⊆ G H \subseteq G H⊆G 且 H ≠ G H \neq G H=G,则称 H H H 是 G G G 的真子图,记作 H ⊂ G H \subset G H⊂G。
支撑(生成)子图:若 V ( H ) = V ( G ) V(H) = V(G) V(H)=V(G) 且 E ( H ) ⊆ E ( G ) E(H) \subseteq E(G) E(H)⊆E(G),则称 H H H 是 G G G 的支撑子图或生成子图。
基础简单图:对图 G G G 去除重边和环后的图 H H H。
2.2.2 导出子图
导出子图:设 V ′ V' V′ 是 V ( G ) V(G) V(G) 的非空子集,以 V ′ V' V′ 为顶点集,以 E ′ = u v ∈ E ( G ) ∣ u , v ∈ V ′ E'= {uv \in E(G) | u,v \in V'} E′=uv∈E(G)∣u,v∈V′ 为边集的 G G G 的子图称为 G 的由 V ′ V' V′ 导出的子图,记作 G [ V ′ ] G[V'] G[V′],简称为 G G G 的导出子图。
2.2.3 连通分支
途径的起点/终点/长度/逆转/衔接/节: W = v o e 1 v 1 e 2 . . . e k v k W=v_oe_1v_1e_2...e_kv_k W=voe1v1e2...ekvk,这里 v i ∈ V ( 0 ≤ i ≤ k ) , e j = v j − 1 v j ∈ E ( 1 ≤ j ≤ k ) v_i\in V(0\leq i \leq k),e_j=v_{j-1}v_j \in E(1 \leq j \leq k) vi∈V(0≤i≤k),ej=vj−1vj∈E(1≤j≤k), v 0 v_0 v0 称为 W W W 的起点, v k v_k vk 称为 W W W 的终点,之间的 v v v 称为 W W W 的内部点。 W W W 称为 G G G 的 ( v 0 , v k ) (v_0,v_k) (v0,vk) 途径。 k k k 为 W W W 的长度。逆转如字面意思。衔接意味对于两个不同的 W W W,其中一条 W W W 的终点为另一个 W W W 的起点,则两条 W W W 可以衔接。节是 W W W 序列中的子集。
迹:途径 w w w 的边互不相同,则称 W W W 为迹。若起点终点相同,则 W W W 为闭迹。
链:途径 w w w 的顶点互不相同,则称 W W W 为链。一个顶点也称为一条链。
圈:起点、内部点互不相同的闭迹称为圈,长为 k k k 的圈称为 k k k 圈。根据 k k k 的奇偶性,相应地称 k k k 圈为奇圈和偶圈。
连通:若图 G G G 中存在 ( u , v ) (u,v) (u,v) 链,则顶点 u u u 和 v v v 在图 G G G 中是连通的。
连通分支(数): V V V 的非空划分 ( V 1 , V 2 . . . , V ω ) (V_1,V_2...,V_\omega) (V1,V2...,Vω),导出子图 G [ V 1 ] , G [ V 2 ] , . . . , G [ V ω ] G[V_1],G[V_2],...,G[V_\omega] G[V1],G[V2],...,G[Vω] 称为 G G G 的连通分支。 ω ( G ) \omega(G) ω(G) 为图 G G G 的连通分支数。
2.2.4 距离
距离:图 G G G 中所有 ( u , v ) (u,v) (u,v) 链的最短链,记为 d ( u , v ) d(u,v) d(u,v),被称之为 u , v u,v u,v 之间的距离。
例题:设 G G G 是连通图,且 G G G 中至少有一对顶点不相邻,证明存在 u , v , w ∈ V u,v,w \in V u,v,w∈V,使 u v , v w ∈ E uv,vw \in E uv,vw∈E,但 u w ∉ E uw \notin E uw∈/E。
思路:设 x , y ∈ V x,y \in V x,y∈V 且 x y ∉ E xy \notin E xy∈/E。因 G G G 连通,故 G G G 中存在最短 ( x , y ) (x,y) (x,y) 链 P = x v 1 v 2 . . . y P=xv_1v_2...y P=xv1v2...y。
由 P P P 的最短性可知 x v 2 ∉ E xv_2 \notin E xv2∈/E,于是令 u = x , v = v 1 , w = v 2 u=x,v=v_1,w=v_2 u=x,v=v1,w=v2,则有 u v ∈ E , v w ∈ E uv \in E,vw \in E uv∈E,vw∈E 但 u w ∉ E uw \notin E uw∈/E。
2.3 重要图类
2.3.1 完全图
完全图:含有 C n 2 C_{n}^{2} Cn2 条边,且每对顶点都相邻的简单图,记作 K n K_n Kn。
空图:边集为空的图。
平凡图:图中只有一个顶点。
非平凡图:除了平凡图以外的图。
例题:在任意 6 6 6 个人聚会上,要么有 3 3 3 个人相互认识,要么有 3 3 3 个人相互不认识。
思路:先构造 6 6 6 阶完全图 K 6 K_6 K6,其中 V = v 1 , v 2 , . . . , v 6 V = {v_1,v_2,...,v_6} V=v1,v2,...,v6。 v i v_i vi 代表第 i i i 个人。
若 v i v_i vi 与 v j v_j vj 互相认识,则染这条边为红色边,否则为蓝色边。于是问题转成了图中必定存在同色三角形问题。因此得证。
2.3.2 正则图
正则图/k正则图:每个顶点的度都相等(都为 k k k)的图称为( k k k)正则图。一般指的是简单图。
例题:对于任意的正整数 n n n, n k nk nk 为偶数,当 n ≥ k + 1 n \geq k + 1 n≥k+1, n n n 阶 k k k 正则图存在吗?
思路:
γ 1 \gamma_1 γ1 法则:构造偶数正则图法则。
设 G G G 是 v v v 阶 k k k 正则图,且 k = 2 m k=2m k=2m, m ≥ 1 m \geq 1 m≥1,按以下步骤生成新图 G ′ G' G′:
step 1:在图 G G G 中任取 m m m 条互不相邻的边: v 1 v 2 , v 3 v 4 , . . . , v 2 m − 1 v 2 m v_1v_2,v_3v_4,...,v_{2m-1}v_{2m} v1v2,v3v4,...,v2m−1v2m 并删除。
step 2:增加新的顶点 v v v,并向所有被删边的点增加一条新边 v v i ( i = 1 , 2 , . . . , 2 m ) vv_i(i=1,2,...,2m) vvi(i=1,2,...,2m),得到新图 G ′ G' G′。
γ 2 \gamma_2 γ2 法则:构造奇数正则图法则。
设 G G G 是 v v v 阶 k k k 正则图,且 k = 2 m + 1 k=2m+1 k=2m+1, m ≥ 1 m \geq 1 m≥1,按以下步骤生成新图 G ′ G' G′:
step 1:在图 G G G 中任取 m m m 条互不相邻的边: v 1 v 2 , v 3 v 4 , . . . , v 2 m − 1 v 2 m v_1v_2,v_3v_4,...,v_{2m-1}v_{2m} v1v2,v3v4,...,v2m−1v2m 并删除。
step 2:再在图 G G G 中任取 m m m 条互不相邻的边: u 1 u 2 , u 3 u 4 , . . . , u 2 m − 1 u 2 m u_1u_2,u_3u_4,...,u_{2m-1}u_{2m} u1u2,u3u4,...,u2m−1u2m 并删除。
(step 1 和 step 2 中可能会出现重复点)
step 3:增加新的顶点 w 1 w_1 w1,并向 step 1 中所有被删边的点增加一条新边 w 1 v i ( i = 1 , 2 , . . . , 2 m ) w_1v_i(i=1,2,...,2m) w1vi(i=1,2,...,2m)。
step 4:再增加新的顶点 w 2 w_2 w2,并向 step 2 中所有被删边的点增加一条新边 w 2 u i ( i = 1 , 2 , . . . , 2 m ) w_2u_i(i=1,2,...,2m) w2ui(i=1,2,...,2m)。
step 5:加边 w 1 w 2 w_1w_2 w1w2,得新图 G ′ G' G′。
定理: n n n 阶 k k k 正则简单图存在的充要条件是 k ≤ n − 1 k \leq n-1 k≤n−1 且 n k nk nk 为偶数。
证明:设 G G G 是 n n n 阶 k k k 正则简单图,每个顶点最多与其他 n − 1 n-1 n−1 个顶点相邻,因此 k ≤ n − 1 k \leq n-1 k≤n−1 成立。
设 k = 2 m k=2m k=2m,取 G = K k + 1 G=K_{k+1} G=Kk+1,则 G G G 为 k k k 正则图。根据 γ 1 \gamma_1 γ1 法则,顶点每次可以增加 1 1 1 而点的度数不变。因此可以得到 n n n 阶 k k k 正则图。
2.3.3 二部图
(完全)二部图:若顶点集可以划分为两个子集 X X X 和 Y Y Y,使得 G G G 中每条边的一端点在 X X X 中,另一个端点在 Y Y Y 中,则称 G G G 图为二部图。二部图 G G G 记作 G = ( X , Y , E ) G=(X,Y,E) G=(X,Y,E)。若集合 X X X 中的每个点都与 Y Y Y 中所有点都恰好有一条边,且 X 、 Y X、Y X、Y 均不为空集,则该图记作完全二部图,记作 K m , n K_{m,n} Km,n。
定理:图 G G G 的二部图,当且仅当 G G G 中不含奇圈。
证明:
step 1:
设 G = ( X , Y , E ) G=(X,Y,E) G=(X,Y,E) 是二部图, C = ( v 0 v 1 . . . v k v 0 ) C=(v_0v_1...v_kv_0) C=(v0v1...vkv0) 是 G G G 中的一个圈,长度为 k + 1 k+1 k+1。
设 v 0 ∈ X v_0 \in X v0∈X,于是后面节点依次属于 Y Y Y 和 X X X。因此得到 v 2 i ∈ X , v 2 i + 1 ∈ Y v_{2i} \in X,v_{2i+1} \in Y v2i∈X,v2i+1∈Y。
因此 k = 2 l + 1 k=2l+1 k=2l+1。该圈为偶圈。
step 2:
设 G G G 连通(若不连通则取一个连通分支证明之)。在 G G G 中任取一个顶点 u u u,令 X = { x ∣ d ( u , x ) 为偶数 } X=\{x|d(u,x)为偶数\} X={x∣d(u,x)为偶数}, Y = { y ∣ d ( u , y ) 为奇数 } Y=\{y|d(u,y)为奇数\} Y={y∣d(u,y)为奇数}。显然 X 、 Y X、Y X、Y 是图 G G G 的一个划分。
为了证明 G G G 是二部图,只需证明 X X X 或 Y Y Y 中任何两个顶点都不相邻。
设 v , w v,w v,w 是 X X X 中任意两个顶点,令 P P P 是 G G G 中最短 ( u , v ) (u,v) (u,v) 链,Q 是 G G G 中最短 ( u , w ) (u, w) (u,w) 链。
设 P P P 与 Q Q Q 的最后一个公共顶点是 u 1 u_1 u1。因为 P P P 和 Q Q Q 都是最短链,因此 P P P 的 ( u , u 1 ) (u,u_1) (u,u1) 节和 Q Q Q 的 ( u , u 1 ) (u,u_1) (u,u1) 节都是最短 ( u , u 1 ) (u,u_1) (u,u1) 链,从而长度相等。如下图:
又因 P P P 和 Q Q Q 的长度都为偶数,故 P P P 的 ( u 1 , v ) (u_1,v) (u1,v) 节 P 1 P_1 P1 和 Q Q Q 的 ( u 1 , w ) (u_1,w) (u1,w) 节 Q 1 Q_1 Q1 有相同奇偶性,于是 ( v , w ) (v,w) (v,w) 链 P 1 − 1 Q 1 P_1^{-1}Q_1 P1−1Q1 的长是偶数。因此若 v v v 与 w w w 相邻,则 P 1 − 1 Q 1 w v P_1^{-1}Q_1wv P1−1Q1wv 就是 G G G 中的一个奇圈,与假设矛盾。
2.4 有向图
2.4.1 定义
有向图:有向图 D D D 指一个有序三元组 ( V ( D ) , A ( D ) , ψ D ) (V(D),A(D),\psi_D) (V(D),A(D),ψD),其中 V ( D ) ≠ ∅ V(D) \neq \varnothing V(D)=∅, V ( D ) ∩ A ( D ) = ∅ V(D) \cap A(D) = \varnothing V(D)∩A(D)=∅。 V ( D ) V(D) V(D) 是顶点集。 A ( D ) A(D) A(D) 是弧集。 ψ D \psi_D ψD 称为 D D D 的关联函数,使得 D D D 每条弧对应于 D D D 的有序定点对。 ψ D ( a ) = ( u , v ) \psi_D(a)=(u,v) ψD(a)=(u,v) 中 u u u 是弧 a a a 的尾, v v v 称为 a a a 的头。
2.4.2 基础图
基础图:在有向图中去掉弧上箭头的图。
定向图:对图 G G G 的每条边规定方向后的图。
相邻、连通、圈、子图 的概念和含义不变。
2.4.3 出度和入度
入弧:有向图 D D D 中以顶点 v v v 为头的弧。
出弧:有向图 D D D 中以顶点 v v v 为尾的弧。
入度:记作 d D − ( v ) d_D^-(v) dD−(v),称为 v v v 的入度。
出度:记作 d D + ( v ) d_D^+(v) dD+(v),称为 v v v 的出度。
对于任何有向图D,有: ∑ v ∈ V d D − ( v ) = ∑ v ∈ V d D + ( v ) = ε ( D ) \sum_{v \in V}d_D^-(v) = \sum_{v \in V}d_D^+(v) = \varepsilon(D) ∑v∈VdD−(v)=∑v∈VdD+(v)=ε(D)
2.4.4 回路
有向途径: W = v 0 a 1 v 1 a 2 . . . v k − 1 a k v k W=v_0a_1v_1a_2...v_{k-1}a_kv_k W=v0a1v1a2...vk−1akvk,其中交替项为顶点和弧。那么 W W W 就是有向途径。 v 0 v_0 v0 称为 W W W 的起点, v k v_k vk 称为 W W W 的终点。 k k k 称为 W W W 的长。 W W W 称为有向 ( v 0 , v k ) (v_0,v_k) (v0,vk) 途径。
有向闭途径:起点与终点相同的有向途径。
有向迹:弧各不相同的有向途径。
有向链(路):顶点各不相同的有向途径。
2.4.5 强连通分支
强连通: u , v u,v u,v 是有向图 D D D 中的两个顶点,若存在 ( u , v ) (u,v) (u,v) 路和 ( v , u ) (v,u) (v,u) 路使得两点可以相互到达,则称 u u u 和 v v v 在图 D D D 中是强连通的。
强连通分支/强连通有向图: V ( D ) V(D) V(D) 的非空划分 V 1 V 2 . . . V ω V_1V_2...V_\omega V1V2...Vω 在 D D D 中所导出的子图 D [ V 1 ] , D [ V 2 ] , . . . , D [ D ω ] D[V_1],D[V_2],...,D[D_\omega] D[V1],D[V2],...,D[Dω] 称为 D D D 的强连通分支。若 D D D 中只有一个强连通分支,则 D D D 是强连通有向图。