我尝试用负面请求询问知识库。因此,在解决之前,补码(此处为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与爱德华的配偶,得不到答案,并认为这是假的。
这种请求有什么问题,因为我不知道我的实现是否存在错误,或者是否可能无法执行此操作(假设...)。
感谢您的帮助!