gpt4 book ai didi

r - 如何获取图中叶节点之间的所有可能路径?

转载 作者:行者123 更新时间:2023-12-04 14:47:47 25 4
gpt4 key购买 nike

我想在图表中获取“连接组”的列表。这是一个例子:

library(igraph)
G <- graph(c(1,2,2,3,2,5,4,5,5,6,4,7,4,8,7,8,8,9), directed=F)
plot(G)

我想得到两个叶节点之间所有可能的路径:

[1] 1 2 3
[2] 1 2 5 6
[3] 1 2 5 4 8 9
[4] 1 2 5 4 7 8 9
[5] 3 2 5 6
[6] 3 2 5 4 8 9
[7] 3 2 5 4 7 8 9
[8] 6 5 4 7 8 9
[9] 6 5 4 8 9

我正在使用 R。感谢您的帮助。

最佳答案

我不太确定这里的确切逻辑是什么,但您似乎想要获取从每个叶节点到所有其他叶节点的路径。我们可以编写一个辅助函数来执行此操作。

get_leaf_paths <- function(G) {
leafs <- V(G)[degree(G)==1]
do.call("c", lapply(1:(length(leafs)-1), function(i) {
all_simple_paths(G,leafs[[i]], leafs[[-(1:i)]])
}))
}

基本上,我们通过查找仅连接到一个其他节点的那些节点来找到叶节点,然后我们为这些节点中的每一个调用 all_simple_paths 以获取与所有其他叶节点的连接。我们只寻找与列表更靠后的其他人的联系,以避免重复。最后,我们将所有最短路径调用的结果合并到一个对象中,该对象将收集所有路径。输出看起来像这样

get_leaf_paths(G)
# [[1]]
# + 3/9 vertices, from 6d0bb8d:
# [1] 1 2 3
# [[2]]
# + 7/9 vertices, from 6d0bb8d:
# [1] 1 2 5 4 7 8 9
# [[3]]
# + 6/9 vertices, from 6d0bb8d:
# [1] 1 2 5 4 8 9
# [[4]]
# + 4/9 vertices, from 6d0bb8d:
# [1] 1 2 5 6
# [[5]]
+ 7/9 vertices, from 6d0bb8d:
# [1] 3 2 5 4 7 8 9
# [[6]]
# + 6/9 vertices, from 6d0bb8d:
# [1] 3 2 5 4 8 9
# [[7]]
# + 4/9 vertices, from 6d0bb8d:
# [1] 3 2 5 6
# [[8]]
# + 6/9 vertices, from 6d0bb8d:
# [1] 6 5 4 7 8 9
# [[9]]
# + 5/9 vertices, from 6d0bb8d:
# [1] 6 5 4 8 9

关于r - 如何获取图中叶节点之间的所有可能路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69701897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com