Tyl*_*ker 11 algorithm r igraph ggraph
我有一个未加权的图形,我想得到一个子图,它只包含节点和边,包含n个已知节点之间的最短路径.在这种情况下,3个节点(11,29和13是名称).
如何获得R中n个节点之间最短路径的子图?
library(ggraph)
library(igraph)
hs <- highschool[highschool$year == '1958',]
set.seed(11)
graph <- graph_from_data_frame(hs[sample.int(nrow(hs), 60),])
# plot using ggraph
ggraph(graph, layout = 'kk') +
geom_edge_fan() +
geom_node_text(aes(label = name))
Run Code Online (Sandbox Code Playgroud)
所需的输出将是以下绿色子图(或者关闭,我正在观察上面的图形并在视觉上挑选出子图的内容)忽略/移除其他节点和边缘.
你无法找到n个节点之间的最短路径。由于最短路径仅在两个节点之间定义。
我认为您想要从1
节点到n-1
可以
get_all_shortest_paths(v, to=None, mode=ALL)
从igraph
库中使用的其他节点的最短路径。
返回:列表中从给定节点到图中每个其他可到达节点的所有最短路径。
获取所有最短路径
因此,现在您必须从最短路径列表创建一个图表。
初始化一个空图形,然后从图形中添加路径的路径列表中添加所有路径
或者