(これはあなたのコメントへの直接の答えである、とサイドの方法は、あなたのメインの質問に答える。要するに、目的の簡素化表現を取得するために別の方法を使用します。)
あなたは複雑な式を持っています、 5つの論理変数のみを使用するものです。この問題では、2^5 = 32行だけの真理値表を作成する方がはるかに簡単です。あなたは結果を見て、それらを単純化された同等の表現を作るために使うことができます。これは、元の質問に必要な「法とプロパティ」は使用しませんが、ブール式を単純化するための標準的な手法です。
ちょうどあらゆる離散数学クラスで真理値表を作成する方法を学んだはずです。つまり、各行の各要素がTrue
の場合はT
、False
の場合はF
のテーブルが作成されます。行には、TsとFsのすべての可能な組み合わせが含まれています。 5つの変数の場合、これは2^5 = 32行を使用します。各行について、最初の値をAに割り当て、2番目の値をBに割り当てるなどします。次に、それらの値の式を評価し、その結果を行の最後に書き込みます。
これは手作業で行うことができますが、表現が複雑なので、それを避けることができます。以下は、目的のテーブルを出力するPython 3スクリプトです。 Pythonにはproduct()
関数があり、TsとFsのすべての可能な組み合わせを簡単に得ることに注意してください。このスクリプトでは、B[]
を使用して、ブール値を1文字のT
またはF
に変換しました。ここで
from itertools import product
"""Make a truth table for the Boolean expression
A.!B.E + !(B.C).D.!E + !(C.D).E+!A.D.!E + A.!(C.D).E + A.E + A.B.!E + !(A.C) + B.C.!D
"""
B = ('F', 'T')
print('A B C D E : Result')
print('- - - - - : ------')
for a, b, c, d, e in product((True, False), repeat=5):
print(B[a], B[b], B[c], B[d], B[e], end=' : ')
print(B[
(a and not b and e)
or (not (b and c) and d and not e)
or (not (c and d) and e)
or (not a and d and not e)
or (a and not (c and d) and e)
or (a and e)
or (a and b and not e)
or (not (a and c))
or (b and c and not d)
])
結果は以下のとおりです。
A B C D E : Result
- - - - - : ------
T T T T T : T
T T T T F : T
T T T F T : T
T T T F F : T
T T F T T : T
T T F T F : T
T T F F T : T
T T F F F : T
T F T T T : T
T F T T F : T
T F T F T : T
T F T F F : F
T F F T T : T
T F F T F : T
T F F F T : T
T F F F F : T
F T T T T : T
F T T T F : T
F T T F T : T
F T T F F : T
F T F T T : T
F T F T F : T
F T F F T : T
F T F F F : T
F F T T T : T
F F T T F : T
F F T F T : T
F F T F F : T
F F F T T : T
F F F T F : T
F F F F T : T
F F F F F : T
私たちは、結果は常にT
一行T F T F F
を除いてであることがわかります。これは、AがTrue、BがFalse、CがTrue、DとEがFalseでない限り、式が真であることを意味します。だから我々は
!(A.!B.C.!D.!E)
にドモルガンの法則の簡単な使用を(あなたの表記を使用して)自分の表現を簡素化することができ、通常のフォームにこれを変更します。
!A + B + !C + D + E
あなたが望んでいたものです。
「法と財産」を使用する必要がありますか?この場合、32行しかない真理値表を作成する方がはるかに簡単です。最終的な式が正しい場合、表は1つの例外を除いてすべてのTruesで終了します。それと同等の表現を作るのは簡単です。 –
はい@RoryDaulton、私はこの長い表現を簡素化するために単純化のすべてのステップを記述する必要があります。さて、真理値表をどうすればいいのですか?どの表現のために?変数へのインプットは何でしょうか?その真理値表から単純化された表現がどのように生成されますか? –