DFS(深度优先搜索)是否应该在移动到下一个节点之前检查给定节点的所有子节点的目标状态?
答案 0 :(得分:1)
是(当然,如果DFS在子节点中停止)。 演示:
答案 1 :(得分:0)
我也不确定我理解你的问题,但是:
在DFS中,当您在某个节点时,您会进行目标测试。如果你不在目标,你移动到最左边的孩子,测试它,等等。让我们假设最左边的孩子不是目标而且是叶子。然后你回到它的父节点并移动到第二个最左边的节点,检查它等等。然后是第三个最左边的孩子,等等。
你不会做“检查所有孩子,然后移动到最左边的孩子”这样的事情,如果这就是你要问的。
在上面的动画中,每个节点点亮时,您会看到简短的小问号。我相信这些都是为了在目标测试发生时传达它们。
答案 2 :(得分:0)
深度优先搜索意味着:向下运行最左边的子节点 。只有当一个节点没有孩子时,你才能解除你的呼叫并尝试更高级别的另一个孩子。您可以看到这是动画,根的左侧节点不首先检查所有孩子。
您可以先检查所有孩子:这称为广度首次搜索。在提供动画Franck的情况下,这将导致根的两个孩子都被测试,然后下降最左边的孩子并检查这两个节点等等。
请记住,目标状态的节点测试在到达树中的节点后发生,但在扩展子节点之前。 (毕竟,如果我们找到目标,我们就完成了)。
注意,如果您正在寻找最便宜的(最小深度)目标路径(假设有多条此类路径可用),那么广度优先可能就是您要寻找的。 p>