Существуют ли алгоритмы обнаружения сообщества на графиках?

Я ищу реализации алгоритмов обнаружения сообщества, таких как алгоритм Гирвана-Ньюмена (2002). Я посетил сайты нескольких исследователей в этой области (Ньюмен, Санто и т.д.), Но не смог найти никакого кода. Я предполагаю, что кто-то там опубликовал реализации этих алгоритмов (может быть, даже инструментарий?), Но я не могу найти его.

Ответ 1

Алгоритмы обнаружения сообщества иногда являются частью библиотеки (например, JUNG для java) или инструментом (см. Gephi). Когда авторы публикуют новый метод, они иногда делают свой код доступным. Например, методы Louvain и Infomap.

Боковое замечание: алгоритм Гирвана-Ньюмена иногда используется, но в основном его заменяют более быстрые и точные методы. Для хорошего обзора темы я рекомендую Алгоритмы обнаружения сообщества: сравнительный анализ или более длинный Обнаружение сообщества на графиках (103 страницы).

Ответ 2

Вы должны посмотреть на библиотеку igraph:

  • 7 алгоритмов обнаружения сообщества (в том числе упомянутых выше):
    • Edgebetweenness (подход, основанный на основе централизованной ссылки),
    • Walktrap (метод Pons-Latapy для случайных блужданий),
    • Ведущие собственные векторы (спектральный подход Ньюмена),
    • Быстрая жадность (Clauset и др. модульная оптимизация),
    • Распространение меток (Raghavan et al.),
    • Лувен (Blondel et al, оптимизация модульности),
    • Spinglass (Рейхардт-Борнхолдт, оптимизация модульности),
    • InfoMap (Rosvall-Bergstrom, основанный на сжатии подход).
  • Другие связанные функции: модульность процесса, работа с иерархическими структурами и т.д.
  • Доступно в R, C и Python
  • Открытый исходный код

На мой взгляд, самый полный инструмент для обнаружения сообщества. Для получения дополнительной информации также проверьте: Каковы различия между алгоритмами обнаружения сообщества в igraph?

Ответ 3

Вы можете попробовать библиотеку SNAP (Stanford Network Analysis Platform, http://snap.stanford.edu/), которая включает модульность, Гирван-Ньюман и Клаузет-Ньюмен -Моровые алгоритмы. Он написан на С++ и находится под лицензией BSD. Поскольку ряд документов использовал его (см. http://snap.stanford.edu/papers.html), это должно быть хорошо.