ブ?ル論理

出典: フリ?百科事典『ウィキペディア(Wikipedia)』

ブ?ル論理 (ブ?ルろんり、 : Boolean logic )は、 古典論理 のひとつで、その名?は ブ?ル代? ないしその形式化を示した ジョ?ジ?ブ?ル に由?する。

リレ?などによる「スイッチング回路の理論」として1930年代に再?見され( 論理回路#?史 を?照)、間もなくコンピュ?タに不可欠な理論として?まり、今日では一般的に使われている。

本項目では、 集合代? を用いて、 集合 、ブ?ル演算、 ベン? ?理値表 などの基本的解?とブ?ル論理の?用について解?する。 ブ?ル代? の記事ではブ?ル論理の公理を?足する 代?的構造 の型を?明している。ブ?ル論理はブ?ル代?で形式化され2値の意味論を?えられた 命題論理 とみることができる。

用語 [ 編集 ]

共通部分 A AND B(紫の部分)、和集合 A OR B(色が付いている部分全?)、A XOR B(紫以外の色が付いている部分)。四角い外?は「普遍集合; universe」

X を集合としたとき:

  • (element; 要素 )とは、集合のメンバ?を意味する。これを で表す。集合の元でないものは で表す。
  • 普遍集合 (universe; 全集合 )とは、集合 X であり、1 で表される場合がある。ここで universe(通常の意味は宇宙)という言葉が使われるのは「全ての元を考慮している」ことを意味しており、必ずしも「全ての元が存在する」必要があるわけではない。
  • 空集合 (empty set, null set)とは、元を持たない集合であり、 または 0 で表される。
  • ?項演算子 (unary operator)は1つの集合に適用される。?項演算子としては論理 否定 NOT )のみがある。 補集合 をとる?きがある。
  • 二項演算子 (binary operator)は2つの集合に適用される。基本的な演算子には論理 OR )と論理 AND )がある。これらは 和集合 共通部分 をとる。これらから導出される二項演算子として XOR (排他的OR)などもある。
  • 部分集合 (subset)は で表され、集合 A の全ての元が集合 B にも含まれることを意味する。
  • ?部分集合 (proper subset)は で表され、集合 A の全ての元が集合 B にも含まれ、かつ?集合は等しくないことを意味する。
  • 上位集合 (superset)は で表され、集合 B の全ての元が集合 A にも含まれることを意味する。
  • ?上位集合 (proper superset)は で表され、集合 B の全ての元が集合 A にも含まれ、かつ?集合が等しくないことを意味する。

[ 編集 ]

30までの自然数を普遍集合とし、2の倍数の集合、3の倍数の集合、5の倍数の集合の関係を表した図
30までの自然?を普遍集合とし、2の倍?の集合、3の倍?の集合、5の倍?の集合の?係を表した?

集合 A には普遍集合の中の全ての偶?(2の倍?)が含まれ、集合 B には同じ普遍集合の中の全ての 3 の倍?が含まれるとする。そのとき、これらの集合の 共通部分 (A AND B の集合の全ての元)は、その普遍集合の中の全ての6の倍?が含まれる。

集合 A の補集合(NOT A に含まれる全ての元)は、その普遍集合の全ての奇?となる。

演算の連鎖 [ 編集 ]

たかだか2つの集合に?してブ?ル演算を行い、その演算によって形成された新たな集合と別の集合に?して新たなブ?ル演算を適用することができる。上の例で言えば、普遍集合の全ての 5 の倍?を含む集合 C を新たに定義する。ここで「集合 A AND B AND C」は、その普遍集合の全ての30の倍?を含む。記述を?純化するため、集合 A と B の共通部分を AB と記したり、6の倍?の集合を導入したりする。そうすると「集合 AB AND C」は、同?に全ての30の倍?を含む。このようなステップをさらに進めていくこともでき、この演算の結果として集合 ABC を定義することもできる。

括弧の使用 [ 編集 ]

任意個の論理積(AND)の連鎖には曖昧さは全くないが、AND と OR と NOT が組み合わされると曖昧な場合が出てくる。そのような場合に演算の順序を明確化するために括弧を使うこともある。通常、最も?側の括弧?の演算が最初に?行され、順次外側に移っていく。

論理演算の法則 [ 編集 ]

2つの二項演算子の記?を (論理積/AND/共通部分)と (論理和/OR/和集合)とし、?項演算子の記?を / ~ (論理否定/NOT/補集合)とする。また、値 0 (?/空集合)と 1 (?/普遍集合)も使用する。ブ?ル代?とブ?ル論理では以下のような法則が成り立つ。

結合法則
交換法則
吸?法則
分配法則
可補束
等冪性
有界性
0 と 1 は相補的
ド?モルガンの法則
?合

最初の3つの法則が を定義し、最初の5つの法則が ブ?ル代? を定義する。

?理値表 [ 編集 ]

0 と 1 という2つの値のみを使ったブ?ル論理で、それらの値の共通部分と和集合を ?理値表 で定義すると次のようになる:

0 1
0 0 0
1 0 1
0 1
0 0 1
1 1 1
  • 複?の入力や他のブ?ル演算を使った、もっと複?な?理値表も作成できる。
  • ?理値表は 論理? にも?用でき、0 を?、1 を?、 を AND、 を OR、¬ を NOT に?み替える。

記? [ 編集 ]

ブ?ル論理の表記に使われる記?は、目的や?術分野、あるいは文化?などによってさまざまである。まず、英?語にもとづく AND、OR、NOT といった一群がある。 ??者 技術者 は OR の代わりに +、AND の代わりに を使うことが多い(これらの演算子は他の 代?的構造 での加算や?算と性質が似ており、通常の代?に詳しい者にとっては 選言標準形 を理解しやすいため)。NOT は式の上に線を引いて表すこともある。

プログラマ は、AND を表現するのに & ( アンパサンド )、OR を表すのに | (パイプ記?)を使うことが多い。これらの記?は プログラミング言語 ビット演算 の演算子として使われていることが多い。NOT は ! ( 感嘆符 )で表されることが多く、!= などの派生もある。

自然言語でのブ?ル論理 [ 編集 ]

(ブ?ル論理に限った話ではないが)論理式をそのまま自然言語にすると、しばしば、同じ言葉の日常での意味と異なっていたり、曖昧だったりすることがあるため注意が必要である。

日本語の場合の例をいくつか?げる。自然言語の「朝食にはパンか御飯を食べることができる」の「パンか御飯」は、そのまま解?すればORだが、普通は 排他的論理和 すなわち「パンか御飯のどちらかを選ぶことができる」の意味であることが多い。曖昧な例としては「全ての輝くものが金ではない」という文は「輝くものは全て金ではない」(全否定)とも「輝くものには金でないものもある」(部分否定)とも解?できる。

?用 [ 編集 ]

ブ?リアン演算 [ 編集 ]

CG業界用語でその名も「 ブ?リアン演算 」と呼ばれているものであるが、立?などの?形を集合としてとらえる??的な手法をそのまま工?的に?用したもので、かつそのまま具?化される点で、直?的にわかりやすい?用のひとつである。

ディジタル回路設計 [ 編集 ]

ブ?ル論理は 論理回路 の設計にも使われる。その場合、0 と 1 は ディジタル回路 での ビット の異なる2つの?態を表し、 電? の高低に??させることが、現代では多い(必ずしもそうしなければならないわけではない)。回路は??を含む式で表され、??が回路の入力、式を評?した結果が回路の出力に相?する。入力と出力の??が完全に?えられれば、それをブ?ル論理の式で表現することができる。

ANDゲ?ト 、ORゲ?ト、NOTゲ?トのような基本 論理回路 だけを使うこともできるが、 NANDゲ?ト NOR ゲ?ト、 XOR ゲ?トなども組み合わせてディジタル回路を構成することができる。組み合わせ方は、 演算子の優先順位 に?って 直列や?列 に結合する。

デ?タベ?ス [ 編集 ]

デ?タベ?ス管理システム 等によるデ?タベ?スの操作は、各デ?タベ?スを集合、クエリ結果などを部分集合、デ?タベ?スに含まれる個?のデ?タを集合の要素とみなすと、ある種、集合の操作のようなものとみなすことができる。特に ?係デ?タベ?ス は、デ?タベ?スの操作が集合代?にもとづき整理?定義されているデ?タベ?スである( ?係代? (?係モデル) )。以下では、?係デ?タベ?スの代表的なクエリ言語であるSQLの具?例を示す。

SELECT 文の例を示す。

  • SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Smith' AND FIRST_NAME = 'John' ;
  • SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Smith' OR FIRST_NAME = 'John' ;
  • SELECT * FROM EMPLOYEES WHERE NOT LAST_NAME = 'Smith' ;

複?のブ?ル演算がある場合、括弧を使って演算の順序を制御することもある:

  • SELECT * FROM EMPLOYEES WHERE (NOT LAST_NAME = 'Smith') AND (FIRST_NAME = 'John' OR FIRST_NAME = 'Mary') ;

必要に?じて括弧をいくつも入れ子にすることも可能である。複?の表をブ?ル演算で組み合わせることを 結合 と呼ぶ。

?索エンジン [ 編集 ]

?索エンジン に代表される、?索を行なうネットサ?ビスでも、ブ?ル演算にもとづく?索式が使えるものがある。例として、 Google ?索のものを示す。

  • 論理積には記?を使用しない。?って、キ?ワ?ドを2つ?べた場合、論理積と解?される。
    "キ?ワ?ド1" "キ?ワ?ド2"
  • 論理和には "OR" を使用する。
    "キ?ワ?ド1" OR "キ?ワ?ド2"
  • マイナス記?で論理否定を表す(?際にはAND NOT)。
    "キ?ワ?ド1" -"キ?ワ?ド2"

カッコは使えない。

Google Scholar では "OR" を使うと排他的論理和(XOR)の操作が行われる) [ 要出典 ]

?連項目 [ 編集 ]

外部リンク [ 編集 ]