Jump to content

СетьX

СетьX
Оригинальный автор(ы) Арик Хагберг
Питер Сварт
Дэн Шульт
Разработчик(и) Многие другие
Первоначальный выпуск 11 апреля 2005 г .; 19 лет назад ( 11 апреля 2005 г. ) [1] [2]
Стабильная версия
3.3 [3]  Отредактируйте это в Викиданных / 6 апреля 2024 г .; 2 месяца назад ( 6 апреля 2024 г. )
Репозиторий
Написано в Питон
Операционная система Кросс-платформенный
Тип Библиотека программного обеспечения
Лицензия BSD-новая лицензия
Веб-сайт сетьx .github .что

NetworkX библиотека Python для изучения графов и сетей . NetworkX — бесплатное программное обеспечение , выпущенное под новой лицензией BSD .

История [ править ]

NetworkX начала разработку в 2002 году Арика А. Хагберга, Дэниела А. Шульта и Питера Дж. Сварта. [4] Его поддерживает Национальная администрация по ядерной безопасности Министерства энергетики США в Национальной лаборатории Лос-Аламоса .

Пакет был создан с целью создания инструментов для анализа данных и стратегий вмешательства для контроля эпидемического распространения заболеваний, а также изучения структуры и динамики более общих социальных, биологических и инфраструктурных систем. [4]

Вдохновленный эссе Гвидо ван Россума 1998 года о представлении графов Python, [5] NetworkX публично дебютировал на ежегодной конференции SciPy в 2004 году . В апреле 2005 года NetworkX стал доступен как программное обеспечение с открытым исходным кодом. [1]

несколько пакетов Python, посвященных теории графов , включая igraph , graph-tool Доступно и многие другие. По состоянию на апрель 2024 года NetworkX было скачано более 50 миллионов раз. [6] превзойдя количество загрузок второго по популярности пакета igraph более чем в 50 раз. [7] Столь значительный уровень внедрения потенциально можно объяснить ранним выпуском NetworkX и его продолжающимся развитием в экосистеме SciPy.

В 2008 году SageMath , математическая система с открытым исходным кодом, включила NetworkX в свой пакет и добавила поддержку большего количества алгоритмов и функций построения графиков. [4]

Основные релизы NetworkX
Версия Дата выпуска Основные изменения
0.22
17 июня 2005 г.
Топологическая сортировка для тестирования ориентированных ациклических графов (DAG).

Интеграция алгоритма Дейкстры для поиска кратчайших путей во взвешенных графах . [8]

0.99
18 ноября 2008 г.
Тип графика по умолчанию изменен на взвешенный график.

Представлены MultiGraph, MultiDiGraph, LabeledGraph и LabeledDiGraph. [8]

1.0
8 января 2010 г.
Добавление операторов разности и пересечения.

Реализация алгоритма A* для оптимизированного поиска пути.

Включение алгоритмов PageRank , HITS и [собственного вектора] для сетевого анализа.

Интеграция алгоритма Краскала построения минимальных остовных деревьев . [8]

2.0
20 сентября 2017 г.
Значительные изменения в методах классов MultiGraph и DiGraph.

Обновление системы документации .Различные изменения качества жизни пользователей. [8]

3.0
7 января 2023 г.
Улучшенная интеграция с SciPy пакетами экосистемы .

Добавлена ​​новая функция плагина, позволяющая пользователям использовать различные серверные программы ( GraphBLAS , CuGraph) для вычислений. [9]


Особенности [ править ]

типы Поддерживаемые графиков

Обзор [ править ]

Графы в этом контексте представляют собой наборы вершин (узлов) и ребер (соединений) между ними. NetworkX обеспечивает поддержку нескольких типов графиков, каждый из которых подходит для разных приложений и сценариев.

Ориентированные графы (DiGraph) [ править ]

Ориентированные графы, или диграфы, состоят из узлов, соединенных направленными ребрами. В ориентированном графе ребра имеют направление, указывающее поток или взаимосвязь между узлами. [10]

Ориентированный граф, созданный с помощью NetworkX

Неориентированные графики (График) [ править ]

Неориентированные графы, называемые в NetworkX просто графами, — это графы, ребра которых не имеют внутреннего направления. Соединения между узлами симметричны, то есть если узел A соединен с узлом B, то узел B также соединен с узлом A. [11]

Неориентированный граф, созданный с использованием NetworkX

Мультиграфы [ править ]

Мультиграфы допускают наличие нескольких ребер между одной и той же парой узлов. Другими словами, MultiGraph допускает параллельные ребра , когда между двумя узлами может существовать более одного ребра. [12]

MultiGraph, созданный с использованием NetworkX

Мультидиграфы [ править ]

MultiDiGraph — это ориентированные графы, которые допускают наличие нескольких направленных ребер между одной и той же парой узлов. Подобно MultiGraph, MultiDiGraphs позволяет моделировать сценарии, в которых между узлами существуют множественные направленные связи. [13]

MultiDiGraph, созданный с использованием NetworkX

Проблемы визуализации [ править ]

Хотя NetworkX предоставляет мощные инструменты для создания и анализа графиков, создание визуализации сложных графиков может оказаться сложной задачей. Для визуализации больших или плотно связанных графов могут потребоваться специальные методы и внешние библиотеки, выходящие за рамки возможностей только NetworkX.

Макеты графиков [ править ]

NetworkX предоставляет различные алгоритмы компоновки для визуализации графиков в двумерном пространстве. Эти алгоритмы компоновки определяют положения узлов и ребер в визуализации графа, стремясь эффективно раскрыть его структуру и взаимосвязи.

Весенний макет [ править ]

Макет Spring — это алгоритм принудительного макетирования, вдохновленный физическими системами. Он моделирует силы притяжения и отталкивания между узлами, рассматривая края как пружины, а узлы как заряженные частицы. В результате получается макет, в котором узлы с сильными связями располагаются ближе друг к другу, а узлы с более слабыми связями раздвигаются дальше друг от друга. [14]

Спектральный макет [ править ]

Спектральный макет основан на спектральных свойствах матрицы смежности графа. Он использует собственные значения и собственные векторы матрицы смежности для позиционирования узлов в низкомерном пространстве. Спектральная компоновка имеет тенденцию подчеркивать глобальную структуру графа, что делает ее полезной для идентификации кластеров и сообществ. [15]

Круглая компоновка [ править ]

В макете «Круговой» узлы располагаются равномерно по кругу, а края рисуются в виде прямых линий, соединяющих их. Этот макет особенно подходит для визуализации циклических или симметричных графов , где расположение узлов по кругу отражает основную топологию графа. [16]

Компоновка оболочки [ править ]

Макет «Оболочка» объединяет узлы в концентрические круги или оболочки в зависимости от их расстояния от указанного центра. Узлы внутри одной оболочки находятся на одинаковом расстоянии от центра, а края рисуются радиально между узлами в соседних оболочках. Макет оболочки часто используется для визуализации иерархических или древовидных структур. [17]

Макет только для Камады [ править ]

Алгоритм компоновки Камада-Каваи позиционирует узлы на основе их попарных расстояний, стремясь минимизировать общую энергию системы. Он учитывает как топологию графа, так и длину ребер, в результате чего создается макет, подчеркивающий геометрическую точность и удобочитаемость. [18]

Использование [ править ]

NetworkX предоставляет функции для применения различных алгоритмов компоновки к графикам и визуализации результатов с помощью Matplotlib или других библиотек построения графиков. Пользователи могут указать желаемый алгоритм компоновки при вызове функций рисования, что обеспечивает гибкую и настраиваемую визуализацию графиков.

Пригодность [ править ]

NetworkX подходит для работы с большими реальными графами: например, графами, имеющими более 10 миллионов узлов и 100 миллионов ребер. [ нужны разъяснения ] [19] Благодаря своей зависимости от структуры данных «словарь словаря» на чистом Python, NetworkX представляет собой достаточно эффективную, очень масштабируемую и легко переносимую среду для анализа сетей и социальных сетей . [4]

Приложения [ править ]

NetworkX был разработан как простой в использовании и обучении, а также как мощный и сложный инструмент для сетевого анализа. Он широко используется на многих уровнях: от обучения информатике и анализу данных до крупномасштабных научных исследований. [4]

NetworkX имеет приложения в любой области, изучающей данные в виде графиков или сетей, например в математике, физике, биологии, информатике и социальных науках. [20] Узлы графа NetworkX могут быть специализированы для хранения любых данных, а данные, хранящиеся в ребрах, являются произвольными, что делает их широко применимыми в различных областях. Он способен считывать данные в сетях и случайным образом генерировать сети с заданными качествами. Это позволяет использовать его для изучения изменений в большом количестве сетей. [4] На рисунке ниже показан простой пример способности программного обеспечения создавать и изменять варианты в большом количестве сетей.

Графические представления нескольких сетей связующего дерева в алгоритме Каргера

NetworkX имеет множество алгоритмов анализа сетей и графов, помогающих решать широкий спектр задач анализа данных. Одним из важных примеров этого являются различные варианты алгоритмов кратчайшего пути. Следующие алгоритмы включены в NetworkX, временная сложность которых определяется количеством вершин (V) и ребер (E) в графе: [21]

Пример использования графовых алгоритмов NetworkX можно увидеть в исследовании 2018 года, в котором он использовался для анализа устойчивости сетей животноводства к распространению эпидемий. В исследовании использовалась компьютерная модель для прогнозирования и изучения тенденций эпидемий в американских сетях свиноводства с учетом всех ролей животноводческой отрасли. В исследовании NetworkX использовался для поиска информации о степени, кратчайших путях, кластеризации и k-ядрах, поскольку модель вводила инфекции и имитировала их распространение. Затем это было использовано для определения того, какие сети наиболее подвержены эпидемиям. [22]

Помимо создания и анализа сетей, NetworkX также имеет множество возможностей визуализации. Он предоставляет возможности подключения к Matplotlib и GraphViz для 2D-визуалок, а также VTK и UbiGraph для 3D-визуалок. [4] Это делает пакет полезным для простой демонстрации и составления отчетов сетевого анализа и данных, а также позволяет упростить сети для визуальной обработки.

Интеграция [ править ]

NetworkX интегрирован в SageMath . [23]

См. также [ править ]

Ссылки [ править ]

  1. ^ Jump up to: Перейти обратно: а б Первый публичный выпуск NetworkX (NX-0.2) , От: Арик Хагберг, Дата: 12 апреля 2005 г., список рассылки Python-announce-list
  2. ^ Первоначальная версия NetworkX, NX-0.2 , Хагберг - 11 апреля 2005 г., Информация о проекте - NetworkX, Зарегистрировано: 21 октября 2004 г., SourceForge.net
  3. ^ «Выпуск 3.3» . 6 апреля 2024 г. Проверено 8 апреля 2024 г.
  4. ^ Jump up to: Перейти обратно: а б с д и ж г Арик А. Хагберг, Дэниел А. Шульт, Питер Дж. Сварт, Исследование сетевой структуры, динамики и функций с использованием NetworkX , Материалы 7-й конференции Python в науке (SciPy 2008) , Г. Варокво, Т. Воут, Дж. Миллман (Ред.), стр. 11–15.
  5. ^ ван Россум, Гвидо (февраль 1998 г.). «Шаблоны Python — реализация графов» . Питон .
  6. ^ "сетьx" . Статистика ПиПи . Апрель 2024 г.
  7. ^ «Играф» . Статистика ПиПи . Апрель 2024 г.
  8. ^ Jump up to: Перейти обратно: а б с д «Журнал старых выпусков» . СетьX . 22 августа 2020 г. Проверено 24 апреля 2024 г.
  9. ^ «СетьХ 3.0» . СетьX . 7 января 2023 г. Проверено 24 апреля 2024 г.
  10. ^ «DiGraph — Ориентированные графики с циклами — Документация NetworkX 3.3» . networkx.org . Проверено 24 апреля 2024 г.
  11. ^ «График — неориентированные графы с самоциклами — документация NetworkX 3.3» . networkx.org . Проверено 24 апреля 2024 г.
  12. ^ «MultiGraph — неориентированные графы с циклами и параллельными ребрами — документация NetworkX 3.3» . networkx.org . Проверено 24 апреля 2024 г.
  13. ^ «MultiDiGraph — Ориентированные графы с циклами и параллельными ребрами — Документация NetworkX 3.3» . networkx.org . Проверено 24 апреля 2024 г.
  14. ^ «spring_layout — документация NetworkX 3.3» . networkx.org . Проверено 2 мая 2024 г.
  15. ^ «spectral_layout — документация NetworkX 3.3» . networkx.org . Проверено 2 мая 2024 г.
  16. ^ «circular_layout — документация NetworkX 3.3» . networkx.org . Проверено 2 мая 2024 г.
  17. ^ «shell_layout — документация NetworkX 3.3» . networkx.org . Проверено 2 мая 2024 г.
  18. ^ «kamada_kawai_layout — документация NetworkX 3.3» . networkx.org . Проверено 2 мая 2024 г.
  19. ^ Арик Хагберг, Дрю Конвей, «Взлом социальных сетей с использованием языка программирования Python (Модуль II – Почему SNA в NetworkX)» , Sunbelt 2010: Международная сеть анализа социальных сетей .
  20. ^ Хададж, П.; Стшалка, Д.; Новак, М. (19 октября 2022 г.). «Использование PLANS и NetworkX при моделировании отказов энергосистемы» . Научный представитель . 12 .
  21. ^ «Кратчайшие пути — документация NetworkX 3.3» . networkx.org . Проверено 29 апреля 2024 г.
  22. ^ Уилтшир, Серж В. (9 марта 2018 г.). «Использование агентной модели для оценки влияния специализации производителей на эпидемиологическую устойчивость сетей животноводства» . ПЛОС ОДИН .
  23. ^ «Система математического программного обеспечения SageMath — Sage» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 057b4da2d731f1cd416780c3b589b212__1716133440
URL1:https://arc.ask3.ru/arc/aa/05/12/057b4da2d731f1cd416780c3b589b212.html
Заголовок, (Title) документа по адресу, URL1:
NetworkX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)