Представление графа в Java - PullRequest
4 голосов
/ 03 марта 2012

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

Должен ли я создать класс Vertex и Edge? Если да, то какими должны быть их атрибуты?

Ответы [ 4 ]

12 голосов
/ 03 марта 2012

Я предлагаю использовать списки смежности для графиков.

Самый простой способ - создать класс Vertex, который содержит список ArrayList<Vertex> ссылок на смежные вершины. Этого достаточно для представления любого графика, вам не нужен отдельный класс Edge.

Вы можете добавить любые другие атрибуты данных, которые вам нравятся, в класс вершин, но список ссылок - это все, что вам строго нужно.

Обратите внимание, что у вас могут быть либо направленные ребра (односторонние ссылки), либо неориентированные ребра (смежные вершины указывают друг на друга).

6 голосов
/ 03 марта 2012

Вы можете представить это типичными способами. Смотрите здесь .Например:

3 голосов
/ 03 марта 2012

Это не совсем специфично для Java. Двумя наиболее распространенными представлениями являются матрица смежности и список. Подробности здесь

Если вам нужна библиотека, JGraphT это хорошо

0 голосов
/ 03 марта 2012

Это скорее зависит от вашего варианта использования, но вы можете попробовать использовать «базу данных графа», такую ​​как neo4j

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