shortest.paths 和 Dijkstra 算法的困难
Difficulties with shortest.paths and Dijkstra Algorithm
我试图借助转换矩阵获得两个节点之间的所有最短路径。
矩阵不对称,因为图形不是有向的。我使用了以下代码:
g <- graph.adjacency(DDGraph, weighted=TRUE, mode="directed")
str(g)
[1] 1-> 2 2-> 3 4-> 40 5-> 6 6->164 7-> 8 8-> 46 9-> 10 10->121 11-> 12 12-> 13 12->174 13-> 14 14-> 1 15-> 18 16-> 17 18-> 16
s.paths <- shortest.paths(g, algorithm = "dijkstra")
现在,最后一个输出是一个矩阵,它应该给出用 Dijkstra 算法计算的两个节点之间的距离。但我得到的是一个 symmetric matrix
,它不应该是。谁能告诉我我做错了什么?
当我使用 Johnson 算法时,矩阵不是对称的,据我所知它工作得很好。
了解您无法从每个节点到达每个节点可能会有所帮助,因此会有很多 "Inf" 条目。同样,使用 Johnson Algorithm
它有效,但不适用于 Dijkstra
.
你没有设置shortest.paths
的mode
参数,这个参数是用来告诉igraph是否考虑边缘方向的。我认为 mode="all"
是默认值,它不考虑边缘方向,因为它允许在两个方向上遍历边缘。请尝试 mode="out"
。
我试图借助转换矩阵获得两个节点之间的所有最短路径。
矩阵不对称,因为图形不是有向的。我使用了以下代码:
g <- graph.adjacency(DDGraph, weighted=TRUE, mode="directed")
str(g)
[1] 1-> 2 2-> 3 4-> 40 5-> 6 6->164 7-> 8 8-> 46 9-> 10 10->121 11-> 12 12-> 13 12->174 13-> 14 14-> 1 15-> 18 16-> 17 18-> 16
s.paths <- shortest.paths(g, algorithm = "dijkstra")
现在,最后一个输出是一个矩阵,它应该给出用 Dijkstra 算法计算的两个节点之间的距离。但我得到的是一个 symmetric matrix
,它不应该是。谁能告诉我我做错了什么?
当我使用 Johnson 算法时,矩阵不是对称的,据我所知它工作得很好。
了解您无法从每个节点到达每个节点可能会有所帮助,因此会有很多 "Inf" 条目。同样,使用 Johnson Algorithm
它有效,但不适用于 Dijkstra
.
你没有设置shortest.paths
的mode
参数,这个参数是用来告诉igraph是否考虑边缘方向的。我认为 mode="all"
是默认值,它不考虑边缘方向,因为它允许在两个方向上遍历边缘。请尝试 mode="out"
。