DFS入门

来源:互联网 发布:茉莉苞茶软化宫颈 知乎 编辑:程序博客网 时间:2024/05/22 13:18



这两天刚刚接触DFS,做了相关的三个题,感触良多,写篇博客,加深印象。

DFS即为深度搜索,是图论题中寻找通路或者寻找图中某部分连通块的惯用手段。

在图中访问完某个点后,以递归的方式访问该点附近未访问过的定点(以标记的方法判断是否访问过)。

DFS又分回溯型和不回溯型。

回溯型用于寻找多个单元格组成的连通块,若不连通则不标记;或者在寻找通路时,如果走到的这个单元格无法进一步运动了,则回溯到上一步,该单元格取消标记。

不回溯型仅用于标记,只要满足条件都可标记,可用于寻找连通块(单个单元格也算作连通块时)。

DFS的递归算法在应用时是套模板的。

模板:

//布尔型数组Visited[]初始化成falsevoid DFS(Vetex v){    Visited[v] = true;    for each w adjacent to v// 伪代码,即寻找与v有关的点w, adjacent仅表示题目中的两点间连通的条件。        if (!Visited[w])            DFS(w);}

原创粉丝点击