バトルシップのゲーム理論

バトルシップマインスイーパーのようなゲームで昔からあるボードゲームです。映画バトルシップのモトネタになりました。
ルールは説明するよりプレイしたほうが早いんでこちらを。
http://www.sousakuba.com/flash-games/battleship-game.html

例えば単純化して3x3のマスに1x2の駆逐艦だけを置く場合を考えます。置き方は以下の12通り。

□■□ □□□ □□□ □□□
□■□ □■□ □■■ ■■□
□□□ □■□ □□□ □□□

■■□ □■■ □□■ □□□ □□□ □□□ □□□ ■□□
□□□ □□□ □□■ □□■ □□□ □□□ ■□□ ■□□
□□□ □□□ □□□ □□■ □■■ ■■□ ■□□ □□□

これをランダムに選んだ場合、初手で真ん中を攻撃すると当たる配置は上の4通りで、当たる確率は4/12=1/3。角を攻撃すると当たる確率は2/12=1/6。角の間だと3/12=1/4。真ん中を攻撃するのがよさそうに見えます。
では相手が真ん中を攻撃すると知っていてその裏をかきたい場合、真ん中を避けて下の8通りからだけ選んで、それを相手も知っている場合は、相手は外側を攻撃します。その場合当たる確率は1/4。さっきより置く側が若干有利です。

さらに置く側は裏をかいて、上の4通りを確率p/4ずつ、下の8通りを確率(1-p)/8ずつでランダムに選ぶとします。
攻撃側は(1)真ん中を攻撃すると当たる確率はp、(2)角を攻撃すると当たる確率(1-p)/4、(3)角と角の間のマスだと確率(1-p)/4+p/4=1/4で当たることになります。(2)より(3)のほうが常に大きいので(1)か(3)かということになります。
どちらが大きいか考えると、p<1/4の場合は(3)を攻撃、p>1/4の場合は(1)を攻撃すればいいということになります。
置く側はこの確率を下げたい。それにはp≦1/4であればよくて、1/4で当たることになります。改善はなし。

と、ここまでは初手のみを考えた場合ですが、二箇所に当てるのにかかるターン数を最小にしようと思うと、真ん中は当たる確率大きいけど次に仕留めるのに最悪4ターンかかってしまうのに対し、角で当たった場合は最悪でも2ターンで終わるので、そのあたりも考える必要があります。

ごちゃごちゃと計算すると置く側は12通りを完全にランダムに1/12の確率で選べば、相手が仕留めるまでのターンの期待値を一番大きくできることが分かります。これがもっと複雑な場合でも成り立つのか、つまり単純素朴に何も考えずに船を配置していけば相手が一番困る、のかどうか。なんとなく最大エントロピーとかの概念で証明できるような気もしますが、たとえば上の例で駆逐艦を二隻に増やしたらもうそれだけで計算が爆発しちゃうんでよくわかりません。
1x3の船を置く場合は計算が簡単で成り立つことは確認しました。

まずは、
Conjecture1: 攻撃側は各ターンで得られる情報エントロピーの期待値を最大にするようなマスを選べばターン数の期待値が最小になる
あたりを証明できれば。

3x3の場合の戦略

□1□
2□3
□4□

1,2,3,4の順に当たるまで攻撃。

A*C
□B□
□□□

トドメをさせる確率はAとCで(1-p)/2、Bがp。よってp>1/3ならBACの順に攻撃、p<1/3ならACBの順に攻撃。
置く側はp=1/3にすれば最適。

ランダムに置く方法

たとえば長さ5の空母をランダムにどこかに置いて、空いてる場所に長さ4の船を置いて、、という方法では完全にランダムにはなりません!空母が真ん中にある配置はそれが邪魔になって他の船を置く場合の数が減るけど、端に空母を置く場合は邪魔にならないので場合の数が増えます。最初に空母を置く場合は他の全ての船を置く場合の数を数え上げて、それに比例した確率でマスを選ばないといけないのです。しかしそれは計算量が爆発して困難。
別の方法として、重なっても気にしないで全ての船をランダムに配置し、一箇所でも重なっていたらやり直し、という方法ならば効率は悪いけど実際のゲーム程度の船の密度ならなんとかなります。

情報量

既に攻撃したN箇所が当たりか外れか分かっている状況でその情報に矛盾しない全ての配置を考えてそれらの確率の和が1になるように規格化してエントロピーを計算すると、全ての船を沈めた状態ではこれが0になってる状態。したがっていかに早くこれを0にするか、という問題になりますが、各ターンでのエントロピーの減少を最大化する戦略が必ずしも最速とは限らない。2手、3手まとめた場合のエントロピー減少を最小にするという方法も考えられる。逆にこのエントロピーの初期値を最大にするには全ての状態を等確率で選べばいい。