ブール代数
数学において、集合や命題を考えるとき、両者には実は同一の性質・法則が成り立ってい
ることに気がつく。
例 ド・モルガンの法則によれば、2つの集合 A,B に対して、
が成り立つ。このことと同様の事実が、2つの命題 p,q についても、成り立つ。
¬(p∨q)=(¬p)∧(¬q) ¬(p∧q)=(¬p)∨(¬q)
この事実もまた、ド・モルガンの法則と呼ばれる。(参考:数学の論理)
ブール(Boole 1815〜1864)は、このような類似性を一般化して、次のようなブール代数を
考案した。
集合 B には、異なる2つの要素 0、1 が含まれ、さらに、a+b , a*b ,a’ のような演算
が定義されているものとする。
任意の a、b、c ∈ B に対して、次の法則が成り立つとき、B は、ブール代数と呼ばれる。
(1)・・・交換律 a+b=b+a a*b=b*a
(2)・・・分配律 a+(b*c)=(a+b)*(a+c) a*(b+c)=(a*b)+(a*c)
(3)・・・同一律 a+0=a a*1=a
(4)・・・補元律 a+a’=1 a*a’=0
(注) 2つの要素 0、1 は、普通それぞれ、最小元、最大元と呼ばれる。また、+は和、*は
積にそれぞれ相当するが、差や商に相当するものはない。
ブール代数の代表的な例 B={0、1} とし、演算を次のように定義する。
このとき、B は、ブール代数になる。
これは、デジタル計算機の内部で行われている演算そのものである。
ところで、「1」を、命題が真であること、「0」を、命題が偽であることと読みかえれば、上の
演算表は、
「+」という演算は、「または」を、
「*」という演算は、「かつ」を、
「’」という演算は、「〜でない」という論理を表していると解釈することもできる。
このブール代数は、推理問題を手際よく解く方法として利用される。
例 今、1つの事柄について、2つの矛盾した証言があるとする。
ある人は、「その事柄は、Aであり、Bである。」といい、
また、別な人は、「その事柄は、Bであり、Cである。」といった。
2人とも1つは正しいことをいい、1つは間違ったことをいっているものとする。
このとき、明らかに、Bが正しい事柄であるが、ブール代数を用いると、次のような機械的
な計算で、「正しい事柄はBである」ということが分かる。
条件から、A*B=0、B*C=0、A*C=0 である。また、A+B=1、B+C=1
なので、
(A+B)*(B+C)=1 が成り立つ。交換律と分配律と同一律を用いて、
(A+B)*(B+C)=(B+A)*(B+C)=B+A*C=B+0=B なので、B=1
となる。
したがって、Bが正しい事柄である。
上記の例は、ブール代数の使い方を例示するものとして、自明な場合を想定したが、次の
場合はどうだろうか?多分、「エッ?」という人が多いのではないかと思う。これに対しても、
ブール代数の知識があれば、鮮やかに問題を解決することができる。
例 ある人物について、A、B、C の3人は、次のように証言した。
A:「たしか、名前は、大場さんといい、年は、35歳」
B:「たしか、名前は、小塚さんといい、年は、30歳」
C:「たしか、名前は、大場さんではなく、年は、40歳」
3人とも、名前、年齢のどちらかは正しいことをいい、どちらかは間違ったことを言っているも
のとする。さて、ある人物の名前と年齢は、なんであろうか?
(解) a=「名前は、大場さん」、b=「名前は、小塚さん」、c=「名前は、大場さんでない」
d=「年齢は、35歳」、e=「年齢は、30歳」、f=「年齢は、40歳」 とすると、
題意より、次の各式が成り立つ。
a*d=0、b*e=0、c*f=0
a+d=1、b+e=1、c+f=1
a*b=0、a*c=0、d*e=0、e*f=0、d*f=0
このとき、
(a+d)*(b+e)=((a+d)*b)+((a+d)*e)
=(a*b)+(b*d)+(a*e)+(d*e)
=0+(b*d)+(a*e)+0
=(b*d)+(a*e)
であるので、
(b*d)+(a*e)=1
が成り立つ。
よって、さらに、
(c+f)*((b*d)+(a*e))=((c+f)*(b*d))+((c+f)*(a*e))
=(b*c*d)+(b*d*f)+(a*c*e)+(a*e*f)
=(b*c*d)+(b*0)+(0*e)+(a*0)
=(b*c*d)+0+0+0
=b*c*d
であるので、
b*c*d=1
が成り立つ。
したがって、b、c、d が、正しい事柄であることが分かり、
ある人物の名前は、「小塚さん」であり、年齢は、「35歳」ということになる。
このように、ブール代数は、ちょっと見た目にはすごく複雑に見えるような問題を解くのに役
立つ。
(参考文献:Seymour Lipschutz 著 成嶋 弘 監訳 離散数学 (オーム社)
J.A.H.ハンター J.S.マダチー 著 田中 勇 訳
数学レクリエーション(白揚社))