これは、多腕バンディット問題の単純なケースです。気付くように、短期的には最適ではないと思うときに未知のコインを試して、収集した情報のバランスを取りたいと思います。
1 / 2
一般に、動的プログラミングの問題から逃れることはできないと思いますが、最適な戦略をより簡単に見つけて確認できる特別な場合もあります。
事前に統一した場合、ここで停止する必要があります。
(0 ヘッド、3 尾)、(1つのヘッド、5 尾)、(2つのヘッド、6 尾)、(3 、7 )、(4 、8 )、。。。(31 、35 )、(32 、35 )、 (33 、36 )、(34 、37 )、。。。(41 、44 )、(42 、44 )、。。。(46 、48 )、(47 、48 )、(48 、49 )、(49 、50 )
61.3299
次のMathematicaコードを使用して株式を計算しました。
Clear[Equity];
Equity[n_, heads_, tails_] := Equity[n, heads, tails] =
If[n == 0, heads,
Max[1/2 + Equity[n - 1, heads, tails],
(heads + 1)/(heads + tails + 2) Equity[n - 1, heads + 1, tails] +
(tails + 1)/(heads + tails + 2) Equity[n - 1, heads, tails + 1]
]
]
比較のために、Thompsonのサンプリングヒューリスティック(Cam Davidson Pilonが最適であると主張)は、平均60.2907ヘッドを与え、1.03915だけ低くなっています。トンプソンのサンプリングには、良い賭けではないことを知るのに十分な情報があるときにBをサンプリングするという問題があり、情報が最も価値があるときにBを早期にサンプリングする機会を無駄にすることがよくあります。このタイプの問題では、オプション間でほとんど無関心ではなく、純粋に最適な戦略があります。
tp[heads_, tails_] := tp[heads, tails] =
Integrate[x^heads (1 - x)^tails / Beta[heads + 1, tails + 1], {x, 0, 1/2}]
Clear[Thompson];
Thompson[flipsLeft_, heads_, tails_] := Thompson[flipsLeft, heads, tails] =
If[flipsLeft == 0, heads,
Module[{p = tp[heads, tails]},
p (1/2 + Thompson[flipsLeft-1,heads,tails]) +
(1-p)((heads+1)/(heads+tails+2)Thompson[flipsLeft-1,heads+1,tails] +
((tails+1)/(heads+tails+2)) Thompson[flipsLeft-1,heads,tails+1])]]