概要
以前の投稿でヘッズアップの場合の最適プリフロップオールイン戦略について考察したが、今回はプレイヤーが3人以上である場合のプリフロップオールイン(Push or Fold)戦略について考察しよう。教科書的な考え方としてよく知られているのはパワーナンバーという表を使った戦略であり、このアプローチの概要を最初に説明する。次にパワーナンバーの問題点を説明して、反実仮想リグレット最適化(CFR)を用いた最適プリフロップオールイン戦略について説明する。CFRはプレイヤーが3人以上である場合は必ずしも最適な戦略にならないが、全員が同じ戦略を採用するならばナッシュ均衡に近い戦略になることが想定されるため、これを提示しておくことに一定の意味を見出すことができるだろう。
パワーナンバー
パワーナンバーは有効スタックとM値と言われれる以下の値の比と以下で提示する表の値を比較して、後者の値が大きい場合にオールインするという方法である。M値は
M値 = 1.5 + アンティ × プレイヤー数
で計算される。ポジションが1周する間にすべてFoldした場合に失われるチップの量を表す数値である。パワーナンバーは
PN = 有効スタック ÷ M値 × 自分の後に意思決定するプレイヤーの数
で計算できる。有効スタックは基本的に自分のスタック量だが、自分がチップリーダーである場合は自分の後に意思決定するプレイヤーで最も大きいスタックを持っているプレイヤーのスタックである。
パワーナンバーと比較する数値は手札毎に以下の表で与えられる。
| A | K | Q | J | T | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | |
| A | ∞ | ∞ | ∞ | ∞ | ∞ | 50 | 37 | 32 | 28 | 31 | 27 | 26 | 24 |
| K | ∞ | ∞ | ∞ | 75 | 66 | 44 | 17 | 15 | 14 | 13 | 11 | 10 | 9 |
| Q | ∞ | 48 | ∞ | 75 | 58 | 38 | 16 | 11 | 10 | 8 | 8 | 8 | 8 |
| J | 50 | 31 | 26 | ∞ | 58 | 39 | 21 | 12 | 7 | 7 | 7 | 7 | 5 |
| T | 36 | 19 | 17 | 22 | ∞ | 43 | 26 | 15 | 10 | 9 | 7 | 5 | 4 |
| 9 | 27 | 12 | 9 | 9 | 11 | ∞ | 31 | 17 | 10 | 9 | 3 | 3 | – |
| 8 | 24 | 10 | 8 | 8 | 10 | 10 | 66 | 19 | 15 | 10 | 5 | – | – |
| 7 | 22 | 9 | 6 | 5 | 6 | 7 | 10 | 58 | 15 | 10 | 9 | – | – |
| 6 | 18 | 9 | 6 | 4 | 3 | 3 | 4 | 7 | 51 | 11 | 10 | 4 | – |
| 5 | 21 | 9 | 6 | 4 | – | – | – | – | – | 44 | 11 | 8 | – |
| 4 | 18 | 8 | 5 | 3 | – | – | – | – | – | – | 39 | 6 | – |
| 3 | 16 | 8 | 5 | 3 | – | – | – | – | – | – | – | 33 | – |
| 2 | 13 | 7 | 4 | 3 | – | – | – | – | – | – | – | – | 28 |
パワーナンバーとこの表の値を比較して、PN < 表の値 であればオールインするということになる。
注意点として、
- スタックの目安は20bb以下である。
- 自分より手前でオールインしているプレイヤーがいる場合は、これよりもタイトに手札を選ぶ必要がある。
- 基本的に期待値を最大化する戦略であり、トーナメント終盤などではこれよりもタイトに手札を選ぶ必要がある。
1.と2.の問題点については、普通に計算することで解消することもできる問題なので、以下ではCFRを用いてプレイヤーが3人と4人である場合の最適な戦略を計算してみよう。
CFRによる最適プリフロップオールイン戦略
プレイヤーが3人の場合における最適プリフロップオールイン戦略はヘッズアップの場合と同様のアルゴリズムで計算することができる。ただし、各プレイヤーの戦略\(\small \pi(a, s)\)を定める際の状態\(\small s\)が6通り存在するため、各状態における期待リグレットの計算を分けて行う必要がある。具体的には、以下の6つである。
- ポジションがBTN
- ポジションがSB、BTNがAll-in
- ポジションがSB、BTNがFold
- ポジションがBB、BTNとSBがAll-in
- ポジションがBB、BTNがAll-in、SBがFold
- ポジションがBB、BTNがFold、SBがAll-in
計算しなければならないハンドチャートが増えるため、その分だけシミュレーションの収束性が悪くなる。計算処理が非常に重いため、計算結果だけ見れるようにリンクを貼っておく。
同様にして、プレイヤーが4人の場合についても、最適な戦略を計算した。計算に1週間以上かけたが一部は収束していないように見えたので、筆者の感覚で手修正している箇所があるので、参考程度に見てもらいたい。プレイヤーが4人の場合は、戦略が異なる状態が以下の14通り存在する。
- ポジションがCO
- ポジションがBTN、COがAll-in
- ポジションがBTN、COがFold
- ポジションがSB、COとBTNがAll-in
- ポジションがSB、COがAll-in、BTNがFold
- ポジションがSB、COがFold、BTNがAll-in
- ポジションがSB、COとBTNがFold
- ポジションがBB、CO,BTN,SBがAll-in
- ポジションがBB、CO,BTNがAll-in、SBがFold
- ポジションがBB、CO,SBがAll-in、BTNがFold
- ポジションがBB、BTN,SBがAll-in、COがFold
- ポジションがBB、COがAll-in、BTN,SBがFold
- ポジションがBB、BTNがAll-in、CO,SBがFold
- ポジションがBB、SBがAll-in、CO,BTNがFold
3人の場合同様に、計算結果だけ見れるようにリンクを貼っておく。
まとめ
現実的には、プレイヤーが3人以上の場合、CFRによりオールイン戦略は最適であると限らないが、平均的には妥当な戦略であると考えられるだろう。また、オールインするプレイヤーが3人以上いる場合は、強い手札でも運ゲー感は否めなくなるので、オールインを連発するプレイヤーがいる場合などは慎重に運用した方が良いかもしれない。
プレイヤーが5人以上の場合についても拡張して計算することができるが、表の数が多すぎるし、それを覚えるのは現実的ではないだろう。計算の収束性も悪いため、計算を1週間以上回さないといけないかもしれないが、筆者はこれをやりたくないと考えている。それでは5人以上プレイヤーがいる場合はどうするかということであるが、意外かもしれないが、Preference Order Modelを用いると、5人以上プレイヤーがいる場合でも、かなり現実に近い手札でオールインしてくるように感じる。おそらく、5人以上プレイヤーがいる場合でPush or Foldは運ゲーであるため、強い手札で行くかどうかの判断になってしまい、それが最適かどうかはあまり考慮する必要がないのかもしれない。将来的に開発するモバイルゲームのNPCの戦略としてはCFRで計算した戦略を採用するのはプレイヤーが4人までの場合に限るかもしれない。ひとまず、All-in or Foldゲームは4人までGame Theory Optimalでプレイできるように修正しておいた。



