数据结构7-图

来源:互联网 发布:神思数据填充 编辑:程序博客网 时间:2024/04/30 12:29

7.1 简介
图(Graph)是一种描述两个顶点之间是否联通的关系图,在图中如果连接两个顶点的边被赋予权值,则这种图就称为”网络“。
图被广泛应用于数据结构中的最短路径查找、拓扑排序外,还可以作为系统分析中一时间为评价标准的评估与审查手段。
图最早是由瑞士数学家欧拉于1736提出来的解决”肯尼兹堡桥梁“问题。
图是由顶点和边组成,即vertice&edge。
表示方法:G=(V,E)。其中V是所有顶点的集合, E是所有边的集合。
V={A,B,C,D,E}
E={(A,B),(A,E),(B,C),(B,D),(C,D),(C,E),(D,E)}
这里E是无向图,如果有方向的话就用尖括号来表示。

分类:
完全图:
无向图中有N个顶点,则有N(N-1)/2条边;
有向图则有:N(N-1)条边。

子图:
原图的一部分

路径:
两个不同的顶点间所经过的边称为路径。

回路:
起始顶点及终止顶点为同一个点的简单路径称为回路。

连通:
在无向图中,若两个顶点存在路径,则成为这两个顶点时连通的。

连通图:
如果图中任意两个顶点均是连通的,则称此图为连通图。

路径长度:
路径上所包含变的总数称为路径长度。

连通分支:
连通分支为图中连通在一起的最大子图数。

强连通:
在有向图中若两顶点间有两条反向的边称为强连通。

度:
无向图中,一个顶点所拥有边的总数称为该点的度数。

7.2 图的表示法
四种:邻接矩阵法、邻接表法、多重邻接链表法、标记法。

7.3 图的遍历
一个图G=(V,E),从图的某一个顶点开始经由此顶点相邻的顶点去访问G中的其他顶点,称为”图的遍历“。
方法:深度优先法和广度优先。
深度优先遍历(Depth First Search,DFS)类似于前序遍历。是从图的某一项点开始遍历,被访问过的顶点就做上已访问的记号,接着遍历此顶点的所有相邻且未访问过的顶点中任意一个,并作上已访问记号,再以该点为新的起点继续进行深度优先的查找。
广度优先法(Breadth First Search,BFS)利用队列及递归的技巧来遍历图,从图的某一个顶点开始遍历,被访问过顶点就做上已访问的记号。接着遍历此顶点的所有相邻且未访问过的顶点中的任意一个,便利后坐上已访问记号,再以该点微信的起点继续进行广度优先的查找。

7.4 生成树(Spanning Tree)
生成树又称为”花费树“或者”植树“。
定义为:一个图的生成树是以最少的遍来连接图中所有的顶点,且不构成”回路“的树状结构。
使用深度优先方式遍历产生的生成树称为深度优先生成树DFS;
使用广度优先方式遍历产生的生成树称为广度优先生成树BFS。

7.5 最小生成树
如果给每个路径加上权重就为网络,则可以计算从一个点到另外一个点的成本,去最小成本的树就是最小生成树(Minimum Cost Spanning)。
主要算法:贪婪算法(Greedy Algorithm)
a.Prim算法;
b.Kruskal算法。

7.6 图的最短路径
对于一个赋予权值的有向图G=(V,G),求图中某一个顶点v0,到其他顶点具有最少权值总和的路径,这类问题就称为最短路径问题。
算法:
a .Dijkstra算法; //只能求出某一点到其他顶点的最短路径;
b.Floyd算法。

7.7 AOV网络与拓扑排序
AOV(Activity On Vertices)网络是一种有向图。
AOV网络中的专业名词如下:
1)前驱:顶点1工作必须完成之后才能进行下一个顶点2的工作,称为1是2的前驱;
2)拓扑排序与拓扑序列。

AOE(Activity On Edge),是活动不再顶点而在边上的有向图。这与AOV网络,顶点表示一项活动洽洽相反。
AOE网络的源点到汇点,从源点开始计时执行各边上事件的活动,到汇点完成位置所需要的时间为所有事件完成的时间总花费。

0 0
原创粉丝点击