Ich möchte Project Euler 213 lösen , weiß aber nicht, wo ich anfangen soll, da ich ein Laie auf dem Gebiet der Statistik bin. Beachten Sie, dass eine genaue Antwort erforderlich ist, damit die Monte-Carlo-Methode nicht funktioniert. Können Sie mir einige statistische Themen empfehlen, die ich weiterlesen kann? Bitte posten Sie die Lösung nicht hier.
Flohzirkus
Ein 30 × 30-Quadratgitter enthält 900 Flöhe, zunächst einen Floh pro Quadrat. Wenn eine Glocke geläutet wird, springt jeder Floh zufällig auf ein benachbartes Feld (normalerweise 4 Möglichkeiten, außer Flöhe am Rand des Gitters oder an den Ecken).
Was ist die erwartete Anzahl unbesetzter Felder nach 50 Klingelzeichen? Geben Sie Ihre Antwort auf sechs Dezimalstellen gerundet.
Antworten:
Du hast recht; Monte Carlo ist nicht praktikabel. (In einer naiven Simulation - dh einer Simulation, die die Problemsituation ohne Vereinfachungen exakt wiedergibt - würde jede Iteration 900 Flohbewegungen umfassen. Eine grobe Schätzung des Anteils leerer Zellen beträgt , was die Varianz des Monte impliziert -Carlo-Schätzung nach N solcher Iterationen ist ungefähr 1 / N 1 / e ( 1 - 1 / e ) = 0,2325 … / N.1 / e N. 1 / N.1 / e ( 1 - 1 / e ) = 0,2325 … / N. . Um die Antwort auf sechs Dezimalstellen festzulegen, müssten Sie sie auf 5.E-7 schätzen. Um ein Vertrauen von 95 +% (z. B.) zu erreichen, müssten Sie diese Genauigkeit ungefähr auf 2.5E-7 halbieren . Lösen ergibtungefährN>4E12. Das wären ungefähr 3.6E15 Flohbewegungen, die jeweils mehrere Ticks einer CPU benötigen. Mit einer modernen CPU benötigen Sie ein ganzes Jahr (hocheffizientes) Computing. Und ich habe etwas falsch und zu optimistisch angenommen, dass die Antwort als Anteil statt als Zählung angegeben wird: Als Zählung werden drei weitere signifikante Zahlen benötigt, was eine millionenfache Erhöhung der Berechnung zur Folge hat ... Können Sie lange warten?)(√0,2325 / N.) < 2,5 E.- 7 N.> 4 E.12
In Bezug auf eine analytische Lösung stehen einige Vereinfachungen zur Verfügung. (Diese können auch verwendet werden, um eine Monte-Carlo-Berechnung zu verkürzen.) Die erwartete Anzahl leerer Zellen ist die Summe der Wahrscheinlichkeit der Leere über alle Zellen. Um dies zu finden, können Sie die Wahrscheinlichkeitsverteilung der Belegungszahlen jeder Zelle berechnen. Diese Verteilungen werden erhalten, indem die (unabhängigen!) Beiträge jedes Flohs summiert werden. Dies reduziert Ihr Problem darauf, die Anzahl der Pfade der Länge 50 entlang eines 30 x 30-Gitters zwischen einem bestimmten Zellenpaar in diesem Gitter zu finden (einer ist der Ursprung des Flohs und der andere ist eine Zelle, für die Sie die Wahrscheinlichkeit des berechnen möchten Flohbelegung).
quelle
Könnten Sie nicht die Wahrscheinlichkeiten der Besetzung der Zellen für jeden Floh durchlaufen? Das heißt, Floh k befindet sich anfänglich mit Wahrscheinlichkeit 1 in Zelle (i (k), j (k)). Nach 1 Iteration hat er eine Wahrscheinlichkeit von 1/4 in jeder der 4 benachbarten Zellen (vorausgesetzt, er befindet sich nicht an einer Kante oder in eine Ecke). Bei der nächsten Iteration wird jedes dieser Viertel der Reihe nach "verschmiert". Nach 50 Iterationen haben Sie eine Matrix von Besetzungswahrscheinlichkeiten für Floh. Wiederholen Sie diesen Vorgang über alle 900 Flöhe (wenn Sie Symmetrien nutzen, die sich um fast den Faktor 8 verringern) und addieren Sie die Wahrscheinlichkeiten (Sie müssen nicht alle auf einmal speichern, sondern nur die aktuelle Flohmatrix (hmm, es sei denn, Sie sind es) Sehr clever, vielleicht möchten Sie eine zusätzliche Arbeitsmatrix) und die aktuelle Summe der Matrizen. Es sieht für mich so aus, als gäbe es viele Möglichkeiten, dies hier und da zu beschleunigen.
Dies beinhaltet überhaupt keine Simulation. Es erfordert jedoch ziemlich viel Berechnung; Es sollte nicht sehr schwierig sein, die Simulationsgröße zu ermitteln, die erforderlich ist, um die Antworten auf eine Genauigkeit von etwas mehr als 6 dp mit hoher Wahrscheinlichkeit zu geben und herauszufinden, welcher Ansatz schneller sein wird. Ich gehe davon aus, dass dieser Ansatz die Simulation um einiges übertreffen würde.
quelle
Ich habe zwar keine Einwände gegen die praktische Unmöglichkeit (oder Unpraktikabilität) einer Monte-Carlo-Lösung dieses Problems mit einer Genauigkeit von 6 Dezimalstellen, auf die whuber hingewiesen hat , aber ich würde denken, dass eine Auflösung mit sechs Stellen Genauigkeit erreicht werden kann.
Wie von whuber kommentiert , müssen die Schätzungen mit 2 multipliziert werden, um die Frage richtig zu beantworten, daher ein Endwert von 332,2137.
quelle
Ein analytischer Ansatz mag langwierig sein, und ich habe die Feinheiten nicht durchdacht, aber hier ist ein Ansatz, den Sie möglicherweise in Betracht ziehen möchten. Da Sie an der erwarteten Anzahl von Zellen interessiert sind, die nach 50 Ringen leer sind, müssen Sie eine Markov-Kette über der "Anzahl der Flöhe in einer Zelle" und nicht über der Position eines Flohs definieren (siehe Glen_bs Antwort, die die Position von modelliert ein Floh als Markov-Kette. Wie Andy in den Kommentaren zu dieser Antwort hervorhob, kann dieser Ansatz möglicherweise nicht das bekommen, was Sie wollen.)
Insbesondere lassen Sie:
Dann beginnt die Markov-Kette mit folgendem Zustand:
Da sich Flöhe in eine von vier benachbarten Zellen bewegen, ändert sich der Zustand einer Zelle in Abhängigkeit davon, wie viele Flöhe sich in der Zielzelle befinden und wie viele Flöhe sich in den vier benachbarten Zellen befinden und wie wahrscheinlich es ist, dass sie sich in diese Zelle bewegen. Mit dieser Beobachtung können Sie die Zustandsübergangswahrscheinlichkeiten für jede Zelle als Funktion des Zustands dieser Zelle und des Zustands der benachbarten Zellen schreiben.
Wenn Sie möchten, kann ich die Antwort weiter ausbauen, aber dies sollte Ihnen zusammen mit einer grundlegenden Einführung in Markov-Ketten den Einstieg erleichtern.
quelle
Wenn Sie den numerischen Weg gehen, eine einfache Beobachtung: Das Problem scheint einer rot-schwarzen Parität zu unterliegen (ein Floh auf einem roten Quadrat bewegt sich immer zu einem schwarzen Quadrat und umgekehrt). Dies kann dazu beitragen, die Problemgröße um die Hälfte zu reduzieren (betrachten Sie nur zwei Züge gleichzeitig und betrachten Sie beispielsweise nur Flöhe auf den roten Quadraten.)
quelle
Ich vermute, dass sich einige Kenntnisse über zeitdiskrete Markov-Ketten als nützlich erweisen könnten.
quelle