我正在尝试使用任意大小的igraph绘制完整的图形。然后我想修剪每个顶点可以拥有的相邻边的数量。我怎样才能做到这一点?
例如,如果我有一个包含 20 个顶点的完整图,则每个顶点最初将有 19 条相邻边。现在我想修剪这些边,使每个顶点最多有 10 条边。
编辑
下面是我为此编写的当前代码。它倾向于形成不连接的顶点和连接顶点的小簇。
library(igraph)
node_number = 20
g=erdos.renyi.game(node_number, 1)
testfun = function(g, maxVert, node_number){
neighbor_nodes = NULL; delete_edge = NULL; delete_these = NULL
total_nodes = 1:node_number
for (i in 1:node_number){
neighbor_nodes <- unlist(neighborhood(g, order = 1, nodes = total_nodes[i] ))
neighbor_nodes[1] <- NA
neighbor_nodes <- neighbor_nodes[!is.na(neighbor_nodes)]
neighbor_nodes <- sample(neighbor_nodes, maxVert)
delete_edge <- which(total_nodes%in%neighbor_nodes == FALSE)
delete_edge <- which(delete_edge%in%total_nodes[i] == FALSE)
for (j in 1:length(delete_edge)){
if (isTRUE(edgeFinder(g, total_nodes[i], delete_edge[j]))){
g = delete.edges(g, E(g, P=c(i, delete_edge[j])))
}
}
}
return(g)
}
edgeFinder = function(g, v1,v2){
if (g[v1,v2] == 1){
return(TRUE)
} else { return(FALSE) }
}
g2 = testfun(g, 10, node_number)