Я только что закончил реализацию kd-tree для быстрого поиска ближайших соседей. Мне интересно играть с разными показателями расстояния, отличными от Euclidean distance. Мое понимание kd-дерева заключается в том, что быстрый поиск kd-деревьев не гарантирует точный поиск, если метрика неевклидова, что означает, что мне может потребоваться реализовать новую структуру данных и алгоритм поиска, если я хочу попробовать вывести новые показатели для моего поиска.Могу ли я использовать произвольные показатели для поиска KD-Trees?
У меня есть два вопроса:
- ли с помощью kd-tree постоянно привязывают меня к Euclidean distance?
- Если да, то какие другие виды алгоритмов я должен попробовать, чтобы работать на произвольные metrics? У меня нет много времени для реализации множества различных структур данных, но другие структуры, о которых я думаю, включают cover trees и vp-trees. процедура поиска
Это отличный ответ. Имеет ли метрика evert связанная метрика? Существуют ли какие-либо правила для форм, соответствующих различным метрикам? –
@James: правило состоит в том, что форма всегда формируется набором точек, находящихся на расстоянии x от точки запроса. Так, например, для евклидова расстояния в 2D это круг; для Манхэттена, алмаза. Для странной метрики это может быть не «узнаваемая» форма. –