码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构-图之基本概念

时间:2015-06-13 20:20:05      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

在图中的数据元素称为顶点(Vertex)。顶点之间的关系称为边(Edge)。图G是由顶点的有穷集合V,以及边的集合E组成。

 

由有序对构成的图为有向图(Digraph)。在有向图中,两个顶点之间的由弧(Arc)连接,起始点(Initial node)为弧尾(Tail),终止点(terminal node)为弧首(Head)

 

由无序对构成的图是无向图(Undigraph)。无向的一条相当于有向的中两条,即如果无向v1v2有一条,那么既有从v1接到v2,也有从v2接到v1<v1,v2>E 并且<v2,v1>E,而有向格区分方向的。

 

如果n为顶点的数目,e为弧或边的数目时,有0.5*n*(n-1)条边的无向图称为完全图(Completed graph)。对于有向图,e的取值范围是0nn-1)。具有nn-1)条弧的有向图称为有向完全图。与图的边或弧相关的数叫做权(Weight),带权的图称为网。

 

如果一个图中的顶点和弧与另一个图的顶点和弧(或者部分顶点和弧)完全相同的话,这个图是另一个图的子图。

 

在无向图中,在同一条边上的顶点称作邻接点。也就是说这连个顶点相邻接。这条边依附于这连个顶点,或者说这条边和这连个顶点相关联。和顶点相关联的边的数目称为这个顶点的度。对于有向图,自始至终的相关联,以这个顶点为起始点的弧的数目称为这个顶点的入度。为终点的弧的数目称为出度。入度与出度的和是这个顶点的度。

度(Degree)是一个顶点的度是指与该顶点相关联的总边数,顶点v的度记作d(v)

阶(Order):图G中顶集V的大小称作图G的阶。

自环(Loop):若一条边的两个顶点相同,则此边称作自环。

路径(Path):从顶点u到顶点v的一条路径是指一个序列v_0,e_1,v_1,e_2,v_2,...e_k,v_ke_i的起点终点为v_{i-1}v_ik称作路径的长度;v_0=u,称为路径的起点;v_k=v,称为路径的终点。如果u=v,称该路径是闭的,反之则称为开的;如果v_1,...,v_k两两不等,则称之为简单路径(Simple path,注意,u=v是允许的)。轨道(Track):即简单路径。

行迹(Trace):如果路径P(u,v)中边各不相同,则该路径称为uv的一条行迹。

距离(Distance): 从顶点u出发到顶点v的最短路径若存在,则此路径的长度称作从uv的距离。若从uv根本不存在路径,则记该距离为无穷(∞)。

桥(Bridge):若去掉一条边,便会使得整个图不连通,该边称为桥。

 

图存储表示

邻接矩阵(数组)存储表示,用一个矩阵来保持边的情况,<v1,v2>EMatrix[v1][v2]=Weight

邻接表存储表示,需要保存一个顺序存储的顶点表和每个顶点上的边的链接表。

前向星存储表示

有向图的十字链表存储表示

无向图的邻接多重表存储表示

 

图的遍历方法有深度优先搜索法和广度(宽度)优先搜索法。

深度优先搜索

深度优先搜索法是树的先根遍历的推广,它的基本思想是:从图G的某个顶点v0出发,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则退回到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点w,从w出发按同样的方法向前遍历,直到图中所有顶点都被访问。

 

广度优先搜索

图的广度优先搜索是树的按层次遍历的推广,它的基本思想是:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点vi1,vi2,…, vi t,并均标记已访问过,然后再按照vi1,vi2,…, vi t的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。

 

最小生成树 (带权图的最小树生成)

有向图的拓扑排序

环和树

连通性表

Warshall算法

最短路径问题

Dijkstra算法

 

Kruskal算法:

不停地循环,每一次都寻找两个顶点,这两个顶点不在同一个真子集里,且边上的权值最小。

把找到的这两个顶点联合起来。

初始时,每个顶点各自属于自己的子集合,共n个子集合。

每一步操作,都会将两个子集合融合成一个,进而减少一个子集合。

结束时,所有的顶点都在同一个子集合里,这个子集合就是最小生成树。

 


数据结构-图之基本概念

标签:

原文地址:http://my.oschina.net/u/660460/blog/466406

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!