图graph,G(V,E)=Vertex(顶点集合)+Edge(

2018-07-29  本文已影响651人  XDgbh

图的存储结构

1、邻接矩阵——重点关注顶点

2、邻接表——对邻接矩阵空间浪费的改进,重点关注顶点

3、十字链表——对有向图的邻接表进行改进,重点关注顶点

4、邻接多重表——对无向图的邻接表进行改进,重点关注边

5、边集数组——重点关注边,特别是与边的权值有关的最小生成树问题

图的遍历方式

1、深度优先搜索遍历DFS——类似于树的先序遍历,使用递归

2、广度优先搜索遍历BFS——类似于树的层序遍历,使用队列


总结分析两种遍历方式

寻找最小生成树——最小代价生成树

以最小的成本完成任务?
在一个带权值的图中,即网中,n个顶点找到n-1条边将他们连起来成为连通图,并且各边的权值总和最小,即为成本(代价)最小。类似的问题就是最小生成树问题。

1、普里姆(Prim)算法——邻接矩阵,以某顶点为起点,逐步找各顶点上最小权值的边来扩展生成树,然后将新的生成树的各个顶点往外扩展又加入一条最小权值的边,以此类推,直到所有顶点都加入得到最小生成树。算法时间复杂度O(n^2)。其中n为顶点个数。

2、克鲁斯卡尔(Kruskal)算法——边集数组,先将各条边按照权值排序,然后再依次将各边加入到最小生成树,遇到形成回路的边就舍弃,直到所有顶点都加入了。算法时间复杂度O(n*logn),其中n为边数。可见边数较少的稀疏图时,用该算法更优,但是边数很多的稠密图用普里姆算法效果更好。

上一篇 下一篇

猜你喜欢

热点阅读