prolog中的操作语义
我的问题很简单,我明白我必须做什么,但似乎我无法表达我的理解。如何根据与非门规则编写谓词来定义异或或或非门 例如:prolog中的操作语义,prolog,Prolog,我的问题很简单,我明白我必须做什么,但似乎我无法表达我的理解。如何根据与非门规则编写谓词来定义异或或或非门 例如: nand(t,t,f). nand(t,f,t). nand(f,t,t). nand(f,f,t). 上面是nand门的真值表。现在,如果我想在Prolog中使用上述术语定义XOR门,例如,我需要询问Prolog关于XOR(X,Y,Z)的问题,它会给我三个可能的答案,我应该如何构建谓词来定义它 谢谢困难的部分是设计与非门的表达式。假设我们信任:那么解决方案可能是 xor(A,B
nand(t,t,f).
nand(t,f,t).
nand(f,t,t).
nand(f,f,t).
上面是nand门的真值表。现在,如果我想在Prolog中使用上述术语定义XOR门,例如,我需要询问Prolog关于XOR(X,Y,Z)的问题,它会给我三个可能的答案,我应该如何构建谓词来定义它
谢谢困难的部分是设计与非门的表达式。假设我们信任:那么解决方案可能是
xor(A,B,C) :-
nand(A,B,O1),
nand(A,O1,O21),
nand(B,O1,O22),
nand(O21,O22,C).
测试:
困难的部分是设计与非门的表达式。假设我们信任:那么解决方案可能是
xor(A,B,C) :-
nand(A,B,O1),
nand(A,O1,O21),
nand(B,O1,O22),
nand(O21,O22,C).
测试:
看看@capepolic给出的答案。您只需要首先使用布尔逻辑,根据给定的操作写出(或“连接”)所需的操作。他演示了如何从NAND输入获取XOR。如果您想要NOR,您将再次使用布尔逻辑。NAND不是(A和B)。
也不是(A或B)
。使用逻辑规则,如非(A或B)
相当于(非A)和(非B)
。如何从NAND获得而不是?简单:非A=NAND(A,A)
。从这里开始做一些工作,找出或(a,B,C)
。说清楚一点,我在之前的评论中没有写Prolog语句。它们只是逻辑陈述。但是,如果你想一想,这些信息应该足以帮助你解决问题。请参阅@capelical给出的答案。您只需要首先使用布尔逻辑,根据给定的操作写出(或“连接”)所需的操作。他演示了如何从NAND输入获取XOR。如果您想要NOR,您将再次使用布尔逻辑。NAND不是(A和B)
。也不是(A或B)
。使用逻辑规则,如非(A或B)
相当于(非A)和(非B)
。如何从NAND获得而不是?简单:非A=NAND(A,A)
。从这里开始做一些工作,找出或(a,B,C)
。说清楚一点,我在之前的评论中没有写Prolog语句。它们只是逻辑陈述。但是,如果你想一想,这些信息应该足以帮助你解决问题。