如何知道图中的哪些节点是可移动的

How to know which nodes in a graph are removable

我有一个图 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))

我想知道哪些节点是 "removable",即删除它们后图仍然是完全连接的然后如果删除 "removable" 节点 cumsum 增加,请删除增幅最大的一个。一旦删除了增加最高的 "removable" 节点,我想重新开始该过程,直到删除 "removable" 节点时 cumsum 没有增加

I would like to know which nodes are "removable", i.e, after removing them the graph is still fully connected

articulation.points 告诉您删除这些节点会增加连通分量数的节点列表。此列表中 的任何节点都可以安全删除。然后你必须遍历这个列表并计算 cumsum 的新值(一一排除每个节点)以找到最好删除哪个。

您可以计算 spanning tree 然后您可以删除末尾的节点(具有单个顶点的节点),直到达到单个节点(如果需要)。