从《人工智能:一种现代方法》一书中理解统一成本搜索的伪代码

人工智能 搜索 诺维格罗素 统一成本搜索 伪代码
2021-11-17 07:19:14

在 Russell & Norvig 的书“人工智能:现代方法书”(第 3 版)的第 84 页上,给出了统一成本搜索的伪代码。为了您的方便,我在这里提供了它的屏幕截图。

我无法理解突出显示的行if child.STATE is not in explored **or** frontier then

在此处输入图像描述

那不应该是 if child.STATE is not in explored **and** frontier then

这么写,好像是在暗示如果子节点已经探索过了,但是当前不在前沿,那么我们把它加到前沿,但我觉得不太对。如果它已经被探索过,那么这意味着我们之前已经找到了这个节点的最佳路径,不应该再次处理它。我的理解错了吗?

1个回答

我认为这是伪代码中缺少括号的问题 - 显然,只有在尚未探索状态时才会将状态添加到边界,所以它将是:

if not [contains(frontier, state) OR contains(explored, state)] then

这相当于您对

if not [contains(frontier, state)] AND not [contains(explored, state)] then

(根据德摩根定律

介于编程语言和自然语言之间,这是伪代码不够精确的情况。