Java 如何在arraylist中计算最小距离
我有一个矩阵,矩阵中的距离是用欧几里德距离计算的。 之后,我必须搜索物体之间的最小距离。但我必须保持目标顶点作为源顶点。我举个例子Java 如何在arraylist中计算最小距离,java,arrays,graph,multidimensional-array,adjacency-matrix,Java,Arrays,Graph,Multidimensional Array,Adjacency Matrix,我有一个矩阵,矩阵中的距离是用欧几里德距离计算的。 之后,我必须搜索物体之间的最小距离。但我必须保持目标顶点作为源顶点。我举个例子 P1 P2 P3 P4 0 3,0014 1,1245 1,1000 3,0014 0 3,0571 2,5374 1,1245 3,0571 0 1,0651 1,1000 2,5374 1,0651 0 基于对象P1的最小距离为:P1,P4:110
P1 P2 P3 P4
0 3,0014 1,1245 1,1000
3,0014 0 3,0571 2,5374
1,1245 3,0571 0 1,0651
1,1000 2,5374 1,0651 0
基于对象P1的最小距离为:P1,P4:11000,P1,P3:11245,P1,P2:30014
但是我必须在对象P1中显示轨迹,轨迹应该是:P1,P4,P4,P3,P3,P2
P1是源顶点,P4是目标顶点,那么P4应该是源顶点,以此类推。
我必须用java代码编写
这是我尝试的方法:
public LinkedList<EdgeTest> getKruskalEdge(Double kDistance, int index) {
PriorityQueue<EdgeTest> edge = new PriorityQueue<EdgeTest>();
if (index == -1) {
System.out.println("Kosong");
} else {
for (int i = 0; i < vertexList.length; i++) {
if (adjMat[index][i] != -1 && adjMat[index][i] != 0) {
if (adjMat[index][i] <= kDistance) {
edge.add(new EdgeTest(vertexList[index].toString(),
vertexList[i].toString(), adjMat[index][i]));
}
}
}
System.out.println("");
while (!edge.isEmpty()) {
insertEdge(edge.remove());
}
}
return kruskalEdge;
}
您的矩阵是如何映射到ArrayList的?我已经尝试过了,但结果是:P1,P4=1.09999999999 P1,P3=1.1244554237496476 P1,P2=1.309809146402635。。它应该是P1,P4;P4,P3;P3,P2