欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度优先搜索

程序员文章站 2022-03-13 22:06:56
...

深度优先搜索,简称深搜,其原理比较简单,说白了就是一条道走到黑,没有可以访问的点时,就回退,再重复上述步骤

深度优先搜索

如上图所示,可以写出其深度优先搜索遍历顺序为:1,11,12,13,10,14,8,9,2,3,7,6,4,5

这个序列是怎么来的?

首先深搜要用到一个存储结构,栈,栈的特点:先进后出

具体过程如下图所示:

深度优先搜索

12没有邻接点没有被访问过,所以12出栈,13入栈

深度优先搜索

13没有邻接点,13出栈,10,14先后入栈

深度优先搜索

14没有没有访问过的邻接点,14出栈,8,9依次入栈

深度优先搜索

此时9,8,10,11都没有没有被访问过的邻接点,所以,这些点依次出栈,1还没被访问的邻接点2入栈,依次重复                               这个过程,直到所有的点都被访问过,深度优先搜索遍历过程结束

这个过程可以用递归去实现(递归的本质就是用栈存储了数据):

大致过程代码如下:

代码实现功能为从起点开始深度优先搜索遍历,看是否能查找到终点

bool Dfs(V) 
{
	if( V 为终点)
		return true;
	if( V 为访问过的点)
		return false;
	将V标记为访问过的点;
	
	对和V相邻的每个节点U 
	{
		if( Dfs(U) == true)
			return true;
	}
	return false;
}


相关标签: 深度优先搜索

上一篇: 万圣节道具

下一篇: 178. 分数排名