【问题标题】:find m nearest neighbors in KD tree use java在 KD 树中找到 m 个最近的邻居使用 java
【发布时间】: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


    【解决方案1】:

    最后我的朋友帮我!
    https://github.com/Iman9mo/KDTree 回答这个问题和其他关于 kdtree 及其方法的问题的项目的完整源代码

    【讨论】: