离散结构:图论与树

离散结构:图论与树

 

一、图论的定义

  • 图论的创立

柯尼斯堡七桥问题的解决是图论创立的标志
〉 1736年欧拉在发表的论文中证明七桥无法仅走一遍能遍历七座桥,并提出和解决了“一笔画”问题。
〉 欧拉将现实问题抽象为平面上的点和线的组合,并通过讨论点的奇偶性来判定能否遍历  

〉 于是欧拉便创建了两个新的学科:图论 和 拓扑学
                   

  • 图(Graph)的定义

〉 由结点和联结结点的所构成的离散结构
〉 记做 G = <V, E>
〉 结点 vertex 集V:非空集合
〉 边 edge集 E多重集合(集合中可能存在相同元素,元素附带一个重数的属性)
〉 边集是多重集合表示图可以有多个相同的边。

注:所谓的多重集合就是指同一个集合中允许出现多个相同的元素。因为在一个集合中,相同的元素只能出现一次,因此只能显示出有或无的属性。而无法包含某一个元素出现的次数这个属性。但多重集便可以显示出这个属性。比如在 C++ 语言中也会有数据结构 multiset 便允许出现相同的关键字。

  • 边(有向边/无向边)和结点的关系

有向边 (directed edge) 用结点的二元有序组表示
〉 第一分量称作起点,第二分量称作终点

无向边(indirected edge) 用结点的两元素多重集表示
〉 无向边可以是多重集意味着允许无向环(loop)
〉 无向边的端点称作邻接 (adjacent) 结点。例子如下所示:         
                                    

二、基本概念

图的基本概念
〉 对于图 G= <V,E>
有限图:V, E都是有限集,否则称为无限图
重边 multiple edge:E 中重数大于1的边称为重边平行边
重图 multigraph:边集E中至少有一个元素重数大于1
单图:每条边的重数都等于1

简单图 simple graph:无环和重边的无向图
完全图 complete graph:任何两个不同结点间都有边关联的简单图,记做 Kn。例子如下所示:
孤立结点 isolated vertex:不是任何边的端点的结点
零图:仅有孤立结点构成的图(E=\varnothing
〉 假设 G=(V, E, \gamma) 为无向图, G 中度数为零的顶点称为孤立顶点(isolated vertex) ;图中度数为1的顶点称为悬挂点(pendant vertex) , 与悬挂点相关联的边称为悬挂边(pendant edge) ;图中度数为 k 的顶点称为k度点;图中度数为奇数的顶点称为奇度点, 图中度数为偶数的顶点称为偶度点


                                 

  • 赋权图

上述通过顶点集边集构成的二元组 G= <V,E>,被称为普通图。但通常我们研究现实世界中的问题的时候,会需要给边或者顶点赋予一定的属性。所以就需要从普通图进行扩展成赋权图。如下:

〉 赋权图G = <V,E,f,g>
结点权函数:f: V→ W
边权函数:g: E→ W
〉 W 可以是任何集合,常为实数的子集

普通图研究结点和边之间的拓扑关系。其拓扑关系如下几种:

  • 节点与节点之间是否邻接
  • 一个节点到另一个节点之间是否存在路径连通
  • 两个节点之间有多少通路
  • 按照连通性可以将图划分为几大块等等拓扑关系

赋权图给普通图附加了数量关系,有了数量关系之后,便可以研究节点与节点之间的距离,通行成本,分配资源的代价,整个图的规模等性质。赋权图也是 GIS(空间信息系统) 应用研究的基础。下面是一个关于赋权图普通图的例子:
                                                  

如上图所示,如果边上没有赋予权值,则是普通图。对于普通图我们默认每条边的权值相同。故可以研究比如 A 到 B 之间是否存在着通路且如果存在则找出其最短路径(根据包含边数最少确定)上图中是仅包含三条边的通路为最短路径。但是当我们赋予权值构成赋权图之后,所谓的最短路径会发生变化,这是我们称为最优路径。如图中蓝色边所示的路径。

  • 结点的度 (degree)

〉 端点 v 的度 d(v) 定义为关联端点 v 的边的数目
有向图中,度分为出度 (out-degree) 和入度 (in-degree)
〉 出度d+(v)是端点v作为有向边起点的数目
〉 入度d-(v)是端点v作为有向边终点的数目
有向图中度 d(v)=d+(v)+d-(v)
 

  • 度的性质

〉 所有端点度的总和为偶数,而且是边数目的两倍。(图论基本定理/握手定理
     因为每一条边都有两个节点。分别对应入度或出度。故必然是 2 的倍数。
有向图中出度的总和等于入度的总和。
奇数度结点必为偶数个反证法可证)。握手定理推论
     因为要求最终度数综合为偶数。反证:若为奇数个,则奇数度节点度数奇数 + 偶数度节点偶数为奇数,矛盾。
〉 自然数序列(a1,a2,…an)是某个图的度序列当且仅当序列中所有数的总和为偶数。
     
即说明只要给出一个自然数且总和为偶数的序列就可以给出一个图与之对应。
〉 一度的顶点称为悬挂点。(pendant node)

  • 正则图(regular graph)

所有顶点度均相同的图称为正则图,按照顶点的度数k称作 k-正则图。
其中对于完全图来说必定为正则图。且 Kn是n-1正则图

       

  • 圈 图 (cyclegraph)

假 设顶点集 V = { 1, 2, …, n } (n  \geqslant 3 ),E={ {u, v} | 1 \leqslant u, v \leqslant n, u - v  \equiv  1(mod n) },则 称 简 单 图 G=(V, E) 为 圈 图 (cyclegraph) , 记作 C_n

                                                                         

  • n-立方体图(n-cube)

如果图的顶点集 V 是由集合 {0, 1} 上的所有长为 n 的二进制串组成, 两个顶点邻接当且仅当它们的标号序列仅在一位上数字不同。 所形成的简单图称作n-立方体图(n-cube) , 记作 Qn 或者 Bn ; n>3 时, 又称为 n维超立方体(hypercube) 图

                                                    

  • 子图与同构图(图之间的关系)

子图(subgraph)
〉 G1=<V1,E1>, G2=<V2,E2>
〉 V1 \subseteq V2, E1 \subseteq E2,称G1是G2的子图
〉 如果G1≠G2,则G1是G2的真子图
生成子图 spanning subgraph:如果G1是G2的子图,且V1=V2。顶点一样,通过给子图 G1 添加若干条边便可以构造出 G2。

                                              

红色和绿色的图都是蓝色图的生成子图

  • 补图

〉 G1,G2 互为补图
V1=V2, E1∩E2=\varnothing,  <V1, E1∪E2> 完全图。补图如下所示:红色与绿色的就互为补图。
                                             

  • 图的同构 isomorphic

〉 G1=<V1,E1>, G2=<V2,E2>
〉 |V1|=|V2|, |E1|=|E2|
〉 如果可以将V1中所有的结点一一对应地置换为V2中的结点名后得到的图等于G2。
     如下将五角星任意相临两个节点翻折过去即可得左边图形。
                                             

形式化定义
设 G1=(V1, E1, \gamma_1) 和 G2=(V2, E2, \gamma_2 ) 是两个无向图, 如果
存在 V_1 到 V_2 的双射 f存在 E_1E_2双射 g。满足对于任意的 e \in E_1, 若 \gamma_1 (e)={u, v} 则
\gamma_2 (g(e))={ f(u), f(v) },则 称 G1 和 G2 是 同 构 的(isomorphic) , 并记之为G1 ≌ G2。即顶点一一对应,边一一对应,顶点与边之间的关系也一一对应。

                     

图之间的同构关系是一等价关系。

:画出所有不同构的具有4个顶点、 3条边的简单图


                                               

不同构的图:化学中的同分异构体
〉 分子式相同而结构和性质不同的化合物之间互称同分异构体。
〉 分子式相同意味着V1=V2, |E1|=|E2|
                                              

  • 路径与连通性(普通图较重要的拓扑性质)

拟路径 (pseudo path)
〉 顶点 v1到 vl的拟路径v1,e1,v2,e2,v3,…,vl-1,el-1,vl,其中ei=<vi,vi+1>(或者{vi,vi+1})
〉 拟路径中的边数目称作拟路径的长度。
〉 拟路径例子:如下简单图,边上数字用来指代边,不是权重。下面两个序列就是两个拟路径。

                                                            
〉 a,1,e,7,b,3,c,3,b,2,a
〉 c,4,e,4,c,3,b,7,e,4,c

注意到上述的拟路径中出现了节点的重复还有边的重复

路径(walk)与通路(path) 下面序列皆基于上面的普通图

〉 如果拟路径中的边各不相同,称作路径。  a,1,e,7,b,3,c,4,e,6,d
〉 如果路径中的顶点各不相同,称作通路。  a,1,e,7,b,3,c,5,d
〉 v1=vl的路径称为闭路径。                          a,2,b,7,e,4,c,5,d,6,e,1,a
〉 v1=vl的通路称作回路。                              a,1,e,6,d,5,c,3,b,2,a

路径与通路性质
路径和通路定理:在有n个顶点的图G中,如果有顶点u到v的拟路径,那么u到v必有路径,并且必有长度不大于n-1通路。
(对后半定理的理解可以考虑拟路径中重复顶点的压缩

闭路径和回路定理:在有n个顶点的图G中,如果有顶点v到v的闭路径,那么必定有一条从v到v的长度不大于n的回路
 

图的连通性:通过路径来定义连通性
〉 u 可达 v (accessible):u=v,或者存在一条 u 到 v 的路径
连通无向图 connected:即无向图中任意两个顶点都是可达的。
      针对无向图来说连通性是蛮简单的,但有向图就有三种连通定义了,如下
强连通有向图:即有向图中任意两个顶点都是互相可达的。但并不是说节点之间必须要求其是双向的,当然每个节点之间都       是双向的,当然满足条件。如下所示:左边是联通的无向图,右边是强连通的有向图。
                                                       

单向连通有向图:任意两个顶点,至少从一个顶点到另一个是可达的
弱连通有向图:将有向图看作无向图时是连通的。这两种情况如下图所示。
                                                       

有向无环图:假设 G 是有向图, 如果图中不存在有向回路, 则称 G 为有向 (Directed Acyclic Graph)无环图, 简记作 DAG
 

连通分支(connected component)
〉 图G的连通子图 G',而且G'不是任何其它连通子图的真子图(即满足最大性
 如果下列的某一个分支中,如三角形三个顶点去掉一个顶点,也仍然是G的连通子图,但救不构成连通分支了。不满足最大性。
                                                        

桥(bridge):假设 G=(V, E, \gamma ) 是连通图, 若 e \in E,且 G - e 不连通, 则称 e 是图 G 中一条割边(bridge)。

三、欧拉图与哈密顿图

这两种图都是由路径回路所定义的图。

欧拉图及欧拉路径
欧拉图 Euler graph:如果图 G 上有一条经过所有顶点所有边闭路径(边不重复,允许顶点重复)
欧拉路径 Euler walk:如果图G上有一条经过所有顶点所有边路径(边不重复,允许顶点重复)

欧拉图已经被很好的解决了,其充要条件如下所示,若满足下列条件,则一定存在着欧拉图或路径 :

欧拉图:充要条件
〉 无向图:G连通,所有顶点的度都是偶数
〉 有向图:G 弱连通,每个顶点的出度与入度相等

欧拉路径:充要条件
〉 无向图:G连通,恰有两个顶点的度是奇数。
    (由握手定理知道不可能有奇数个节点度为奇数,若没有,则归结到无向图的欧拉图
    (证明充分性:从条件推存在时。可通过添加一条虚拟边,证明存在欧拉回路,然后删除虚拟边,就得到了欧拉路径)
〉 有向图:G连通,恰有两个顶点出度与入度不相等,其中一个出度比入度多1,另一个入度比出度多1。
有了上面的判定条件,我们就可以试着应用到如下的例子中了。七桥问题不满足,奥运五环和三角形加高的图形都满足一笔画。

 

上面我们给出的充要条件都是存在/判定性定理,即若果满足充要条件,则一定存在。但不是构造性定理,即通过构造找到回路或路径。如上图二中最右边的那个图形,你可能要尝试好几次才能找到道路。而我们下面要讨论的弗勒里算法便是构造算法,目的是通过确定的算法找到无向图中的回路或道路。

弗勒里(Fleury) 于 1883 年提出, 在存在欧拉道路/回路无向图中构造该道路/回路的算法。算法流程图如下所示:

                                         
 

哈密顿图及哈密顿通路
哈密顿图 Hamilton graph:如果图G上有一条经过所有顶点一次且仅一次回路不要求经过所有边,也称作哈密顿回路)
哈密顿通路Hamilton path:如果图G上有一条经过所有顶点一次且仅一次通路(非回路)
对于该模型的抽象研究,我们需要将立体图经过球极投影到平面,形成平面图研究。

                                                              

哈密尔顿图或道路中存在如下规律

  • 哈密尔顿图中一定不存在悬挂边。否则无法回到起点构成回路。
  • 存在哈密尔顿道路的图中不存在孤立顶点。无法达到孤立顶点。
  • 对于完全图来说,当 n > 2 时, Kn 是哈密尔顿图。它的任意一个顶点的排列(循环排列)都是一个哈密尔顿图。
  • 事实上,只要图 G 中有“足够多” 的边, 那么它就会是哈密尔顿图。关于足够多的讨论可参见如下判定定理。

判定定理(充分非必要)
〉若具有 n 个顶点的图G的每一对顶点 u 和 v 的度数之和都不小于 n-1 (即 deg(u)+deg(v) \geqslant n-1),那么G中有一条哈密顿通路
    证明略(看参见这里) 
〉 如果G的每一对顶点度数之和不小于 n,且 n >= 3,则 G 为一 哈密顿图

满足上述判定条件的可以找到通路或判断。但不满足上述条件也有构成通路的。

由上面的判定定理可以推出如下关于哈密尔顿图的推论 (证明略):

推论1:(Dirac, 1952 ) 设 G 是 n(n \geqslant 3) 阶简单图, 如果 G 中任一顶点的次数都至少是 n/2, 则 G 是哈密尔顿图

推论2:  设 G 是 一 (n, m) 简 单 图 , 若m \geqslant (n^2-3n+6)/2, 则 G 是哈密尔顿图

关于哈密尔顿图充要条件

首先引入一个定义

定义:设无向简单图G,若存在一对不相邻顶点u,v,使得deg(u)+deg(v)≥n,则构造G’ = <V,E U {u,v}>;再在G’上重复上述过程直至不再存在度数之和大于或等于n的不相邻的顶点对为止,称这样所得到的图称为图G的闭包,记为C(G).

如图所示,右边C(G)是左边G的闭包.

                                              

定理1:设无向简单图G,且对G中任意一对不相邻的顶点(u,v),有deg(u)+deg(v)≥n,则G是哈密尔顿图的充分必要条件是G’ = <V,E U {u,v}>是哈密尔顿图

定理2:设无向简单图G,则G是哈密尔顿图的充分必要条件是C(G)是哈密尔顿    该定理可由定理1直接得到


哈密顿通路问题在上个世纪七十年代被证明是“NP完全的”(算法时间随顶点个数呈指数增长)
〉 实际上对于某些顶点数不到 100 的网络,利用现有最好的算法和计算机也需要比较荒唐的时间(比如几百年)才能确定其是否存在一条这样的路径。

应用实例

实例一:假设在n(n≥4)个人中,任意两个人合在一起都能认识其余的n-2个人。证明他们可以围成一圈,使相邻者相互认识。

证:以每个人为顶点,相识者之间加边,便构成一个图G,问题转化为证明图G是哈密尔顿图。

分类讨论,对任意两个顶点u,v,若u,v认识,deg(u)+deg(v)≥n-2+1+1=n;若u,v不认识,考虑与u相识的w,w与v必定相识,否则的话,与u,v在一起能认识n-2个人矛盾,所有可以得出结论,u,v认识的人相同(n-2个),deg(u)+deg(v)=n-2+n-2≥n,由前面定理2知,图G为哈密尔顿图。

实例二:地图不存在相交的边界。如果一个地图存在哈密尔顿回路,则可以用四种不同的颜色对它的域进行染色,使相邻的域染不同的颜色。

证:设H是图G中一条哈密尔顿回路,则H将G的域划分成内域和外域两部分,内域和外域均用两种颜色染色,则四种颜色即可。

如果内域和外域不能用两种颜色着色,则必然出现三个或三个以上的域相邻的情况,这是,内域(外域)中定有一个域的交点,它没有被H穿过,与H是哈密尔顿回路矛盾.

实例三: 有七名科学家参加一个会议, 已知A只会讲英语, B会讲英语和中文, C可以讲英语、 意大利语和俄语, D会日语和中文, E会德语和意大利语, F会讲法语、日语和俄语, G可以讲德语和法语。 可否安排他们在一个圆桌围坐, 使得相邻的科学家都可以使用相同的语言交流。通过建立图模型,将科学家抽象成节点,会的共同语言为边。在圆桌的一个顺序就可以归结为一个哈密尔顿回路。找出来了这样的回路,就知道了其圆桌顺序,如下右图中的黄色连线的回路。

                                                   

 

  • 图的矩阵表示

邻接矩阵 (adjacency matrix)
〉 无重边的有向图 G=<V,E>,其邻接矩阵 A[G] 定义为:
〉 aij=1, 当<vi,vj>∈E
〉 aij=0, 当<vi,vj> \notin E
〉 是一个 |V|×|V| 矩阵,表示顶点邻接关系。其例子如下:
                                                   

〉 回顾关系图关系矩阵的表示,在前面我们用关系图来表示关系,如二元关系(特别的是前域和陪域是一样的二元关系),然后关系也有相应的关系矩阵。实际上关系图就是无重边有向图 对应的邻接矩阵。

〉 对角线元素为1,表示环的存在(自反关系
〉 矩阵对称,表示双向边(对称关系)例子如下所示:

                                               

邻接矩阵的运算

〉顶点的
出度:对应的和                      〉入度:对应的和

〉关于拟路径
〉邻接矩阵自乘 L 次:A^L
〉则乘积结果矩阵中每个分量 a_{ij}^{(L)}的含义为 G 中顶点 v_i 到 v_j 的长度为L的拟路径条数
 

关联矩阵简单无向图
〉 邻接矩阵表示了顶点之间的邻接关系,而关联矩阵表示顶点和边的关联关系,n*m 矩阵,n 个顶点,m 条边。
〉 通过矩阵的来判定图的连通分支个数。其实矩阵的秩表示的便是最大线性无关组,它和对应的图的连通分支是对应的。

                                                 

路径矩阵 walk matrix
〉 图 G=<V,E> 的邻接矩阵 A
A^{(m)} = A ∧ A ∧ … ∧ A,换成合取,逻辑乘。
路径矩阵 B=A ∨ A(2) ∨ A(3) ∨ … ∨A^{( |V|)}
〉 B 的每个分量 b_{ij} 表示 v_iv_j是否有路径

可达性矩阵
〉 P=I ∨ B,I 是 n*n 的单位矩阵
〉 加上顶点的自身可达性
 

四、二分图

二分图 (bipartite graph)
〉 满足如下条件的无向图 G=<V,E>
〉 有非空集合X, Y: X∪Y=V, X∩Y= \varnothing,且
〉 每个 { v_i , v_j } ∈ E,都有: v_i∈X ∧ v_j∈Y,或者,v_i∈Y∧ v_j∈X。
     即对于任意一条边 { v_i , v_j } ,必有一个顶点属于X,另一个顶点属于 Y
〉 可以用 G=<X,E,Y> 表示二分图。便是两个集合X,Y 之间只有 E 连接。
〉 如果 X,Y 中任意两个顶点之间都有边,则称为完全二分图 complete bipartite graph
〉 完全二分图可以记作 K_{|X|,|Y|}

其中一些例子如下:第一个是二分图,蓝色一类黑色一类。第二个是完全二分图。红色的不是二分图

                                                          

二分图的等价条件

〉 G 至少要有两个顶点,而且G中所有回路长度都是偶数。

〉 证明:必要性易得,如果一个图是二分图,假设只要两个顶点,则一去一回的长度就是偶数了。而不管有多少回路。

充分性可以通过构造 X,Y 两个集合证明
任意取顶点 v,取V1={vi | vi与v的距离为偶数},V2 = V - V1。即构造了一个关于 V 的划分。
〉 证明 V1,V2 内部顶点间没有边。(反证法
〉 如果有边 {vi,vj}∈E,vi,vj∈V1                                                   
〉 那么v到vi,vj距离是偶数,v→vi→vj→v 这个回路的长度是奇数(两个偶数再加一),和条件矛盾,V2 同理
〉 所以 G 是个二分图 <V1,E,V2>             

 

二分图应用:分组交谈
〉 出席国际会议的成员 a,b,c,d,e,f

a:汉语,法语,日语
b:德语,日语,俄语
c:英语,法语
d:汉语,西班牙语
e:英语,德语
f:俄语,西班牙语

〉 如果分为两组,是否可能组内成员不能直接交谈 ?即构成一个二分图呢 ?
于是我们就可以用二分图的等价条件进行判断了。〉 回路长度皆为偶数,是二分图。如上黑色与蓝色

 

二分图的匹配

匹配 (matching)
资源匹配,工作安排
〉 将需要配对的两种对象分别作为 X,Y
〉 求配对关系或者顶点和边赋权,求某种条件下的最优分配问题
〉 可以用二分图来表示解决匹配问题

〉 将 E 的子集 M 称作一个匹配,如果 M 中的任意两条边都没有公共端点。(可以从资源不能共用理解)
边数最多的匹配称作最大匹配。 maximal matching
〉 如果 X(Y) 中的所有的顶点都出现在匹配 M 中 , 则 称 M 是 X(Y)- 完 全 匹 配 ( perfect matching )
〉 如果 M 既是 X-完全匹配,又是 Y-完全匹配,称M是完全匹配
 

匹配的应用
最大匹配和完全匹配寻找和判定,有广泛的应用背景。
工作安排问题:教师和课程的一一安排
〉 二分图:G=<U,E,V>,其中U是教师集合,V是课程集合
〉 E中的边<u,v> 表示某位教师u可以上课程v
〉 需要求最大匹配,使得每门课程有人教,每人都有课上
 

经典的最大匹配算法:匈牙利算法

任意取一个匹配 M(可以是空集或只有一条边)                  ② 令S是非饱和点(尚未匹配的点)的集合
③ 如果S = \varnothing ,则 M 已经是最大匹配。
④ 从S中取出一个非饱和点 u0 作为起点,从此起点走交错路(交替属于M和非M的边构成的极大无重复点通路或回路)P
⑤ 如果P是一个增广路(P的终点也是非饱和点),则令M=M⊕P=(M-P)∪(P-M)。(即异或操作,去掉相同的,留下相异的。)
⑥ 如果P都不是增广路,则从S中去掉 u0,转到 step3

下面就从最大匹配的教师课程问题,来应用一下匈牙利算法:

                         ==》   

〉 M1={(u2,v6) (u3,v1)},  S1={u1,u4,u5,u6},  选择 u1
增广路 P1={(u1,v1) (v1,u3) (u3,v3)}
〉 M2=M1⊕P1={(u1,v1) (u2,v6) (u3,v3)}, S2={u4,u5,u6}, 选择 u4
〉 增广路P2={(u4,v2)}
〉 M3=M2⊕P2={(u1,v1) (u2,v6) (u3,v3) (u4,v2)}, S3={u5,u6}, 选择u5
〉 增广路P3={(u5,v3) (v3,u3) (u3,v1) (v1,u1) (u1,v4)}
〉 M4=M3⊕P3={(u1,v4) (u2,v6) (u3,v1) (u4,v2) (u5,v3)}, S4={u6}, 选u6
〉 增广路P4={(u6,v1) (v1,u3) (u3,v3) (v3,u5) (u5,v5)}
〉 最后M={(u1,v4) (u2,v6) (u3,v3) (u4,v2) (u5,v5) (u6,v1)}  是最大匹配,也是完全匹配。
〉 |X| ≠ |Y| 的二分图一定没有完全匹配
正则 的|X|=|Y|的二分图一定有完全匹配

 

五、平面图

从前面我们发现图的画法可以有很多种。那么我们想问问题:一个图是否可以画成任意两条边都不相交的样子 ?这就是平面图
实际应用:印刷电路板、矿山里矿洞到仓库部署轨道等等

                                            

  • 平面图(planar graph)的定义

〉 如果无向图 G 可以在一个平面上图示出来,并且各边仅在顶点处相交,称作平面图,否则是非平面图
〉 K5 和 K3,3 都不是平面图,它们都是正则图。
〉 但是它们经过任意去掉一条边,便都成为平面图。
〉 K5 是顶点数最少的非平面图,K3,3 是边数最少的非平面图。这两个例子都是比较典型的,后面会在欧拉公式部分介绍。
                                                

  • 平面图等价条件(平面图的判定定理库拉托夫斯基定理)

定理 (库拉托夫斯基定理):一个无向图是平面图当且仅当不包含与 K5 或 K3, 3 的细分同构的子图

〉 即就是说 G或者G的子图作任何同胚操作后得到的图均不能以K5及K3,3为子图 (1930,Kuratowski)
〉 针对图来说,同胚操作就是在原图的边上增加或者删除二度节点
〉 其中对于一条边加增加或者删除二度节点就成为原来图的一个细分。
                                                 

 

  • 欧拉公式

设图 G 可以画在平面上且满足无边相交, G 的边将平面划分为若干个封闭区域, 则之为 G 的face) , 包 围 面 的 边 称 为 该 面 的 边 界(boundary), 面的边界中的边数称为面的次数(degree) (桥在计次数时算作两条边)。如下所示:
                                                   

                                             

  • 若一条边不是桥, 它必是两个面的公共边界
  • 桥只能是一个面的边界
  • 两个以一条边为公共边界的面称为相邻的面

定理: 平面图 G 的所有面的次数之和等于边数的两倍。
如下是一些平面图对应的顶点数、边数、面数的例子。

定理1(欧拉公式)
设 G 是一个面数为 f (n, m)-连通平面图, 则 n – m + f = 2

归纳证明
对图的边数 m 作归纳:
m=0 时, 由于 G 是连通图, 因此 G 只包含一个孤立顶点, 具有一个外部面。 于是  n – m + f = 1 - 0 + 1 = 2

假设 m=k 时欧拉公式成立。 对于 m=k+1:

  •  <1> 图中存在悬挂点, 则删去与之相连的悬挂边后, 边数和点数都减少1而面数不变, 因此 n–m+f  的值不发生变化。

 

  • <2> 图中不存在悬挂点, 则每个顶点的度数都大于1, 图中存在回路 C, C 上任一边都一定是两个面的公共边界, 删去此边后这两个面合并为一个面, 因此顶点数不变、 边数减少1、 面数也减少1, 于是 n–m+f 的值也不发生变化。

推论
设 G 是一个面数为 f 的 (n, m)-平面图,且有 l 个连通分支, 则 n – m + f = l + 1

定理 2
设 G 是一个面数为 f 的 (n, m)-连通简单平面图, n \geqslant 3, 每个面的次数至少是 l,则 m \leqslant (n - 2) \times l / (l - 2)
证明:  l·f \leqslant 2m 。 代入欧拉公式后整理即得。

推论
设 G 是一个面数为 f 的 (n, m)-连通简单平面图且 n \geqslant 3, 则 m \leqslant 3n - 6
证明: m \leqslant (n - 2)\times3/(3 - 2)

设 G 是一个面数为 f 的 (n, m)-连通简单平面图, n \geqslant 3 且每个面的次数至少是 4,则 m \leqslant 2n - 4

推论

在任何简单连通平面图中, 至少存在一个度数不超过5的顶点

证明: 若全部顶点的度数均大于5, 则由握手定理有6n \leqslant 2m, 即3n \leqslant m。 再由推论1得到 3n \leqslant 3n - 6, 产生矛盾。

证明: K5K3,3 是非平面图(反证法)。

K5是非平面图
假 设 简 单 图 K5 是 平 面 图 , 则 应 有10=m\leqslant3n - 6=3\times5 - 6=9, 产生矛盾 

K3, 3 是非平面图                                                           
假设二部图 K3, 3 是平面图, 其中最短的回路长度为4, 因此每个面的次数至少是4, 应有 9=m\leqslant2n-4=2\times6-4=8, 产生矛盾

注意:定理2及其推论只是图可平面性的必要条件,而非充分条件

例如, 图中每个面的次数至少为3, 点数 n=7,边数 m=11, 11\leqslant3\times7-6=15, 满足推论1条件

但是该图只是在 K3, 3 基础上增加一个度数为2的点和两条边, 并不是平面图

六、对偶图

由前面的正多面体我们给出了关于它们的顶点、面、边的数量,如下图:

我们发现对应的对偶图,顶点和面交叉对应相等,边数相同。

外面的正六面体和内接的正八面体对偶。在各个面中心选一点,然后连接个点,若两个面有公共棱,则垂直于该棱连接两个面心。

而对于平面图来说,有如下定义

设 G 是一个平面图, 满足下列条件的图 G* 称为 G 的对偶图(dual graph) :在图 G 中的每个面(包含外部面) 内画一顶点
在这些新的顶点之间添加边, 每条新的边恰与 G 中的每一条边相交一次。所得的新图即为 G 的对偶图 G*
例如:

定理:平面图 G 的对偶图 G* 也是平面图, 而且是连通的。
定理:假设 G* 是平面连通图 G 的对偶图, n, m, f, n*, m*, f *分别是 G 和 G*的顶点数、边数和面数, 则有:
(a) n = f *;     (b) m = m*;
(c) f = n*;       (d) 若面 f 对应于顶点 v*, 则 f 的次数等于v* 的度数。(
关于这条可从欧拉公式理解

七、顶点支配、独立、覆盖集

  • 支配集

概念:

  1. 支配集:设G=(V,E)是无向简单图,D⊆V,若任意v∈V-D,都存在u∈D,使得uv∈E,则称D为一个支配集。
  2. 极小支配集:若D是图G的支配集,且D的任何真子集都不再是支配集,则称D为一个极小支配集。
  3. 最小支配集:如果图G的支配集D满足对于G的任何支配集D’,都有|D|≤|D’|,则称D是G的一个最小支配集。
  4. 支配数:最小支配集D的元素数称为图G的支配数,记作γ(G)。

 例如:

                                               

  • V1、V2、V3不是支配集——>都不与V5相邻
  • V5、V6、V7构成支配集——>与剩余点都相邻,但不是极小支配集,因为移去V5仍是支配集
  • V1、V3、V5是极小支配集但不是最小支配集——>由(2)知最小支配集可只包含两个顶点
  • V6、V3既是极小支配集又是最小支配集
  • V6、V7也是最小支配集

性质:

  1. 对于V中任意一个顶点而言,它或者属于支配集,或者与支配集中的一个元素相邻
  2. 一个图中极小支配集可能不唯一
  3. 一个图中最小支配集可能不唯一
  4. 最小支配集一定是极小支配集,但极小支配集不一定是最小支配集
  5. 特殊图中的支配集

(a) 在任意简单图G=(V,E),V都是支配集
(b) 完全图Kn(n≥3)的支配数为1
(c) 完全二分图 Kn,m 的支配数为min(n,m)

实例:

例如,在一个分布式计算系统中,每个节点都有一台计算服务器,有些节点放置数据存储器,节点之间使用数据线连接。为了提高访问速度,要求每个节点都可以直接访问数据存储器,同时为了节约成本要求数据存储器尽可能少,该如何放置?
:选择最小支配集放置数据储存器。

 

  • 点独立集

概念:

  1. 独立集:设G=(V,E)是一个无向图,S⊆V,若对任意地u,v∈S,都有u,v不相邻,则S是G的点独立集或简称独立集。
  2. 极大独立集:若对G的任意独立集T,都有S⊄T,则称S是G的一个极大独立集
  3. 最大独立集:称基数最大的独立集为最大独立集
  4. 独立数:图G中最大独立数的基数称为独立数,记作α(G)

                                              

  • V1、V2、V3不是独立集——>V1、V2相邻
  • V1、V3是独立集但不是极大独立集——>还可以向其中添加顶点V5
  • V4、V6是极大独立集但不是最大独立集——>由(2)知顶点数可为3
  • V1、V3、V5既是极大独立集也是最大独立集

性质:

  1. 极大独立集不是任何其它独立集的子集
  2. 若S是G的极大独立集,则对任意u∈V-S,都存在v∈S,使得u,vv相邻
  3. 一个图的极大独立集可能不唯一
  4. 一个图的最大独立集可能不唯一
  5. 最大独立集一定是极大独立集,极大独立集不一定是最大独立集
  6. 特殊图中的独立集

(a)在任意图中,空集都是独立集
(b)完全图Kn(n≥3)的独立数为1
(c)完全二分图Kn,m 的独立数为max(n,m)

 

7、独立数和支配数之间的关系

定理1:一个独立集也是支配集当且仅当它是极大独立集。
定理2:简单无向图的极大独立集也是极小支配集

实例:

在某个通讯系统中,由于电磁干扰,输入符号可能和输出符号不同

                                                           

因此该通讯系统中只能使用{a1,a2,a3,a4,a5}中的部分符号,而不是全体。例如可以使用a1,a4,不能使用a1,a3,因为输出是a1时将无法区分。但又从效率角度出发,希望能提供使用的符号尽可能地多。

如果符号x,y具有相同的输出,则在顶点x,y之间连一条边。如图

                                                       

寻找最大独立集 a1,a4,就是我们能使用的符号(或a2,a4)

 

  • 点覆盖集

概念

  1. 点覆盖:设G=(V,E),V’⊆V,如果对任意的e∈E,都存在v∈V’,使得v是e的一个端点,则称V’是G的一个点覆盖集,简称点覆盖。
  2. 极小点覆盖:如果V* 是点覆盖,且V*的任何真子集都不再是点覆盖,则称V*是极小点覆盖
  3. 最小点覆盖:基数最小的点覆盖称作最小点覆盖
  4. 点覆盖数:最小点覆盖V*的基数称作图G的点覆盖数β(G)

                                                 

  • V1、V2、V3不是点覆盖——>V5,V6这条边的两个顶点都未被包括
  • V1、V2、V6、V4、V6、V7是点覆盖但不是极小点覆盖——>可将V2移去
  • V1、V2、V3、V5、V7是极小点覆盖但不是最小点覆盖
  • V1、V3、V4、V6既是极小点覆盖也是最小点覆盖

性质:

  1. 在极小点覆盖中,不存在所有相邻顶点都在V*中的顶点
  2. 一个图的极小点覆盖可能不唯一
  3. 一个图的最小点覆盖可能不唯一
  4. 最大点覆盖一定是极小点覆盖,极小点覆盖不一定是最小点覆盖
  5. 明显有β(G)≥γ(G)
  6. 特殊图中的点覆盖

(a) 在任一简单图中,V都是点覆盖
(b) 完全图Kn(n≥3)的点覆盖数为n - 1
(c) 完全二分图Kn,m 的独立数为min(n,m)

7、点覆盖集与点独立集之间的关系:

定理一:在简单图G=(V,E)中,V*⊆V是点覆盖集当且仅当V-V*是独立集
推论一:在简单图G=(V,E)中,V*⊆V是极小点覆盖集当且仅当V-V*是极大独立集
推论二:在简单图G=(V,E)中,V*⊆V是最小点覆盖集当且仅当V-V*是最大独立集,继而有α(G) + β(G) = |V|

 

八、树(特殊的图)

树几乎是集前面所讲的良好的性质于一身的。

  • 树 (Tree)

连通无回路的无向图称为树 tree
〉 树中的悬挂点称作树叶 leaf
〉 非树叶节点称作分支点 branched node
〉 仅有单个孤立节点的树称作空树 null tree
每个连通分支都是的图称作森林(forest),特别的树是森林
                                                           

  • 树的性质

〉 是简单图、是二分图、是平面图
〉 顶点数比边数多 1,否则必然出现回路。因为每个节点必有一个父节点,除了树根外。
〉 删去任意一条边,即不连通。(否则某两端点之间有两条通路,形成回路)
〉 任意两个不同顶点之间仅有一条通路

 

  • 生成树/支撑树 (spanning tree):如果图T是G的生成子图,且T是树。

〉 任意连通图G都至少有一棵生成树(连通图一定有)定理:无向图 G 具有支撑树, 当且仅当 G 是连通图。

构造法证明:如果G有回路,则删去回路上的一条边,然后继续构造直到没有回路。
〉 一个连通图可以有多个不同的支撑树。如下例子所示:

                                                

推论:设 G 为一个 n 阶无向连通图,则其边数 m \geqslant  n - 1
证明:若 G 是 n 阶连通图,它必定含有支撑树,即至少包含 n - 1 条边

  • 最小生成树的引例

下面是一个学校的平面建筑图,需要从某点水渠饮水,修建管道。但是并不是任意路径都可修建。只有沿着指定路径修建,并且各个管道的成本都不一样。经过图建模之后,顶点代表需要引水的建筑物,边代表指定的修建路径,边上代表着修建成本。
                                           

由上图知,我们需要的便是从图中得到一个生成树。但同时需要使得其总成本最低,便引出了最小生成树的概念了。

给定一个无向连通赋权图,该图所有支撑树中各边权值之和最小者称为这个图的最小支撑树 (minimalspanning tree, MST)。

那么我们自然会想到该如何得到一棵最小支撑树呢?   下面我们介绍两个算法:克鲁斯卡算法普里姆算法
 

最小瓶颈支撑树:设 ( G, W ) 是无向连通赋权图, 包含 G 的所有支撑树中权值最大的边中权值最小的那条边的所有支撑树都称为 G 的最小瓶颈支撑树(minimal bottleneck spanning tree, MBST)。但在这些最小瓶颈支撑树中只有一个是最小支撑树。

                                                       

上图中第一个是原图,后三个是最小瓶颈支撑树。但是其中只有第二个才是最小支撑树(生成树)。

无向连通赋权图的最小支撑树一定是最小瓶颈支撑树,但最小瓶颈支撑树不一定是最小支撑树

设 ( G=(V, E), W ) 是无向连通赋权图,R \subseteq V, 在 G 的所有包含 R 中所有顶点的子图中,总权值最小的树称为 G 的斯坦纳树(Steiner tree)当 R = V 时,斯坦纳树问题即是最小支撑树(最小生成树)问题。例子如下:

虽然斯坦纳树问题与最小支撑树问题具有相似之处,然而斯坦纳树问题则难得多。它属于NPC问题,事实上,它是卡普
(Richard Manning Karp)证明的第一批 21个NPC问题之一。

  • 根树 (rooted tree)  归纳定义

① 一个孤立节点 v0 是根树,v0 称为树根
② 如果 T1,T2,…Tk 是根树,其树根分别是 v1,v2,…,vk,则
〉 V=V(T1) ∪ V(T2) ∪ … ∪ V(Tk) ∪ {v0}
〉 E=E(T1) ∪ E(T2) ∪ … ∪ E(Tk) ∪ {v0,v1} {v0,,v2}… ∪ {v0,vk}

                                              

〉 T=<V,E>也是根树,v0 称为树根
〉 Tn称为T的子树 subtree,树根称为父节点 parent,而子树的树根称为子节点 child
〉 v1,v2,…,vk 互称兄弟节点sibling
〉 根树中每个节点都是某个子树的根

n元树: 每个节点都至多有n个子节点根树称作n元树
〉 对于子节点规定了次序的n元树称作n元有序树
〉 最常用的n元树是二元树(左/右子节点)
 

  • 树的应用

二元有序树可以表示任何n元有序树

〉 左子节点表示第一个子节点
〉 右子节点表示下一个兄弟节点。
只要在构造时将 n 元有序树递归地看成根节点,左子节点,和右边所有节点,然后在递归的处理右边的所有节点即可完成构造。
                                                      

因为二元有序树可以表示任何n元有序树,所以下面主要看二元树的应用。

二元树的遍历
遍历:以某种次序访问所有节点

〉 按照树根访问的先后,分为三种次序:
先根次序:根、左子树、右子树
中根次序:左子树、根、右子树
后根次序:左子树、右子树、根

树的应用:表达式树
〉 分支节点为运算符              〉 树叶为运算数
                                                

排序搜索树:有了树结构后我们还可以用它来做排序或搜索

〉 左子树的节点值都小于根
〉 右子树的节点值都大于根
排序树的构造平衡优化搜索。因为构造的排序树有很多种结构,但是查找效率最高的便是平衡二叉树,故需要对排序树进行平衡和优化。如下图所示例子:

                                              

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章