Wann aus vielen Teilen ein Ganzes wird. Streue zufällig Steine auf ein Gitter: Bei wenigen entstehen Inseln, bei vielen ein durchgehender Teppich. Dazwischen liegt kein sanfter Übergang, sondern eine Schwelle — und sie wird umso schärfer, je größer das Gitter ist.
- Das Gitter bis 160 × 160, jeder Haufen in eigener Farbe, der durchgehende in Blau
- Anteil und Größe am Regler — der Umschlag ist beim Schieben körperlich spürbar
- „Schwelle messen" zeichnet die Durchlässigkeit über dem Anteil, für drei Gittergrößen
- „Schärfe messen" misst, wie schmal der Übergang mit wachsendem Gitter wird — und die Steigung im doppelt logarithmischen Bild
- Prüflauf — sieben Zeilen, darunter der kritische Exponent
| gemessen | bekannt | |
|---|---|---|
| Schwelle (Quadratgitter, Felder) | 0,5906 … 0,5933 | 0,59274605… |
| Steigung der Übergangsbreite | −0,730 … −0,763 | −1/ν = −0,750 |
Die erste Zahl hat keine Formel. Sie ist nur numerisch bekannt, auf viele Stellen genau, aber ohne geschlossenen Ausdruck — anders als 1/2 für Kanten auf demselben Gitter oder 2·sin(π/18) für das Dreiecksgitter.
Die zweite ist die interessantere: Die Breite des Übergangs schrumpft nach einem Potenzgesetz
L^(−1/ν) mit ν = 4/3. Diese Zahl gilt für jedes zweidimensionale Gitter dieser Art — ob
quadratisch, dreieckig oder wabenförmig. Die Schwelle selbst ist überall anders; die Schärfe des
Übergangs ist überall dieselbe. Und sie fällt hier aus ein paar tausend gewürfelten Gittern
heraus, ohne dass sie irgendwo im Code steht.
| Behauptung | Ergebnis |
|---|---|
| zwei Verfahren, dieselben Haufen | 96 Gitter · 21 356 Felder · Verschmelzen gegen Breitensuche: 0 Abweichungen |
| die Haufengrößen ergeben zusammen alle Felder | 0 Fälle mit fehlenden oder doppelt gezählten Feldern |
| ein Stein mehr macht es nie schlechter | 3264 Schritte, Feld für Feld gefüllt · 0 Rückschritte |
| gedreht ist dasselbe | 30 Gitter · oben-unten im gedrehten = links-rechts im ursprünglichen |
| die Schwelle liegt, wo sie liegen soll | 24² : 0,5852 · 48² : 0,5933 · 96² : 0,5906 gegen 0,59275 |
| aus der Schärfe fällt ein kritischer Exponent | Breite 26,4 → 6,8 Punkte · Steigung −0,730 gegen −0,750 |
| dieselbe Saat, dasselbe Gitter | 0 Unterschiede bei gleicher Saat, 752 bei anderer |
„Ein zusätzlicher Stein kann eine Verbindung nicht zerstören" klingt trivial und ist genau die Sorte Aussage, an der eine kaputte Implementierung auffliegt: Wer beim Verschmelzen einen Haufen falsch anhängt oder die Ränder verwechselt, produziert früher oder später ein Gitter, das durch Hinzufügen undurchlässig wird. Der Test füllt deshalb leere Gitter Feld für Feld in zufälliger Reihenfolge und prüft nach jedem einzelnen Schritt.
Der Messwert ist verrauscht, und das muss man sagen dürfen. Die Schwelle kommt bei drei Gittergrößen als 0,5852 · 0,5933 · 0,5906 heraus — nicht monoton, nicht auf drei Stellen genau. Das ist keine Schwäche des Verfahrens, sondern die Natur der Sache: Jeder Punkt beruht auf ein paar hundert gewürfelten Gittern, und der Fehler fällt nur wie die Wurzel aus der Anzahl. Die Versuchung war, mehr Proben zu rechnen, bis die Zahl schön aussieht. Stattdessen steht die Streuung jetzt im Blatt — mit dem Abstand zum Literaturwert in Tausendsteln, damit sichtbar bleibt, wie genau diese Messung ist und wie genau nicht.
Der Exponent ist der ehrlichere Wert. Ausgerechnet die Zahl, die schwerer zu messen aussieht, kommt zuverlässiger heraus: −0,730 bis −0,763 gegen die theoretischen −0,750, über mehrere Läufe. Der Grund ist, dass sie aus einer Steigung über sieben Gittergrößen kommt und nicht aus einem einzelnen Punkt — der Ausgleich über mehrere Größenordnungen glättet, was einzelne Messungen verzittern.
Beim ersten Anlauf hat mir eine Schleife den Speicher zerlegt. Nicht in diesem Blatt, sondern
im Nachbarblatt — aber es gehört hierher, weil es dieselbe Sorte Fehler ist: for (j = k/2; j > 0; j /= 2) terminiert nie, weil eine Ganzzahl halbiert 0,5 wird und nicht 0. Seitdem schreibe ich in
solchen Schleifen >>= 1.
Was das Blatt nicht kann: keine Kantenperkolation (dort ist die Schwelle exakt 1/2 und der Beweis eine Perle für sich), keine anderen Gitter, keine drei Dimensionen, keine unendlichen Cluster im strengen Sinn — gemessen wird immer nur „reicht ein Haufen von oben nach unten". Keine Cluster-Größenverteilung mit ihrem eigenen Exponenten, keine fraktale Dimension des durchgehenden Haufens (91/48, auch so eine Zahl), keine gerichtete Perkolation.
Eine einzelne HTML-Datei. Kein Build, keine Bibliothek, nichts verlässt den Browser. Verschmelzen mit Pfadverkürzung, Breitensuche als Gegenprobe, Halbierungssuche für die Schwelle, Canvas 2D, hell und dunkel.
Alle Blätter nach Feld geordnet, jedes mit eigenem Repo: ssims437.github.io
MIT