我用R中的iGraph来计算10个节点的k核.这些节点中有8个是连通的,其度为5或更大,而另外两个节点的度仅为3。
根据我对k核的理解,所有连接并且至少有5度的8个节点不是都在一个值为5的k核中吗?然而,这8家公司中有两家的k核心价值分别为4和3.
见下面可复制的图表:
el = matrix(c("Ns-1","Ns-1","Ns-1","Ns-1","Ns-1","Ns-1","Ns-1","Ns-1","Ns-14","Ns-14","Ns-15","Ns-15","Ns-15","Ns-17","Ns-17","Ns-17","Ns-17","Ns-2","Ns-2","Ns-2","Ns-2","Ns-4","Ns-4","Ns-4","Ns-5","Ns-5","Ns-5","TAMU-7","Ns-14","Ns-15","Ns-17","Ns-2","Ns-4","Ns-5","TAMU-7","TAMU-8","Ns-15","Ns-17","Ns-17","Ns-4","Ns-18","Ns-2","Ns-4","Ns-5","Ns-18","Ns-4","Ns-5","TAMU-7","TAMU-8","Ns-5","TAMU-7","TAMU-8","TAMU-7","TAMU-8","Ns-18","TAMU-8"),nrow=28,ncol=2)
graph = graph.edgelist(el[,1:2],directed=F)
l <- layout.kamada.kawai(graph)
V(graph)$x <- l[,1]
V(graph)$y <- l[,2]
V(graph)$kCore = graph.coreness(graph)
V(graph)$degree = degree(graph)
layout(matrix(c(1,2), 1, 2))
plot(graph,
main="Degree",
vertex.size = 20,
vertex.label = V(graph)$degree,
vertex.label.color = "black",
vertex.label.font = 1,
vertex.label.family = "sans",
vertex.label.cex = 1,
vertex.color = "white")
plot(graph,
main="K Cores",
vertex.size = 20,
vertex.label = V(graph)$kCore,
vertex.label.color = "black",
vertex.label.font = 1,
vertex.label.family = "sans",
vertex.label.cex = 1,
vertex.color = "white")..。它产生了这个图(https://www.dropbox.com/s/unkkgodf8ppteyq/igraph.png?dl=0),它的程度在左边,k核显示在右边。
基本上,左上角和右上角的节点都应该有3的度和k核,其余的应该是5,但中间的两个不是。
这是iGraph中的一个bug,还是我对k核/graph.coreness算法的理解中的一个错误?
发布于 2016-03-29 10:47:02
根据我对k核的理解,所有连接并且至少有5度的8个节点不是都在一个值为5的k核中吗?然而,这8家公司中有两家的k核心价值分别为4和3.
不是的。k -核是图的一部分,如果迭代地删除所有度小于k的节点,就意味着如果一些节点的度由于其他节点的删除而下降到k以下,那么您也必须删除这些节点。剩下的k核是一个子图,所有节点都有至少k度。在您的特殊情况下,删除图形最左边的节点和删除最上面的节点(右上角)会降低5以下其他两个节点的度数,因此它们也会被移除。
https://stackoverflow.com/questions/36276433
复制相似问题