dfs和bfs

广度优先搜索(Bradth - First - Search)和深度优先搜索(Depth - First - Search)是基于图的两个搜索算法。

 

广度优先搜索

广度优先搜索,类似于地毯式搜索,我们从起始顶点开始,先访问最近一层的所有顶点,然后次近一层的所有顶点,这样一层层地访问下去,一旦访问到目标顶点就立即停下

 

我们可以发现,广度优先搜索的解,是最短路径,这是因为,广度优先是一层一层地搜索的,一层的所有顶点都访问完才开始下一层,所以这就相当于每一层都把所有解法写出来了,相当于一种随时都在进行的隐式比较,一旦有一个解出来时,就相当于这一条路,比同一层的其他路更快,也就是最短路径。

 

深度优先算法

深度优先算法使用的是回溯算法,即从起始顶点开始按照给定的向前一步试探,如果能走就走下去,不能就退回上一步,继续试探别的顶点。

 

由于深度优先算法不是一层全部都访问完才进入下一层,所以没有进行隐式比较,得出来的路径未必就是最短路径。

 

posted @ 2022-04-28 10:38  codemelo  阅读(29)  评论(0)    收藏  举报