🔗 Граф із силовим розміщенням
Інтерактивний пружинний макет Фрухтермана-Рейнголда для графів Ердьоша-Реньї, безмасштабних мереж Барабаші-Альберт та малого світу. Вузли пофарбовані за степенем.
Схожі симуляції
Про цю симуляцію
Ця симуляція розміщує випадково згенеровану мережу за допомогою пружинного алгоритму Фрухтермана-Рейнголда, у якому кожен вузол відштовхує всі інші, а з'єднані вузли притягуються вздовж своїх ребер. Ви можете перемикатися між трьома класичними моделями графів — випадковим графом Ердьоша-Реньї, безмасштабною мережею Барабаші-Альберт та мережею малого світу Воттса-Строгатца — і спостерігати, як кожна набуває характерної форми. Вузли пофарбовані, а їхній розмір залежить від степеня, а гістограма в реальному часі показує, як розподілені зв'язки в мережі.
🔬 Що показано
Неорієнтований граф, побудований за допомогою силового розміщення: відштовхувальна сила k²/d діє між усіма парами вузлів, тоді як ребра притягують кінці одне до одного із силою d²/k, плюс слабка гравітаційна складова до центру. Три генератори будують топологію — рівномірне випадкове з'єднання, преференційне приєднання, що породжує степеневі хаби, та кільцеву решітку з переприв'язуванням ребер, яка дає короткі шляхи при високій локальній кластеризації.
🎮 Як користуватися
Оберіть тип графа кнопками «Випадковий», «Безмасштабний» та «Малий світ». Повзунок «Вузли» встановлює розмір від 20 до 150, а повзунок «Гравітація» (0–20) стягує або послаблює кластеризацію до центру. Використовуйте ×1/×2/×4, щоб виконувати більше кроків розміщення за кадр, «Новий граф» — щоб згенерувати заново, і «Пауза» — щоб зупинити. Перетягніть будь-який вузол мишею чи дотиком, щоб порушити розміщення.
💡 Чи знали ви?
У безмасштабній мережі Барабаші-Альберт розподіл степенів підпорядковується степеневому закону P(k) ∝ k⁻³, тож жменька щедро з'єднаних хабів співіснує з великою кількістю слабко пов'язаних вузлів — саме цей візерунок видно у довгому правому хвості гістограми в реальному часі.
Часті запитання
Що таке силове розміщення графа?
Це метод малювання мережі так, щоб зображення розкривало її структуру. Кожен вузол трактується як заряджена частинка, що відштовхує інші, тоді як ребра діють як пружини, що притягують з'єднані вузли одне до одного. Система симулюється, доки сили не зрівноважаться, залишаючи добре зв'язані кластери близько один до одного, а слабко зв'язані вузли — розкиданими.
Як тут працює алгоритм Фрухтермана-Рейнголда?
Він обчислює відштовхувальну силу приблизно k²/відстань між кожною парою вузлів і притягувальну силу відстань²/k уздовж кожного ребра, де k — ідеальна відстань, виведена з площі полотна та кількості вузлів. Сили підсумовуються, швидкості затухають на кожному кроці, а невелика гравітаційна сила утримує граф у центрі, тож розміщення поступово релаксує до стабільної конфігурації.
У чому різниця між трьома типами графів?
Випадкова модель (Ердьоша-Реньї) з'єднує кожну пару вузлів із фіксованою невеликою ймовірністю, даючи дзвоноподібний розподіл степенів. Безмасштабна модель (Барабаші-Альберт) зростає завдяки преференційному приєднанню, тож нові вузли надають перевагу вже популярним, і виникають великі хаби. Модель малого світу (Воттса-Строгатца) починається з регулярного кільця та переприв'язує частину ребер, породжуючи короткі шляхи при високій локальній кластеризації.
Що означають кольори та розміри вузлів?
Обидва кодують степінь кожного вузла — кількість приєднаних до нього ребер. Вузли з низьким степенем виглядають синіми та маленькими, тоді як хаби з високим степенем змінюють колір через зелений до оранжевого і збільшуються. Бічна панель також показує кількість вузлів і ребер, середній та максимальний степінь, а також щільність, поряд із гістограмою повного розподілу степенів.
Чи є розміщення фізично точним?
Це точна реалізація евристики Фрухтермана-Рейнголда, а не модель реальної фізики, тож сили обрані для чітких, читабельних діаграм, а не для відтворення природи. Відштовхування обчислюється для всіх пар, що є точним, але масштабується як квадрат кількості вузлів, тому симуляція обмежує мережу 150 вузлами, щоб залишатися плавною в браузері.