igraph是否具有生成受权重限制的子图的功能? dfs,random_walk

问题描述 投票:1回答:1

我在igraph R环境中有一个加权图。

并且需要从任何随机节点开始递归获得子图。每个子图中的权重总和必须减去一个数字。

深度优先搜索算法似乎可以解决此问题。还有随机游走功能。

有人知道哪个图形函数可以解决这个问题吗?

谢谢,

r igraph weighted subgraph
1个回答
0
投票

此操作在下面完成,但是似乎无效。

#######Example code
g <- make_tree(10, children = 2, mode = c("undirected"))
s <- seq(1:19)
g <- set_edge_attr(g, "weight", value= s)
plot(g)
is_weighted(g)
E(g)$weight


threshold <- 5 
eval <- function(r){
  #r <- 10
  Vertice_dfs <- dfs(g, root = r)
  Sequencia <- as.numeric(Vertice_dfs$order)
  for (i in 1:length(Sequencia)) {
   #i <- 2
   # function callback by vertice to dfs
   f.in <- function(graph, data, extra) {
    data[1] == Sequencia[i]-1
   }
   # DFS algorithm to the function
   dfs <- dfs(g, root = r,in.callback=f.in) 
   # Vertices resulted from DFS 
   dfs_eges <- na.omit(as.numeric(dfs$order))
   # Rsulted subgraph
   g2 <- induced_subgraph(g, dfs_eges)
   # Total weight subgraph g2
   T_W <- sum(E(g2)$weight)
     if (T_W > threshold) {
      print(T_W) 
      return(T_W)
      break
     }
  }
}

#search by vertice
result <- lapply(1:length(V(g)),eval)
© www.soinside.com 2019 - 2024. All rights reserved.