我在R中使用igraph来管理代表家庭的有向无环图(如果v是w的父母之一,则v和w之间存在边缘)。在igraph中有一种简单的方法可以找到给定顶点的任何程度的所有祖先吗?我当然可以编程导航图形,但我想知道是否有更优雅的方法来做它。
答案 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是给定的顶点(索引)。
“入”用于查找进入该顶点的所有节点,因此父代或祖先“出”以查找儿子离开顶点的所有边,如果不关心则“全部”。
有关更多信息,请参阅文档“事件”