为什么我们在深度优先搜索中使用后进先出队列?

人工智能 搜索 执行 广度优先搜索 深度优先搜索
2021-10-28 12:56:01

为什么我们在深度优先搜索算法中使用后进先出 (LIFO) 队列?

在广度优先搜索算法中,我们使用先进先出(FIFO)队列,所以我很困惑。

1个回答

我们使用 LIFO 队列,即堆栈,来实现深度优先搜索算法,因为深度优先搜索总是扩展搜索树当前边界中最深的节点。

Norvig 和 Russell 在第 3.4.3 节中写道

搜索立即进行到搜索树的最深层,其中节点没有后继。随着这些节点的扩展,它们从边界被删除,因此搜索“备份”到下一个最深的节点,该节点仍有未探索的后继节点。

LIFO 队列意味着选择最近生成的节点进行扩展。这必须是最深的未扩展节点,因为它比其父节点深一个 - 反过来,当它被选中时,它是最深的未扩展节点。