Para um aplicativo de aprendizado de máquina, meu grupo precisa calcular a distância euclidiana do ésimo vizinho mais próximo em um conjunto para cada (para entre 5 e cerca de 100 e algumas centenas até alguns milhões). Atualmente, estamos usando a abordagem de força bruta ou a abordagem óbvia com uma árvore kd em , que quando é alto eé relativamente baixo e nunca vence. (Tudo está na memória.)X x ∈ ( X ∪ Y ) ⊂ R d d | X | ≈ | Y | O ( d | X | | X ∪ Y | ) X d | X |
Parece que deve haver uma maneira melhor do que a força bruta - pelo menos uma que aproveite a desigualdade do triângulo, ou talvez com hashes sensíveis à localidade. Uma aproximação razoavelmente apertada também é potencialmente aceitável.
A pesquisa que consegui encontrar parece focar no problema de encontrar o único vizinho mais próximo (ou um que seja aproximadamente o mais próximo). O problema que estou procurando tem outro nome ou existe uma conexão com um problema relacionado no qual não pensei?