【发布时间】:2019-03-27 15:39:06
【问题描述】:
第一个简单的数据
m <- read.table(row.names = 1, header = TRUE, text =
" A B C D E F
A 0 1 1 1 1 5
B 1 0 1 1e2 1e2 1
C 1 1 0 1 1 1
D 1 1e2 1 0 1e2 1
E 1 1e2 1 1e2 0 1
F 5 1 1 1 1 0")
m <- as.matrix(m)
使用 igraph 库
ig <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE)
sp <- shortest.paths(ig, algorithm = "dijkstra")
plot(ig)
spaths <- lapply(V(ig),
function(v){
all_shortest_paths(ig, v,
weight = 1 / E(ig)$weight
)
}
)
现在让我们检查所有顶点的路径 spaths$C$res 或 spaths$B$res... 如何在图形上只显示从一个点到另一个点的最短路径? 1.例如C到A为红线 2.C到A最长路为蓝线
【问题讨论】:
-
"从 C 到 A 的最长路径为蓝线" - 你想要从 C 到 A 的最长 简单 路径吗?由于您的图表有循环,除非您限制为简单路径,否则路径是任意长的。