本章只记录一些基本概念
图(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)
邻接矩阵的存储方式
一维数组存放顶点信息
二维数组存放边信息
邻接矩阵比较适合稠密图,不然会比较浪费内存