您的位置:首页 > 理论基础 > 数据结构算法

基础算法(二)---数据结构之图

2017-04-30 17:13 218 查看

基本概念:

路径:一个顶点序列w1,w2,…,wN使得(wi,wi+1)属于E(边的集合),
1<=i<N


路径的长:该路径上的边数,即N-1

简单路径:这条路径上所有定点都是互异的,但第一个和最后一个可能相同

有向图中的圈:满足w1=wN且长至少为1的一条路径(如果是简单路径称为简单图)

连通:在一个无向图中,从每个定点到每个其他顶点都存在一条路径

强连通:具有连通性的有向图

弱连通:一个有向图不是强连通图,但它的基础图是连通的

完全图:每一对顶点间都存在一条的图

图的的表示:

邻接矩阵(适合稠密图):对每条边(u,v)置A[u][v]为true,否则为false,或者在其中放入该权值【邻接矩阵的空间需求为v的平方】

邻接表(图的基本表示方法):对于每一个顶点,使用一个表存放所有邻接的顶点,如果边有权,这个附加信息也可以存储在邻接表中。(邻接表本身可以被保存在任何中了的List)【邻接表的空间需求为E+V】

最短路径算法:

无权最短路径:

广度优先搜索(BFS):该方法按照层处理顶点,距离开始顶点最近的那些点首先被求值,而最远的那些顶点最后被求值(这很像对树的层序遍历)

广度优先搜索的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077097

Dijkstra算法(一种贪心算法):

Dijkstra算法的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077104

PS:贪心算法:一般分阶段求解问题,在每个阶段把出现的当做最好的处理。

最小生成树:

一个无向图的最小生成树就是由该图的那些连接G的所以顶点的边构成的树,且其总价值最低(最小生成树存在当且仅当G是连通的)

Prim算法:在每一步中都要把一个节点当做根,并往上加边,这样就把相关联的顶点家都增长的树上

Kruskal算法:连续选择权值最小的边,并且当所选的不产生圈时,就把它作为所取定的边
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构