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

2

как найти центр графика (вершина, связанная с любой другой вершиной, но ребра направлены в центр графика) с java. его очень полезное приложение для facebook как сайт.

  • 1
    Центром графа является множество вершин, которые имеют наименьший эксцентриситет. Как вы это определяете?
Теги:
algorithm
graph

1 ответ

4

Предположим, что у вас есть граф с множеством V вершин:

V = { v1, v2, v3, ... , vn }

Теперь рассмотрим крайний случай, когда все вершины связаны с v2 и никаких других ребер не существует, т.е. Множество ребер E, заданных в виде наборов (from, to), есть:

E = ( (v1, v2), (v3, v2), ... , (vn, v2) }

В этом крайнем случае v2, очевидно, является центром графика, определенным вами.

Матрица связности A выглядит следующим образом:

A = {
   from
to  v1, v2, v3, ..  vn
v1   0   0   0  ..   0    
v2   1   0   1  ..   1
v3   0   0   0  ..   0    
   :               :
vn   0   0   0  ..   0 }

Здесь v2 четко идентифицируется как центр графа, имея по одному в каждой позиции (за исключением pos v2, т.е. самого себя) своей строки матрицы связности A.

Это позволит идентифицировать центр графика даже, когда в E. есть другие ребра. Обратите внимание, что может быть больше одного центра...

Менее строго определенный центр графа можно найти как вершину с наибольшим количеством записей в своей строке в матрице связности.

Вы можете избежать построения матрицы A, когда у вас есть множество E, и просто рассчитывайте для каждой вершины сколько раз она появляется в позиции корневого кортежа. Вершины с максимальным счетчиком - это точно определенные центры графа, или вершины с числом n - 1 - ваши строго определенные центры.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню