R: đồ thị "kết nối"
Sử dụng R, tôi đã tạo và vẽ một biểu đồ:
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)
Có thể viết một số đoạn mã cho thấy đồ thị nào được kết nối với đồ thị nào không?
Ví dụ: biểu đồ màu xanh lá cây được kết nối với màu cam và màu tím. đồ thị màu tím chỉ được kết nối với đồ thị màu xanh lá cây. và biểu đồ màu cam được kết nối với biểu đồ màu xanh lá cây
("a" là đồ thị màu cam, "b" là đồ thị màu xanh lá cây, "c" là đồ thị màu tím)
b: c và a
c: b
a: b
Trả lời
Đối với trường hợp nhị phân, trong đó câu hỏi là liệu kết nối giữa các cộng đồng có tồn tại hay không, bạn có thể làm như sau. Đầu tiên, ký hợp đồng với các cộng đồng dựa trên tư cách thành viên của họ (thuộc về "a", "b" hoặc "c").
V(karate)$mem <- membership(cfg)
g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")
Thứ hai, loại bỏ các vòng lặp và nhiều cạnh:
g <- simplify(g)
Cuối cùng, trích xuất các nút liền kề (hiện các cộng đồng bình đẳng sau khi ký hợp đồng chúng ở trên):
sapply(1:vcount(g), function(x) adjacent_vertices(g, x))