在递归最佳优先搜索算法中,带有 max 的语句有什么作用?

人工智能 搜索 诺维格罗素 最佳优先搜索
2021-11-07 22:12:52

我正在阅读 Stuart 和 Norvig 的《人工智能:一种现代方法》一书。我无法理解递归最佳优先搜索 (RBFS) 算法的步骤。

这是伪代码。

在此处输入图像描述

线路s.f <- max(s.g + s.h, node.f)有什么作用?

这是RBFS的执行图。

在此处输入图像描述

1个回答

这可能更容易理解为collapse/restore 宏这个想法是先前探索的状态被折叠并且仅存储来自子树的最小 f 成本。这表示折叠的子树中的最佳未展开状态。

在恢复折叠树的部分时,恢复节点的 f-cost 可以是原始 f-cost (g+h),也可以是存储的 f-cost(如果它更大)。通过取最大值,代码确保恢复的状态至少维持先前最佳未扩展状态的成本。(如果 g+h 成本更大,那么我们知道该状态之前没有扩展,并且之前不是边缘成本最小的边缘状态。)

链接的论文给出了几个例子,在搜索过程中使用了类似的想法。