我对搜索技术迭代加深有疑问。我的问题是,没有指定的深度限制,正常深度优先搜索和迭代深化之间有什么区别?所以我有一个带有目标节点的树,但在我的迭代深化搜索中没有指定的限制。这会输出相同的遍历序列,就好像我要进行常规的深度优先搜索一样吗?
答案 0 :(得分:1)
假设目标的深度为3(根深度为0),并且它不是一直在树的“左”侧(在深度处可以立即找到它)首次搜索(DFS))。
正常的DFS可能会花费大量的时间在深度等级4,5,6等处进行搜索,然后向上“向上”移动树,“向右”,然后最终在深度3找到目标使用Iterative Deepening,如果深度= 3时存在目标,则永远不会浪费时间在深度= 4处查看节点。这是因为Iterative Deepening首先执行深度限制为1的DFS,然后是深度为DFS的DFS限制为2,最后是深度限制为3的DFS(将找到目标并因此终止搜索)。
请注意,在此示例情况下,广度优先搜索(BrFS)也不会浪费时间深度为4,并且可能会因为没有重新执行之前已完成的某些工作而更快一些。但是需要更多的记忆。
Iterative Deepening的另一个优点是它不会卡在无限长的路径中。现在在大多数实际情况下,无论如何都无法实现无限长的路径,但这绝对是可能的。 DFS可能陷入如此无限的困境。
最后,与DFS相比,Iterative Deepening具有优势,因为它可以在终止处理时由于处理时间不足而提供更有用的结果。这在游戏的搜索算法中尤为重要(想想一下Chess引擎)。由于您明确指出在您的情况下存在目标节点,我认为这不适合您,但如果您感兴趣我可以告诉我,我也可以为此优势编写解释。