はじめMath! Javaでコンピュータ数学

第17回 真理値表から論理式をつくる[前編]

この記事を読むのに必要な時間:およそ 2 分

こうして真理値表が出来上がりました。出来上がった真理値表のうち,Zが真になる場合の論理和をとります。それが求める論理式です。1行目は全て偽(0)なので除外して,その他全てが当てはまる場合です。

2行目を例にとると,Aが偽,Bも偽,Cのみが真です。このような場合を

と書きます。真の場合は論理記号をそのまま書き,偽の場合は否定の記号( ̄)を付けるのです。

3行目はAが偽,Bが真,Cが偽です。この場合は

となります。以下同様に,Zが真の場合について全て書き表していき,最後に全ての場合の論理和をとります。すると次の式が出来上がります。

ずいぶん長い式になりましたが⁠,確かにこれが求める式です。頭の中でだけ考えていると,なかなかこの式にたどり着くことはないでしょう。

ところで,ひらめきの良い人は,条件文が次の式を表していることに気がつくかもしれません。

そうです。これこそ最もシンプルでエレガントな形の式です。先ほど真理値表から作った式と全く同じ意味の式なのです。びっくりするほど違いますね。命題の意味をよく考えれば,いきなりこの式をつくることもできます。ひらめきは大切ですし,すばらしいものです。しかし,だれもがいつもひらめきに満ち,経験豊かであるとは限りません。それならば,仮に出来上がった式が不格好であったり,無駄があったとしても,確実に目的通りの式が出来るのならば良いではないですか。

二つの式のうち,どちらが好ましいかと言えば,後者が圧倒的です。コンピュータに処理させるならばステップ数が劇的に違います。数多く繰り返して計算させることを考えるならば,相当速度に違いが出ます。実際に,論理を取り扱う場合には,どのエンジニアも先ず真理値表を作り,この連載でやがて学ぶ論理代数の公式や図式解法を用いてエレガントな論理式を導きます。ここで学んでいるのはその手順のスタート地点,前半戦だと言えます。

真理値表を作ってプログラムを組み立てることで,いつ,どんな場合に,どのようにプログラムを実行するのか,間違いなく書き表すことが出来ます。また,これまで,何気なく組んでいたプログラムが,たくさんのif文でこんがらがっているとしましょう。そんなとき,いったん真理値表を使って論理式をたてたうえで,if文の少ないプログラムに整理できれば,ここで学んだ甲斐があるというものです。

※)
実はこのような場合に,もっと短い式をいきなり作るために,Zが偽の場合に注目して式を作る方法があります。しかし,説明をシンプルにするため,またある程度読者の皆さんに手を動かしていただくために,あえて本文では紹介しません。しかし,どのくらい簡単に結論に至ることができるかをお見せしましょう。Zが偽の時に注目します。それはひとつだけですから,という式をたてることができます。この式を,本連載で数回先に学ぶ論理代数の公式,ド・モルガンの定理を使って変換すればが導かれます。

今回はここまで

真理値表から論理式を作る方法を紹介しました。この方法を知っていれば,少々式の形が長くなったりしますが,確実に目的通りの論理式を立てることができます。次回の演習でしっかりその練習をしてください。

今回のまとめ

  • 真理値表を作ることが出来れば,確実に論理式をたてることができます。

著者プロフィール

平田敦(ひらたあつし)

地方都市の公立工業高等学校教諭。趣味はプログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。