BFS&&DFS

本文深入探讨了两种图搜索算法——广度优先搜索(BFS)和深度优先搜索(DFS)。BFS是一种盲目搜索策略,通过队列进行层次遍历,确保找到最近的解。DFS则采用递归方式,沿着路径不断深入,直至找到目标或遍历完整个图。这两种算法在解决路径寻找、最短路径等问题时有着广泛应用。
摘要由CSDN通过智能技术生成

BFS

广度优先搜索(也称宽度优先搜索,缩写BFS)
广搜属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。类似树的按层遍历,其过程为:首先访问初始点Vi,并将其标记为已访问过,接着访问Vi的所有未被访问过可到达的邻接点Vi1、Vi2…Vit,并均标记为已访问过,然后再按照Vi1、Vi2…Vit 的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依此类推,直到图中所有和初始点Vi有路径相通的顶点都被访问过为止。

模板

void bfs(int id){
	queue<pii>q; 
	q.push(make_pair(sx[id],sy[id]));
	dis[id][sx[id]][sy[id]]=0;
	while(!q.empty()){
		int x=q.front().first,y=q.front().second;
		q.pop();  //记得 
		for(int i=0;i<4;i++){
			int xx=x+dx[i],yy=y+dy[i];   
			if(1<=xx && xx<= n && 1<=yy && yy<=m && dis[id][xx][yy]==inf && s[xx][yy]!='#'){
				dis[id][xx][yy]=dis[id][x][y]+1;
				q.push(make_pair(xx,yy));
			}
		}
	}
}

DFS

深度优先遍历图的方法是,从图中某顶点v出发:
(1)访问顶点v;
(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。

模板

void DFS() 
{
	if(  ) 
	{return;
	}
	for(inti=0;i<4;i++) 
	{
    	DFS(N+1); 
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值