IDA* 算法

IDA*算法是A*算法在深度优先搜索中的迭代加深应用,用于降低时间复杂度。通过限制搜索深度maxdep,避免在无解或解深的区域无限递归。估价函数f(n)=g(n)+h(n),其中g(n)表示实际步数,h(n)是未来步数的理想估计。与A*的主要区别在于IDA*结合了迭代加深策略。选择合适的估价函数至关重要,否则优化效果有限。举例说明,最佳情况是每次黑白棋子交换都能直接到达目标位置。
摘要由CSDN通过智能技术生成

IDA*算法是在A*算法的迭代加深

A*算法主要用在bfs中,IDA*算法主要用在dfs中

先来看一道IDA*的例题

 前置知识1:迭代加深

定义: 每次限定一个maxdep最大深度,使搜索树的深度不超过maxdep

for(int maxdep=1;maxdep<=题目中给的最大步数;maxdep++){
	dfs(0,maxdep);//0为出入函数中当前步数,maxdep为传入的最大深度。
	if(success)break;//如果搜索成功则会在dfs函数中将success赋值为1。
}

使用范围:

1.在有一定的限制条件时使用(例如本题中“如果能在15步以内(包括15步)到达目标状态,则输出步数,否则输出−1。“)。

2.题目中说输出所以解中的任何一组解。

为什么能够降低时间复杂度:

我们可能会在一个没有解(或解很深的地方无限递归然而题目中要求输出任何的一组解),所以我们限制一个深度,让它去遍历更多的分支&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值