Как реализовать граф в ядре Java? - PullRequest
4 голосов
/ 22 октября 2011

У меня есть ориентированный невзвешенный граф. Количество узлов и все ссылки между узлами приведены. Я пытался выполнить задачу с массивом векторов, но Java не поддерживает его. ArrayList и Vectors поддерживают итераторы с произвольным доступом, но не в состоянии сделать это в Java, поскольку я новичок в этом. Я не хочу использовать для этого 2-мерную матрицу. Я хочу реализовать его как массив из N заданных узлов, где у каждого узла есть список тех узлов, которые к нему подключены. Пожалуйста, кто-нибудь предоставит псевдокод или что-нибудь, что может мне помочь. Например, график задается как

5
3 4
4 2
1 5
4 3
1 3
2 5

здесь даны 5 узлов с номерами от 1 до 5. Ниже приведены направленные ребра от первого узла ко второму узлу. Я хочу представить это как список смежности графа. Кто-нибудь может дать реализацию этого?

Ответы [ 3 ]

5 голосов
/ 22 октября 2011

список смежности , такой как Map<Node, List<Node>> или List<List<Node>> может быть подходящим.

Приложение: При использовании Java Коллекции может быть полезно отметить, что Map и List являются интерфейсами , которые предоставляют характерные методы, в то время как вы можете выбрать конкретные реализации , основанные на требованиях алгоритмов, которые вы хотите реализовать, используя вашу структуру данных.

Приложение: есть связанный пример здесь .

1 голос
/ 22 октября 2011

Очень жаль, что вы просите о реализации ориентированного невзвешенного графа, а не о прямом использовании. В противном случае я предложу вам использовать готовый фреймворк практически для всего, что связано с сетью / графом, под названием JUNG2. Вы можете использовать его в графическом или не графическом режиме. Это сэкономит вам много времени на ремонт. Ниже приводится учебная ссылка:

http://www.grotto -networking.com / JUNG / JUNG2-Tutorial.pdf

1 голос
/ 22 октября 2011

Вы можете использовать множество структур данных коллекции, в частности хеш-таблицы или наборы, для ваших целей.Java предоставляет вам множество универсальных контейнеров коллекции (HashMap-s, ArrayList-s и т. Д. И т. Д.).Я не эксперт по Java, но поиск Java Collections дает много результатов, например это руководство

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