gpt4 book ai didi

java - 距离矩阵实现

转载 作者:行者123 更新时间:2023-12-01 10:06:08 25 4
gpt4 key购买 nike

我有两个这样的列表对象:A={o1,o2,o3,...on},B={p1,p2,p3,...pm}(m,n已定义)。

我想存储从 A 到 B 的对象之间的距离,例如: d(o1,p1), d(o1,p2)..., d(o1,pm), d(o2,p1), .. .., d(on,pm)。

我使用 n 行 x m 列的矩阵来存储这些距离,行从 o1 到 on 排序,列从 p1 到 pm 排序

但问题是我想实现这样的功能:

public double GetDistance (object obj1, object obj2) 

例如,如果我调用 GetDistance(o1, p4),那么它将返回如下值:DistanceMatrix[0][3] = 0.6。

那么在这种情况下我们如何实现,以便从两个对象 o1, p4 我们可以引用矩阵中相应的行和列是 0, 3(如果我必须使用矩阵来存储距离)。

最佳答案

您可以使用HashMap<object, Integer> pMap and oMap ,其中键是对象,值是列或行的索引:

Object[] A = //{o1, o2, o3, o4, ... on};
Object[] B = //{p1, p2, p3, p4, ... pm};
HashMap<Object, Integer> oMap = new HashMap<Object, Integer>();
HashMap<Object, Integer> pMap = new HashMap<Object, Integer>();

for(int i = 0 ; i < A.length ; i++) {
Object o = A[i];
oMap.add(o, i);
}

for(int i = 0 ; i < B.length ; i++) {
Object p = B[i];
pMap.add(p, i);
}

现在您可以构建距离矩阵,并通过以下方式访问值:

public double GetDistance (object obj1, object obj2) {
//double[][] d = distanceMatrix;
return d[oMap.get(objt1)][pMap.get(objt2)];
}

关于java - 距离矩阵实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com