Ликвидация кластеров клики с играфой - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть сеть с несколькими компонентами, я хотел бы:

  1. Чтобы отбросить любой кластер, который полностью подключен

Пример игрушки:

g <- graph(c("a","b","b","c","c","a","f","g","h","g"))
result_g <- graph(c("f", "g","h","g"))
Чтобы иметь возможность маркировать только вершины компонента, только когда (среди прочих условий) они не принадлежат полностью подключенному компоненту.

1 Ответ

0 голосов
/ 05 декабря 2018

Для этого вы можете сначала разбить график на подключенные компоненты, используя функцию components.Затем вы можете протестировать каждый компонент, чтобы увидеть, является ли он полным подграфом.Граф полон тогда и только тогда, когда количество ребер равно n (n-1) / 2, где n - количество узлов.Итак, используя ваш пример:

CompList = components(g)
NotFull = c()
for(i in 1:CompList$no) {
    COMP = induced_subgraph(g, which(CompList$membership==i))
    VC = vcount(COMP)
    if(ecount(COMP) != VC*(VC-1)/2) {
        NotFull = c(NotFull, which(CompList$membership==i)) }
}
result_g = induced_subgraph(g, NotFull)
result_g
IGRAPH 5d61ea5 DN-- 3 2 -- 
+ attr: name (v/c)
+ edges from 5d61ea5 (vertex names):
[1] f->g h->g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...