Библиотека графов Python [закрыто]


354

Я пишу приложение на Python, которое будет интенсивно использовать структуру данных графа. Ничего ужасно сложного, но я думаю, что какая-то библиотека графов / графических алгоритмов поможет мне. Я гуглил вокруг, но я не нахожу ничего, что особенно бросается в глаза.

У кого-нибудь есть хорошие рекомендации?


Какие графовые алгоритмы вы ищете?
Андрей

1
Amoss, я искал библиотеку графов, которая могла бы вычислять кратчайшие пути с учетом весов. Основные вещи, правда. Я закончил тем, что пошел с networkx. Это работает довольно хорошо. Я не касался проекта некоторое время, хотя. Этот вопрос был задан более года назад.
cpatrick

108
Шокирующе странно, что есть такие полезные вопросы, и получение такого большого количества голосов, как этот, может быть классифицировано как «неконструктивное».
Джим Рейнор

1
Вы также можете использовать «базу данных собственных графов», например, neo4j, а затем использовать привязку к python для обсуждения с БД?
A STEFANI

3
@JimRaynor "Не конструктивно" было старым уловом для всех. Точные причины были обновлены, чтобы лучше (не идеально, но лучше) охватить предполагаемое использование. Сегодня это будет закрыто как вопрос рекомендации.
jpmc26

Ответы:


237

Есть два отличных варианта:

NetworkX

а также

igraph

Мне нравится NetworkX, но я хорошо читаю и про igraph. Я обычно использую NetworkX с графами с 1 миллионом узлов без проблем (это примерно вдвое увеличивает накладные расходы на размер V + E)

Если вы хотите сравнить характеристики, посмотрите это из списка обсуждений Networkx

Поток сравнения функций


4
В частности, что мне нравится в Networkx .... это в основном на python, легко редактировать и понимать исходный код, и он в основном "питонический".
Грегг Линд

1
Мне было интересно, вы использовали его с * или схожими алгоритмами?
Дассуки

4
Я только что оценил оба. networkxустанавливается через pip, тогда igraphкак нет. Это затрудняет igraphиспользование в качестве зависимостей в ваших setup.pyфайлах.
exhuma

3
В качестве обновления для 2013 года, я собираюсь использовать networkx, просто потому что у него есть github, и он ищет самые последние варианты всех ответов в этом ответе и других
Мати Тернер

1
У igraph также есть github: github.com/igraph/python-igraph
user_1_1_1

105

Я бы хотел подключить свою собственную библиотеку графических питонов: graph-tool .

Это очень быстро, так как он реализован на C ++ с Boost Graph Library и содержит много алгоритмов и обширную документацию.


6
Граф-инструмент просто фантастический.
Шон

5
+1 Для граф-инструмента. Мы использовали его в нашей лаборатории. Это действительно быстро по сравнению с другими библиотеками Python. Кроме того, рисование и отображение графика довольно круто в инструменте графика. Занимает много времени для компиляции!
Dilawar

5
К сожалению, поддержка Windows отсутствует :(
Майк Чалий,

2
@TiagoPeixoto Это выглядит так многообещающе, но не может использовать его в Windows. Я застрял с NetworkX, нахожу это слишком медленно.
Наман

2
@ColonelPanic Это часто задаваемые вопросы, см. Graph-tool.skewed.de/download : «Короткий ответ - это невозможно, поскольку инструмент Graph очень сильно зависит от некоторых (превосходных) библиотек C ++, таких как Boost, которые не устанавливается через пип. "
Tiago Peixoto



6

1
Хороший дехманн, я пошел на это первым (будучи программистом на C ++ по профессии и абсолютно любящим толчком), но меня это пугает: привязки BGL-Python больше не поддерживаются <верх страницы>
cpatrick

3
Взгляните на график-инструмент, он основан на bgl и активен.
Шон


0

Мне больше всего повезло с пидотом. Некоторые из них сложно установить и настроить на разных платформах, таких как Win 7.

http://code.google.com/p/pydot/


0

Я второе предложение Цвайтерлинде использовать Python-граф. Я использовал его в качестве основы для графического исследовательского проекта, над которым я работаю. Библиотека хорошо написана, стабильна и имеет хороший интерфейс. Авторы также быстро реагируют на запросы и сообщения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.