图的术语:图:G=(V,E),V:顶点(数据元素的有穷非空集合),E:边的有穷集合。无向图:每条边都是无方向的。有向图:每条边都是有方向的。完全图:任意两个点都有一条边相连。稀疏图:有很少边或弧的图。稠密图:有较多边或弧的图。网:边,弧带权的图。邻接:有边/弧相连的两个顶点之间的关系。存在(vi,vj),称vi和vj互为邻接点;存在<vi,vj>(边有方向),则称vi邻接到vj,vj邻接于vi。
关联(依附):边/弧于顶点的关系。顶点的度:与该顶点相关联的边的数目。有向图中顶点的度等于该顶点的入度和出度之和。顶点v的入度是以v为终点的有向边的条数;顶点v的出度是以v为始点的有向边的条数。路径:接续的边构成的顶点序列。路径长度:路径上边或弧的数目/权值之和。回路(环):第一个顶点和最后一个顶点相同的路径。简单路径:除路径起点和终点可以相同外,其余顶点均不相同的路径。
简单回路:除路径起点和终点相同外,其余顶点均不相同的路径。连通图:在无(有)向图G=(V,E),若对任何两个顶点v,u都存在v到u的路径,则称G是连通图(强连通图)。权与网:图中边或弧所具有的相关数称为权,表明从一个顶点到另一个顶点的距离或花费。带权的图称为网。连通分量:无向图G的极大连通子图称为G的连通分量,极大连通子图:该子图是G连通子图,将G的任何不在该图中的顶点加入,子图不再连通。极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边则不再连通。生成树:包含无向图所有顶点的极小连通子图。生成森林:对非连通图,由各个连通分量的生成树的集合。
图的存储结构:数组表示法(邻接矩阵),链式表示法(邻接表,邻接多重表,十字链表)。邻接矩阵arcs[i][j],无向图的邻接矩阵是对称的;顶点i的度等于第i行(列)中1的个数。有向图的邻接矩阵:第i行含义:以结点vi为尾的弧(出度边),第i列含义:以结点vj为头的弧(入度边)。有向图顶点的度等于顶点的出度(第i行元素之和)+顶点的入度(第i列元素之和)。
邻接矩阵的优点:直观,简单,便于理解,方便检查任意一对顶点间是否存在边,方便找任一顶点的所有邻接点,方便计算任意顶点的度。邻接矩阵的缺点:不便于增加和删除顶点,浪费空间(存稀疏图(点多边少)有大量无效元素),浪费时间(统计稀疏图一共有多少条边)。
邻接表:按编号顺序将顶点数据存储在一维数组中;关联同一顶点的边,用线性链表存储,顶点vi的出度为第i个单链表中的结点个数。顶点vi的入度为整个单链表中邻接点域值是i-1的结点个数。