R: graphes «connectés»
En utilisant R, j'ai créé et tracé un graphique:
library(igraph)
library(igraphdata)
data(karate)
#cluster
cfg <- cluster_fast_greedy(karate)
#plot entire graph
plot(cfg, karate)
#plot first subgraph
a = induced_subgraph(karate, cfg[[1]])
plot(a)
#plot second subgraph
b = induced_subgraph(karate, cfg[[2]])
plot(b)
#plot third subgraph
c = induced_subgraph(karate, cfg[[3]])
plot(c)
Est-il possible d'écrire du code qui montre quel graphique est connecté à quel graphique?

Exemple: le graphique vert est connecté à l'orange et au violet. le graphique violet est uniquement connecté au graphique vert. et le graphique orange est connecté au graphique vert
("a" est le graphique orange, "b" est le graphique vert, "c" est le graphique violet)
b: c et a
c: b
un B
Réponses
Pour le cas binaire, où la question est de savoir s'il existe ou non une connexion entre les communautés, vous pouvez procéder comme suit. D'abord, contractez les communautés en fonction de leur appartenance (appartenant à «a», «b» ou «c»).
V(karate)$mem <- membership(cfg) g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")
Deuxièmement, supprimez les boucles et les arêtes multiples:
g <- simplify(g)
Enfin, extrayez les nœuds adjacents (qui égalent désormais les communautés après les avoir contractés ci-dessus):
sapply(1:vcount(g), function(x) adjacent_vertices(g, x))