R: gráficos de "conexión"
Usando R, creé y tracé un gráfico:
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)
¿Es posible escribir algún código que muestre qué gráfico está conectado a qué gráfico?
Ejemplo: el gráfico verde está conectado al naranja y al violeta. el gráfico violeta solo está conectado al gráfico verde. y el gráfico naranja está conectado al gráfico verde
("a" es el gráfico naranja, "b" es el gráfico verde, "c" es el gráfico púrpura)
b: c y a
c: b
a: b
Respuestas
Para el caso binario, donde la pregunta es si existe una conexión entre comunidades o no, puede hacer lo siguiente. Primero, contrate las comunidades en función de su membresía (pertenecientes a "a", "b" o "c").
V(karate)$mem <- membership(cfg) g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")
En segundo lugar, elimine bucles y bordes múltiples:
g <- simplify(g)
Finalmente, extraiga los nodos adyacentes (que ahora equivalen a comunidades después de contratarlos arriba):
sapply(1:vcount(g), function(x) adjacent_vertices(g, x))