广度优先分辨率算法

时间:2012-12-22 15:37:36

标签: logic computer-science unification

我想实现一种解析算法,该算法在解析候选子句时尝试获取空集。

我希望算法以广度优先的顺序解析候选父子句。但是,我有点困惑:

让S成为知识库中所有条款的结合和目标条款的否定

当我们尝试用S再次解决S中的候选条款时,我们得到S'

作为算法的第二步,我们是否应该尝试用S'来解析S和S'或S'? 它应该如何进行?

例如;

假设知识库+负。目标集包含一组子句,如

p(a,b)^ q(z),~p(z,b)^ ~q(y)((我们称这个集合为S)

当我们在集合S上运行解析算法时,我们得到如下条款:

q(a)^ ~p(z,b)(我们称这个集合为S')

现在,如果我们必须采用BFS策略,我们是否应该首先找到第一个父项在S中的解析器,第二个在S'中?或者尝试检查父母都来自S'的解决方案?

在某些示例中,当您首先使用S'和S'检查解决方案时,您将获得解决方案。但是,当你继续检查一对集合(S,S')(S,(S,S'))时,你会得到另一种导致空子句的方法。那么,哪个订单确实对应于BFS?

提前致谢

1 个答案:

答案 0 :(得分:1)

Here it is stated that:

首先计算所有第一级解析,然后计算第二级解析, 等等。第一级解决方案是基集中两个子句之间的解决方案;一个我 级别解决方案是最深的父级是第(i-1)级解决方案。

here:

  • 0级条款是原始公理和目标的否定
  • 等级k子句是从两个子句计算的解析,其中一个必须来自等级k-1而另一个来自任何早期等级。

我对这些陈述的意思和我的评论如下:

  • 0级包含原始条款和否定目标。设为X.
  • 1级包含(X,X)的分辨率,这是唯一可能的候选者。设为Y.
  • 第2级包含(Y,X)和(Y,Y)的分辨率。

等等。

我的解释适用于第二个陈述。实际上它会给出与第一个相同的结果,除了你将在每个级别解析相同的集合是不必要的。广度优先策略已经非常低效,错误的方法会使情况变得更糟。

我希望这能澄清你的问题。