首页 百科知识 解决推理框架问题

解决推理框架问题

时间:2022-08-23 百科知识 版权反馈
【摘要】:后继状态公理解决了表示框架问题,却没有解决推理框架问题。有一条线索暗示这是可能的,因为简单方法的规模是O;而当我们明确知道在每一个时间步执行哪个行动时,为什么推理框架问题要取决于行动的数量A呢?为公理建立索引,以便一旦我们知道Fi是一个行动的结果时,我们能够在O时间内找到关于Fi的公理。

10.3.4 解决推理框架问题

后继状态公理解决了表示框架问题,却没有解决推理框架问题。考虑一个t步的规划p,St= Result(p, S0)。为了确定哪些流在St下为真,我们需要在t个时间步中的每一步上考虑F条框架公理的每一条。因为公理的平均大小为AE / F,这就给了我们带来O(AEt)的推理工作。其中的多数不过是将没有变化的流复制到下一个情景中。

为了解决推理框架问题,我们有两种可能性。第一,我们可以放弃情景演算,发明一种书写公理的新形式。比如流演算(fluent calculas)的形式化方法已经完成了这项工作。第二,我们可以改变推理机制来更有效地处理框架公理。有一条线索暗示这是可能的,因为简单方法的规模是O(AEt);而当我们明确知道在每一个时间步执行哪个行动时,为什么推理框架问题要取决于行动的数量A呢?想知道如何改善情况,我们先来看一下框架公理的格式:

(Fi(Result(a, s)) ⇔ (a = A1∨a = A2…)

∨ Fi(s) ∧ (a ≠ A3) ∧ (a ≠ A4) … )

也就是说,每条公理提到了一些可以使流为真的行动和一些可以使流为假的行动。通过引入表示行动a使Fi为真的谓词PosEffect(a, Fi),以及表示行动a使Fi为假的谓词NegEffect(a, Fi),我们可以将其形式化。然后我们就可以将前面的公理模式重写为:

(Fi(Result(a, s)) ⇔ PosEffect(a, Fi) ∨ [Fi(s) ∧ ¬NegEffect(a, Fi)])

PosEffect(A1, Fi)

PosEffect(A2, Fi)

NegEffect(A3, Fi)

NegEffect(A4, Fi)

这是否能自动完成,取决于框架公理的确切格式。为了形成一个使用类似这样的公理进行有效推论的过程,我们需要做3件事:

(1)为PosEffect和NegEffect谓词建立基于它们首要参数的索引,这样当我们已知在时间t发生了一个行动时,我们可以在O(1)时间内找到它的结果。

(2)为公理建立索引,以便一旦我们知道Fi是一个行动的结果时,我们能够在O(1)时间内找到关于Fi的公理。那么你甚至根本无需考虑关于不是该行动结果的流的公理。

(3)将每个情景表示为前一个情景加上少量变化。这样如果这一步到下一步没有变化,我们就不需要做任何工作。在老方法里面我们需要完成O(F)的工作量,根据前面的断言Fi(s)为每个流Fi(Result(a, s))生成一条断言。

这样,在每个时间步,我们观察当前行动,取得它的结果,然后更新一下真值流的集合。每一个时间步的平均更新量为E,从而总复杂度为O(Et)。这构成了推理框架问题的一个解。

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

我要反馈