フワリズミとブール代数
掛け算問題をあつかったフワリズミとツルカメという記事で,アル・フワリズミのあみだした代数を使うと,抽象化によって問題の解法が楽になるということをちょっと書いたが,本題は掛け算の順序なので,この点についてはあまり詳しくは紹介しなかった。本稿ではここを踏み込んで解説しよう。前の記事では掛け算が主眼だったので,「フワリズミ掛け算」などと書いたが,ここではもっと対象を広げて,解法そのものを「代数的解法」と「塵劫記解法」と呼ぶことにしよう。「 塵劫記」とは江戸時代の数学「和算」のベストセラー教科書で,実はツルカメ算に限らず,旅人残や植木算などの,われわれが小学校でならう算数の解法はここから来ている。 「鶴と亀の総数が 6」というのと「x + y = 6」というのは,内容的にはそれほど変わらないし,実際の計算の難易度も代数的解法と塵劫記解法で,そんなに違わないではないか,という疑問に答えるために,代数的解法と塵劫記解法で著しく差が出る例をみてみよう。しかも,この例はわれわれに親しみのある四則演算ではなく,論理演算という特殊な代数なので,代数的解法の抽象化がどうなされるかの紹介にもなっている。
ということで,ブール代数の紹介を書こうと思ったのだが,「ブール代数」で検索するとたくさんでてくるので,自分に合ったのを参考にしてください。ざくっというといくつかの文章の組み合わせの正誤を,個々の文章の正誤から代数的計算で判断するという手順である。上で「文章」,「正誤」という言葉をつかったが,学術用語では「命題」,「真偽」と言うので,以下ではそれを使おう。
「命題」とは正確には真偽がはっきりしている言明のことである。たとえば「日本と陸続きの外国がある」というのははっきり偽であるので命題だが,「日本は広い」というのは立場や状況で変わってくるので命題ではない。そこで,「日本と陸続きの外国がある」(命題 A としよう,これは偽)と「広島県と愛媛県は陸続きである」(命題 B。意外なことにこれは真)を組み合わせた命題を考えると,これの真偽は機械的に決まる。組み合わせ方にはいくつかのパターンがあるが,たとえば「A と B が同時に成立する」(「A かつ B」という言い回しを使う)というのは「日本と陸続きの国があり,かつ広島県と愛媛県は陸続きである」という命題になる。これは日本には陸続きの国がないので,偽である。 ここで重要なのは「A かつ B」が偽であるというのは,日本とか愛媛県とかを考えなくても,A か B のどれか一方,もしくは両方が偽であれば,いつも成り立つということである。さらに「A か B の片方,または両方がなりたつ」(「A または B」)は B が真であるから真である。ということは A,B 個々の命題の真偽を知っていれば,自動的に真偽がわかるということだ。つまり,A の真偽を a,B の真偽を b とすれば,a, b をインプットすると,組み合わせた命題の真偽をアウトプットしてくれる手順が存在するわけである。
数学の世界ではデータをインプットすると,それを加工して欲しい結果をアウトプットしてくれるものを関数と呼ぶ。つまり,関数 f(a, b) が定義できるということである。ここで,a,b 及び f は,整数や実数などの数ではなく,「真」と「偽」という2つの値のどちらかである。しかし,インプットからアウトプットが一意にきまるというところは,整数や実数の関数と同じなので,この「真」,「偽」も数の一種とみなし,「かつ」とか「または」で命題を組み合わせるのを演算の一種としてあつかうことができる。
そこで,「真」,「偽」をそれぞれ数字の 1 と 0 であらわし,f(x, b) を掛け算や足し算などの2項演算に対応させる。たとえば,「A かつ B」は f(a, b) = a × b とする。こう決めずに「偽」を 1 にしたり,「かつ」を足し算にしたりしても正しい結果が得られるように演算規則を定義してやればいいのだが,こうしておくと演算規則が既存の四則演算に近いものになり,わかりやすいのである。そうすると「日本と陸続きの国があり,かつ広島県と愛媛県は陸続きである」という命題は a × b = 0 × 1 = 0 となり,機械的計算で真偽がわかる。
演算規則の全体は,たとえばここに出ている。そして,このページの例は代数的解法の優位性を示すいい例になっている。このページの中程にある「ある人物について、A、B、C の3人は…」から始まる問題を「C は名前のほうが正しいとすると…」などと具体的に推論していくと,これはかなり難しい問題である。しかし,その下の解法にあるように各命題を変数におきかえ,式変形することによって,単純作業で正解がわかることになる。 まとめ
塵劫記解法では問題の意味を直接検討するが,代数的解法では一旦抽象化・記号化して単純操作で問題をとく。
代数的解法を使うと機械的操作で答えが出るので,楽。
整数や実数などに対しても代数的解法は有効だが,命題の真偽のような抽象的なものにも代数操作(ブール代数)を定義することができる。
複雑な論理命題に対してブール代数は威力を発揮する。
(2024/04/6 初稿)