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

354

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

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

cpatrick
источник
Какие графовые алгоритмы вы ищете?
Андрей
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
32

Вы смотрели на Python-график ? Я сам этим не пользовался, но страница проекта выглядит многообещающе.

zweiterlinde
источник
6

Используйте библиотеку графов ускорения - привязки Python .

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

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

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

syvex
источник
0

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

jtguerin
источник