我想实现一种解析算法,该算法在解析候选子句时尝试获取空集。
我希望算法以广度优先的顺序解析候选父子句。但是,我有点困惑:
让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?
提前致谢
答案 0 :(得分:1)
首先计算所有第一级解析,然后计算第二级解析, 等等。第一级解决方案是基集中两个子句之间的解决方案;一个我 级别解决方案是最深的父级是第(i-1)级解决方案。
我对这些陈述的意思和我的评论如下:
等等。
我的解释适用于第二个陈述。实际上它会给出与第一个相同的结果,除了你将在每个级别解析相同的集合是不必要的。广度优先策略已经非常低效,错误的方法会使情况变得更糟。
我希望这能澄清你的问题。