犯人当てゲーム

これ、難しいですね。
ルールについておさらい。

3カテゴリーのカード群がある。それぞれのカテゴリーのカードは、プレイヤー人数プラス1種類のカード一枚ずつで構成されている。そのカードの内容は、全てのプレイヤーに開示され、共通情報として扱われる。
各プレイヤーに、それぞれのカテゴリーのカードを一枚ずつ伏せて配る。余ったカードは伏せて場に置く。プレイヤーの目的は、この伏せられたカードが何かを推理し、他のプレイヤーよりも早く当てて発表することである。
それぞれのプレイヤーに与えられる情報は、自分の手札である。少なくとも、自分が持っているカードは他人は持っていないし、伏せられたカードでないことも確実である。
推理の方法はカード名の宣言とそれに対する申告による。
プレイヤーは自分のターンに、それぞれのカテゴリーから一枚ずつ、三種類のカードを選んでその名前を宣言する(種類、枚数は必ず守らなければならない)。それに対し、全てのプレイヤーは宣言されたカードを持っているかどうかを、正直に申告しなければならない。ただし、申告の際には宣言されたどのカードを持っているかは言わなくていい。ただ、「持っている」と言えばいい。
こうして情報を集めることで、伏せられたカードが何であるかを推測することができる。
補足として、このゲームで各ターンに得られる情報はほぼ均一であり、プレイヤー同士の技量が近しい場合には、同時に回答に達する場合がある。その場合は、宣言をしたプレイヤーから次のターンのプレイヤーへ、順繰りに発表権利を持つとする。なお、発表権は一人一度しかない。
誰かが発表し、それが正しければゲームは終了。発表したプレイヤーが勝者となる。全員が発表権利を失い誰も正答できなければ、ゲームはドローとなる。

このゲームは二つのアルゴリズムが必要になる。
一つは、手札や宣言と申告によって得られた情報から、カードの所在を確定するアルゴリズム。もう一つは、現在のカードの所在から最も効果的な宣言を計算するアルゴリズムである。

前者からいこう。
下記は手札を配られた直後のカード所在可能性マトリクスの一例である。

カード所在可能性マトリクス
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー1 1-1 0 1 1 1 1 1
1-2 0 1 1 1 1 1
1-3 1 0 0 0 0 0 確(圭一)
1-4 0 1 1 1 1 1
1-5 0 1 1 1 1 1
1-6 0 1 1 1 1 1
確定情報 確(1-3)
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー2 2-1 0 1 1 1 1 1
2-2 0 1 1 1 1 1
2-3 0 1 1 1 1 1
2-4 0 1 1 1 1 1
2-5 0 1 1 1 1 1
2-6 1 0 0 0 0 0 確(圭一)
確定情報 確(2-6)
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー3 3-1 0 1 1 1 1 1
3-2 1 0 0 0 0 0 確(圭一)
3-3 0 1 1 1 1 1
3-4 0 1 1 1 1 1
3-5 0 1 1 1 1 1
3-6 0 1 1 1 1 1
確定情報 確(3-2)
凡例:

1=持っているもしくは、持っている可能性がある。

0=持っていない。
悟史は伏せ札の便宜上の名前
まず、手札を配られることで、自分の手札が確定する。この場合圭一は、1-3、2-6、3-2を配られたと言う想定である。
自分の手札が確定したことで、まず、1-3の欄、圭一以外(悟史を含む)全員がこのカードを持っていないことになる。圭一以外の全員を0にして、右端に圭一の名を刻む。
また、縦に見た場合、圭一は当然他のカードを持っていないので、1-3以外は0になる。
これを三つのカテゴリーそれぞれに繰り返した結果が上記のマトリクスだ。
ここであるプレイヤーが宣言をする。たとえば、1-1、2-1、3-1と。それに対し、魅音梨花が「持っている」と申告したとする。すると、申告しなかったキャラクター(悟史は除く)は今宣言されたカードを持っていないことが確定する。マトリクスにすると下記のようになる。
カード所在可能性マトリクス
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー1 1-1 0 0 1 0 1 1
1-2 0 1 1 1 1 1
1-3 1 0 0 0 0 0 確(圭一)
1-4 0 1 1 1 1 1
1-5 0 1 1 1 1 1
1-6 0 1 1 1 1 1
確定情報 確(1-3)
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー2 2-1 0 0 1 0 1 1
2-2 0 1 1 1 1 1
2-3 0 1 1 1 1 1
2-4 0 1 1 1 1 1
2-5 0 1 1 1 1 1
2-6 1 0 0 0 0 0 確(圭一)
確定情報 確(2-6)
カード種類 圭一 レナ 魅音 沙都子 梨花 (悟史) 確定情報
カテゴリー3 3-1 0 0 1 0 1 1
3-2 1 0 0 0 0 0 確(圭一)
3-3 0 1 1 1 1 1
3-4 0 1 1 1 1 1
3-5 0 1 1 1 1 1
3-6 0 1 1 1 1 1
確定情報 確(3-2)
そして、確定情報の再計算を行う。縦横どちらにでも、1が一つだけになったならば、その行なり列なりは、情報が確定するのである。
なお、このマトリクスは各プレイヤーが独自に持つものである。
また、この申告の内容によっては、一気にマトリクスが変動する場合がある。

誰も申告しなかった場合
これによって、悟史の手持ちカードが一気に確定する。これが出た場合は、宣言を行った人物の確定勝利になる。
一人が申告した場合
場合分けできる。宣言されたカードをそのたった一人が全部持っている場合と、一部を悟史と共有している場合である。宣言されたカードのどれもが悟史が持っていないことが確定していれば、それは申告した一人がその三枚のカードを持っていることになる。確定されるので、マトリクスが大きく動く。
二人が申告した場合
場合分けが多すぎてほとんど手がかりにならない。デフォルトの処理「申告しなかったキャラクターは持っていない」を適応するのみ。
三人が申告した場合
これによって、悟史の手持ちカードは今宣言されたカードのどれ

もないことが確定する。マトリクスがかなり進展する。

さて、ここまでくると、今度はどのように問題を出せばいいかが見えてくる。
ゲームの目的は悟史の手持ちカードを当てることなので、

  • 誰も申告しない組み合わせの宣言を模索する(一発狙い)
  • 三人が申告する組み合わせの宣言を複数模索する(外堀を埋めていく=消去法)
  • プレイヤー一人の誰かを選んで確定させるような宣言を模索する。(下準備)

の三つの戦術が考えられる。
どちらの戦術を行使するかでキャラクターに個性を与えられるだろう。
魅音最強説をとるなら、魅音は三つの戦術をその時々で使い分け(得られる選択肢が最も少ないもの)、沙都子、梨花、レナの順で戦術を行使すると言うのはどうだろうか。

さて、実際にどのように決定するかを考えてみる。

一発狙いの場合
悟史の持つカードは何かで決まる。悟史の持つ可能性のある組み合わせを潰して行くやり方になるだろう。宣言を試した組み合わせを記憶して、一度行った宣言はしないようにしなければならない。
三人申告を目指す場合
悟史が持っている可能性のあるカードで、他のプレイヤーも持っている可能性のあるカードの組み合わせを宣言する。宣言を試した組み合わせを記憶して、一度行った宣言はしないようにしなければならない。
確定を目指す場合
特定のカードに着目して、それが確定するように狙う。
ランダム
確定していないカードの中で、以前に宣言したことがない組み合わせを試す。