Головна Фізика та Механіка Перколяція — кластери та критичний поріг

🕸️ Перколяція — кластери та критичний поріг

Заповнюйте сітку відкритими вузлами з імовірністю p та знаходьте кластери. При критичному pc ~ 0.593 з'являється кластер, що охоплює всю систему.

Фізика та Механіка2DЛегкий60 FPS
percolation-threshold ↗ Відкрити окремо
DRAG · SCROLL · CLICK — керуйте прямо у вікні симуляції.

Про цю симуляцію

Ця симуляція виконує перколяцію вузлів на двовимірній квадратній решітці: кожна клітинка сітки N×N незалежно позначається «відкритою» з імовірністю p, а структура Union-Find (об'єднання неперетинних множин) зі стисненням шляхів і об'єднанням за рангом з'єднує кожну відкриту клітинку з її відкритими сусідами за майже постійний час. Два віртуальні вузли підключені до верхнього та нижнього рядків, тож код може миттєво перевірити, чи з'єднані верх і низ — це і є визначення кластера, що охоплює всю систему. Значення за замовчуванням p = 0.593 лежить якраз біля відомого критичного порогу p_c ≈ 0.5927 для цієї решітки, де такий кластер вперше з'являється з високою ймовірністю. Кластери позначені кольором за їхнім коренем Union-Find, а жива гістограма відстежує розподіл розмірів кластерів.

🔬 Що показано

Сітка N×N (за замовчуванням 60×60), де кожна клітинка відкривається незалежно з імовірністю p. Відкриті клітинки об'єднуються в кластери за допомогою Union-Find, забарвлені за коренем кластера, а кластер, що охоплює всю систему, — той, що з'єднує верхній рядок із нижнім через прийом із віртуальними вузлами, — виділяється червоним із попередженням на екрані. Міні-гістограма показує, як розподілені розміри кластерів для поточного p.

🎮 Як користуватися

Перетягуйте повзунок розміру сітки (N) (20–120), щоб змінити роздільність решітки, і повзунок імовірності відкриття (p) (0–1, за замовчуванням 0.593), щоб пройти через фазовий перехід. Спостерігайте за показниками «Кластери» та «Найбільший кластер», а також за червоним значком «знайдено кластер, що охоплює систему», який з'являється, щойно p перевищує критичне значення. Використовуйте «Скинути», щоб перемалювати нову випадкову сітку за поточного p, або «Розгортка», щоб автоматично анімувати p від 0 до 1 і назад, спостерігаючи перехід наживо.

💡 А чи знали ви?

Двовимірні критичні показники — фрактальна розмірність D = 91/48 ≈ 1.896, показник розміру кластера τ = 187/91 ≈ 2.055 та показник довжини кореляції ν = 4/3 — були строго доведені Станіславом Смирновим за допомогою конформної інваріантності та еволюції Шрама–Льовнера; ця робота сприяла присудженню йому Філдсівської медалі 2010 року. Ці показники є універсальними: вони однакові для квадратної, трикутної чи стільникової решіток.

Поширені запитання

Яку решітку та тип перколяції використовує ця симуляція?

Вона реалізує перколяцію вузлів на двовимірній квадратній решітці. Кожна з клітинок сітки N×N незалежно відкривається з імовірністю p (на відміну від перколяції зв'язків, де випадково відкриваються ребра, а не клітинки), а зв'язність між відкритими сусідніми клітинками відстежується за допомогою структури Union-Find.

Який критичний поріг p_c використано тут і чому саме 0.593?

Повзунок p за замовчуванням встановлено на 0.593, оскільки це чисельно встановлений критичний поріг p_c ≈ 0.5927 для перколяції вузлів на нескінченній двовимірній квадратній решітці. Нижче p_c кластери залишаються скінченними в міру росту сітки; на рівні та вище p_c гігантський кластер, що з'єднує верх із низом, з'являється з імовірністю, що наближається до 1.

Як код виявляє кластер, що охоплює систему?

Симуляція додає два віртуальні вузли до структури Union-Find: кожна відкрита клітинка верхнього рядка об'єднується з віртуальним «верхнім» вузлом, а кожна відкрита клітинка нижнього рядка — з віртуальним «нижнім» вузлом. Після побудови всіх з'єднань сітки код просто перевіряє, чи мають віртуальні верхній і нижній вузли спільний корінь — якщо так, кластер, що охоплює систему, існує, і він виділяється червоним.

Чому використовується Union-Find, а не заливка (flood-fill)?

Union-Find (об'єднання неперетинних множин) зі стисненням шляхів і об'єднанням за рангом виконує кожну операцію пошуку/об'єднання за майже постійний амортизований час, що масштабується значно краще за повторювані пошуки методом заливки, коли кластери потрібно об'єднувати покроково під час побудови сітки. Це робить практичним миттєву перебудову великих сіток N×N щоразу, коли змінюється N або p.

Що означають фрактальна розмірність і показник розміру кластера?

Точно при p = p_c кластер, що охоплює систему, є фракталом із гаусдорфовою розмірністю D = 91/48 ≈ 1.896 — його «маса» масштабується як радіус у степені D, а не як радіус у квадраті. Розподіл розмірів кластерів підпорядковується степеневому закону n(s) ~ s^(-τ) з τ = 187/91 ≈ 2.055, що видно як пряма лінія на логарифмічній гістограмі. Обидва показники є універсальними для всіх типів двовимірних решіток.

⚙ Під капотом

Заповнюйте сітку відкритими вузлами з імовірністю p та знаходьте кластери. При критичному pc ~ 0.593 з'являється кластер, що охоплює всю систему.

percolationcritical thresholdfractal clusterspanning clusterCanvas 2D

2D · HTML5 Canvas 2D · ціль 60 FPS · працює повністю на стороні клієнта, без встановлення

Схожі симуляції