Nombre prévu de lancers de pièces pour obtenir N consécutifs, étant donné M consécutifs

10

Interviewstreet a eu son deuxième CodeSprint en janvier qui comprenait la question ci-dessous. La réponse programmatique est publiée mais ne comprend pas d'explication statistique.

(Vous pouvez voir le problème d'origine et la solution publiée en vous connectant au site Interviewstreet avec Google Creds, puis en accédant au problème Coin Tosses à partir de cette page .)

Lancer de pièces

Vous avez une pièce impartiale que vous souhaitez continuer à lancer jusqu'à ce que vous obteniez N têtes consécutives. Vous avez lancé la pièce M fois et, étonnamment, tous les lancers ont donné lieu à des têtes.

Quel est le nombre attendu de lancers supplémentaires nécessaires jusqu'à ce que vous obteniez N têtes consécutives?

Contribution:
La première ligne contient le nombre de cas T. Chacune des T lignes suivantes contient deux nombres N et M.

Production:
sortie T lignes contenant la réponse pour le cas de test correspondant. Imprimez la réponse arrondie à exactement 2 décimales.

Exemple d'entrée:
4
2 0
2 1
3 3
3 2

Exemple de sortie:
6,00
4,00
0,00
8,00

Exemples d'explications:
Si N = 2 et M = 0, vous devez continuer à lancer la pièce jusqu'à ce que vous obteniez 2 têtes consécutives. Il n'est pas difficile de montrer qu'en moyenne, 6 lancers de pièces sont nécessaires.
Si N = 2 et M = 1, vous avez besoin de 2 têtes consécutives et vous en avez déjà 1. Vous devez lancer une fois de plus quoi qu'il arrive. Dans ce premier lancer, si vous obtenez des têtes, vous avez terminé. Sinon, vous devez recommencer, car le compteur consécutif se réinitialise, et vous devez continuer à lancer la pièce jusqu'à ce que vous obteniez N = 2 têtes consécutives. Le nombre attendu de lancers de pièces est donc de 1 + (0,5 * 0 + 0,5 * 6) = 4,0 Si N = 3 et M = 3, vous avez déjà 3 têtes, vous n'avez donc plus besoin de lancer.

Toutes les équations mathématiques que j'ai trouvées avaient les bonnes réponses pour les données d'entrée d'échantillon énumérées ci-dessus, mais elles étaient incorrectes pour tous leurs autres ensembles d'entrée (qui ne sont pas connus). Leur solution programmatique semble résoudre le problème bien différemment de ma méthode d'essayer de trouver une équation. Quelqu'un peut-il expliquer comment trouver une équation qui pourrait résoudre ce problème?

Polshgiant
la source
1
Voir aussi ici où se trouve également le résultat donné par Daniel Johnson ci-dessous. 2N+12M+1
Dilip Sarwate

Réponses:

8

Il s'agit d'un exercice de calcul, pensez donc de manière récursive . L'état actuel du retournement des pièces est déterminé par la paire ordonnée avec N M 0 . Soit le nombre attendu de flips pour atteindre N têtes consécutives e ( N , M ) :(N,M)NM0Ne(N,M)

(1) Il y a 50% de chances que le prochain flip soit des têtes, vous amenant à l'état , et 50% de chances que le prochain flip soit des queues, vous amenant à l'état ( N , 0 ) . Cela coûte un flip. Par conséquent, l'attente (récursive) est donnée par(N,M+1)(N,0)

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

(2) Conditions de base: vous avez déjà stipulé que

e(N,0)=2N+12

et évidemment

e(N,N)=0

(plus de flips ne sont nécessaires).

Voici le programme Mathematica correspondant (y compris la mise en cache des résultats intermédiaires pour accélérer la récursivité, ce qui en fait une solution de programmation dynamique):

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

Le programme serait similaire dans d'autres langages de programmation qui prennent en charge la récursivité. Mathématiquement, on peut vérifier que simplement en vérifiant la récursivité, car elle vaut évidemment pour les cas de base:e(N,M)=2N+12M+1

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

ce qui est vrai pour tout et N , QED.MN


Plus généralement , la même approche établira que lorsque la pièce a une probabilitépde têtes. La partie difficile élabore la condition de basee(N,0). Cela se fait en chassant la récurrence deNétapes jusqu'à ce que finalemente(N,0)soit exprimé en termes de lui-même et en résolvant: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
la source
1
Peut -être qu'il serait préférable de travailler de manière itérative plutôt que récursive ? Vous avez qui donnee(N,M+1)=2e(N,M)-2N+1et donc e ( N , 1 )
e(N,M)=12e(N,M+1)+12e(N,0)+1
e(N,M+1)=2e(N,M)2N+1
et ainsi de suite donnante(N,M)=2N+1-2M+1. Ou l'équation de différence pourrait être résolue "théoriquement" plutôt que par itération.
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 Les inférences que vous tirez à la fois sur "qui donne" et "et ainsi de suite" sont récursives. Quelle méthode de solution envisagez-vous par "résolu théoriquement"?
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 vous regardez comment ces programmes sont réellement implémentés sur l'ordinateur, @Dilip, dans de nombreux environnements (tels que R), ils ne diffèrent guère du tout. (Dans un cas, vous créez puis traitez un vecteur 1:net dans l'autre, vous découvrirez qu'il n:1a été placé sur la pile et traité à l'envers.) Mais une partie de mon argumentation était conceptuelle : votre commentaire initial parlait de "travailler de manière itérative". Cela faisait référence à l' analyse et non à un programme informatique. Mais ce sont des points triviaux et tangentiels dont la discussion ne justifie pas d'étendre ce fil de commentaires.
whuber
5

Pour résoudre ce problème, j'utiliserai des processus stochastiques, des temps d'arrêt et une programmation dynamique.

Tout d'abord, quelques définitions:

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]

Le premier correspond au nombre attendu de flips avant d'obtenir une queue en supposant qu'une queue est retournée avant que N têtes consécutives soient observées en supposant que nous commençons avec M têtes consécutives. Il n'est pas trop difficile de voir que

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

Maintenant, tout ce que nous avons à faire est de calculer la deuxième attente conditionnelle qui correspond au nombre attendu de flips nécessaires pour observer N têtes consécutives à partir de 0. Avec des calculs similaires, nous voyons 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

Cela donne une réponse finale de:

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

Cela correspond aux quatre cas de test que vous avez répertoriés. Avec une réponse aussi simple, il peut y avoir un moyen plus simple de calculer cela.

Daniel Johnson
la source
1
Il s'agit d'un moyen plus difficile à résoudre que l'idée récursive répertoriée ci-dessus, mais il est extrêmement utile de voir les deux approches présentées ensemble. La plupart des gens n'apprécient pas la façon dont les méthodes d'arrêt peuvent également être utilisées pour de petits problèmes pratiques.
le
2

Avertissement: ce qui suit peut ne pas être considéré comme une bonne réponse dans la mesure où il ne fournit pas une solution de forme fermée à la question, en particulier. par rapport aux réponses précédentes . J'ai cependant trouvé l'approche suffisamment intéressante pour élaborer la distribution conditionnelle.

Nk1p(N,k)

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

mN

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

mN1NNmN1

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

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

Theexpectednumberofdrawscanthenbederivedby
E(M,N)M pas...
Xi'an
la source