盤面の中身は、読まなくて大丈夫です。勝ち・負け・引き分けは図にもう書いてあるので、あとは数を下から上へ持ち上げるだけ。気をつけることは1つだけです。
難易度 ★★(当サイトの目安)── プログラムは無い。手順が読めれば、木の段ごとに最大と最小を取るだけ。4段階の決め方は科目B 最短合格の戦略にあります。
出題
読み慣れない言い方があっても大丈夫です。次の節にまとめてあります。
出典:基本情報技術者試験 科目B サンプル問題 問15
次の記述中の a と b に入れる正しい答えの組合せを,解答群の中から選べ。
三目並べにおいて自分が勝利する可能性が最も高い手を決定する。次の手順で,ゲームの状態遷移を木構造として表現し,根以外の各節の評価値を求める。その結果,根の子の中で最も評価値が高い手を,最も勝利する可能性が高い手とする。自分が選択した手を○で表し,相手が選択した手を×で表す。
〔手順〕
(1) 現在の盤面の状態を根とし,勝敗がつくか,引き分けとなるまでの考えられる全ての手を木構造で表現する。
(2) 葉の状態を次のように評価する。
① 自分が勝ちの場合は 10 / ② 自分が負けの場合は-10 / ③ 引き分けの場合は 0
(3) 葉以外の節の評価値は,その節の全ての子の評価値を基に決定する。
① 自分の手番の節である場合,子の評価値で最大の評価値を節の評価値とする。
② 相手の手番の節である場合,子の評価値で最小の評価値を節の評価値とする。
ゲームが図の最上部にある根の状態のとき,自分が選択できる手は三つある。そのうち A が指す子の評価値は a であり,B が指す子の評価値は b である。
図 三目並べの状態遷移(正典 p25 の図。作図は当サイト)
解答群
a |
b |
|
|---|---|---|
| ア | 0 | -10 |
| イ | 0 | 0 |
| ウ | 10 | -10 |
| エ | 10 | 0 |
※ 〔手順〕の①②③ は、原本では1つずつ改行して並んでいます(字句は変えていません)。
答えだけ先に見る
正解は ア(a = 0、b = -10)です。
この問題に出てくる言葉
木の言い方 ── 読み方の早見表をひらく
| 言葉 | この問題では |
|---|---|
| 節(せつ) | 木のひとつひとつの点。この問題では盤面1枚が1つの節です |
| 根(ね) | いちばん上の節。いまの盤面のことです |
| 子 | ある節から矢印が出ている先の節。そこから1手指した後の盤面です |
| 葉(は) | 子を持たない節。この問題では勝敗が決まったか、引き分けになった盤面で、図に「勝ち」「負け」「引き分け」と書いてあります |
| 評価値 | その盤面が自分にとってどれくらい良いかを表す数。葉は 10/-10/0、葉以外は〔手順〕(3)で決めます |
| 手番(てばん) | その盤面で次に指すのが誰か。図では段ごとに「自分の手番」「相手の手番」と書いてあります |
盤面は読まなくていい
盤面が11枚も並んでいて身構えますが、a と b を出すのに、盤面の中身は一度も使いません。勝ち・負け・引き分けとその評価値は、図の葉にもう書いてあるからです。
a は A の枝だけ、b は B の枝だけで決まります。中央の子(勝ち 10)はどちらにも関係しないので、A と B の枝に分けて、葉から上へ見ていきます。
葉から1段ずつ上げて a と b を決める
使うのは〔手順〕の(3)だけです。上の出題から抜き出しておきます。
〔手順〕(3) 葉以外の節の評価値は,その節の全ての子の評価値を基に決定する。
① 自分の手番の節である場合,子の評価値で最大の評価値を節の評価値とする。
② 相手の手番の節である場合,子の評価値で最小の評価値を節の評価値とする。
※ 上の〔手順〕からの抜粋です(1字も変えていません)。
葉から上へ、1段ずつ持ち上げる
点線の箱=図に書いてある葉の値 / 琥珀の箱=〔手順〕(3)で決めた値。箱の下段が決め方です。下の箱から順に読みます。節の名前 A-1・A-2・B-1・B-2 は当サイトで付けたもの
A の枝 ── a が決まる
A(= a)相手の手番
② 子の最小0A-1 の 0 と A-2 の 10
→ 小さいほう
A-1自分の手番
① 子の最大0子は 0 の1つだけ
葉(引き分け)0
A-2自分の手番
① 子の最大10子は 10 の1つだけ
葉(勝ち)10
B の枝 ── b が決まる
B(= b)相手の手番
② 子の最小-10B-1 の -10 と B-2 の 0
→ 小さいほう
B-1(葉・負け)-10子はいない
図の値のまま
B-2自分の手番
① 子の最大0子は 0 の1つだけ
葉(引き分け)0
解答群を見る
a = 0、b = -10 ── ア です。
答え合わせ
ア a = 0、b = -10
外れる3つは、どれも相手の手番の節で、最小ではなく最大をとった形です。A で最大をとると 10(ウ・エ)、B で最大をとると 0(イ・エ)。つまり4つの選択肢は、相手の手番で最小をとったかどうかの組合せになっています。
相手の手番で最小をとるのは、相手は自分にとっていちばん都合の悪い手を選ぶ、と考えるからです。A の先には自分が勝てる道(10)もありますが、そこへ進むかどうかを決めるのは相手。数えられるのは、相手が選ぶほう(0)だけです。
なお、この問題では問われていませんが、根の子は A = 0、中央 = 10、B = -10。最も勝利する可能性が高い手は中央で、実際そこに進めばその場で自分の勝ちです。
次に読む
この問題でどこに手間取ったかで、行き先が変わります。
この記事で引用した資料
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

