1.定义
图(Graph)是由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若E(G)为空,则图G只有顶点没有边。
对于图G,若边集E(G)为有向边的集合,则称该图为有向图;若边集E(G)为无向边的集合,则称该图为无向图。
在有向图中,顶点对<x,y>
是有序的,它称为从顶点x到顶点y的一条有向边。因此,<x,y>
与<y,x>
是不同的两条边。顶点对用一对尖括号括起来,x是有向边的始点,y是有向边的终点。<x,y>
也称作一条弧,x为弧尾,y为弧头。
在无向图中,顶点对(x,y)是无序的,它称与从顶点x和顶点y相关联的一条边。这条边没有方向,(x,y)与(y,x)是同一条边,顶点对用一对圆括号括起来。
2.图的基本术语
a. 无向完全图和有向完全图
对于无向图,若具有n(n-1)/2条边,则称为无向完全图。对于有向图,若具有n(n-1)条弧,则称为有向完全图。n指顶点的个数。
b. 度、入度和出度
顶点v的度是指和v相关联的边的数目。对于有向图,顶点v的度分为入度和出度。入度是以顶点v为头的弧的数目,出度是以顶点v为尾的弧的数目。
c. 路径长度
一条路径上经过的边或弧的数目称为路径长度。
d. 回路或环
第一个顶点和最后一个顶点相同的路径称为回路或环。
e. 连通和连通图
在无向图G中,如果从顶点a到顶点b有路径,则称a和b是连通的。如果对于图中任意两个顶点都是连通的,则称G是连通图。
f. 强连通图
在有向图G中,如果对于每一对vi,vj属于V,vi不等于vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。
3.深度优先搜索和广度优先搜索
1) 深度优先搜索
a. 从图中某个顶点v出发,访问v。
b. 找出刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直至刚访问过的顶点没有未被访问的邻接点为止。
c. 返回前一个访问过的且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点。
d. 重复步骤b和c,直至图中所有顶点都被访问过,搜索结束。
2) 广度优先搜索
a. 从图中某个顶点v出发,访问v。
b. 依次访问v的各个未曾访问的邻接点。
c. 分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问。
d. 重复步骤c,直至图中所有已被访问的顶点的邻接点都被访问到,搜索结束。
4.拓扑排序
1) AOV-网
用顶点表示活动,用弧表示活动间优先关系的有向图称为表示活动的网,简称AOV-网。在网中,若从顶点a到顶点b有一条有向路径,则称a是b的前驱,b是a的后继。若a,b是网中一条弧,则a是b的直接前驱,b是a的直接后继。
2) 拓扑排序过程
a. 在有向图中选一个无前驱的顶点且输出它。
b. 从图中删除该顶点和所有以它为尾的弧。
c. 重复a和b,直至不存在无前驱的顶点。
d. 若此时输出的顶点数小于有向图中的顶点数,则说明有向图中存在环,否则输出的顶点序列即为一个拓扑序列。
5.关键路径
在AOE-网中,一条路径各弧上的权值之和称为该路径的带权路径长度。要估算整项工程完成的时间,就是要找一条从源点到汇点的带权路径长度最长的路径,称为关键路径。关键路径上的活动称为关键活动。
注:关键路径不止一条。