迭代加深
- 适用于问题递归的深度很深,但是答案深度可能很浅的情况,可以有效减少无效的搜索(即广搜空间不够,而且要找最优解时)
- 每次设置一个深度,超过深度则不搜
- 与宽搜区别:假设递归为多叉树,最小为二叉树,宽搜的空间复杂度会到达$ O(2^n) O(h) $
- 每次加深重新搜不影响复杂度原因: ,而第 $ h $ 层有 $ 2^h $ 个节点,因此不影响
cpp
bool dfs(int u,int dep);
void solve(){
int depth=1;
while(!dfs(u,depth))depth++;
}