【发布时间】:2015-11-24 00:26:18
【问题描述】:
我有一个图 g 大约有 200 个顶点和一些属性,我想知道哪些节点可以被删除,也就是说,这意味着 g 在删除它们后仍然是一个连接的子网络,我也会想知道哪个节点会产生我需要的属性的最高增加。
这是一个可能更容易理解的例子
g <- erdos.renyi.game(200, 0.03)
V(g)$name <- 1:vcount(my_graph)
V(g)$weight <- rnorm(200)
V(g)$RWRNodeweight <- runif(200, min=0, max=0.05)
#Criteria to meet
cumsum <- sum(V(g)$weight*V(g)$RWRNodeweight)/sqrt(sum(V(g)$RWRNodeweight^2))
我想知道哪些节点是“可移动的”,即在删除它们之后,图形仍然是完全连接的,然后如果删除“可移动”节点cumsum 增加,则删除增加最大的节点。一旦删除了具有最高增加的“可移动”节点,我想再次开始该过程,直到删除“可移动”节点时cumsum 没有增加
【问题讨论】:
-
算法问题...查看其他 SE 网站。
-
你的节点有什么属性?您可以在删除节点后运行 DFS 或 BFS,以检查到达的节点数是否为
|V(g)|-(n+1)|,其中 n 是删除的节点数。 -
@MarcoGetrost,我的节点有两个属性
weight和RWRnodeweight,用于计算cumsum -
@user2380782 你怎么知道连接了哪些节点?你必须以某种方式存储这些信息?
-
@MarcoGetrost,图是全连接的,即所有节点都是连接的。我没有存储在任何节点属性中的有关连接性的信息,但我想我可以创建一个属性,如
sapply(V(my_graph), function(x) is.connected(delete.vertices(my_graph, x))-> V(my_graph)$removable
标签: r algorithm graph-theory igraph