离散数学图论部分内容总结
前言:
这个学期的离散课程结束了,在整个离散数学的学习中,知识点不是很难,但是繁琐,不复习学了跟没学一样,这也是我关于这个学期离散数学知识点的最后一篇博客啦,主要总结一下图论部分的图的基本概念(一些较为简单的概念就不进行过多的介绍),欧拉图,哈密顿图和树。
图的基本概念:
1.图
图可以被表示为 G={V, E},其中 V={v1, ... , vN},E= {e1, ... , eM}。简单点就是顶点集和边集。
从上面给出的图中,我们可以很容易看出顶点集中有几个元素,边集中又有哪些元素,并且可以根据边的方向性(把图分为有向图和无向图)
2.零图:
一条边都没有的图,1阶零图也称为平凡图(只有一个顶点)
3.标定图:
对图的点和边进行符号的指定(上面的例子就是一个很典型的标定图)
4.简单图:
不含平行边(边的方向,起始点都一致的两条边)和环(自己指向自己的边)的图
5.度数关的相关概念:
出度:顶点作为边起点的次数;
入度:顶点作为边终点的次数;
要能够认清最大度和最小度的符号
悬挂顶点:度数为1的顶点(与它关联的边叫作悬挂边)。
6.握手定理(重点):
在任何图中,顶点的度数和 = 边的两倍;
推论: 任何图(无向或有向), 度数为奇数的结点个数为偶数。(这个推论很重要, 经常用到。)
一道简单的例题:
7.通路与回路:
通路:从一个点V1到另一个点Vi,之间的顶点与边,边的条数是这个通路的长度;
回路的话形成一个圆,起点与终点相同;
简单通路(回路)没有重复的边,初级通路(回路)没有重复的顶点
8.连通性:
每个连通的部分看作一个连通分支
注意:刚好删除掉顶点原图不连通,过多的顶点不算(边割集同理)
9.图的表示方法:
1.邻接矩阵:
矩阵A的n次方的意义:
2.可达矩阵:
欧拉图与哈密顿图:
欧拉图(欧拉回路)
定义:
欧拉回路(欧拉图):通过图中所有边一次且仅一次行遍所有定点的回路叫欧拉回路
欧拉通路(半欧拉图):通过图中所有边一次且仅一次行遍所有顶点的通路
相关定理
1.无向图G是欧拉图当且仅当G是连通图且没有奇度顶点
2.无向图G为半欧拉图当且仅当G是联通的且恰有两个奇度顶点
3.有向图D是欧拉图当且仅当D是强联通的且每个顶点的入度等于出度。
4.有向图是半欧拉图当且仅当D是单向联通的且恰有两个奇度顶点其中一个奇度顶点入度比出度大一,另一个入度比出度大一
*5.G是非平凡欧拉图当且仅当G是联通的且是若干个边不重的圈的并
Fleury算法(构建欧拉回路)
1任取图中一点
2取一该点相连的边(除非无别的边选择否则不能选G-{已走点}所构成的图上的桥(去掉该边是图不连通,剩下一个孤立点和一个联通分量的叫桥))
哈密顿图
定义
哈密顿图:经过图中所有顶点一次且仅一次的回路称作哈密顿回路,具有哈密顿回路的图叫哈密顿图
半哈密顿图:经过图中所有顶点一次且仅一次的通路称作哈密顿通路,具有哈密顿通路的图叫半哈密顿图
平凡图是哈密顿图
相关定理
(暂无哈密顿图的充要条件)
哈密顿图的必要条件(判断图不是哈密顿图)
哈密顿图
p ( G − V 1 ) < = ∣ V 1 ∣ p(G-V1)<=|V1| p(G−V1)<=∣V1∣
p(G-V1)为G中删除V1后的所得图的联通分支数目
若图为哈密顿图则其满足上式,
若图不满足上式则图不为哈密顿图,但无法由图满足上式推出其为哈密顿图,例如彼得松图满足上式但不是哈密顿图(彼得松图为十阶-3-正则图)
*推论
有割点的图一定不是哈密顿图
半哈密顿图:
p ( G − V 1 ) < = ∣ V 1 ∣ + 1 p(G-V1)<=|V1|+1 p(G−V1)<=∣V1∣+1
对于二部图(将点分为两部分的图),若v1,v2相差大于一则其什么也不是,若相差一则为哈密顿通路,相等则为回路,自己画图就可以明白为什么。
#哈密顿图的充分条件(判断图是哈密顿图)
①通过观察找出一条哈密顿回路
②通过公式判断
d ( u ) + d ( v ) > = n d(u)+d(v)>=n d(u)+d(v)>=n
d,v不相邻,d(u),d(v)分别为顶点d和顶点v的度数,n为图的阶(顶点个数)
若满足上式则此图为哈密顿图
推论:
设G是n(n>=3)阶无向简单图,若G的最小度>=n/2,则G是哈密顿图。
由推论知,对于完全图Kn,当n>=3时,是哈密顿图,完全二部图Kr,s当r==s>=2时是哈密顿图。
树:
1. 基本定义
-
连通而不含回路的无向图称为无向树,简称树,常用T表示
-
树中度数为1的结点称为叶,度数大于1的结点称为分支点或内部节点
-
每个连通分支都是树的无向图称为森林
-
平凡图称为平凡树
-
树一定是简单图
-
非平凡树中没有度为零的结点
2. 树的性质
-
设无向图G<V,E>,|V|=n,|E|=m,则下列命题等价:
-
G连通且无回路(即G是树)
-
G中无回路,且m=n-1
-
G是连通的,且m=n-1
-
G中无回路,但是在G的任二结点之间增加任意一条边就可以得到一条唯一的基本回路
-
G是连通的,但是删除G中的任意一条边后便不连通(n\geqslant 2)
-
G的每对结点之间有唯一一条基本通路
上述的几个命题可以互推,证明一定要掌握,非常重要!从第三条到第四条的证明思想注意掌握
-
在结点给定的无向图中,树是边数最多的无回路图,同时是边数最少的连通图,进而可以得到推论(结点为n,边数m)
-
若m<n-1,则G不连通
-
若m>n-1,则G有回路
-
任何非平凡树至少有两片叶子,这是由握手定理决定的
生成树
1. 基本概念
-
生成树:给定图G<V,E>,若G的某个生成子图是树,则称其为该图的生成树,记为T_G
-
生成树中的边称为树枝,G不在T_G中的边称为弦,T_G中所有弦的集合称为T_G的补
-
一个图具有生成树的充分必要条件是该图是连通的
2. 求生成树的算法
对于图G<V,E>,|V|=n,|E|=m
-
破圈法:每次删除回路中的一条边,删除边的总数量为m-n+1
-
避圈法:每次选取G中一条与已选取的边不构成回路的边,共选取n-1条
-
上述两种方法选择的生成树显然是不唯一的
-
广度优先搜索算法:其实就是宽度优先搜索的思路,但是PPT上给的描述很迷,不如《离散数学及其应用》中的描述,就是利用队列实现的
-
深度优先搜索算法:和上面一样
-
上面两种算法产生的生成树也可能是不唯一的,宽度优先搜索和他加入到队列里结点的顺序有关,深度优先搜索和选择的路径有关
最小生成树
1. 基本概念
-
生成树中树枝的权值之和记为w(T)
-
连通加权图里的最小生成树是具有边的权之和最小的生成树
-
连通加权图的最小生成树不唯一
2. 求最小生成树的算法
-
克鲁斯卡尔(Kruskal)算法:重复选择G中权最小的任一边并且加入到T中不形成简单回路,将其加入到最小生成树T中,重复n-1次即可
-
普林(Prim)算法:首先选取一条权值最小的边,然后重复选择与T中顶点关联且不能形成简单回路的权最小的边,将其添加到T中,重复n-2次即可
-
分析比较两个算法,可见普林算法和克鲁斯卡尔算法还是有相似的地方的
根树
1. 基本概念
-
有向树:一个有向图,略去图中所有的有向边的方向得到的无向图如果是一棵树,则称其为有向树
-
有根树是指定一个顶点作为根并且每条边的方向都离开该顶点的树,其恰有一个顶点入度为0,其余所有结点的入度都为1,也成为外向树
-
有孩子的顶点称为内点,根是内点除非它是图中唯一的顶点,也即入度为1出度大于0的顶点称为内点,内点和根统称为分支点
-
在根树中,从根到任一结点的通路的长度称为该结点的层数。同一层,高
-
祖先,后代,父亲,儿子,兄弟
-
如果在根数中规定了结点的次数,则称其为有序树,一般地,规定次序为从上到下从左至右
-
若有根树的每一个结点都有不超过m个孩子,则称它为m叉树,若每个内点都恰好有m个孩子,则称他为满m叉树,PPT上也称其为m元完全树,注意国内和国外在这一点上是有差异的,不要和数据结构课程里的概念弄混
-
子树:在根数T中,任一结点v及其所有后代导出的子图T_1称为T的子树。另外有左子树和右子树的概念,注意左子树和右子树中均不包含v