本章只记录一些基本概念

图(Graph)

图由 顶点(vertex)边(edge) 组成,通常表示为G = (V, E)
G表示一个图,V是顶点集,E是边集
顶点集V有穷且非空
任意两个顶点之间都可以用边来表示它们之间的关系,边集E可以是空的

一下三个,都是图
数据结构与算法---图

有向图(Directed Graph)

有向图的边是有明确方向的
数据结构与算法---图

有向无环图(Directed Acyclic Graph,简称DAG)
如果一个有向图,从任意顶点出发无法经过若干条边回到该顶点,那么它就是一个有向无环图

数据结构与算法---图

出度、入度

出度、入度适用于有向图

出度(Out-degree)
一个顶点的出度为n,是指有n条边以该顶点为起点
下图,顶点11的出度为3

入度(In-degree)
一个顶点的入度为n,是指有n条边以该顶点为终点
下图,顶点11的入度为2

数据结构与算法---图

无向图(Undirected Graph)

无向图的边是无方向的

数据结构与算法---图
效果类似于下面的有向图

数据结构与算法---图

混合图(Mixed Graph)

混合图的边可能是无向的,也可能是有向的
数据结构与算法---图

简单图、多重图

平行边
在无向图中,关联一对顶点的无向边如果多于1条,则称这些边为平行边
在有向图中,关联一对顶点的有向边如果多于1条,并且它们的方向相同,则称这些边为平行边

自环
自己指向自己

简单图
既没有平行边,也没有自环的图

多重图
有平行边或者有自环的图

数据结构与算法---图

无向完全图(Undirected Complete Graph)

无向完全图的任意两个顶点之间都存在边
n个顶点的无向完全图有n(n-1)/2条边

有向完全图(Directed Complete Graph)

有向完全图的任意两个顶点之间都存在方向相反的两条边
n个顶点的无向完全图有n(n-1)条边

数据结构与算法---图
稠密图:边数接近于或等于完全图
稀疏图:边数远远少于完全图

是一个相对概念

有权图(Weighted Graph)

有权图的边可以拥有权值(weight)

数据结构与算法---图

连通图(Connected Graph)

如果顶点x和y之间存在直接或者间接的路径,则称x和y是连通的。
如果无向图G中,任意2个顶点都是连通的,则称G为连通图
数据结构与算法---图


图的实现方案

图有2种常见的实现方案:邻接矩阵和邻接表

邻接矩阵(Adjacency Matrix)

邻接矩阵的存储方式
一维数组存放顶点信息
二维数组存放边信息

邻接矩阵比较适合稠密图,不然会比较浪费内存

数据结构与算法---图
数据结构与算法---图

邻接表(Adjacency List)

数据结构与算法---图

数据结构与算法---图

相关文章: