Die erwartete Anzahl von Münzwürfen wird N in Folge erhalten, wenn M in Folge gegeben wird

10

Interviewstreet hatte im Januar ihren zweiten CodeSprint, der die folgende Frage enthielt. Die programmatische Antwort wird veröffentlicht, enthält jedoch keine statistische Erklärung.

(Sie können das ursprüngliche Problem und die veröffentlichte Lösung anzeigen, indem Sie sich mit Google Creds auf der Interviewstreet-Website anmelden und dann auf dieser Seite zum Coin Tosses-Problem wechseln .)

Münzwurf

Sie haben eine unvoreingenommene Münze, die Sie so lange werfen möchten, bis Sie N aufeinanderfolgende Köpfe erhalten. Sie haben die Münze M-mal geworfen und überraschenderweise haben alle Würfe zu Köpfen geführt.

Was ist die erwartete Anzahl zusätzlicher Würfe, die benötigt werden, bis Sie N aufeinanderfolgende Köpfe erhalten?

Eingabe:
Die erste Zeile enthält die Anzahl der Fälle T. Jede der nächsten T-Zeilen enthält zwei Zahlen N und M.

Ausgang:
Ausgang T Linien die Antwort für den entsprechenden Testfall enthält. Drucken Sie die Antwort auf genau 2 Dezimalstellen gerundet.

Probeneingabe:
4
2 0
2 1
3 3
3 2

Probenausgabe:
6.00
4.00
0.00
8.00

Beispielerklärungen:
Wenn N = 2 und M = 0, müssen Sie die Münze so lange werfen, bis Sie 2 aufeinanderfolgende Köpfe erhalten. Es ist nicht schwer zu zeigen, dass durchschnittlich 6 Münzwürfe erforderlich sind.
Wenn N = 2 und M = 1, benötigen Sie 2 aufeinanderfolgende Köpfe und haben bereits 1. Sie müssen noch einmal werfen, egal was passiert. In diesem ersten Wurf sind Sie fertig, wenn Sie Köpfe bekommen. Andernfalls müssen Sie neu beginnen, wenn der aufeinanderfolgende Zähler zurückgesetzt wird, und Sie müssen die Münze weiter werfen, bis Sie N = 2 aufeinanderfolgende Köpfe erhalten. Die erwartete Anzahl der Münzwürfe beträgt somit 1 + (0,5 * 0 + 0,5 * 6) = 4,0. Wenn N = 3 und M = 3, haben Sie bereits 3 Köpfe, sodass Sie keine weiteren Würfe mehr benötigen.

Alle mathematischen Gleichungen, die ich mir ausgedacht habe, hatten die richtigen Antworten für die oben aufgeführten Beispiel-Eingabedaten, waren jedoch für alle anderen Eingabesätze (die nicht bekannt sind) falsch. Ihre programmatische Lösung scheint das Problem ganz anders zu lösen als meine Methode, eine Gleichung zu entwickeln. Kann jemand bitte erklären, wie man eine Gleichung findet, die dies lösen würde?

Polshgiant
quelle
1
Siehe auch hier, wo wir auch das -Ergebnis von Daniel Johnson unten finden. 2N+12M+1
Dilip Sarwate

Antworten:

8

Dies ist eine Rechenübung, denken Sie also rekursiv . Der aktuelle Zustand des Münzwurfs wird durch das geordnete Paar mit . Die erwartete Anzahl von Flips, um aufeinanderfolgende Köpfe zu erreichen, sei :(N,M)NM0Ne(N,M)

(1) Es besteht eine 50% ige Chance, dass der nächste Flip Köpfe sind, die Sie in den Zustand bringen , und eine 50% ige Chance, dass der nächste Flip Schwänze sind, die Sie in den Zustand bringen . Dies kostet einen Flip. Daher ist die Erwartung (rekursiv) gegeben durch(N,M+1)(N,0)

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

(2) Grundbedingungen: Das haben Sie bereits festgelegt

e(N,0)=2N+12

und natürlich

e(N,N)=0

(Es sind keine Flips mehr erforderlich).

Hier ist das entsprechende Mathematica- Programm (einschließlich des Zwischenspeicherns von Zwischenergebnissen, um die Rekursion zu beschleunigen, was es effektiv zu einer dynamischen Programmierlösung macht):

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

Das Programm würde in anderen Programmiersprachen, die die Rekursion unterstützen, ähnlich aussehen. Mathematisch können wir überprüfen, dass , indem wir einfach die Rekursion überprüfen, da dies offensichtlich für die Basisfälle gilt:e(N,M)=2N+12M+1

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

Dies gilt für jedes und , QED.MN


Allgemeiner wird der gleiche Ansatz feststellen, dass wenn die Münze die Wahrscheinlichkeit von Köpfen hat. Der schwierige Teil besteht darin, die Grundbedingung . Dies geschieht durch Verfolgen der Rekursion aus Schritten, bis schließlich als sich selbst ausgedrückt wird und gelöst wird: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
quelle
1
Vielleicht ist es besser , iterativ als rekursiv zu arbeiten? Sie haben , was ergibt und so und so weiter ergibtOder die Differenzgleichung könnte "theoretisch" anstatt durch Iteration gelöst werden.
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 Die Schlussfolgerungen, die Sie sowohl bei "was gibt" als auch bei "und so weiter" ziehen, sind rekursiv. Welche Lösungsmethode haben Sie mit "theoretisch gelöst" im Sinn?
whuber
Meiner Meinung nach ist der Unterschied zwischen rekursiv und iterativ die Arbeitsweise. Für die Beziehung berechnet die Rekursion als während die Iteration sagt "Theoretisch" bedeutete das Lösen einer Differenzgleichung, indem das charakteristische Polynom gefunden, seine Wurzeln bestimmt und dann die allgemeine Lösung an die Anfangsbedingungen angepasst wurde, anstatt wie oben einfach zu berechnen.
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.
Dilip Sarwate
Aus programmtechnischer Sicht ist ein Programm find_x(n)rekursiv, wenn es so etwas wie sagt, if n=0 return 1 else return 2*find_x(n-1)in dem es find_xsich mal aufruft , während ein iteratives Programm so etwas wieny = 1; while n > 0 do begin y=2*y; n=n-1 end; return y
Dilip Sarwate
Wenn Sie sich ansehen, wie diese Programme tatsächlich auf dem Computer @Dilip implementiert sind, unterscheiden sie sich in vielen Umgebungen (z. B. R) kaum. (In einem Fall erstellen Sie einen Vektor 1:nund verarbeiten ihn dann. In dem anderen Fall werden Sie feststellen, dass n:1er auf dem Stapel platziert und umgekehrt verarbeitet wurde.) Ein Teil meines Punktes war jedoch konzeptionell : Ihr erster Kommentar sprach von "iterativ arbeiten". Das bezog sich auf die Analyse und nicht auf ein Computerprogramm. Dies sind jedoch triviale, tangentiale Punkte, deren Diskussion keine Erweiterung dieses Kommentarthreads rechtfertigt.
whuber
5

Um dieses Problem zu lösen, werde ich stochastische Prozesse, Stoppzeiten und dynamische Programmierung verwenden.

Zunächst einige Definitionen:

X 0 X 0 = 0 X X 0 = M.

Xn#(of consecutive heads after the nth flip)
Wir erlauben auch, dass ein Wert für die Anzahl von aufeinanderfolgenden Köpfen bedeutet, bevor wir beginnen. Für und die Folge der Flips HHTHHHTHTTHH sind die entsprechenden Werte von 120123010012. Wenn wir , wären die Werte von X (M + 1) (M + 2) 0123010012.X0X0=0XX0=M

Definieren Sie dann die folgenden Stoppzeiten:

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

Der Wert ist der erwartete Wert von , die Anzahl der Flips, die , um N aufeinanderfolgende Flips zu beobachten , , wir haben bereits M aufeinanderfolgende Flips beobachtet . Angenommen, da die Antwort ansonsten trivial 0 ist. Wir berechnen: ( 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]
Damit können wir die letzten beiden bedingten Erwartungen berechnen.

Die erste entspricht der erwarteten Anzahl von Flips vor dem Erhalten eines Schwanzes unter der Annahme, dass ein Schwanz umgedreht wird, bevor N aufeinanderfolgende Köpfe beobachtet werden, vorausgesetzt, wir beginnen mit M aufeinanderfolgenden Köpfen. Das ist nicht allzu schwer zu sehen

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

Jetzt müssen wir nur noch die zweite bedingte Erwartung berechnen, die der erwarteten Anzahl von Flips entspricht, die erforderlich sind, um N aufeinanderfolgende Köpfe ab 0 zu beobachten. Mit ähnlichen Berechnungen sehen wir das

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

Dies gibt eine endgültige Antwort von:

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

Dies stimmt mit den vier von Ihnen aufgelisteten Testfällen überein. Mit einer so einfachen Antwort kann es eine einfachere Möglichkeit geben, dies zu berechnen.

Daniel Johnson
quelle
1
Dies ist ein schwierigerer Weg als die oben aufgeführte rekursive Idee, aber es ist äußerst nützlich, beide Ansätze zusammen zu sehen. Die meisten Menschen wissen nicht zu schätzen, wie Stoppzeitmethoden auch für kleine, praktische Probleme eingesetzt werden können.
Ely
2

Warnung: Das Folgende kann möglicherweise nicht als richtige Antwort angesehen werden, da es keine geschlossene Lösung für die Frage bietet, insb. im Vergleich zu den vorherigen Antworten . Ich fand den Ansatz jedoch ausreichend interessant, um die bedingte Verteilung zu ermitteln.

Betrachten Sie die vorläufige Frage, eine Folge von Köpfen aus Würfen mit der Wahrscheinlichkeit . Dies ist gegeben durch die Wiederholungsformel In der Tat ist meine Argumentation, dass keine aufeinanderfolgenden Köpfe aus Zügen gemäß dem ersten Auftreten eines Schwanzes aus dem ersten zerlegt werden können wirft. Die Bedingung, ob dieser erste Schwanz bei der ersten, zweiten, ..., ten Ziehung auftritt, führt zu dieser Wiederholungsbeziehung.Nk1p(N,k)

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

Als nächstes beträgt die Wahrscheinlichkeit, die ersten aufeinanderfolgenden N Köpfe in Würfen zu erhalten, $$ q (N, m) = \ begin {Fälle} \ 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}

$$ Der erste Fall ist selbsterklärend. Der zweite Fall entspricht einem Schwanz, der bei der -Ziehung auftritt, gefolgt von Köpfen, und der letzte Fall verbietet aufeinanderfolgende Köpfe vor der -Ziehung. (Die beiden letzten Fälle könnten zu einem zusammengefasst werden, zugegeben!)mN1NNmN1

Nun ist die Wahrscheinlichkeit, Köpfe zuerst und die ersten aufeinanderfolgenden Köpfe in genau Würfen (und nicht weniger) zu bekommen, $$ r (M, N, m) = \ begin {Fälle} 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 {Fälle} s (M, N, m) = \ begin {Fälle} 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 {case} \ mathfrak {E} (M, N) = \ sum_ {m = N} ^ \ infty m \, s (M, N, m) $$ oder für die Anzahl der zusätzlichen Schritte ...

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