R: wykresy „łączące”
Używając R, stworzyłem i wykreśliłem wykres:
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)
Czy można napisać jakiś kod pokazujący, który wykres jest powiązany z którym wykresem?

Przykład: zielony wykres jest połączony z pomarańczowym i fioletowym. fioletowy wykres jest połączony tylko z zielonym wykresem. a pomarańczowy wykres jest połączony z zielonym wykresem
(„a” to pomarańczowy wykres, „b” to zielony wykres, „c” to fioletowy wykres)
b: c i a
c: b
a: b
Odpowiedzi
W przypadku binarnym, w którym pytanie brzmi, czy istnieje połączenie między społecznościami, możesz wykonać następujące czynności. Po pierwsze, zawieraj umowy ze społecznościami na podstawie ich przynależności (przynależności do „a”, „b” lub „c”).
V(karate)$mem <- membership(cfg)
g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")
Po drugie, usuń pętle i wiele krawędzi:
g <- simplify(g)
Na koniec wyodrębnij sąsiednie węzły (które teraz są równe społeczności po zawarciu ich powyżej):
sapply(1:vcount(g), function(x) adjacent_vertices(g, x))