Силові алгоритми візуалізації графів

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Візуалізація соціальної мережі за допомогою силового алгоритму візуалізації графа[1]
Візуалізація зв'язків сторінок у Вікі за допомогою силового алгоритму візуалізації розміщення.

Силові́ алгори́тми візуаліза́ції гра́фів — клас алгоритмів візуалізації графів у естетично приємному вигляді. Їх мета — розмістити вузли графа в двовимірному або тривимірному просторі так, щоб усі ребра мали б більш-менш однакову довжину, і звести до мінімуму число перетинів ребер, призначивши сили для множини ребер і вузлів, ґрунтуючись на їх відносних положеннях, а потім використовуючи ці сили або для моделювання руху ребер і вузлів, або для мінімізації їх енергії[2].

Тоді як візуалізація графів може виявитися складною задачею, силові алгоритми, як фізичні моделі, зазвичай не вимагають спеціальних знань з теорії графів, таких як планарність графа.

Сили[ред. | ред. код]

Силові алгоритми візуалізації графів призначають сили на множині ребер та вузлів графа. Зазвичай використовують сили притягання, подібні до пружинних, на основі закону Гука для призначення сил парам кінців ребер графа. Разом з тим, щоб розділити всі пари вузлів, використовують сили відштовхування, подібні до відштовхування електричних зарядів на основі закону Кулона. Для отримання рівноважного стану цієї системи сил ребра прагнуть набути однорідних довжин (через дію пружин), а вузли, не пов'язані ребром, прагнуть віддалитися один від одного (через дію сил відштовхування). Сили притягання (ребра) та сили відштовхування (вузли) можна визначити за допомогою функцій, які не засновані на фізичній поведінці пружин та частинок. Наприклад, деякі силові системи використовують пружини, сили яких змінюються логарифмічно, а не лінійно.

Альтернативна модель розглядає сили, подібні до пружинних, для кожної пари вузлів , де ідеальна довжина кожної пружини пропорційна відстані у графі між вузлами i і j, а сили відштовхування не використовуються. Мінімізація різниці (зазвичай, квадрата різниці) між евклідовою та ідеальною відстанню між вузлами еквівалентна метричній задачі багатовимірного шкалювання.

Силовий граф може використовувати сили, відмінні від механічних пружин та сил відштовхування зарядів. Силу, аналогічну гравітації, можна використати для тяжіння вершин у бік фіксованої точки простору малювання графа. Це можна використати для зведення різних компонент зв'язності незв'язного графа в одне ціле, інакше ці частини розлетілися б одна від одної під дією сил відштовхування. Також це дозволяє краще центрувати вузли на малюнку[3]. Це також може вплинути на відстань між вершинами одного компонента зв'язності. Для орієнтованих графів можна використовувати аналоги магнітних полів. Щоб уникнути накладення або майже накладення на кінцевому малюнку, як на ребрах, так і на вузлах можна розташувати сили відштовхування. На малюнках з кривими ребрами, такими як дуги кіл або сплайни, сили можуть розташовуватися в контрольних точках цих кривих, наприклад, щоб поліпшити кутову роздільність[4] .

Методи[ред. | ред. код]

Як тільки сили на вузлах і ребрах визначено, поведінку всього графа під дією цих сил можна ітеративно промоделювати, подібно до поведінки фізичної системи. У такій ситуації сили, що діють на вузли, намагаються стягнути їх ближче або відштовхнути їх один від одного. Це триває, поки система не набуде стану механічної рівноваги, тобто припиниться змінення положення вузлів від ітерації до ітерації. Положення вузлів у цьому стані рівноваги використовують для побудови малюнка графа.

Для сил, визначених пружинами, ідеальна довжина яких пропорційна відстані в графі, мажорування стресу дає дуже хорошу поведінку (тобто монотонну збіжність)[5] і математично елегантний шлях мінімізації цієї різниці і, отже, до хорошого розміщення вершин графа.

Можна також використати механізми, які шукають мінімум енергії пряміше, а не за фізичною моделлю. До таких механізмів, які є прикладами загальних методів глобальної оптимізації, належать імітація відпалу і генетичні алгоритми.

Переваги[ред. | ред. код]

Важливими перевагами силових алгоритмів є такі властивості:

Результати хорошої якості
Щонайменше для графів середнього розміру (до 50-500 вершин), отримані результати зазвичай мають дуже хороші малюнки графів за такими критеріями: однорідність довжин ребер, рівномірний розподіл вершин і симетрія. Останній критерій найважливіший і важкодосяжний в інших алгоритмах.
Гнучкість
Силові алгоритми можна легко пристосувати і розширити для додаткових естетичних критеріїв. Це робить алгоритми універсальнішими. Прикладами існуючих розширень є алгоритми для орієнтованих графів, візуалізація тривимірних графів[6], кластерна візуалізація графів, візуалізація графів з обмеженнями і динамічна візуалізація графів.
Інтуїтивність
Оскільки алгоритми засновані на фізичних аналогах звичних об'єктів, на зразок пружин, поведінку алгоритмів відносно просто передбачити і зрозуміти. Цього немає в інших алгоритмах візуалізації графів.
Простота
Типові силові алгоритми прості і можуть бути реалізовані кількома рядками коду. Інші класи алгоритмів візуалізації, такі як алгоритми на основі ортогональних розміщень, зазвичай вимагають значно більше роботи.
Інтерактивність
Ще однією перевагою цього класу алгоритмів є аспект інтерактивності. При малюванні проміжних етапів графа користувач може спостерігати, як змінюється граф, простежуючи еволюцію від безладного місива до гарної конфігурації. У деяких засобах інтерактивного малювання графа користувач може відсунути один або кілька вузлів зі стану рівноваги і спостерігати міграцію вузлів у новий стан рівноваги. Це дає алгоритмам перевагу для динамічних і онлайнових систем візуалізації графів.
Строга теоретична підтримка
Тоді як прості силові алгоритми часто з'являються в літературі і на практиці (оскільки вони відносно прості і зрозумілі), починає зростати число обгрунтованіших підходів. Статистики розв'язували подібні задачі в багатовимірному шкалюванні (БВШ, англ. multidimensional scaling) з 1930-х років, фізики також мають довгу історію роботи з пов'язаними задачами моделювання руху n тіл, так що існують цілком зрілі підходи. Як приклад, підхід мажорування стресу до метричних БВШ можна застосувати для візуалізації графа і в цьому випадку можна довести монотонну збіжність[5]. Монотонна збіжність, властивість, що алгоритм буде на кожній ітерації зменшувати напругу або ціну розміщення вершин, важлива, оскільки це гарантує, що розміщення, зрештою, досягне локального мінімуму і алгоритм зупиниться. Глушіння коливань призводить до зупинки алгоритму, але не гарантує, що буде досягнуто істинного локального мінімуму.

Недоліки[ред. | ред. код]

Головні недоліки силових алгоритмів:

Великий час роботи
Вважається, що типові силові алгоритми в загальному випадку мають час роботи, еквівалентний , де n — число вузлів вхідного графа. Це тому, що число ітерацій оцінюється в , а на кожній ітерації необхідно переглянути всі пари вузлів і обчислити взаємні сили відштовхування. Це схоже на задачу N-тіл у фізиці. Однак, оскільки сили відштовхування локальні за природою, граф можна розбити так, що будуть розглядатися тільки сусідні вершини. Основні техніки, використані в алгоритмах для визначення розміщення вузлів великих графів, включають вкладення високої розмірності[7], багаторівневі подання та інші методи, пов'язані з моделюванням задачі n тіл. Наприклад, заснований на моделюванні Барнса-Хата метод FADE[8] може поліпшити час роботи до на ітерацію. Груба оцінка: за кілька секунд можна очікувати малювання максимум 1000 вузлів у стандартній техніці на ітерацію і 100 000 з технікою на ітерацію[8]. Силові алгоритми, у комбінації з багаторівневим підходом, можуть малювати графи з мільйонами вузлів[9].
Погані локальні мінімуми
Легко бачити, що силовий алгоритм дає граф із мінімальною енергією, зокрема, це може бути лише локальний мінімум. Знайдений локальний мінімум може бути, у багатьох випадках істотно гіршим від глобального мінімуму, що призводить до низької якості подання. Для багатьох алгоритмів, особливо для тих, які дозволяють тільки рух градієнтного спуску, на кінцевий результат може дуже впливати початкове положення, яке в більшості випадків генерується випадково. Проблема поганого локального мінімуму стає особливо важливою при зростанні числа вершин графа. Комбінування різних алгоритмів допомагає вирішити цю проблему[10]. Наприклад, для швидкого генерування прийнятного початкового розміщення можна використати алгоритм Камади — Каваї[11], а потім поліпшити положення сусідніх вузлів за алгоритмом Фрухтермана — Рейнгольда[12]. Інша техніка отримання глобального мінімуму — використання багаторівневого підходу [13].

Історія[ред. | ред. код]

Силові методи візуалізації графів сходять до роботи Татта[14], в якій він показав, що поліедральні графи можна намалювати на площині з опуклими гранями, зафіксувавши вершин зовнішньої грані планарного вкладення графа в опуклому положенні[en], розташувавши пружиноподібні сили притягання на кожному ребрі і дозволивши системі прийти в рівноважний стан[15]. Зважаючи на просту природу сил у цьому випадку система не може застрягти в локальному мінімумі, а збігається до єдиної глобальної оптимальної конфігурації. Зважаючи на цю статтю, вкладення планарних графів із опуклими гранями іноді називають вкладеннями Татта.

Комбінацію сил притягання суміжних вершин графа і сил відштовхування для всіх вершин першим використав Ідс[16][17]. Ще одну піонерську роботу щодо цього типу силового розміщення опублікували Фрухтерман і Рейнгольд[18]. Ідея використання між усіма парами вершин лише сил пружин з ідеальними довжинами пружин, рівними відстані по графу, належить Камаді і Каваї[19][11].

Див. також[ред. | ред. код]

  • Cytoscape[ru] — програма для візуалізації біологічних мереж. Базовий пакет включає силові розміщення як один із вбудованих методів.
  • Gephi — інтерактивна візуалізація та дослідницька платформа exploration для всіх видів мереж та складних систем, динамічних та ієрархічних графів.
  • Graphviz — програмний засіб, що реалізує багаторівневий силовий алгоритм розміщення (серед інших), здатний обробляти дуже великі графи.
  • Tulip[en] — програмний засіб, що реалізує більшість силових алгоритмів розміщення (GEM, LGL, GRIP, FM3).
  • Prefuse[en]

Примітки[ред. | ред. код]

  1. Grandjean, 2015, с. 109–128.
  2. Kobourov, 2012.
  3. Bannister, Eppstein, Goodrich, Trott, 2012.
  4. Chernobelskiy, Cunningham, Goodrich, Kobourov, Trott, 2011, с. 78–90.
  5. а б de Leeuw, 1988, с. 163—180.
  6. Vose, Aaron. 3D Phylogenetic Tree Viewer. Архів оригіналу за 10 серпня 2015. Процитовано 27 квітня 2022.
  7. Harel, Koren, 2002, с. 207—219.
  8. а б Quigley, Eades, 2001, с. 197—210.
  9. A Gallery of Large Graphs. Процитовано 22 жовтня 2017.
  10. Collberg, Kobourov, Nagra, Pitts, Wampler, 2003, с. 77–86; Рис. на стр. 212.
  11. а б Kamada, Kawai, 1989, с. 7—15.
  12. Fruchterman, Reingold, 1991, с. 1129—1164.
  13. http://jgaa.info/accepted/2003/Walshaw2003.7.3.pdf A Multilevel Algorithm for Force-Directed Graph-Drawing
  14. Tutte, 1963.
  15. Tutte, 1963, с. 743–768.
  16. Eades, 1984.
  17. Eades, 1984, с. 149–160.
  18. Fruchterman, Reingold, 1991, с. 1129—1164.
  19. Kamada, Kawai, 1989.

Література[ред. | ред. код]

Додаткова література[ред. | ред. код]

  • Giuseppe di Battista, Peter Eades, Roberto Tamassia, Ioannis G. Tollis. Graph Drawing: Algorithms for the Visualization of Graphs. — Prentice Hall, 1999. — ISBN 978-0-13-301615-4.
  • Drawing graphs: methods and models / Michael Kaufmann, Dorothea Wagner. — Springer, 2001. — (Lecture Notes in Computer Science 2025) — ISBN 978-3-540-42062-0. — DOI:10.1007/3-540-44969-8.

Посилання[ред. | ред. код]