图的术语:图: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的结点个数。

图的遍历:深度优先搜索和广度优先搜索。深度优先搜索:在访问图中某一起始顶点v后,由v出发,访问它的任一邻接点w1,再从w1出发访问与w1邻接但还被但还没被访问过的顶点w2;然后再继续操作直到到达所有的邻接顶点都被访问过的顶点u为止,接着退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。如果有,就访问此顶点,之后再从此顶点出发,进行与前述类似访问;如果没有就再退回一步进行搜素,重复上述过程直到连通图中所有顶点都被访问过为止。

  有向无环图及其应用:AOV网(拓扑排序):用一个有向图表示一个工程的各子工程及其相互制约的关系,其中顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网。AOE网(关键路径):用一个有向图表示一个工程顶点各子工程及其相互制约的关系,以弧表示活动,以顶点表示活动的开始或结束事件,称这种有向图为边表示活动的网。拓扑排序:在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得AOV网中有弧<i,j>存在,在这个序列中i一定排在j的前面,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。拓扑排序的方法:在有向图中选一个没有前驱的顶点且输出,从图中删除该顶点和所有以它为尾的弧,重复上述操作直至全部顶点均以输出,或者当图中不存在无前驱的顶点为止。检测AOV网是否存在环方法:对有向图构造其顶点的拓扑有序序列,若网中所有顶点都在他的拓扑有序序列中,则该AOV网中必定不存在环。关键路径:把工程计划表示为边表示活动的网络,即AOE网,用顶点表示事件,弧表示活动,弧的权表示活动持续时间。事件表示在它之前的活动已经完成,在它之后的活动可以开始。关键路径:路径长度最长的路径。路径长度:路径上各活动持续时间之和。

posted @ 2021-08-12 16:54  smilecomzyb  阅读(190)  评论(0编辑  收藏  举报