首页 > 解决方案 > 确定无方阵中的最短路径(在 R 中)

问题描述

我有一个给定二进制非方阵的计算,如下所示。

我想找到值为“1”的单元格之间的最短路径。但是当我使用如何在 R 中编程这个 Dijkstra 最短距离算法中的以下方法时?我得到了错误,因为矩阵不是正方形:

library(igraph)
setwd("C:/Users/Desktop/test/")
mat <- read.csv("test.csv",  header = TRUE)
mat <- as.matrix(mat)
mat
      X0 X0.1 X0.2 X0.3 X1 X1.1 X1.2 X1.3 X1.4 X0.4 X0.5
 [1,]  0    0    0    0  1    1    1    1    0    0    0
 [2,]  0    0    0    0  1    1    0    0    0    0    0
 [3,]  0    0    0    0  1    1    0    0    0    0    0
 [4,]  0    0    0    0  1    1    0    0    0    0    0
 [5,]  0    0    0    0  1    1    0    0    0    0    0
 [6,]  0    0    0    0  1    0    0    0    0    0    0
 [7,]  0    0    0    0  1    0    0    0    0    0    0
 [8,]  0    0    0    1  1    0    0    0    0    0    0
 [9,]  0    0    0    1  1    0    0    0    0    0    0
[10,]  0    0    0    1  1    0    0    0    0    0    0
[11,]  0    0    1    1  0    0    0    0    0    0    0
[12,]  0    0    1    1  0    0    0    0    0    0    0
[13,]  0    0    1    1  0    0    0    0    0    0    0
[14,]  0    0    1    1  0    0    0    0    0    0    0
[15,]  0    0    0    1  0    0    0    0    0    0    0
[16,]  0    0    0    1  0    0    0    0    0    0    0
[17,]  0    0    0    1  0    1    0    0    0    0    0
[18,]  0    0    0    1  1    0    0    0    0    0    0
[19,]  0    0    0    1  1    0    0    0    0    0    0
[20,]  0    0    0    1  1    0    0    0    0    0    0
[21,]  0    0    0    1  1    0    0    0    0    0    0
[22,]  0    0    0    1  1    0    0    0    0    0    0
[23,]  0    0    0    1  1    0    0    0    0    0    0
[24,]  0    0    0    0  1    0    0    0    0    0    0
[25,]  0    0    0    0  1    1    0    0    0    0    0
[26,]  0    0    0    1  1    1    1    0    0    0    0
[27,]  0    0    0    0  1    1    1    1    1    0    0
[28,]  0    0    0    0  0    0    1    1    1    0    0
g <- graph.adjacency(mat, weighted=TRUE)
Error in graph.adjacency.dense(adjmatrix, mode = mode, weighted = weighted,  : 
  not a square matrix

# Get all path distances
s.paths <- shortest.paths(g, algorithm = "dijkstra")

标签: rmatrixshortest-path

解决方案


推荐阅读