найти узел с наивысшей центральностью

У меня есть сеть с множеством разных компонентов. Мне нужно было бы найти узел с наивысшей центральностью между и близостью для каждого из этих компонентов в Gephi и в R?

Я могу извлечь узлы с наивысшей центральностью для глобальной сети, но мне это нужно для каждого компонента. Как мне это сделать?


person DroppingOff    schedule 03.07.2016    source источник
comment
Вы могли бы улучшить свой вопрос. Что касается части R, прочтите как обеспечить минимальный воспроизводимый примеры в R. Затем отредактируйте и улучшите его соответствующим образом. Хороший пост обычно предоставляет минимум входных данных, желаемые выходные данные и попытки кода — все это можно скопировать-вставить-запустить.   -  person lukeA    schedule 03.07.2016
comment
Привет, я знаю, что лучше добавить данные, но я не могу этого сделать, и в этом случае это защищенные данные. veyr большое спасибо за совет. В gephi нет кода.   -  person DroppingOff    schedule 03.07.2016
comment
У меня есть файл с краевой таблицей, на случай, если это будет полезно   -  person DroppingOff    schedule 03.07.2016
comment
Для R взгляните на пакет igraph, с помощью которого вы, среди прочего, строите воспроизводимые примеры графиков. Такой график поможет проиллюстрировать вашу проблему.   -  person lukeA    schedule 03.07.2016


Ответы (1)


Вот пример поиска вершин с наивысшей степенью близости для каждого связанного компонента сети с использованием igraph:

library(igraph)
set.seed(1)

# random graph with two connected components
adj <- matrix(rbinom(n=900, size=1, prob=0.5), nrow=30)
adj[1:15,16:30] <- 0
adj[16:30,1:15] <- 0

g <- graph.adjacency(adj)

# assign a "label" property to keep track of original vertex labels after
# decomposing the network
V(g)$label <- labels(V(g))

# iterate over connected components and find vertex with maximum closeness
# centrality
connected_components <- decompose(g)

for (i in seq_along(connected_components)) {
    subnet <- connected_components[[i]]
    # Vertex with the largest centrality
    max_centrality <- V(subnet)[which.max(closeness(subnet))]$label
    print(sprintf("Vertex with max centrality for component %d: %s", i, max_centrality))
}

igraph также имеет функции для вычисления центральностей других типов, например. между центральностью.

person Keith Hughitt    schedule 03.07.2016
comment
Эй, Кит, как я могу сохранить исходную метку узла? В момент разложения ваш ответ возвращает: [1] Вершина с максимальной центральностью для компонента 3256: 1 и вместо этого или «переименовать» узел в 1, мне нужна исходная метка узла, которая может быть, например, 325 - person DroppingOff; 03.07.2016
comment
Привет @DroppingOff, хороший вопрос. Я обновил пример кода, чтобы он отслеживал исходные метки узлов. Поскольку вы можете прикреплять произвольные метаданные к узлам и ребрам в igraph, вы можете просто сохранить исходные метки, как указано выше. - person Keith Hughitt; 04.07.2016
comment
Большое спасибо! - person DroppingOff; 04.07.2016