不指定深度限制的迭代加深

Iterative Deepening Without Specified Depth Limit

我有一个关于搜索技术迭代深化的问题。我的问题是,没有指定深度限制的普通深度优先搜索和迭代加深有什么区别?所以我有一棵带有目标节点的树,但在我的迭代深化搜索中没有指定限制。这会输出与我进行常规深度优先搜索相同的遍历序列吗?

假设目标在深度级别 3(根在深度 = 0),并且它不在树的 "left" 侧(可以立即找到的地方)通过深度优先搜索 (DFS))。

普通的 DFS 可能会花费大量时间在 4、5、6 等深度级别进行搜索,然后再移回 "up" 树 "to the right",然后最终找到深度为 3 的目标。使用迭代深化,如果在深度 = 3 时有目标,您将永远不会浪费时间查看深度 = 4 的节点。这是因为迭代深化首先执行深度限制为 1 的 DFS,然后深度限制为 2 的 DFS,最后是深度限制为 3 的 DFS(这将找到目标并因此终止搜索)。

请注意,在此示例情况下,广度优先搜索 (BrFS) 也不会在深度为 4 时浪费时间,并且由于不重新执行之前已经完成的一些工作,可能会更快一些.不过这会占用更多内存。

Iterative Deepening的另一个优点是它不会卡在无限长的路径中。现在在大多数实际情况下,无限长的路径无论如何都不太可能,但绝对有可能。 DFS 可能会陷入这样的无限路径。

最后,与 DFS 相比,迭代深化的一个优势在于它可以在由于 运行 超出处理时间而终止时提供更有用的结果。这在玩游戏的搜索算法中尤为重要(想想国际象棋引擎)。由于您明确指定在您的情况下有一个目标节点,我认为这与您无关,但如果您感兴趣,请告诉我,我也可以写出这个优势的解释。