我是蚊子码农。我会持续带来优质的技术博客,欢迎大家的点赞、收藏和关注。
一、前言
在经过基础数据结构的学习后,我们知道,图结构是四类基础数据结构之一。事实上,图在现代信息社会中非常常用,比如解决地图、搜索引擎、电路、任务调度、商业交易、计算机网络、社交网络等问题。
为了解决这些问题,我们需要提前了解一些图的术语。
19个基础的图术语,又可以分为3类。
二、简单结构(3个术语)
对于图2-1的简单结构来说,
图2-1 简单图
如图所示,可以知道P1、P2是顶点,E1为连接二者的一条边。
有3个概念需要知道。
第一,相邻
对于两个顶点P1、P2来说,如果有一条边,连接这两个顶点,则称P1、P2相邻。
第二,依附于
对于一条边E1来说,它必定依附于2个顶点,在这幅图中,即边E1依附于P1、P2。
在图中,不允许出现边E1依附的顶点数不是2的情况。
第三,度数
对于一个顶点P1,有n条边依附于它,即称它的度数为n。
也就是说,度数是一个数量概念,关注于有几个。
三、常用子图结构(6个术语)
对于图3-1的图来说
图3-1 子图结构
如图,这张图包含4个顶点、4条边。
请注意,研究图论的学者众多,由于这是比较前沿的知识,学术界对概念并不完全统一,因此假如遇到概念有疑惑的地方,欢迎在评论区指正,我会继续查阅参考资料,并给出更加合理的解释。
接下来将讲解6个重要概念。
第一,子图
子图由原图顶点集和边集的子集构成,允许出现孤立顶点,但不允许出现孤立边。
也就是说,子图可以单由顶点【P1、P2】组成。
却不能出现顶点集【P1、P2】和边集【E2、E4】的情况。
第二,路径
路径是由边顺序连接顶点所构成的子图。
也就是说,路径本质上依旧是子图,但是要特殊一些。
每一条路径,都需要边存在一定的顺序。
比如在图3-1中,路径P4–E3–P2是正确的、可行的。
路径P2–P3则是错误的。
第三,简单路径
简单路径也是路径,但它不能存在重复边、重复顶点。
举个例子,在图3-1中。
P3–E2–P1–E1–P2属于一条简单路径。
P3–E2–P1–E1–P2(–E1–P1)不是简单路径。
可以看到,由于边不能孤立存在,一条非简单路径必然会经过重复顶点,因此,有一些教材认为“不存在重复顶点的路径,即为简单路径”也是合理的。
第四,环
环是至少有1条边,并且起点、终点是相同顶点的路径。
可以看到,除了是路径外,环还有2个必要条件。
第一,环至少存在1条边。也就是说,不允许P1–P1–P1–P1这种环的存在。【事实上,由于路径定义中要求“边顺序连接顶点的子图”,一条路径必然存在边,所以没有边的子图连路径都算不上】
第二,起点、终点相同。不解释。
举个例子,对于图3-1中。
环可以是P3–E2–P1–E2–P3。(环A)
环也可以是P4–E3–P2–E1–P1–E4–P4。(环B)
可以看到,在这两个环中,环A有重复边,而环B则没有。
第五,简单环
简单环也是一个环,但是要求不能存在重复顶点、重复边【除了起点、终点相同外】
举例,环B即为简单环(如第四,环的加粗部分)
第六,连通
连通这个概念,是针对于2个顶点来说的。
假如有顶点P1、P2,P1存在一条路径到达P2,则称P1和P2是连通的。
比如图3-1,可以认为P1和P2是连通的。P2、P3是连通的,P1、P3是连通的……
四、复杂的子图类型(10个术语)
这一部分比较复杂,在此照样使用图3-1举例。
这一部分,最重要的是,知道证明一个图是一棵树的方法。
第一,连通图
在这种图中,任意两个顶点都连通。
连通的概念已经讲过,比如图3-1就是连通图。
第二,无环图
不包含环的图。
对于图3-1,就不是无环图,因为存在环B(P4–E3–P2–E1–P1–E4–P4)
假设删除图3-1的边E4,则可认为它是一个无环图。
图如4-1所示,图4-1即为无环图(且是连通图)
图4-1 无环图(且是连通图)
第三,无环连通图
同时满足无环图、连通图的性质。
比如图4-1。
并且,一个无环连通图一定是一棵树。
一棵树也一定是一颗无环连通图。
第四,连通图的生成树
连通图的生成树是原图的一个子图,这个子图满足性质:含有连通图的所有顶点,并且是一棵树。【即将连通图,改为无环连通图】
一个连通图,可能存在很多个生成树子图。
第五,连通子图
一个图可能不是连通图(如图4-2所示)
将这个图划分,可以划分成多个连通子图。
比如划分成子图1(含顶点集【P1、P3】,边集【E2】)、子图2(含顶点集【P2、P4】,边集【E3】
图4-2 普通图
第六,图的生成树森林
如图4-2所示,一个图可能存在1个或多个连通子图。
这些连通子图形成的生成树集合,即为图的生成树森林。
第七,证明一个图是树的5种性质【该图G含有V个结点】:
这是最重要的部分。
- G有V-1条边,且不含有环;
- G有V-1条边,且是连通图;
- G是连通的,且删除任意一条边,都会使得它不再连通;
- G是无环图,但添加任意一条边都会产生一条环;
- G的任意一对顶点之间,仅存在一条简单路径。
第八,稀疏图:
边的数量,远远少于结点平方的数量。
第九,稠密图:
边的数量,比较多。
第十,二分图:
能够将所有结点分为两部分的图;分割后,其中图的每条边,所连接的两个顶点,都分别属于不同的部分;
五、结语
我是蚊子码农,如有补充或者疑问,欢迎在评论区留言。个人的知识体系可能没有那么完善,希望各位多多指正,谢谢大家。