迭代加深

本文介绍了迭代加深搜索算法,它是深度优先搜索(DFS)的一种优化策略。当面临大量分支且答案可能在浅层时,DFS可能会浪费时间。迭代加深通过逐步增加搜索深度限制来避免这种情况,同时减少了空间需求,类似于使用宽度优先搜索(BFS)的特性。该算法在搜索树规模较大但答案位于浅层时尤其有效。在实际应用中,需要预估答案所在的深度范围,并通过循环调整深度限制来寻找解决方案。

迭代加深搜索算法

2021.5.9修改

深度优先搜索,从一个分支进行一个深入,直至碰到边界了才会回溯
这种算法肯定具有一些不足
如果我们的分支过多,而我们的节点所处的位置很浅的话,那么就白白浪费时间,在错误的分支上找不到答案
这个时候我们就可以对我们的搜索范围进行一个限制,如果当前限制找不到答案,就把深度限制增加,重新进行搜索,这就是迭代加深思想,所谓的迭代就是说渐渐逼近答案的意思
其实个人感觉和广搜差不多
也就是说,搜索树的规模随和层次的深入增长很快,我们还可以确定答案就在浅层上,就要实现迭代加深算法
也就是说,使用这个算法之前,我们必须自己 估算一下
其实这个算法就是用bfs实现dfs

只是之前所了解的简短的知识点,然后我们重新修改一下
其实迭代加深就是说在一次无法实现的情况下,使用重复(循环)来重复一段代码得到答案

个人理解的就是说用BFS来实现DFS
DFS耗时太大
BFS空间太大
那么我们可以使用的就是的迭代加深,DFS使用的是一搜到底,BFS是事情太多,那么使用迭代加深就是用来限制深度,它给了DFS一个限制,规定了层数然后在这个范围里面尽情的遨游

void iddfs(int k,...)
{
	if(得到了合适的解)//边界
	{
		处理解
		return;
	}
	if(k==0) return ;//类似于剪枝
	for(int i=0;i<n;i++)
	{
		//处理节点
		//继续搜索
		iddfs(k-1,..)
		//有些问题需要回溯
	}
}
void depth()
{
	for(int i=1;i<=100;i++)
	{
		iddfs(i,...);//枚举限制的层数
	}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值