第六章图

来源:互联网 发布:homebrew 安装的mysql 编辑:程序博客网 时间:2024/06/05 04:26

第六章      图

6.1 图的逻辑结构

图:由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:

                           G=(V,E)

其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。 

 

图的基本数语:

简单图:在图中,若不存在顶点到其自身的边,且同一条边不重复出现。

邻接、依附

无向图中,对于任意两个顶点vi和顶点vj,若存在边(vi,vj),则称顶点vi和顶点vj互为邻接点,同时称边(vi,vj)依附于顶点vi和顶点vj。

邻接、依附

有向图中,对于任意两个顶点vi和顶点vj,若存在弧<vi,vj>,则称顶点vi邻接到顶点vj,顶点vj邻接自顶点vi,同时称弧<vi,vj>依附于顶点vi和顶点vj 。 

无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。

有向完全图:在有向图中,如果任意两个顶点之间都存在方向相反的两条弧,则称该图为有向完全图。  

稀疏图:称边数很少的图为稀疏图;

稠密图:称边数很多的图为稠密图。

顶点的入度:在有向图中,顶点v的入度是指以该顶点为弧头的弧的数目,记为ID (v);

顶点的出度:在有向图中,顶点v的出度是指以该顶点为弧尾的弧的数目,记为OD (v)。

权:是指对边赋予的有意义的数值量。

网:边上带权的图,也称网图

路径:在无向图G=(V, E)中,从顶点vp到顶点vq之间的路径是一个顶点序列(vp=vi0,vi1,vi2, …, vim=vq),其中,(vij-1,vij)∈E(1≤j≤m)。若G是有向图,则路径也是有方向的,顶点序列满足<vij-1,vij>∈E。

回路(环):第一个顶点和最后一个顶点相同的路径。

简单路径:序列中顶点不重复出现的路径。

简单回路(简单环):除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路。

图的抽象数据类型定义 

图的遍历操作

图的遍历是在从图中某一顶点出发,对图中所有顶点访问一次且仅访问一次。 

1. 深度优先遍历 

⑴ 访问顶点v;

⑵ 从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历;

⑶ 重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。 

2. 广度优先遍历 

⑴ 访问顶点v;

⑵ 依次访问v的各个未被访问的邻接点v1, v2, …, vk;

⑶ 分别从v1,v2,…,vk出发依次访问它们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问。直至图中所有与顶点v有路径相通的顶点都被访问到。

6.2 图的存储结构及实现

邻接矩阵(数组表示法)

基本思想:用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接矩阵)存储图中各顶点之间的邻接关系。

邻接表

邻接表存储的基本思想:对于图的每个顶点vi,将所有邻接于vi的顶点链成一个单链表,称为顶点vi的边表(对于有向图则称为出边表),所有边表的头指针和存储顶点信息的一维数组构成了顶点表。 

6.3  最小生成树

生成树的代价:设G = (V, E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。 

最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树

普里姆(Prim)算法 

设G=(V, E)是具有n个顶点的连通网,T=(U, TE)是G的最小生成树, T的初始状态为U={u0}(u0∈V),TE={ },重复执行下述操作:在所有u∈U,v∈V-U的边中找一条代价最小的边(u, v)并入集合TE,同时v并入U,直至U=V。

克鲁斯卡尔(Kruskal)算法 

设无向连通网为G=(V, E),令G的最小生成树为T=(U, TE),其初态为U=V,TE={ },然后,按照边的权值由小到大的顺序,考察G的边集E中的各条边。若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边作为最小生成树的边加入到T中,同时把两个连通分量连接为一个连通分量;若被考察边的两个顶点属于同一个连通分量,则舍去此边,以免造成回路,如此下去,当T中的连通分量个数为1时,此连通分量便为G的一棵最小生成树。 

6.4  最短路径

在非网图中,最短路径是指两顶点之间经历的边数最少的路径。 

在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径

Dijkstra算法

基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …, vk , vi与原来的假设相比较,取路径长度较小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。

6.5  有向无环图及其应用 

关键路径:在AOE网中,从始点到终点具有最大路径长度(该路径上的各个活动所持续的时间之和)的路径称为关键路径。

关键活动:关键路径上的活动称为关键活动

 

0 0