論理式( a && b )
(a
とb
の両方にブール値があります)は、たとえば!(!a || !b)
のように記述できます。これは、&&
が「不要」であることを意味しませんか?これは、all論理式が||
と!
を使用してのみ作成できることを意味しますか?
はい、他の回答が指摘したように、||
と!
で構成される演算子のセットは 機能的に完全 です。ブール変数A
とB
の間の16の可能な論理結合をすべて表現するためにそれらを使用する方法を示す、その建設的な証拠があります:
A || !A
!A || !B
!B || A
!A || B
A || B
!B
!A
!(!A || B) || !(A || !B)
!(!A || !B) || !(A || B)
A
B
!(A || B)
!(!A || B)
!(!B || A)
!(!A || !B)
!(A || !A)
NANDとNORは両方とも機能的に完全であることに注意してください(上記と同じ方法を使用して証明できます)。したがって、一連の演算子が機能的に完全であることを確認する場合NANDまたはNORを表現できます。
上記の各接続詞の Venn図 を示すグラフは次のとおりです。
[ ソース ]
あなたが説明しているのは functional completeness です。
これは、「考えられるすべての真理値表」を表現するのに十分な論理演算子のセットを記述しています。 Java演算子セット{||
、!
}で十分です。これは、「最小機能的に完全な演算子セット」セクションの下にリストされているセット{∨、¬}に対応します。
すべての真理値表のセットは、2つのブール値間の演算の結果である可能性のある4つのブール値のすべての可能なセットを意味します。ブール値には2つの可能な値があるため、24、または16、可能な真理値表。
A B | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
----+------------------------------------------------
T T | T T T T T T T T F F F F F F F F
T F | T T T T F F F F T T T T F F F F
F T | T T F F T T F F T T F F T T F F
F F | T F T F T F T F T F T F T F T F
以下は、真理値表の番号(0〜15)、それを生成する||
と!
の組み合わせ、および説明です。
Table | Operation(s) | Description
-------+----------------------------------+-------------
0 | A || !A | TRUE
1 | A || B | OR
2 | A || !B | B IMPLIES A
3 | A | A
4 | !A || B | A IMPLIES B
5 | B | B
6 | !(!A || !B) || !(A || B) | XNOR (equals)
7 | !(!A || !B) | AND
8 | !A || !B | NAND
9 | !(A || !B) || !(!A || B) | XOR
10 | !B | NOT B
11 | !(!A || B) | NOT A IMPLIES B
12 | !A | NOT A
13 | !(A || !B) | NOT B IMPLIES A
14 | !(A || B) | NOR
15 | !(A || !A) | FALSE
1つの要素セット{NAND}および{NOR}を含む、このような機能的に完全なセットは他にもたくさんあります。これらにはJavaに対応する単一の演算子がありません。
可能であれば DeMorganの法則 を読んでください。
論理的な証明への参照と同様、そこの読書で答えを見つけるでしょう。
しかし、本質的には、答えはイエスです。
EDIT:明確にするために、私のポイントは、AND式からOR式を論理的に推論できることです。その逆。論理的等価性と推論にはさらに多くの法則がありますが、これは最も適切だと思います。
EDIT 2:これは、次の式の論理的等価性を示す真理値表による証明です。
デモルガンの法則:!(!A || !B) -> A && B
_____________________________________________________ | A | B | !A | !B | !A || !B | !(!A ||!B)| A && B | --------------------------------------------- ---------- | 0 | 0 | 1 | 1 | 1 | 0 | 0 | --------------------------------------------- ---------- | 0 | 1 | 1 | 0 | 1 | 0 | 0 | ------------------------------------------- ------------ | 1 | 0 | 0 | 1 | 1 | 0 | 0 | ------------------------------------------- ------------ | 1 | 1 | 0 | 0 | 0 | 1 | 1 | _______________________________________________________
はい、ブール代数によれば、ブール関数はmintermsの合計またはmaxtermsの積として表現できます。これは正規正規形と呼ばれます。そのようなロジックを、コンピューターサイエンスで使用されるのと同じ演算子に適用できなかった理由はありません。