2016-09-16 14 views
-1

私は関数f(a,b,c,d) = b*(a+~c) + d*(a+~b)を持っています。ここでは*(AND),+(OR),~(NOT)です。分配法則を使ってブール式の簡略化

、私が取得:、ba + b~c + da + d~b

が、答えはab + b~c + d~bです。

daを取り除く方法はわかりません。

私は取得するためにaを分解しようとしました:a(b+d) + b~c + d~b、しかしそれは私をどこにもつかまえません。

+2

プログラミングに関する質問ではないので、この質問をトピックとしてクローズすることにしました。代わりに[math.se]のような別の[se]サイトに適しています。 –

+1

私はプログラミングやコーディングではなくブール論理に関する話題なので、この質問を議論の対象外としています。 – Pang

+1

私はプログラミングに関してではなく、ブール論理に関する話題なので、この質問を議論の対象外とすることに投票しました。 –

答えて

1

各パラメータの可能なすべての値を持つテーブルを作成することができます。[1,0]と両方の式を計算します。それぞれの場合と同じ結果に評価すると、それらが同等であることがわかるので、adを削除することができます。

私は実証し、あなたが練習を完了してもらおう:

enter image description here

1

なぜba + b~c + da + d~b = ab + b~c + d~bそこで質問です。

理由は簡単です。daは、左側に何も追加しません。

それが希望した場合、da = trueab + b~c + d~b = false場合があるだろう。しかし、その後、da = trued = truea = true場合。 bも、その後trueab = trueであり、我々は右側に何も添加していないしている場合。 b = falseの場合は、d~b = trueのいずれかです。

ディストリビューションなどのテーブルや変換ルールを使用するのは問題ありません。しかし、なぜ2つの式が等しいのかを常に理解することをお勧めします。