>假设我在R中有这个图(我正在使用igraph(:
zach <- graph("Zachary")
我知道如何计算它的直径:
diameter(zach)
[1] 5
我如何计算具有某个给定直径(例如 4(的zach子图(或多个子图(的大小?
例如,zach有 78 个节点,任意两个节点之间的最长最短路径为 5。有没有办法计算有多少个节点的最长最短路径为 4?
更一般地说,对于任何图形 g 和直径x 有没有办法返回直径为x的g子集?
谢谢!
这是一个简单但不完美的解决方案。我发现在扎卡里空手道俱乐部,直径是13,有34个节点。据此,我编写了以下代码。在这里,我删除了最长的最短路径。
Mat = shortest.paths(karate,v=V(karate),to=V(karate),mode = "all")
Mat = ifelse(Mat>12,1,0)
g = graph_from_adjacency_matrix(Mat,mode = "undirected")
elist = get.edgelist(g)
g2 = graph_from_edgelist(elist)
for (i in 1:vcount(g2)) {
karate = delete.vertices(karate,V(g2)$name[i])
}
现在,在删除了之间具有最长最短路径的节点后,我发现了带有子图空手道的直径 11。
希望你能从中得到想法。