r - 确定无方阵中的最短路径(在 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")
解决方案
推荐阅读
- python - 检查 Pandas 系列的数据类型并将字符串转换为数字
- java - 将变量传递给类
- python - TensorFlow 不能很好地与 IPython 配合使用
- c# - Task.Run 和 await 可以在受约束的执行区域中使用吗?
- android - camera.action.CROP 没有按预期工作
- sonarqube - 尝试设置自定义 HTML 标记样式时,sonarqube 使用“应删除未知类型选择器”规则给出误报
- reactjs - 在反应应用程序中获取可共享的文档链接
- java - EhCache,堆上层:未找到序列化程序
- ionic-framework - 如何“打破”一个 Observable 并跳转到 Ionic 中的另一个页面?
- docker - 代理后的 Docker Hub 登录