Список API Java для графических / сетевых структур данных - PullRequest
8 голосов
/ 28 января 2010

Какие есть хорошие API Java для работы с графами (ребрами / узлами) в качестве структур данных?

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

Ответы [ 4 ]

8 голосов
/ 22 августа 2014

Я много искал в Интернете библиотеку графов Java для моей диссертации. Я предлагаю вам следующие рамки:

  1. GraphStream : у него очень простой API и множество алгоритмов. Он предлагает множество графовых структур (направленный, ненаправленный, мультиграф, ...) и множество инструментов визуализации.
  2. JUNG : этот фреймворк существует уже давно, поэтому он имеет надежные и проверенные функции. Последний выпуск был в 2010 году, поэтому синтаксис немного устарел.

Обе структуры имеют множество алгоритмов и инструмент визуализации.

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

Надеюсь, это поможет!

5 голосов
/ 28 января 2010

JGraphT - JGraphT - это бесплатная библиотека графов Java, которая предоставляет объекты и алгоритмы математической теории графов. JGraphT поддерживает различные типы графиков, включая:

  • ориентированные и неориентированные графы.
  • графики с взвешенными / невзвешенными / помеченными или любыми заданными пользователем ребрами.
  • различные варианты кратности ребер, в том числе: простые графы, мультиграфы, псевдографы.
  • немодифицируемые графы - позволяют модулям предоставлять доступ «только для чтения» к внутренним графам.
  • прослушиваемые графики - позволяют внешним слушателям отслеживать события модификации.
  • графы подграфов, которые автоматически обновляют представления подграфов на других графиках.
  • все композиции приведенных выше графиков

(требуется Java 1.6)

4 голосов
/ 28 января 2010

JUNG - Java Universal Network / Graph Framework - это библиотека программного обеспечения, которая предоставляет общий и расширяемый язык для моделирования, анализа и визуализации данных, которые могут быть представлены в виде графика или сети .

2 голосов
/ 28 января 2010

JDSL - JDSL - это библиотека структур данных в Java. Это коллекция интерфейсов и классов Java, которые реализуют основные структуры данных и алгоритмы, такие как:

  • последовательности, деревья, приоритетные очереди, деревья поиска, хеш-таблицы
  • алгоритмы сортировки и поиска
  • графы
  • обход графов, кратчайший путь, минимальное связующее дерево

(JDSL не поддерживает дженерики)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...