7.7.2 记录位置和方向
图 7.19 的智能体程序“作弊”了,因为它记录了知识库之外的位置,而不是采用逻辑推理[14]。为了以“适当的”方式实现它,我们需要关于位置的命题。人们首先可能倾向于采用类似 L1,1这样的符号来表示智能体位于 [1, 1]。接着,初始知识库可能包括跟下面类似的语句:
我们立刻会发现,这么做并不可行。如果智能体从[1, 1] 朝右开始向前移动,知识库将同时蕴涵 L1,1 (初始位置)和L1,2(新位置)。然而这些命题不能同时为真!问题在于位置命题应该涉及两个不同的时间。我们需要用表示智能体在时刻1时位于[1,1],表示智能体在时刻2时位于[2,1],依此类推。方向和行动命题还需要依赖于时间。因此,正确的语句是:
等等。它表明建立一个完备和正确的知识库以记录wumpus世界的所有事情是相当棘手的;我们把关于这方面的完整讨论推迟到第十章。我们在此要说的是,初始知识库将包括跟前面两个示例类似的对于每个时刻t以及每个位置的语句。也就是说,对于每个时刻t以及位置[x, y],知识库包括一个如下形式的语句:
即使我们对允许的时间步设置一个上限——比如,100——我们也将以好几万条语句告终。同样会出现相同的问题,如果我们把每个新的时间步“所需的”语句添加进来的话。子句的激增使得知识库对于人而言是难以理解的,但是快速的命题求解程序依然可以轻而易举地处理4 × 4的wumpus世界(它们的上限大约是100 × 100)。下一节中,基于电路的智能体给出一个对于子句激增问题的部分解决方案,但是完整的解决方案需要等到我们在第八章中进展到一阶逻辑之后才给出。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。