Strona główna Fizyka i Mechanika Perkolacja — klastry i próg krytyczny

🕸️ Perkolacja — klastry i próg krytyczny

Wypełnij siatkę otwartymi węzłami z prawdopodobieństwem p i wyszukaj spójne klastry strukturą union-find. Przy pc ~ 0,593 po raz pierwszy pojawia się klaster przenikający — to ciągłe przejście fazowe.

Fizyka i Mechanika2DŁatwy60 FPS
percolation-threshold ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O tej symulacji

Ta symulacja realizuje perkolację węzłową (site percolation) na dwuwymiarowej siatce kwadratowej: każda komórka siatki N×N jest niezależnie oznaczana jako „otwarta” z prawdopodobieństwem p, a struktura Union-Find (zbiory rozłączne) z kompresją ścieżek i łączeniem według rangi wiąże każdą otwartą komórkę z jej otwartymi sąsiadami w niemal stałym czasie. Do górnego i dolnego wiersza podłączone są dwa węzły wirtualne, dzięki czemu kod może natychmiast sprawdzić, czy góra i dół są połączone — to właśnie definicja klastra przenikającego (spanning cluster). Domyślna wartość p = 0,593 leży dokładnie przy znanym progu krytycznym p_c ≈ 0,5927 dla tej siatki, gdzie klaster przenikający pojawia się po raz pierwszy z wysokim prawdopodobieństwem. Klastry są kolorowane według korzenia w strukturze Union-Find, a na żywo aktualizowany histogram śledzi rozkład rozmiarów klastrów.

🔬 Co przedstawia symulacja

Siatka N×N (domyślnie 60×60), w której każda komórka otwiera się niezależnie z prawdopodobieństwem p. Otwarte komórki są łączone w klastry za pomocą struktury Union-Find, kolorowane według korzenia klastra, a klaster przenikający — czyli taki, który łączy górny wiersz z dolnym dzięki sztuczce z węzłami wirtualnymi — jest podświetlony na czerwono wraz z komunikatem na ekranie. Mały histogram pokazuje rozkład rozmiarów klastrów dla aktualnej wartości p.

🎮 Jak korzystać

Przeciągnij suwak Rozmiar siatki (N) (20–120), aby zmienić rozdzielczość siatki, oraz suwak Prawdopodobieństwo otwarcia (p) (0–1, domyślnie 0,593), aby przechodzić przez przejście fazowe. Obserwuj wskaźniki Klastry i Największy klaster oraz czerwoną odznakę „znaleziono klaster przenikający”, która pojawia się, gdy p przekroczy wartość krytyczną. Użyj Restart, aby wygenerować nową losową siatkę przy aktualnym p, lub Sweep, aby automatycznie animować p od 0 do 1 i z powrotem, obserwując przejście na żywo.

💡 Czy wiesz, że...?

Dwuwymiarowe wykładniki krytyczne — wymiar fraktalny D = 91/48 ≈ 1,896, wykładnik rozmiaru klastra τ = 187/91 ≈ 2,055 oraz wykładnik długości korelacji ν = 4/3 — zostały rygorystycznie udowodnione przez Stanisława Smirnowa przy użyciu niezmienniczości konforemnej i ewolucji Schramma-Loewnera; ta praca przyczyniła się do przyznania mu Medalu Fieldsa w 2010 roku. Wykładniki te są uniwersalne — takie same dla siatki kwadratowej, trójkątnej czy plastra miodu.

Najczęściej zadawane pytania

Jaki typ sieci i perkolacji wykorzystuje ta symulacja?

Symulacja realizuje perkolację węzłową na dwuwymiarowej siatce kwadratowej. Każda z komórek siatki N×N jest niezależnie otwierana z prawdopodobieństwem p (w odróżnieniu od perkolacji krawędziowej, gdzie losowo otwierane są krawędzie, a nie komórki), a łączność między otwartymi sąsiednimi komórkami jest śledzona za pomocą struktury Union-Find.

Jaki jest zastosowany tu próg krytyczny p_c i dlaczego 0,593?

Suwak p domyślnie ustawiony jest na 0,593, ponieważ jest to numerycznie wyznaczony próg krytyczny p_c ≈ 0,5927 dla perkolacji węzłowej na nieskończonej dwuwymiarowej siatce kwadratowej. Poniżej p_c klastry pozostają skończone niezależnie od wielkości siatki; w punkcie p_c i powyżej niego pojawia się gigantyczny klaster przenikający łączący górę z dołem, z prawdopodobieństwem zbliżającym się do 1.

Jak kod wykrywa klaster przenikający?

Symulacja dodaje do struktury Union-Find dwa węzły wirtualne: każda otwarta komórka w górnym wierszu jest łączona z wirtualnym węzłem „góra”, a każda otwarta komórka w dolnym wierszu — z wirtualnym węzłem „dół”. Po zbudowaniu wszystkich połączeń w siatce wystarczy sprawdzić, czy wirtualne węzły góra i dół mają wspólny korzeń — jeśli tak, istnieje klaster przenikający i jest on podświetlany na czerwono.

Dlaczego zamiast flood-fill zastosowano Union-Find?

Union-Find (zbiory rozłączne) z kompresją ścieżek i łączeniem według rangi wykonuje każdą operację find/union w niemal stałym czasie zamortyzowanym, co skaluje się znacznie lepiej niż powtarzane wyszukiwania flood-fill, gdy klastry trzeba łączyć przyrostowo w trakcie budowania siatki. Dzięki temu możliwe jest natychmiastowe przebudowanie dużych siatek N×N za każdym razem, gdy zmienia się N lub p.

Co oznaczają wymiar fraktalny i wykładnik rozmiaru klastra?

Dokładnie przy p = p_c klaster przenikający jest fraktalem o wymiarze Hausdorffa D = 91/48 ≈ 1,896 — jego „masa” skaluje się jak promień^D, a nie promień^2. Rozkład rozmiarów klastrów podlega prawu potęgowemu n(s) ~ s^(-τ) z τ = 187/91 ≈ 2,055, widocznemu jako linia prosta na histogramie w skali log-log. Oba wykładniki są uniwersalne dla wszystkich typów siatek 2D.

Podobne symulacje