【发布时间】:2023-02-11 07:35:53
【问题描述】:
我想在 java 中为数据结构项目实现 KD 树,但我对该项目所需的特殊方法有疑问。在下面你可以看到我想要的方法格式。
float[][] findMNearest(float[] point, int m) {}
我实现了查找最近邻居方法,但是对于 m 最近邻居我有问题,我无法理解解决方案的算法。 In this picture you can see my implementation for nearest neighbor.
java
private void nearest(KDNode root, KDNode target, int index) {
if (root == null)
return;
visited++;
float d = root.distance(target);
if (best == null || d < bestDistance) {
bestDistance = d;
best = root;
}
if (bestDistance == 0)
return;
float dx = root.getCoordinates()[index] - target.getCoordinates()[index];
index = (index + 1) % k;
nearest(dx > 0 ? root.getLeft() : root.getRight(), target, index);
if (dx * dx >= bestDistance)
return;
nearest(dx > 0 ? root.getRight() : root.getLeft(), target, index);
}
我也不想使用现成的图书馆。
【问题讨论】:
标签: java data-structures knn nearest-neighbor kdtree