标签:等等 比较 already for 图论 依次 深度优先搜索 ns2 分层
图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。注意到树是一种特殊的图,所以树的遍历实际上也可以看作是一种特殊的图的遍历。图的遍历主要有两种算法:广度优先搜索(Breadth-First-Search)和深度优先搜索(Depth-First-Search)。
广度优先搜索类似于树的遍历算法中的层序遍历,它的基本思想就是:首先访问起始顶点v,接着由v出发,依次访问v的各个未访问过的邻接顶点w1,w2,…,wi,然后再依次访问w1,w2,…,wi的所有未被访问过的邻接顶点;再从这些访问过的顶点出发,再访问它们所有未被访问过的邻接顶点……依次类推,直到图中所有顶点都被访问过为止。
广度优先搜索是一种分层的查找过程,每向前走一步可能访问一批顶点,不像深度优先搜索那样有往回退的情况,因此它不是一个递归的算法。为了实现逐层的访问,算法必须借助一个辅助队列,以记录正在访问的顶点的下一层顶点。
深度优先搜索算法所遵循的搜索策略是尽可能“深”地搜索一个图,与树的遍历算法中的中序遍历类似。它的基本思想就是:首先访问图中某一起始顶点v,然后由v出发,访问与v邻接且未被访问的任一顶点w1,再访问与w1邻接且未被访问的任一顶点w2,……重复上述过程。当不能再继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接顶点未被访问过,则从该点开始继续上述搜索过程,直到图中所有顶点均被访问过为止。
最小生成树是一副连通加权无向图中一棵权值最小的生成树。
最小生成树其实是最小权重生成树的简称。
可能翻译为最小权重生成树
更容易理解一些。意思就是说在图中的每条边都加上权值,所谓权值是一种抽象的含义。可以指代一切可以量化的东西。比如说修路的费用,路程等等。然后在图中找到这样一棵树,边的权值加起来最小。并且既然是棵树,必须满足的要求是无环.
一般用两种贪心算法来找到最小生成树,分别是prim
和Kruskal
edgeTo[]
,并且保存到这些点的距离distTo[]
,且插入到优先队列distTo[]
中保存的值小则进更新,同时更新distTo[]
和优先队列.Kruskal
算法 基本上取决于优先队列的选择,以及并查集的实现,比较优的算法效率为O(ElogE)
E为图中的边数。
Prim
算法具体性能也是取决于优先队列的选择,一般来说可以达到O(ElogV)
Kruskal can have better performance if the edges can be sorted in linear time, or are already sorted.
Prim’s better if the number of edges to vertices is high.
Kruskal多用于稀疏图,Prim多用于稠密图。
没有问题
没有问题
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | - | 1 | 10 | |
第二周 | - | 2 | 20 | |
第三周 | - | 3 | 30 | |
第四周 | - | 4 | 40 | |
第五周 | - | 5 | 50 | |
第六周 | - | 6 | 60 |
计划学习时间:20小时
实际学习时间:10小时
改进情况:
20162308 2017-2018-2 《程序设计与数据结构》第11周学习总结
标签:等等 比较 already for 图论 依次 深度优先搜索 ns2 分层
原文地址:http://www.cnblogs.com/pingch/p/7859329.html