サンテレビで2月6日放送のコマ大数学科のお題が「紅白帽」でした。フジテレビでの放送から約一ヶ月遅れての放送になりますね。
6人一組が縦一列に並び、各々は赤帽または白帽のどちらかを確率1/2で被る。自分の帽子の色、後ろの人の帽子の色は見えない(例えば先頭の人は誰の帽子の色も分からない)。列の後ろの人から順に自分の帽子の色を「赤」または「白」と言っていき、正答数を多くしたい。
元の出題(テレビ放送での問題)は、2通りの戦略の優劣を考えるものでしたが、ここでは、一番後ろの人以外は必ず正解する方法を考察します。
一番後ろの人は、前の5人の帽子の色を見て、赤が奇数であれば「赤」、赤が偶数であれば「白」と言います。こうすると、6つの帽子(前5人は実際の帽子の色、最後尾の人は発言した色)に赤帽が必ず偶数になります。
後ろから二番目の人は、前の4人の帽子が見えます。最後尾の人の発言も分かります。よって5つの帽子が分かります。5つのうち赤が奇数なら、赤が偶数となるように「赤」と言えば良いのです。(5つのうち赤が偶数なら、赤が偶数なので「白」と言えば良いのです。)
以後も同様です。自分より前の人の帽子と、後ろの人の発言5つのうち、赤が奇数なら「赤」、赤が偶数なら「白」となります。
例えば、赤白赤赤白白の場合。最後尾の人は赤と答えます。外れですが、もともと最後尾は当てる手段は無いので仕方がありません。後ろから二番目の人は、前に赤白赤赤が見え、後ろの人が「赤」なので、赤は4つあります。したがって自分は「白」となります。後ろから三番目の人は、前に赤白赤が見え、後ろは「赤」「白」で赤3つなので、自分は「赤」となります。このようにしていけば、最後尾以外の人は必ず正答になります。
これは、情報科学のチェックディジットの考え方に応用されています。情報にルールを追加することで、入力ミス等の誤りを検出することができます。上の例は、赤を1、白を0とすれば、「1の数が偶数」という条件を付けることに相当します。
もちろん、「1の数が偶数」というルールは単純過ぎるので、1が2つ増えた場合や、0⇒1と1⇒0 が起きた場合の誤り検出はできないですね。クレジットカード番号のように重要な情報ならもっと複雑なルールが規定されているはずです。この辺は情報量とチェック用冗長データの比率の兼ね合いですね。