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

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

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

プログラミング言語では,論理を表現するために制御構文か論理式を使います。ところで,その制御構文や論理式は正しいのでしょうか。どうやって正しいことを確かめればよいのでしょうか。

今回は論理式の作り方と,その確認方法のひとつ,「真理値表から論理式をつくる」を紹介します。真理値表をつくることで,もれなくだぶりなく場合を尽くして状態を記述しますから,正しく論理を表現できているかどうかの確認になります。正しさを確認した表から式を立てるわけですから,少々不格好ですが,論理式の正しさ・確実さを保証することが出来ます。

たとえていえば,真理値表による論理式の作成は,マニュアルに従って作るプレハブ住宅です。決まった方法で,決まった道具を使って組み立てれば,だれでも一応住むことが出来る住宅を作れます。形は不格好でも,目的を果たすものを作ることが出来る,ということが大切です。

それでは学習を始めましょう。

図17.1 先ずは必要な要件を満たせば良し

図17.1 先ずは必要な要件を満たせば良し

真理値表から論理式をつくる

ある命題をプログラムに書き表したいが,その命題がいくつもの条件の絡み合ったもので,困っているとしましょう。もし,その命題を「こういうときは真,こういうときは偽」と表現できるならば真理値表を作ることができます。真理値表を作ることができれば,次に学ぶ方法で論理式をたてることができます。論理式がたてば,正しく動作するプログラムを作ることが出来ます。これは極めて機械的な作業で,小難しい理屈や計算はありません。誰にでもマスターできるシンプルな方法です。

もし,命題が十分にシンプルならば,いきなり論理式を立てることができます。例えば,「条件Aと条件Bがどちらも成り立つとき,論理値Zの値を真にする。」という命題を論理式の形にしたいとします。これは大変シンプルですから,すぐさま次の式をたてることができます。

しかし,例えば「条件A,B,Cの三つのうち少なくともひとつが真の時に論理値Zを真とする。」といった場合はどうでしょう。いきなり式を立てることもできますが,その式が正しいかどうか確認する術がありません。

そんなときは,条件の取り得る状態を全て列挙し,真理値表をつくり,その真理値表を元に論理式をたてるのです。たてた式と真理値表の対応を確認することで,式の正しさを確かめることができます。

それでは具体的に手順を示します。次の命題の表す論理式を,真理値表を用いてたてましょう。

命題:「条件A,B,Cのうち,一つでも真なら論理値Zは真である。」

先ず,考えられる全ての場合を表の形にしましょう。

表17.1 全ての場合を列挙する

ABCZ
000 
001 
010 
011 
100 
101 
110 
111 

これでA,B,Cの取り得る全ての場合を列挙しました。3桁の2進数を0から7までカウントアップしていると見なせば,もれ・ダブりのないことが確認できます。次にそれぞれの行(横の並び)のA,B,Cについて,一つでも真(1)があれば,その行のZの値に1を書き入れましょう。すると,次のようになります。

表17.2 ひとつでも真ならZ は真

ABCZ
0000
0011
0101
0111
1001
1011
1101
1111

著者プロフィール

平田敦(ひらたあつし)

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

コメント

コメントの記入