图论入门三:图的遍历

图的遍历:

图建构好后,针对具体的问题,我们常常需要通盘的读取图中的信息,包括顶点(vertex)和边(edge),以及它们之间的关系。这种读取图中所有信息的方法就是图的遍历(traversal),也称为搜索(search),就是从图中某个顶点出发,沿着一些边访问图中所有的顶点,且使每个顶点仅被访问一次。遍历是很多图论算法的基础。

(1)图和树的遍历 

树的遍历是从根节点开始的,由于每个节点都只有一个双亲,因此其遍历还是相对简单的。而图的遍历则可以选择从任意一个节点开始,同时图中每一个节点都可能与其余的节点相邻接,不可避免的会多次访问同一个节点,因此在遍历的过程中需要将已访问的节点打上标记,以避免重复。 

(2)遍历的方法 

遍历有2个著名的方法:深度优先搜索(DFS, depth first search)和广度优先搜索(BFS, breadth first search)。

深度优先和广度优先分别使用了stack和queue两种数据结构,得到了不同的遍历顺序。

(3)遍历的时间复杂度 

关于图遍历的时间复杂度。对于一个图来说,不管我们使用什么样的图存储结构和搜索方法,该图中的各个顶点(vertex)和各条边(edge)都是必须要搜索到的。因此,遍历一个图的时间复杂度至少是O(V+E)级别的,V,E分别表示顶点和边的数量。 
当然,这里的遍历指的是用来访问图中每个节点的。但有时候,我们其实只需要寻找某个特定节点或某一类节点,对于这种搜索,我们也可以通过设计高效的算法来大大提高搜索效率。

【传送门】

图论入门一:图的基本概念

图论入门二:树的基本概念

图论入门三:图的遍历

图论入门四:BFS与DFS

图论入门五:邻接表与邻接矩阵

图论入门六:哥尼斯堡七桥问题

图论入门七:最小生成树

图论入门八:Kruskal算法

图论入门九:Prim算法

 

 

你可能感兴趣的:(理论)