0

私はどこから始めればよいのか分からないので、この質問があります。この混乱している表現は、それが意味をなさないので、私が共通を取ることさえできないからです。また、それは意味を持たないので、賛辞を削除することもできません(法律を使用して)。これで私を助けてください、少なくとも私は何をすべきですか?どこから始めたらいいですか?私は本当に感謝しています。法とプロパティを使用した5-varブール代数SOP式の簡略化

記号の説明私は式を書くのに使った:

! :NOTゲート

+:ORゲート

。 (ドット):ANDゲート

ブール式:!!!!!!!

A. BE +(BC).D E +(CD).E + AD E + A( !の!CD).E + AE + AB E +(AC)+ BC D

私はオンライン表現の整理を使用しているし、それは私に次のような答えを与えた:

A + B +! C + D + E

しかし、この短い表現で上記の長い表現がどのように簡略化されていますか?私は法律と財産を知っていますが、私は長いものを簡素化し始めなければならないのですか?どの用語を最初に見るべきですか?親切に誰も助けてください。

+0

「法と財産」を使用する必要がありますか?この場合、32行しかない真理値表を作成する方がはるかに簡単です。最終的な式が正しい場合、表は1つの例外を除いてすべてのTruesで終了します。それと同等の表現を作るのは簡単です。 –

+0

はい@RoryDaulton、私はこの長い表現を簡素化するために単純化のすべてのステップを記述する必要があります。さて、真理値表をどうすればいいのですか?どの表現のために?変数へのインプットは何でしょうか?その真理値表から単純化された表現がどのように生成されますか? –

答えて

1

(これはあなたのコメントへの直接の答えである、とサイドの方法は、あなたのメインの質問に答える。要するに、目的の簡素化表現を取得するために別の方法を使用します。)

あなたは複雑な式を持っています、 5つの論理変数のみを使用するものです。この問題では、2^5 = 32行だけの真理値表を作成する方がはるかに簡単です。あなたは結果を見て、それらを単純化された同等の表現を作るために使うことができます。これは、元の質問に必要な「法とプロパティ」は使用しませんが、ブール式を単純化するための標準的な手法です。

ちょうどあらゆる離散数学クラスで真理値表を作成する方法を学んだはずです。つまり、各行の各要素がTrueの場合はTFalseの場合は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 

あなたが望んでいたものです。

+0

簡単な言葉で素敵な説明をいただきありがとうございます。ええ、私は離散数学コースを学び、A +グレードで90%以上を得たので真理値表を作る方法を知っていますが、この科目であるデジタルエレクトロニクス、私は新しく、この問題を解決する方法を知らなかった。素敵な説明に感謝します。私は現在C++を勉強しているので、Pythonについては何も知らないけど、C++にもっと慣れ親しんでいるので、コードに目を通してみてください。もう一つ質問があります。 min-termsの和でこの単純化された表現(つまり、 '!A + B +!C + D + E')をどのように表現するのでしょうか? –

+0

@KhubaibKhawar:「最小条件」が何であるか分かりません。私はデジタルエレクトロニクスではなく、数学を勉強しました。最終的な表現は論理和の形になっています - それは同じことですか? –

+0

真理値表から任意のブール式の最小項を抽出することができます。 '{T、F}'の代わりに '{0、1}'を使用しますので、 '{0、1}'真理値表「1」を示す結果、その結果に対応する行の変数は、式の最小項として知られている。 –

関連する問題