Я пишу приложение на Python, которое будет интенсивно использовать структуру данных графа. Ничего ужасно сложного, но я думаю, что какая-то библиотека графов / графических алгоритмов поможет мне. Я гуглил вокруг, но я не нахожу ничего, что особенно бросается в глаза.
Amoss, я искал библиотеку графов, которая могла бы вычислять кратчайшие пути с учетом весов. Основные вещи, правда. Я закончил тем, что пошел с networkx. Это работает довольно хорошо. Я не касался проекта некоторое время, хотя. Этот вопрос был задан более года назад.
cpatrick
108
Шокирующе странно, что есть такие полезные вопросы, и получение такого большого количества голосов, как этот, может быть классифицировано как «неконструктивное».
Джим Рейнор
1
Вы также можете использовать «базу данных собственных графов», например, neo4j, а затем использовать привязку к python для обсуждения с БД?
A STEFANI
3
@JimRaynor "Не конструктивно" было старым уловом для всех. Точные причины были обновлены, чтобы лучше (не идеально, но лучше) охватить предполагаемое использование. Сегодня это будет закрыто как вопрос рекомендации.
Мне нравится NetworkX, но я хорошо читаю и про igraph. Я обычно использую NetworkX с графами с 1 миллионом узлов без проблем (это примерно вдвое увеличивает накладные расходы на размер V + E)
Если вы хотите сравнить характеристики, посмотрите это из списка обсуждений Networkx
В частности, что мне нравится в Networkx .... это в основном на python, легко редактировать и понимать исходный код, и он в основном "питонический".
Грегг Линд
1
Мне было интересно, вы использовали его с * или схожими алгоритмами?
Дассуки
4
Я только что оценил оба. networkxустанавливается через pip, тогда igraphкак нет. Это затрудняет igraphиспользование в качестве зависимостей в ваших setup.pyфайлах.
exhuma
3
В качестве обновления для 2013 года, я собираюсь использовать networkx, просто потому что у него есть github, и он ищет самые последние варианты всех ответов в этом ответе и других
+1 Для граф-инструмента. Мы использовали его в нашей лаборатории. Это действительно быстро по сравнению с другими библиотеками Python. Кроме того, рисование и отображение графика довольно круто в инструменте графика. Занимает много времени для компиляции!
Dilawar
5
К сожалению, поддержка Windows отсутствует :(
Майк Чалий,
2
@TiagoPeixoto Это выглядит так многообещающе, но не может использовать его в Windows. Я застрял с NetworkX, нахожу это слишком медленно.
Наман
2
@ColonelPanic Это часто задаваемые вопросы, см. Graph-tool.skewed.de/download : «Короткий ответ - это невозможно, поскольку инструмент Graph очень сильно зависит от некоторых (превосходных) библиотек C ++, таких как Boost, которые не устанавливается через пип. "
Tiago Peixoto
32
Вы смотрели на Python-график ? Я сам этим не пользовался, но страница проекта выглядит многообещающе.
Хороший дехманн, я пошел на это первым (будучи программистом на C ++ по профессии и абсолютно любящим толчком), но меня это пугает: привязки BGL-Python больше не поддерживаются <верх страницы>
cpatrick
3
Взгляните на график-инструмент, он основан на bgl и активен.
Я второе предложение Цвайтерлинде использовать Python-граф. Я использовал его в качестве основы для графического исследовательского проекта, над которым я работаю. Библиотека хорошо написана, стабильна и имеет хороший интерфейс. Авторы также быстро реагируют на запросы и сообщения.
Ответы:
Есть два отличных варианта:
NetworkX
а также
igraph
Мне нравится NetworkX, но я хорошо читаю и про igraph. Я обычно использую NetworkX с графами с 1 миллионом узлов без проблем (это примерно вдвое увеличивает накладные расходы на размер V + E)
Если вы хотите сравнить характеристики, посмотрите это из списка обсуждений Networkx
Поток сравнения функций
источник
networkx
устанавливается черезpip
, тогдаigraph
как нет. Это затрудняетigraph
использование в качестве зависимостей в вашихsetup.py
файлах.Я бы хотел подключить свою собственную библиотеку графических питонов: graph-tool .
Это очень быстро, так как он реализован на C ++ с Boost Graph Library и содержит много алгоритмов и обширную документацию.
источник
Вы смотрели на Python-график ? Я сам этим не пользовался, но страница проекта выглядит многообещающе.
источник
Кроме того, вы можете взглянуть на NetworkX
источник
Используйте библиотеку графов ускорения - привязки Python .
источник
Посмотрите на эту страницу о реализации графиков в Python .
Вы также можете взглянуть на pygraphlib на sourceforge.
источник
Мне больше всего повезло с пидотом. Некоторые из них сложно установить и настроить на разных платформах, таких как Win 7.
http://code.google.com/p/pydot/
источник
Я второе предложение Цвайтерлинде использовать Python-граф. Я использовал его в качестве основы для графического исследовательского проекта, над которым я работаю. Библиотека хорошо написана, стабильна и имеет хороший интерфейс. Авторы также быстро реагируют на запросы и сообщения.
источник