2017-03-22 4 views
0

私の質問は非常に簡単で、私は何をしなければならないか理解していますが、私の理解を表すことはできません。どのようにNANDゲートのルールの観点からXORやNORのようなゲートを定義する述語を書くのですか?例えばプロローグの操作上のセマンティクス

nand(t,t,f). 
nand(t,f,t). 
nand(f,t,t). 
nand(f,f,t). 

は、上記NANDゲートの真理値表です。ここで、Prologで上記の用語を使用してXORゲートを定義したい場合、たとえばXrol(X、Y、Z)についてPrologに質問する必要がありますが、3つの可能な回答が得られます。

はあなたが

+0

@CapelliCがこれに与えた答えを参照してください。与えられた操作に関して要求された操作を書き出す(または "結びつける")ためには、ブール論理を最初に使用するだけです。彼は、NAND入力からXORを得る方法を示しました。 NORを使用したい場合は、ブール論理を再度使用します。 NANDはNOT(A AND B)です。 NORはNOT(A OR B)です。 'NOT(A OR B)'のような論理的な規則は '(NOT A)AND(NOT B)'と同等です。どのようにNANDからNOT Aを得るのですか?簡単です: 'NOT A = NAND(A、A)'。 'や(A、B、C)'を理解するためにそこからちょっとした作業をしてください。 – lurker

+0

明確にするために、私は以前のコメントにPrologのステートメントを書いていませんでした。それらは単なる論理的なステートメントです。しかし、あなたが問題を解決するには、その情報を十分に考慮する必要があります。 – lurker

答えて

2

難しい部分は、NANDゲートの用語で表現を工夫することでお願いします。我々はthis questionを信頼しましょう:次に、溶液を

xor(A,B,C) :- 
    nand(A,B,O1), 
    nand(A,O1,O21), 
    nand(B,O1,O22), 
     nand(O21,O22,C). 

テストすることができます

?- setof(X/Y/Z,xor(X,Y,Z),L). 
L = [f/f/f, f/t/t, t/f/t, t/t/f]. 
関連する問題