首页 理论教育 用逻辑推理寻找陷阱和

用逻辑推理寻找陷阱和

时间:2022-02-11 理论教育 版权反馈
【摘要】:它知道[1, 1]不包含陷阱或者wumpus;即P1,1和W1,1。这要用两个部分来表示。完成这件事情的一个方法是说明对于任意两个方格,必定有一个不存在wumpus。图7.19 用命题逻辑来辨别陷阱、wumpus和安全方格的一个wumpus世界智能体。在wumpus世界中,假设经过10 000次翻转,寻找模型的过程出现的失败总是与不可满足性相一致,所以很可能错误不能归因于不完备性。这些超出了命题逻辑的表达能力。

7.7.1 用逻辑推理寻找陷阱和wumpus

让我们从可以对陷阱、wumpus 和安全方格进行逻辑推理的智能体开始。该智能体有一个陈述wumpus世界的“物理规则”的知识库。它知道[1, 1]不包含陷阱或者wumpus;即¬P1,1和¬W1,1。对于每个方格[x, y],它都知道一个描述微风如何出现的语句:


对于每个方格[x, y],它知道一个描述臭气如何出现的语句:

最后,它知道恰恰存在一只 wumpus。这要用两个部分来表示。首先,我们需要假定至少存在一只wumpus:

W1,1∨W1,2∨…∨W4,3∨W4,4

然后,我们需要说明至多只存在一只wumpus。完成这件事情的一个方法是说明对于任意两个方格,必定有一个不存在wumpus。如果存在n个方格,我们将得到n(n − 1) / 2个语句,诸如¬W1,1∨¬W1,2。那么,对于一个4 × 4的世界,我们开始的时候总共有155个语句,包含64个各不相同的符号。

图7.19所示的智能体程序把每个新的微风和臭气感知信息TELL给它的知识库。(它还更新一些普通程序变量以记录它目前的位置以及曾经到过的地方——稍后会对这方面进行更多讨论)。接着,程序在边缘方格——也就是与已经访问过的方格相邻的方格——中选择下一个需要查看的位置。边缘方格[i, j]是可证明为安全的,如果语句(¬Pi, j∧¬Wi, j)被知识库蕴涵。次好的东西是可能安全的方格,对于这些方格智能体不能证明那里有一个陷阱或者wumpus——也就是,(Pi,j∨Wi,j)没有被蕴涵。


图7.19 用命题逻辑来辨别陷阱、wumpus和安全方格的一个wumpus世界智能体。子程序ROUTE-PROBLEM构造了一个搜索问题,它的解为从[x,y]引向[i,j]并且只经过先前访问过的方格的一个行动序列

ASK中的蕴涵演算可以用任何本章前面部分描述过的方法实现。TT-ENTAILS?(图7.10)显然不实用,由于它需要对264行进行枚举。DPLL(图7.16)可在几毫秒内完成所需推理,主要归功于单元传播启发式。也可以采用WALKSAT,需要留意对于不完备性的通常告诫。在wumpus世界中,假设经过10 000次翻转,寻找模型的过程出现的失败总是与不可满足性相一致,所以很可能错误不能归因于不完备性。

PL-WUMPUS-AGENT在小规模的wumpus 世界中运行非常良好。然而,对于智能体的知识库有某些令人深感不满意的事情。KB包含以公式(7.1)和(7.2)中给出的形式表示的每个方格的“物理规则”语句。环境规模越大,要求初始知识库就越大。我们更愿意只存在两个语句,说明在所有方格中微风和臭气如何出现。这些超出了命题逻辑的表达能力。在下一章中,我们将看到一种更有表达能力的逻辑语言,可以很容易地表示这些语句。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈