关于深度优先和广度优先的问题

Depth-First Search和Breadth-First Search,即深度优先和广度优先是图的两种搜索的方法。其实与其说是方法,不如说是两种思想。下面我们就来介绍这两种思想。


1) Depth-First Search

深度优先是指在图的查找中,对每一个分支深入到不能再深入为止,如果到达了终点,则选择另一个未访问的顶点,继续查找,知道每个节点都被访问到,并且每个节点只能被访问一次。

基本算法:

a) 访问顶点V

b) 依次从V的未访问的节点出发,遍历所有与V在相通路径上的节点。

c) 选取还未被访问的结点,重复上面的过程。


下图就是深度优先的一个遍历过程。




2) Breadth-First Search

广度优先是分层次的展开检查图中的所有结点,知道找到最终的结果。也就是说首先搜索与s距离为k的所有结点,然后在搜索与s距离k+1的所有结点。算法通过已找到的节点和未找到的节点的边界向外扩展。Dijkstra算法以及prim算法都是应用的这一思想。


下图就是广度优先的一个遍历过程。




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/changyuanchn/article/details/17102037
个人分类: 数据结构
上一篇最小生成树
下一篇欧拉回路(Euler Circuits)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭