Двумя наиболее распространенными способами представления графа являются матрица смежности и список смежности. Пусть n будет количеством узлов.
Матрица смежности A представляет собой матрицу n x n логических значений, такую, что A(i, j) = 1, если узлы i и j соединены, и 0, если они не связаны.
В представлении списков смежности для каждого узла вы ведете список узлов, к которым он подключен (смежных).
Теперь вопрос в том, что вы хотите сделать с графиком. Если это что-то простое, может иметь смысл свернуть свой собственный. Если нет, вы можете поискать в Интернете библиотеку Java для обработки графиков. Был упомянут JGraphT.
Если вы хотите использовать матрицу смежности, вы можете легко представить ее в Java как двумерный массив логических или целых чисел. Вам нужно будет дать каждому узлу индекс. Самый простой способ сделать это — хранить объекты Node в массиве всегда в одном и том же порядке. Таким образом, у вас действительно будет две структуры данных: массив узлов, которые представляют собой объекты, представляющие то, чем на самом деле являются ваши узлы, и матрица смежности, которая ссылается на узлы по их индексам.
После того, как вы заполните матрицу, вы можете легко найти узел, который связан с большинством других узлов, сложив значения (0 и 1) во всех столбцах (или строках) и найдя максимум. Надеюсь это поможет.
person
Dima
schedule
08.12.2008