Este é um caso simples de um problema de bandidos com várias armas . Como você observa, você deseja equilibrar as informações coletadas experimentando a moeda desconhecida quando você pensa que é subótimo a curto prazo contra a exploração do conhecimento que possui.
1 / 2por escolha de A. Isso significa que, se é certo jogar a moeda A, então você deve continuar jogando A. Então, você só quer encontrar a regra de parada ideal para quando você deve desistir de B. Isso depende da distribuição anterior para o parâmetro para B e o número de tentativas. Com um número maior de tentativas, explorar tem mais valor, então você deve testar B mais.
Em geral, acho que você não consegue se livrar de um problema de programação dinâmica, embora possa haver casos especiais em que a estratégia ideal pode ser encontrada e verificada de maneira mais simples.
Com um uniforme anterior, aqui é onde você deve parar:
( 0 cabeças , 3 caudas ) , ( 1 de cabeça , 5 caudas ) , ( 2 cabeças , 6 caudas ) , ( 3 , 7 ) , ( 4 , 8 ) , . . . ( 31 , 35 ) , ( 32 , 35 ) , ( 33 , 36 ) , ( 34 , 37 ) , . . . ( 41 , 44 ) , ( 42 , 44 ) , . . . ( 46 , 48 ) , ( 47 , 48 ) , ( 48 , 49 ) , ( 49 , 50 ).
Sob essa estratégia, você espera coletar 61.3299 cabeças.
Usei o seguinte código do Mathematica para calcular as ações:
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]
]
]
Para comparação, a heurística de amostragem Thompson (que Cam Davidson Pilon afirmou ser ideal) fornece uma média de 60.2907 cabeças, menor em 1,03915. A amostragem Thompson tem o problema de, às vezes, amostrar B quando você tem informações suficientes para saber que não é uma boa aposta, e muitas vezes perde chances de amostrar B mais cedo, quando as informações valem mais. Nesse tipo de problema, você quase nunca fica indiferente entre suas opções, e existe uma estratégia ideal pura.
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])]]