2021年7月8日木曜日

CODE FESTIVAL 2016 Grand Final D - Dice Game

CODE FESTIVAL 2016 Grand Final D - Dice Game

Petrの純粋戦略は22通り:

  • 赤を選ぶ
  • 青を選ぶ

touristの純粋戦略は26=642^6=64通り:

  • どの目が出ても赤と答える。
  • 2, 3, …, 6が出たら赤と答え、1が出たら青と答える。
  • どの目が出ても青と答える。

これらの混合戦略の中からお互いに最適戦略を取った時にtouristが勝つ確率を知りたい。

aij=a_{ij} = Petrが戦略iiを取ってtouristが戦略jjを取った時にtouristが勝つ確率、とすると行列(aij)(a_{ij})の見た目は

[11p11p21(p1+p2)...00q1q2q1+q2...1]\begin{bmatrix} 1 & 1-p_1 & 1-p_2 & 1-(p_1+p_2) & ... & 0 \\ 0 & q_1 & q_2 & q_1+q_2 & ... &1 \end{bmatrix}

となっている。touristの混合戦略を(x1,...,x64)(x_1, ..., x_{64})で表すとき、touristはa1,1x1+...+a1,64x64a_{1, 1}x_1 + ... + a_{1, 64}x_{64}a2,1x1+...+a2,64x64a_{2, 1}x_1 + ... + a_{2, 64}x_{64}の小さいほうを最大化したい。この問題は以下のLPになっている:

  • maximize z\textrm{maximize} \ z
  • a1,1x1+...+a1,64x64za_{1, 1}x_1 + ... + a_{1, 64}x_{64} \ge z
  • a2,1x1+...+a2,64x64za_{2, 1}x_1 + ... + a_{2, 64}x_{64} \ge z
  • x1+...+x64=1x_1+ ... + x_{64} = 1
  • x1,...x640x_1, ... x_{64} \ge 0

これは単体法などで解けるが、もう少し簡略化する。touristの戦略は「目iiが出たらyiy_iの確率で赤を選ぶ」という形で表せる。Petrが赤、青を選んだ時にtouristが勝つ確率はそれぞれp1y1+...+p6y6p_1y_1+...+p_6y_6q1(1y1)+...+q6(1y6)q_1(1-y_1)+...+q_6(1-y_6)であり、touristはこれらの小さいほうを最大化したい。この問題は以下のように書ける。

  • maximize z\textrm{maximize} \ z
  • p1y1+...+p6y6zp_1y_1+...+p_6y_6 \ge z
  • q1(1y1)+...+q6(1y6)zq_1(1-y_1)+...+q_6(1-y_6) \ge z
  • y1,...,y6[0,1]y_1, ..., y_6 \in [0, 1]

これもLPだけれど、変数が少ないので非基底変数の組み合わせを総当たりするだけでもよさそう。