假设我在R中有这个图形(我使用的是igraph)。
zach <- graph("Zachary")
我知道如何计算它的直径。
diameter(zach)
[1] 5
我如何计算一个子图(或多个子图)的大小?扎克 以一些给定的直径,比如4?
比如说4? 扎克 有78个节点,任意两个节点之间的最长最短路径是5,有没有办法计算有多少节点的最长最短路径是4?
更一般地说,对于任何图 g 和直径 x 有什么办法可以返回 g 直径 x?
谢谢你的帮助!假设我在R中有这样一个图(我用的是igraph):扎克?
这就是简单但不完美的解决方案。我发现在Zachary Karate Club中,直径为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 带子图 空手道.
希望你能从中得到启发。