見出し画像

If-Thenルールの問題

渡辺博芳(帝京大学)

 2007年度大学入試センター試験科目「情報関係基礎」本試験の第2問を解説します.この問題も井手先生による記事「じゃんけんをプログラミングするよ」で触れられていた,放送大学の辰己丈夫先生が厳選した良問セットの一つです.

 情報関係基礎の第2問は,「情報技術に必要な『ものの考え方』と応用能力を問う問題」が出題されています.高等学校学習指導要領解説情報編に「情報に関する科学的な見方・考え方を働かせ」というフレーズが出てきますが,情報関係基礎の第2問では,そうした考え方が扱われています.

問題の冒頭

 まず,冒頭を読んでみましょう.

 気象条件によって体育大会をやるかどうか決めるという話ですね.気象条件には,天気,風力,気温の3つの属性があって,それぞれの属性の取り得る値が定義されています.

問1前半 ルールを使って結果を得る

 問1の最初の段落にルールについての説明が書かれています.

 ここで扱われる「もし条件部ならば結果」という形式のルールはIf-Thenルールと呼ばれます.ルールセットの中のルールを順に調べて,条件部が成立するルールを適用するという考え方は,インターネットの経路制御におけるルーティングテーブルや,ファイアウォールで通信をフィルタリングする際のルール設定などで使われています.ルールセットの最後のルールは,「デフォルトの結果を定義しておくルール」といえますね.

 【ア】から【ウ】は,ルールセットを使って結果を求める問題です.

 表1のケース1は「天気=雨」ですから,ルール1の条件部が成立し,【ア】は「中止」となります.ケース2は「天気=晴」なのでルール1の条件部は成立せず,「風力=弱」なのでルール2の条件部も成立せず,最後のルール3が適用され,【イ】は「実施」となります.ケース3は「天気=曇」なのでルール1の条件部は成立しませんが,「風力=強」なのでルール2の条件部が成立し,【ウ】は「中止」となります.

 次にルールの条件部が少し複雑になります.

 ルールの条件部には,複数の条件を書くことができ,それらは論理積(AND)でつながれるということですね.また,ルール中の複数の条件を調べる際には,条件が成立しなければ,それより後の条件は調べないことが説明されていますが,これは後の設問で効いてきます.

 【エ】は,ルールセットと結果が分かっているときに,気象条件がどうだったのかを問う問題です.

 表2のケース1ではルール1の条件部が成立しないので,「実施」となるためには,ルール2の条件部が成立する必要があります.ルール2の最初の条件は成立するので,2番目と3番目の条件が成り立てばよいわけです.つまり,【エ】はルール2の記述と同じ「風力=弱,気温=高」となります.

問1後半 結果を得るまでの効率を考える

 次にルールの条件を調べる回数に着目しています.

 情報の分野では,正しい解を求める方法が分かるだけでなく,その方法は効率が良いのか,悪いのかが興味の対象となります.それで,この手数のような指標を調べたくなるのです.

 表2のケース4を調べる際,最初にルール1の条件「天気=晴」を調べて,まず手数は1回です.次に,ルール2の最初の条件「天気=曇」を調べて手数は2回となります.この条件も成立しないので,ルール3で結果を得ます.ルール3は手数には含めないので,【オ】は2となります.

 次に【カ】ですが,【エ】の解答を反映させると,ケース1は「天気=曇,風力=弱,気温=高」です.まず,ルール1の条件「天気=晴」を調べて手数は1回,次にルール2の3つの条件を調べて,結果を得るので手数は4回,つまり【カ】は4です.ケース1はルール2で結果を得るので,【カ】はルール1とルール2の条件の数の合計4となるという考え方で解くこともできます.

問2前半 具体的事例からルールセットを作る

 さて.問2に進みます.問1ではルールセットを適用して結果を求めていましたが,問2では結果が分かっている事例からルールセットを作ります.

 この問題の気象条件は,天気3通り,風力2通り,気温2通りなので,気象条件は全部で,3×2×2=12通りあります.表3には12のケースがありますから,これで全部です.これらを正しく「実施」と「中止」に分類するルールセットを作ります.

 図3のルールの結果の部分を見ると,ルール1からルール3で「実施」である条件を記述して,それらが成立しない場合は,ルール4で「中止」とすることが分かります.ルール1からルール3は天気の条件が異なりますから,各ルールの天気の条件が成立するケースについて正しく分類すればよいですね.

 ルール1の天気の条件が成立するのはケースaからケース2で,これらの中で「実施」となるのはケースaのみです.ルール1の条件部はケースaの気象条件と同じになっていますね.

 次にルール2の天気の条件が成立するのはケースbからケース5で.これらの中で「実施」となるのはケースbとケース4の2つがあります.ケースbとケース4は,風力が異なり,気温が同じですから,「天気=曇,気温=低」という条件部にすれば,ケースbとケース4の両方で条件は成立します.したがって,【キ】は「気温=低」です.ルール2は2つの具体的事例を一般化(抽象化)した表現であると捉えることができます.抽象化も情報の大切な考え方の一つです.

 ルール3の天気の条件が成立するのはケース6からケース9で,これらのうちケース8だけが「実施」ですので,ルール3の条件部はケース8の条件と同じになり,クは「風力=弱,気温=低」となります.

 ここで,ルールセット3の手数を考えます.

 まず,ケースaはルール1で結果が求められるので,ルール1の条件部の数3がケースaの結果を得るための手数になります.つまり,【ケ】は3です.これは表3の各ケースを調べる際の手数の中で最小ということですが,そのことを確認するのはいったん,止めておきましょう.問題を解くときにはそんな余裕はないかもしれません.

 手数が3になるケースはケースaとケースbのほかにもう一つあるということです.ケースbはルール1の最初の条件とルール2の2つの条件の合計3つの条件を調べると,ルール2が成立することが分かり,「実施」という結果を得るので,確かに手数は3です.ルール2が成立するケースはもう一つありましたね.そう,ケース4です.つまり,【コ】は4となります.

 では,手数3が最小かどうか,他のケースの手数も確認してみましょう.ケース0からケース2は,ルール1の2つ以上の条件を調べた後,ルール2とルール3の最初の条件を調べるので,手数は4以上となります.ケース3とケース5は,ルール1の最初の条件とルール2の2つの条件を調べた後,ルール3の最初の条件を調べて,ルール4で結果を得るので,手数は4です.ケース6からケース9は,ルール1の最初の条件とルール2の最初の条件を調べた後,ルール3で2つ以上の条件を調べることになるので,手数は4以上です.確かに,手数3が最小ですね.

問2後半 ルールセットの違いによる効率の違いを考える

 BさんはAさんとは違うルールセットを作ったようです.

 表4のように並べ替えると,「気温=高」のときは「中止」となることが分かります.つまり,ルールセット4のルール1の条件部 サは「気温=高」となります.「中止」となるケースは残り2つなので,ルール2とルール3がそれぞれのケースに該当するのだなと見当がつきますね.ルール2は,「気温=低,天気=晴」で「中止」となるケースを表しているので,【シ】は「風力=弱」です.また,ルール3は残ったもう一つのケースを表すので,【ス】は「天気=雨,風力=強」です(天気と風力の順番はどちらが先でもよいのですが,解答群にあるのはこれです).

 次にルールセット4の手数を考えます.

 ルール1で「気温=高」の条件を調べるだけで,結果を得るケースがあるので,手数の最小値【セ】は1回ですね.これに該当するのは表4の上半分の6個,つまり,【ソ】は6です.

 一方の手数の最大値はどうでしょうか? これは残りの手数を調べてしまうのが早そうですね.下の図に,表4の下6ケースについて手数の計算を赤字で記入しました.各ケースについて,ルール1の手数+ルール2の手数+ルール3の手数で求めています.

 最大の手数は6で,3つのケースが該当することが分かります.つまり,【タ】は6です.

 最後に最大の手数をより小さくする方法が問われています.解答群は以下のとおりです.

 ルールの順番を入れ替えても,すべてのケースを調べる場合の最大の手数は変わらないですから,1と2は外れます.ルール内の条件の順序の入れ替えも,最大の手数には影響しませんので,3も違います.実際,ケースaの「天気=晴,風力=強,気温=低」は,選択肢の1から3のいずれを行っても手数は6で,最大の手数は変わりません.

 選択肢の4はどうでしょうか? ルールの最初の条件を削除すると,調べる条件が少なくなるので,最大の手数は小さくなりますね.ルールセット4をよく見ると,ルール1の条件「気温=高」が成立しない場合は,必ず「気温=低」になるので,ルール2とルール3では「気温=低」を調べなくても結果は同じになります.つまり,【チ】は「ルール2とルール3から“気温=低”を削除することである」です.

 ただし,ルール2とルール3から“気温=低”を削除すると,ルールセット内のルールの順番を入れ替えると,正しく分類できなくなる場合があるので,注意が必要です.

まとめ

 いかがでしたか.「If-Thenルールを組み合わせたルールセット」を題材とした問題でしたが,結構,深いなぁと思いませんでしたか.

 1980年代の第2次AIブームでは「エキスパートシステム」が注目を集めました.専門家(エキスパート)から専門知識を獲得して専門家と同等な判断ができる知的なシステムを作ろうというものです.特にIf-Thenルールを使うものをプロダクションシステムと呼びます.しかし,単純にルールを蓄積すればうまくいくというわけではなく,要は「ルールセット」という言語体系でのプログラミングなので,正しい結果を得るようにするためには,デバッグも必要です.結局,システム構築の労力は,通常の手続き型言語とあまり変わらないことから,エキスパートシステムは廃れていきました.

 ただ,前にも述べたように,この問題で扱われているルールセットの考え方はさまざまな場面で使われています.どんな場面で使えるか,考えてみるのもよいでしょう.

(2022年11月30日受付)
(2023年1月20日note公開)

渡辺博芳(正会員)
帝京大学理工学部・教授.帝京大学ラーニングテクノロジー開発室・室長を兼務.情報教育,教育学習支援情報システム,教育学習における情報通信技術の活用などに興味を持つ.

情報処理学会ジュニア会員へのお誘い

小中高校生,高専生本科~専攻科1年,大学学部1~3年生の皆さんは,情報処理学会に無料で入会できます.会員になると有料記事の閲覧情報処理を学べるさまざまなイベントにお得に参加できる等のメリットがあります.ぜひ,入会をご検討ください.入会はこちらから!