确定根顶点和终端顶点之间的路径?
Posted
技术标签:
【中文标题】确定根顶点和终端顶点之间的路径?【英文标题】:determining paths between root and terminal vertices? 【发布时间】:2018-05-14 21:45:47 【问题描述】:我已经获得了一些代码(感谢各位好心人),这些代码在代表北极浮冰融化和破裂的谱系的大图 (n=266) 中找到了我的根节点和终端节点:
vattrib_df$inst[is.na(vattrib_df$motherinst == TRUE)]
roots = which(sapply(sapply(V(g),
function(x) neighbors(g, x, mode = 'in')), length) == 0)
terminals = which(sapply(sapply(V(g),
function(x) neighbors(g, x, mode = 'out')), length) == 0)
当我在控制台中输入“根”和“终端”时,我分别得到了 6 个和 11 个观察的观察名称。
我现在要做的是计算每个组合之间的节点路径。例如,我可以用这些数据制作一个矩阵吗?我对 R 很陌生,所以我仍然很难有远见地知道如何用编码术语来解决这些问题。
谢谢。
【问题讨论】:
请提供可重现的示例和所需的输出。 【参考方案1】:这是一个例子:
library(igraph)
set.seed(1)
g <- random.graph.game(10, .15, directed = TRUE)
roots = which(sapply(sapply(V(g),
function(x) neighbors(g, x, mode = 'in')), length) == 0)
terminals = which(sapply(sapply(V(g),
function(x) neighbors(g, x, mode = 'out')), length) == 0)
roots
# [1] 2 4
terminals
# [1] 1 5 8
(paths <- lapply(roots, all_simple_paths, graph=g, to=terminals))
# [[1]]
# [[1]][[1]]
# + 2/10 vertices, from 1951039:
# [1] 2 5
#
# [[1]][[2]]
# + 4/10 vertices, from 1951039:
# [1] 2 6 3 8
#
# [[1]][[3]]
# + 5/10 vertices, from 1951039:
# [1] 2 6 3 10 8
# ......
查看?all_simple_paths
,也许还可以查看?all_shortest_paths
。
【讨论】:
以上是关于确定根顶点和终端顶点之间的路径?的主要内容,如果未能解决你的问题,请参考以下文章