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

来源:互联网 发布:业余网络写手 编辑:程序博客网 时间:2024/05/21 11:07

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算法都是应用的这一思想。


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




原创粉丝点击