是否有一个R函数可以在R中的某个深度找到DAG的节点?

oxcyiej7  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(87)

我是R语言的igraph软件包的新用户。我想提取DAG在某个深度的节点列表。特定深度的节点没有公共边。有人能帮助我用什么代码来做吗?我查看了igraph包中的ego()和neighbors()函数,但是,无论是这些或似乎没有一个内置的功能,只是登记成员节点在一定的深度。任何帮助将不胜感激。谢谢!
我也尝试了dfs和bfs搜索,但我不能使用这些功能来解决我的问题。

kcugc4gi

kcugc4gi1#

假设:

  • 级别按从底部顶点开始的最短路径的长度分组。
  • 从上到下索引。
  • 底部顶点没有任何向外的边。
library(igraph)
    
    ## create some DAG.
    g <- graph_from_literal(a -+ b:c:d:e, b -+ d, c -+ d:e, d -+ e)
    g <- set_edge_attr(g, name="weight", value=-1)          # longest path = shortest negative.
    dist   <- (-distances(g, v=(V(g)), mode="out"))         # matrix of VxV distances of shortest paths.
    layers <- apply(dist, 1, max)                           # maximum distance from bottom to top (max per row).
    layers <- max(layers) - layers                          # minimal distance from top    to bottom.
    
    plot(g, layout=layout_with_sugiyama(g, layers=layers))  # show the graph by level.
      
    d = 1                                                   # certain depth d. 
    layers[which(layers==d)]
    ## b c 
    ## 1 1

字符串
更详细的答案,请参阅:igraph:树图,其中终端(而不是根)节点在同一级别?

相关问题