我正在尝试使用Dijkstra的算法来找到通过路线的最短路径。当前我在邻接矩阵2D阵列中有邻居。如果连接到其他节点则为1;如果未连接则为0,则为0。
public static void buildMatrix(String[] data)
{
int[][] neighbours = new int[numberOfNodes][];
for (int row= 0; row < noOfCaves; row++){
neighbours[row] = new int[numberOfNodes];
}
int col = 0;
int row = 0;
for (int point = (numberOfNode*2)+1 ; point < data.length; point++){
if (data[point].equals("1"))
neighbours[row][col] = 1;
else
neighbours[row][col] = 0;
row++;
if (row == numberOfNodes){
row=0;
col++;
}
}
}
然后我将X,Y坐标保存到另一个2D数组中,如此
int Ref = 0;
int a = 0;
for (int i = 1; i < (numberOfNodes * 2) + 1; i++)
{
coordinates[x][y] = Integer.parseInt(data[i]);
if (y == 0) { y = 1; }
else { y = 0; x++; }
}
这给了我一个像XY坐标一样的2D数组 - 坐标[[5,7],[4,5],[13,6],[5,9],[10,4],[ 8,6],[14,1]]。
如何使用这两个数组计算欧氏距离,以便得到节点及其邻居的距离?
答案 0 :(得分:0)
如果节点i
连接到节点j
,则应使用包含协调coords
的矩阵计算欧几里德距离,如下所示:
Math.sqrt((coords[i][0] - coords[j][0]) * (coords[i][0] - coords[j][0]) +
(coords[i][1] - coords[j][1]) * (coords[i][1] - coords[j][1]))
这是两个维度的欧几里德距离公式。