You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于迭代加深深度优先搜索(IDDFS)空间复杂度的疑问

迭代加深深度优先搜索(IDDFS)空间复杂度疑问解析
  • 核心结论先明确:IDDFS的空间复杂度确实是O(bd)(部分资料也会简化表述为O(d),本质逻辑一致),绝非O(b^d),根源在于它的运行机制:
    • IDDFS是多次执行独立的深度受限DFS,每一轮的深度限制从1开始逐步递增。每一轮DFS结束后,该轮占用的栈空间会被完全释放,才会启动下一轮更深的搜索。
  • 针对你提到的图示疑问:
    • 当算法处理节点C及其子节点时,节点B的子节点不在内存中。处理B分支是上一轮(更浅深度限制)的DFS操作,那一轮结束后栈已清空,当前轮是重新从根节点出发遍历C的分支,此时内存里仅保留根到当前节点(C或其子节点)的一条路径。
    • 图示里的涂黑节点是所有被访问过的节点的总记录,不是同一时刻存在于内存中的节点。每一轮DFS只会在内存中维护当前的搜索路径,不会同时持有多个分支的节点。
  • 关于最坏情况的空间复杂度:
    • 哪怕目标节点在最深层(比如你说的G节点),IDDFS在搜索时也只会在内存中保存当前的一条搜索路径,路径长度为当前深度限制d,每个节点最多关联b个子节点的指针/引用,但整体空间开销是线性的O(bd),而非指数级的O(b^d)——后者是广度优先搜索(BFS)的空间复杂度,因为BFS需要同时保存同一层的所有节点。

内容的提问来源于stack exchange,提问作者Crocs123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:37:19