这是一个多武装匪徒问题的简单案例。如您所注意到的,您想通过在短期内认为次优的时候尝试未知硬币来平衡您收集的信息,而不是利用已有的知识。
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])]]