目录
期待和你同行
—— 25.3.10
一、图的定义
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中 G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合
线性表中我们把数据元素叫元素,树中将数据元素叫结点,图中数据元素,我们称之为顶点
二、有向图和无向图
图可以分为有向图和无向图,有向图中的边具有方向,从一个顶点指向另一个顶点,表示一个单向关系。无向图中的边没有方向,连接两个顶点,表示双向关系
1.无向边和无向图
如果两个顶点间的边没有方向,则称这条边为无向边,如果图中任意两个顶点之间的边都是无向边,则这个图被称为无向图。
2.有向边和有向图
如果两个顶点之间的边是有方向的,则被称为有向边,也被称为弧(有向边的起点叫弧头,终点叫弧尾),如果图中任意两个顶点之间的遍都是有向边,则这个图被称为有向图。
三、稀疏图和稠密图
根据图中边的数量,图可以分为稀疏图和稠密图。稀疏图中边的数量相对较少,顶点之间的连接比较稀疏。稠密图中边的数量较多,顶点之间的连接较为紧密。
四、完全图
完全图是指每个顶点都与其他顶点直接相连的图。对于有向图,完全图要求每个顶点都有有向边指向其他顶点,并且每个顶点也接受其他顶点的有向边。
五、简单图
简单图是指图中没有自循环(边的起始顶点和结束顶点相同)和多重边(两个顶点之间存在多
条边)的图。
六、度
度是图中顶点的一个重要概念,它表示某个顶点与其他顶点直接相连的边的数量。对于有向图,度分为入度和出度,分别指向该顶点的边数和从该顶点指出的边数
七、权
权是图中边的附加信息,可以表示边的权重、距离、成本等
八、路径
路径是图中一系列连续的边,连接了两个顶点。路径可以是有向的或者无向的。相关算法都是求两个顶点之间的最短路径,比如 Dijkstra、Bellman - Ford、Floyd、Dijkstra + Heap、SRFA 都是求最短路径的算法
九、连通图和连通分量
连通图是指图中任意两个顶点之间都存在一条路径。如果图可以划分为多个子图,使得子图内部的顶点相互连通,而子图之间没有连接,那么这些子图就称为连通分量。
在有向图中,如果对于任意两个顶点 a 和 b,从 a 到 b 和从 b 到 a 都存在路径,则称它为强连通图,有向图中的极大强连通子图被称为这个有向图的强连通分量。
十、生成树
生成树是连通图的一个子图,它是一棵树(没有循环的连通图),并且包含了图中的所有顶点。生成树可以用于图的遍历、最小生成树等问题的解决。常见的最小生成树算法有 Kruscal 和Prim,其中 Kruscal 用到了并查集。