逻辑学中的大象

我有以下事实(el代表大象):

el(Sam)    el(Clyde)    el(Oscar)pink(Sam)gray(Clyde)  likes(Clyde, Oscar)pink(Oscar)Vgray(Oscar)    likes(Oscar, Sam)

现在,我想证明:某个灰色大象喜欢某个粉色大象,这可以翻译为:(存在 x)(el(x) ∧ gray(x) ∧ (存在 y) (el(y) ∧ pink(y) ∧ likes(x, y))。因此,我们需要取其否定并将其解析到基础中,以便达到空集(?)。

否定是(将使用 ~ 表示否定):

~el(x) V ~gray(x) V ~el(y) V ~pink(y) V ~likes(x, y)

依我看,我应该为 xy 分配值(Sam, Clyde 或 Oscar)并将后面的语句插入基础中,以“消除”已经存在的事实。

我的尝试:

我设 x = Clyde, y = Oscar,这给了我:

~el(Clyde) V ~gray(Clyde) V ~el(Oscar) V ~pink(Oscar) V ~likes(Clyde, Oscar)

如果我将其放入基础中,会“消除”它们的“配对”,基础变为:

el(Sam)pink(Sam)gray(Oscar)    likes(Oscar, Sam)

现在怎么办?我们的大象用完了!

理想情况下,我希望设 x' = Oscar, y' = Sam,这样我会得到:

~el(Oscar) V ~gray(Oscar) V ~el(Sam) V ~pink(Sam) V ~likes(Oscar, Sam)

这将进入基础并消除一切,但 ~el(Oscar) 仍然存在!我应该如何继续?


后续问题:

基础:

abc V d

然后我将 ~a/\~b/\~c/\~d 放入基础中。基础中的一切都会以相同的方式消失吗?我是说,V 运算符不会影响事情吗?


回答:

你可以有这样的内容:

 el(sam). el(clyde). el(oscar). pink(sam). grey(clyde). likes(clyde,oscar). likes(oscar,sam). canbe(oscar,grey). canbe(oscar,pink). gelephant_likes_pelephant(GE,PE):-   grey(GE),el(GE),   pink(PE),el(PE),   likes(GE,PE). gelephant_likes_pelephant(GE,PE):-   canbe(GE,grey),el(GE),   pink(PE),el(PE),   likes(GE,PE).gelephant_likes_pelephant(GE,PE):-  grey(GE),el(GE),  canbe(PE,pink),el(PE),  likes(GE,PE).

问题:

?- gelephant_likes_pelephant(GE,PE).GE = oscar,PE = sam ;GE = clyde,PE = oscar.

你必须小心如何使用像 canbe/2 这样的谓词。因为它表示 oscar 可以是灰色或粉色。然后我的查询是在问哪些灰色大象喜欢哪些粉色大象,答案可以解释为:如果 oscar 是灰色大象,那么 oscar 喜欢 sam,或者如果 clyde 喜欢 oscar,那么 oscar 是粉色大象。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注