定义
相较于之前学习的树,图的范围更加广大,而且没有一种特别明确的、公认的实现图的方案。在计算机中,一个图G由顶点集V和边集E组成,这样记为G=(V,E)。顶点是构成图的基本要素,而连接顶点的结构叫做边。一个图可以没有边,但必须要有顶点,也就是说边集可以为空集,但顶点集必须非空,否则构不成图。
分类
按照边的方向
按照边方向的有无,可以分为有向图和无向图。
有向图是一种由节点和有向边组成的图形结构,其中每条边都有一个确定的方向。也就是说,从节点A到节点B的有向边只能被称为从A指向B,而不能反过来。有向图可以用来表示有向关系,如网页之间的超链接、物流中货物的运输方向等。
无向图是一种由节点和无向边组成的图形结构,其中每条边没有方向。也就是说,如果两个节点之间有一条边,那么这条边可以被看做是连接这两个节点的双向通道,信息可以在两个节点之间双向传递。无向图可以用来表示无方向关系,如社交网络中的好友关系、城市之间的道路网络等。
按照边的特征
按照边的复杂程度,可以分为简单图和多重图。
简单图是一种图形结构,其中任何两个节点之间最多只能有一条边。也就是说,在简单图中,不存在自环(一个节点与自己相连的边)和重边(两个节点之间有多条边)。简单图常用来表示无向图或有向图中的单一关系。
多重图是一种允许两个节点之间有多条边的图形结构。也就是说,在多重图中,同一对节点之间可以有多条边,每条边都可能表示不同的关系。多重图常用于表示具有多重联系的事物之间的关系,如同一对人之间可以有多种关系,如好友、同学、同事等等。
其他图
完全图
完全图是一种简单图,其中每对不同的节点之间都存在一条边,也就是说,完全图中的每个节点都与其他节点直接相连。
完全图是一种非常特殊的图形结构,因为它具有最多的边数。对于一个有个节点的完全图G,它的总边数为。这也意味着,对于任何一个简单图来说,如果它的边数等于完全图G的边数,那么这个简单图就是一个完全图。
子图
子图是指从一个大图中选取一部分节点和边,形成的一个新的图形结构。简单来说,如果G是一个图,H是G的子图,那么H就是由G的一部分节点和边构成的新图,其中H的节点和边必须是G的节点和边的子集。
连通图和强连通图
连通图是指在一个无向图或有向图中,任意两个节点之间都至少存在一条路径的图形结构。也就是说,如果从图中任意选取两个节点,它们之间都可以通过一些边相连的路径到达。
具体来说,如果G是一个无向图,那么G是连通图,当且仅当G中的任意两个节点之间都存在至少一条路径。如果G是一个有向图,那么G是强连通图,当且仅当G中的任意两个节点之间都存在至少一条有向路径。
生成树
在一张无向连通图中,生成树是指包含所有节点的树形子图,且该子图任意两点之间都存在唯一的简单路径。
生成树是原图的一种极小联通子图,其中包含了所有节点和足够的边,以使得该子图变成一棵树。
总结
以上就是我对图基本概念的学习与记录,本文篇幅有限,还没有记录图的一些性质。本文只是图这一章节的一个开始引入,后文将会更加详细的介绍图这一种数据结构。