Número esperado de lançamentos de moedas para obter N consecutivo, dado M consecutivo

10

A Interviewstreet teve seu segundo CodeSprint em janeiro, que incluía a pergunta abaixo. A resposta programática é publicada, mas não inclui uma explicação estatística.

(Você pode ver o problema original e a solução publicada fazendo login no site do Interviewstreet com creds do Google e, em seguida, acessando o problema Coin Tosses nesta página .)

Lançamentos de moedas

Você tem uma moeda imparcial que deseja continuar jogando até obter N cabeças consecutivas. Você jogou a moeda M vezes e, surpreendentemente, todos os lançamentos resultaram em cara.

Qual é o número esperado de lançamentos adicionais necessários até que você obtenha N cabeças consecutivas?

Entrada:
A primeira linha contém o número de casos T. Cada uma das próximas linhas T contém dois números N e M.

Saída:
Linhas T de saída contendo a resposta para o caso de teste correspondente. Imprima a resposta arredondada para exatamente 2 casas decimais.

Entrada de amostra:
4
2 0
2 1
3 3
3 2

Saída de amostra:
6,00
4,00
0,00
8,00

Exemplos de explicações:
Se N = 2 e M = 0, você deve continuar jogando a moeda até obter 2 cabeças consecutivas. Não é difícil mostrar que, em média, são necessários 6 sorteios.
Se N = 2 e M = 1, você precisa de 2 cabeças consecutivas e já possui 1. Você precisa atirar mais uma vez, não importa o quê. Nesse primeiro sorteio, se você tiver cara, está feito. Caso contrário, você precisará recomeçar, pois o contador consecutivo é redefinido e continuar jogando a moeda até obter N = 2 cabeças consecutivas. O número esperado de lançamentos de moedas é, portanto, 1 + (0,5 * 0 + 0,5 * 6) = 4,0 Se N = 3 e M = 3, você já tem 3 cabeças, portanto, não precisa mais jogar.

Todas as equações matemáticas que criei tinham as respostas corretas para os dados de entrada de amostra listados acima, mas estavam erradas para todos os outros conjuntos de entradas (que não são conhecidos). A solução programática deles parece resolver o problema de maneira bem diferente do meu método de tentar criar uma equação. Alguém pode explicar como chegar a uma equação que resolveria isso?

Polshgiant
fonte
11
Veja também aqui onde também encontramos o resultado dado por Daniel Johnson abaixo. 2N+12M+1
Dilip Sarwate

Respostas:

8

Este é um exercício computacional, então pense recursivamente . O estado atual do lançamento da moeda é determinado pelo par ordenado com N M 0 . Seja o número esperado de lançamentos para alcançar N cabeças consecutivas e e ( N , M ) :(N,M)NM0Ne(N,M)

(1) Há 50% de chance do próximo lançamento ser cara, levando você para o estado , e 50% de chance do próximo lançamento ser coroa, levando você para o estado ( N , 0 ) . Isso custa um flip. Portanto, a expectativa (recursivamente) é dada por(N,M+1)(N,0)

e(N,M)=12e(N,M+1)+12e(N,0)+1.

(2) Condições básicas: você já estipulou que

e(N,0)=2N+12

e obviamente

e(N,N)=0

(não são necessários mais movimentos).

Aqui está o programa Mathematica correspondente (incluindo armazenamento em cache de resultados intermediários para acelerar a recursão, o que efetivamente o torna uma solução de programação dinâmica):

e[n_, m_] /; n > m > 0 := e[n, m] = 1 + (e[n, m + 1] + e[n, 0])/2 // Simplify
e[n_, 0] := 2^(n + 1) - 2
e[n_, n_] := 0

O programa seria semelhante em outras linguagens de programação que suportam recursão. Matematicamente, podemos verificar que simplesmente verificando a recursão, porque obviamente vale para os casos base:e(N,M)=2N+12M+1

2N+12M+1=1+(2N+12M+2+2N+12)/2,

o que é verdade para qualquer e N , QED.MN


De maneira mais geral , a mesma abordagem estabelecerá que quando a moeda tem probabilidadepde cabeças. A parte mais difícil é calcular a condição de basee(N,0). Isso é feito perseguindo a recursão deNetapas até que finalmentee(N,0)seja expresso em termos de si mesmo e resolvendo:e(N,M)=pNpM1ppe(N,0)Ne(N,0)

e(N,0)=1+pe(N,1)+(1p)e(n,0)=1+p(1+pe(N,2)+(1p)e(N,0))+(1p)e(N,0)=1+p+p2++pN1+(1p)[1+p++pN1]e(N,0);e(N,0)=1pN1p+(1pN)e(N,0);e(N,0)=pN11p.
whuber
fonte
11
Talvez trabalhar iterativamente e não recursivamente possa ser melhor? Você tem que fornecee(N,M+1)=2e(N,M)-2N+1e, portanto, e ( N , 1 )
e(N,M)=12e(N,M+1)+12e(N,0)+1
e(N,M+1)=2e(N,M)2N+1
e assim por diante dandoe(N,H)=2N+1-2M+1. Ou a equação da diferença pode ser resolvida "teoricamente" em vez de por iteração.
e(N,1)=2e(N,0)2N+1=2(2N+12)2N+1=2N+14e(N,2)=2e(N,1)2N+1=2(2N+14)2N+1=2N+18
e(N,M)=2N+12M+1.
Dilip Sarwate
@Dilip As inferências que você desenha em "o que dá" e "e assim por diante" são recursivas. Que método de solução você tem em mente "resolvido teoricamente"?
whuber
x(n)=2x(n1),  x(0)=1,
x(n)
x(n)=2x(n1)=2(2x(n2))=2(2(2x(n3)))==2(2(2x(0))=2n
x(0)=1x(1)=2x(0)=2x(2)=2x(1)=22x(n)=2x(n1)=22n1=2n.
find_x(n)if n=0 return 1 else return 2*find_x(n-1)find_xny = 1; while n > 0 do begin y=2*y; n=n-1 end; return y
Se você observar como esses programas são realmente implementados no computador, o @Dilip, em muitos ambientes (como R), eles dificilmente diferem. (Em um caso, você cria e processa um vetor 1:ne, no outro, descobre que n:1foi colocado na pilha e processado ao contrário.) Mas parte do meu ponto era conceitual : seu comentário inicial falou em "trabalhar iterativamente". Isso se referia à análise e não a qualquer programa de computador. Mas esses são pontos tangenciais e triviais, cuja discussão não justifica estender esse tópico de comentários.
whuber
5

Para resolver esse problema, usarei processos estocásticos, tempos de parada e programação dinâmica.

Primeiro, algumas definições:

Xn#(of consecutive heads after the nth flip)
X0X0=0XX0=M

τNmin{k:Xk=N} and τ0min{k>1:Xk=0}

τN(XτN=N)(X0=M)MN

E[τN|X0=M]=E[τN1{τN<τ0}+τN1{τN>τ0}|X0=M]
=(NM)(12)NM+E[τ0|τN>τ0,X0=M]+(1(12)NM)E[τN|X0=0]

O primeiro corresponde ao número esperado de lançamentos antes de obter uma cauda, ​​assumindo que uma cauda seja lançada antes de N cabeças consecutivas serem observadas, assumindo que começamos com M cabeças consecutivas. Não é muito difícil ver que

E[τ0|τN>τ0,X0=M]=j=1NM(j)(12)j=2(NM+2)(12)NM

Agora, tudo o que precisamos fazer é calcular a segunda expectativa condicional que corresponde ao número esperado de lançamentos necessários para observar N cabeças consecutivas a partir de 0. Com cálculos semelhantes, vemos que

E[τN|X0=0]=E[τN1{τN<τ0}+τN1{τN>τ0}|X0=0]
=N(12)N+E[τ0|τN>τ0,X0=0]+(1(12)N)E[τN|X0=0]
=2N{N(12)N+(2(N+2)(12)N)}
=2N+12

Isso fornece uma resposta final de:

E[τN|X0=M]=(NM)(12)NM+2(NM+2)(12)NM+(1(12)NM)(2N+12)
=2N+12M+1

Isso concorda com os quatro casos de teste que você listou. Com uma resposta tão simples, pode haver uma maneira mais fácil de calcular isso.

Daniel Johnson
fonte
11
Essa é uma maneira mais difícil de resolvê-la do que a idéia recursiva listada acima, mas é extremamente útil ver as duas abordagens dispostas juntas. A maioria das pessoas não aprecia a maneira como os métodos de parada do tempo também podem ser usados ​​para problemas pequenos e práticos.
ely
2

Aviso: o seguinte pode não ser considerado uma resposta adequada, pois não fornece uma solução de formulário fechado para a pergunta, esp. quando comparado com as respostas anteriores . No entanto, achei a abordagem suficientemente interessante para descobrir a distribuição condicional.

Considere a questão preliminar de obter uma sequência de cabeças de lances, com probabilidade . Isso é dado pela fórmula de recorrência De fato, meu raciocínio é que nenhum cabeçalho consecutivo de draws pode ser decomposto de acordo com a primeira ocorrência de uma cauda do primeiro joga. O condicionamento de saber se essa primeira cauda ocorre no primeiro, segundo, ..., ° empate leva a essa relação de recorrência.Nk1p(N,k)

p(N,k)={1if k<Nm=1N12mp(N,km)else
NkNN

Em seguida, a probabilidade de obter as primeiras N cabeças consecutivas em lançamentos de é $$ q (N, m) = \ begin {cases} \ dfrac {1} {2 ^ N} & \ text {if} m = N \mN

     p(N,m-N-1) \dfrac{1}{2^{N+1}} &\text{if } N<m<2N+1
     \end{cases}

$$ O primeiro caso é auto-explicativo. o segundo caso corresponde a uma cauda ocorrendo no empate, seguida por cabeças, e o último caso proíbe cabeças consecutivas antes do empate. (Os dois últimos casos podem ser condensados ​​em um, garantido!)mN1NNmN1

Agora, a probabilidade de obter cabeças primeiro e as primeiras cabeças consecutivas em exatamente lançamentos (e não menos) é $$ r (M, N, m) = \ begin {cases} 1/2 ^ N & \ text {if} m = N \MN mN

     0 &\text{if } N<m\le N+M\\

      \dfrac{1}{2^{M}}\sum_{r=M+1}^{N}\dfrac{1}{2^{r-M}}q(N,m-r)&\text{if } N+M<m

\ end {cases} s (M, N, m) = \ begin {cases} 1 / {2 ^ {NM}} & \ text {if} m = N \ 0 & \ text {if} N \ sum_ {r = M + 1} ^ {N} \ dfrac {q (N, sr)} {2 ^ {rM }} & \ text {if} N + M

Hencetheconditionalprobabilityofwaiting$m$stepstoget$N$consecutiveheadsgiventhefirst$M$consecutiveheadsis

\ end {cases} \ mathfrak {E} (M, N) = \ sum_ {m = N} ^ \ infty m \, s (M, N, m) $$ ou para o número de etapas adicionais ...E ( M , N ) - M

Theexpectednumberofdrawscanthenbederivedby
E(M,N)M
Xi'an
fonte