关于深度优先搜索(DFS)的笔记

【基本含义】

深度优先搜索(DFS)是一种图遍历算法,以深度为导向,通过探索节点的所有可能路径来遍历或搜索图中所有节点。从起始节点开始,沿着一条路径不断向下搜索直到无法继续为止,然后回溯到上一个节点,选择另一条路径继续搜索,直到所有节点都被访问过为止。深搜可以使用递归或栈来实现,每个节点都会被标记为已访问,以避免重复搜索。深度优先搜索在许多应用中有广泛的用途,如判断图的连通性、寻找所有可能路径和解决迷宫问题等。需要注意的是,深度优先搜索不能保证找到最优解,而是找到一条满足条件的路径。

【深搜特性】

深搜会把一个方向的搜完,直到无路可走时才会换方向,也就是回溯

【深搜框架】

int dfs(/*状态参数表*/){
	if(/*目标状态*/){
		/*输出结果*/
		return 0;
	}
	for(/*枚举决策*/){
		/*获得新的状态*/
		if(/*状态合法*/){
			/*标记状态*/
			/*记录决策*/
			dfs(/*新的状态*/)
			/*回溯*/
		}
	}
}

【应用场景】

  1. 图的遍历:通过深度优先搜索算法,可以遍历整个图的所有节点,或者寻找特定的节点。

  2. 连通性问题:判断两个节点之间是否存在路径或者寻找两个节点之间的最短路径。

  3. 回溯问题:如八皇后问题、数独等,通过深度优先搜索算法可以遍历所有可能的解空间。

  4. 子集、排列、组合的生成:通过深度优先搜索算法可以生成所有可能的子集、排列或组合。

posted @ 2025-07-27 17:22  yangmengcheng1103  阅读(14)  评论(0)    收藏  举报