0

我尝试用否定的请求询问知识库。所以在解决之前,补码(这里是positif)被添加到算法使用的子句集中。

有了这些事实:

 Spouse(Sarah,Andrew)
 Spouse(Sophie,Edward)

和论文公理:

(∀ [a , b , c ] (  (  ( Spouse(a,c) ∧ Spouse(b,c) )  ⇒ Egal(a,b) ) ))
this axiom mean onely two people can be spouse
(∀ [a , b ] (  ( Spouse(a,b) ⇔ Spouse(b,a) )  ))
(∀ [x ] ( Egal(x,x) ))
(∀ [x , y ] (  ( Egal(x,y) ⇒ Egal(y,x) )  ))
reverse
(∀ [x , y , z ] (  (  ( Egal(x,y) ∧ Egal(y,z) )  ⇒ Egal(x,z) )  ))
transitive
(∀ [x ] (  ( Egal(x,x) ⇒ Egal(x,x) )  ))

子句变成 CNF

  (  (  ¬ Spouse(a0,c0)  ∨  ¬ Spouse(b0,c0)  )  ∨ Egal(a0,b0) ) 
  (  ¬ Spouse(a1,b1)  ∨ Spouse(b1,a1) ) 
  (  ¬ Spouse(b2,a2)  ∨ Spouse(a2,b2) ) 
 Egal(x0,x0)
  (  ¬ Egal(x1,y0)  ∨ Egal(y0,x1) ) 
  (  (  ¬ Egal(x2,y1)  ∨  ¬ Egal(y1,z0)  )  ∨ Egal(x2,z0) ) 
  (  ¬ Egal(x3,x3)  ∨ Egal(x3,x3) ) 

我可以要求

配偶(莎拉,安德鲁)或配偶(苏菲,爱德华)

这个请求 ¬Spouse(Sarah,Edward) : Sarah 不是 Edward 的配偶,不工作。

当然,我可以问配偶(莎拉,爱德华)是否是莎拉与爱德华的配偶,没有答案,认为这是错误的。

这种请求有什么问题,因为我不知道我的实现是否存在错误,或者是否不可能这样做(假设是......)。

谢谢你的帮助 !

4

0 回答 0