Адаптируете функцию поиска ближайших соседей для предоставления K-ближайших соседей через kD-дерево в Groovy? - PullRequest
0 голосов
/ 01 декабря 2011

Я успешно написал функцию, которая пересекает Kd-дерево для ближайшего единственного соседа точки.

Однако я пытаюсь переключить эту функцию так, чтобы она находила K-ближайших соседейвместо одного.Это оказывается гораздо более сложной задачей, чем я себе представлял, и я нуждаюсь в некоторой помощи ...

Статья в Википедии о kD-деревьях гласит:

Алгоритм может быть расширен несколькими способами путем простых модификаций.Он может предоставить k-ближайших соседей в точку, поддерживая k текущих бестов вместо одного.Ветви удаляются только тогда, когда у них не может быть точек, более близких, чем у любого из k лучших токов.

... но это ничего не говорит о том, как получить начальный текущие рекорды.Найти первый «лучший» достаточно просто, но я не знаю, как найти остальные k-текущие бесты, не удаляя предыдущие лучшие и не перебирая все заново ... что в основном побеждаетбыстрый алгоритм, потому что мне пришлось бы делать это k (в моем случае 17) раз.

Если у меня есть заполненный список из 17 начальных «лучших», я считаю, что мой алгоритм найдет правильные точки.

Прошу прощения, если это расплывчато.Если понадобятся примеры кода, я буду рад их предоставить.Хотя, если есть простое объяснение этой проблемы, вероятно, нет необходимости публиковать ее, поэтому я не буду изначально.

Заранее спасибо!

...