Número esperado de lanzamientos de monedas para obtener N consecutivas, dado M consecutivas

10

Interviewstreet tuvo su segundo CodeSprint en enero que incluía la siguiente pregunta. La respuesta programática se publica pero no incluye una explicación estadística.

(Puede ver el problema original y la solución publicada iniciando sesión en el sitio web de Interviewstreet con créditos de Google y luego yendo al problema de Lanzamiento de monedas desde esta página ).

Lanzamientos de monedas

Tienes una moneda imparcial que quieres seguir lanzando hasta que obtengas N caras consecutivas. Lanzaste la moneda M veces y, sorprendentemente, todos los lanzamientos resultaron en caras.

¿Cuál es el número esperado de lanzamientos adicionales necesarios hasta obtener N caras consecutivas?

Entrada:
La primera línea contiene el número de casos T. Cada una de las siguientes líneas T contiene dos números N y M.

Salida:
líneas T de salida que contienen la respuesta para el caso de prueba correspondiente. Imprima la respuesta redondeada a exactamente 2 decimales.

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

Salida de muestra:
6.00
4.00
0.00
8.00

Explicaciones de muestra:
Si N = 2 y M = 0, debe seguir lanzando la moneda hasta obtener 2 caras consecutivas. No es difícil demostrar que, en promedio, se necesitan 6 lanzamientos de monedas.
Si N = 2 y M = 1, necesitas 2 caras consecutivas y ya tienes 1. Necesitas lanzar una vez más sin importar qué. En ese primer lanzamiento, si obtienes cara, ya está. De lo contrario, debe comenzar de nuevo, ya que el contador consecutivo se reinicia, y debe seguir lanzando la moneda hasta obtener N = 2 caras consecutivas. El número esperado de lanzamientos de monedas es, por lo tanto, 1 + (0.5 * 0 + 0.5 * 6) = 4.0 Si N = 3 y M = 3, ya tiene 3 caras, por lo que no necesita más lanzamientos.

Todas las ecuaciones matemáticas que se me ocurrieron tenían las respuestas correctas para los datos de entrada de muestra enumerados anteriormente, pero estaban equivocados para todos sus otros conjuntos de entrada (que no se conocen). Su solución programática parece resolver el problema de manera muy diferente a mi método de intentar crear una ecuación. ¿Alguien puede explicar cómo llegar a una ecuación que resuelva esto?

Polshgiant
fuente
1
Vea también aquí donde también encontramos el resultado dado por Daniel Johnson a continuación. 2N+12M+1
Dilip Sarwate

Respuestas:

8

Este es un ejercicio computacional, así que piense recursivamente . El estado actual del lanzamiento de la moneda está determinado por el par ordenado con N M 0 . Deje que el número esperado de lanzamientos para alcanzar N cabezas consecutivas sea e ( N , M ) :(N,M)NM0Ne(N,M)

(1) Hay un 50% de posibilidades de que el próximo lanzamiento sea cara, llevándote al estado , y un 50% de posibilidades de que el próximo lanzamiento sea colas, llevándote al estado ( N , 0 ) . Esto cuesta una vuelta. Por lo tanto, la expectativa (recursivamente) viene dada por(N,M+1)(N,0)

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

(2) Condiciones básicas: ya ha estipulado que

e(N,0)=2N+12

y obviamente

e(N,N)=0

(no se necesitan más volteretas).

Aquí está el programa correspondiente de Mathematica (incluyendo el almacenamiento en caché de resultados intermedios para acelerar la recursión, lo que efectivamente lo convierte en una solución de programación 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

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

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

MN


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
fuente
1
e(N,M)=12e(N,M+1)+12e(N,0)+1
e(N,M+1)=2e(N,M)2N+1
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 Las inferencias que dibujas tanto en "que da" como en "y así sucesivamente" son recursivas. ¿Qué método de solución tiene en mente al "resolver teóricamente"?
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
Si observa cómo esos programas se implementan realmente en la computadora, @Dilip, en muchos entornos (como R) apenas difieren en absoluto. (En un caso, crea y luego procesa un vector 1:ny en el otro descubrirá que n:1ha sido colocado en la pila y procesado a la inversa). Pero parte de mi punto fue conceptual : su comentario inicial hablaba de "trabajar iterativamente". Eso se refería al análisis y no a ningún programa de computadora. Pero estos son puntos triviales y tangenciales cuya discusión no garantiza extender este hilo de comentarios.
whuber
5

Para resolver este problema, utilizaré procesos estocásticos, tiempos de parada y programación dinámica.

Primero, algunas definiciones:

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

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

El valor que estamos buscando es el valor esperado de , el número de volteos necesarios para observar N volteos consecutivos , dado que ya hemos observado M flips consecutivos . Suponga que como la respuesta es trivialmente 0 de lo contrario. Calculamos: ( X τ N = N ) ( X 0 = M ) M Nτ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]
Esto nos permite calcular las dos últimas expectativas condicionales.

El primero corresponde al número esperado de volteretas antes de obtener una cola suponiendo que se voltea una cola antes de que se observen N cabezas consecutivas, suponiendo que comencemos con M cabezas consecutivas. No es demasiado difícil ver que

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

Ahora todo lo que tenemos que hacer es calcular la segunda expectativa condicional que corresponde al número esperado de vueltas necesarias para observar N cabezas consecutivas a partir de 0. Con cálculos similares, 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

Esto da una respuesta final de:

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

Esto concuerda con los cuatro casos de prueba que ha enumerado. Con una respuesta tan simple, puede haber una manera más fácil de calcular esto.

Daniel Johnson
fuente
1
Esta es una forma más difícil de resolverlo que la idea recursiva mencionada anteriormente, pero es extremadamente útil ver ambos enfoques juntos. La mayoría de las personas no aprecian la forma en que los métodos de tiempo de parada también pueden usarse para problemas pequeños y prácticos.
ely
2

Advertencia: lo siguiente puede no considerarse como una respuesta adecuada, ya que no proporciona una solución cerrada a la pregunta, especialmente. en comparación con las respuestas anteriores . Sin embargo, el enfoque me pareció lo suficientemente interesante como para calcular la distribución condicional.

Considere la cuestión preliminar de obtener una secuencia de cabezas de tiros, con probabilidad . Esto viene dado por la fórmula de recurrencia De hecho, mi razonamiento es que no se pueden descomponer cabezas de extracciones consecutivas de acuerdo con la primera aparición de una cola de la primera tira. Acondicionado de si esta primera cola se produce en la primera, segunda, ..., º dibujar lleva a esta relación de recurrencia.Nk1p(N,k)

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

Luego, la probabilidad de obtener las primeras N cabezas consecutivas en throws es $$ q (N, m) = \ begin {cases} \ dfrac {1} {2 ^ N} & \ text {if} m = NORTE\mN

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

$$ El primer caso se explica por sí mismo. el segundo caso corresponde a una cola que ocurre en el m sorteo, seguido de cabezas, y el último caso prohíbe cabezas consecutivas antes del sorteo. (¡Los dos últimos casos podrían condensarse en uno, concedido!)mN1NNmN1

Ahora, la probabilidad de obtener cabezas primero y las primeras cabezas consecutivas en exactamente lanzamientos (y nada menos) es $$ 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, mr)} {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) $$ o para el número de pasos adicionales ...E ( M , N ) - M

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