igraph中的祖先

时间:2014-02-12 01:05:17

标签: r igraph

我在R中使用igraph来管理代表家庭的有向无环图(如果v是w的父母之一,则v和w之间存在边缘)。在igraph中有一种简单的方法可以找到给定顶点的任何程度的所有祖先吗?我当然可以编程导航图形,但我想知道是否有更优雅的方法来做它。

2 个答案:

答案 0 :(得分:1)

考虑使用local_中的tidygraph组功能。在下面的示例中,我通过设置mode="in"来计算祖先总数:

library(tidygraph)
library(dplyr)

edges = tribble(
  ~from, ~to, 
  1, 2,
  3, 2, 
  4, 3, 
  2, 5, 
  5, 6,
  3, 7)

g = tbl_graph(edges = edges) 
plot(g)


g %>%
  activate(nodes) %>% 
  mutate(numAncestors = local_size(order = graph_order(), mode = 'in')) %>%
  as_tibble()

#> # A tibble: 7 x 1
#>   numAncestors
#>          <dbl>
#> 1            1
#> 2            4
#> 3            2
#> 4            1
#> 5            5
#> 6            6
#> 7            3

答案 1 :(得分:0)

在这种情况下,一个选项是偶发事件,并具有igrap图g:

incident(g, v, mode=c("in"))

其中v是给定的顶点(索引)。

“入”用于查找进入该顶点的所有节点,因此父代或祖先“出”以查找儿子离开顶点的所有边,如果不关心则“全部”。

有关更多信息,请参阅文档“事件”