Instruções
Árvore k-d
Uma k-d tree (abreviação de *k*-dimensional tree) é uma estrutura de dados de partição de espaço para organizar pontos em um espaço k-dimensional. k-d trees são uma estrutura de dados útil para várias aplicações, como buscas envolvendo uma chave de busca multidimensional (por exemplo, buscas por intervalo e buscas pelo vizinho mais próximo). k-d trees são um caso especial de árvores de partição binária de espaço. No entanto, k-d trees não são adequadas para encontrar eficientemente o vizinho mais próximo em espaços de alta dimensionalidade. Como regra geral, se a dimensionalidade for *k*, o número de pontos nos dados, *N*, deve ser *N* ≫ 2<sup><i>k</i></sup>. Caso contrário, quando as árvores k-d forem usadas com dados de alta dimensão, a maioria dos pontos na árvore será avaliada e a eficiência não será melhor do que em uma pesquisa exaustiva. Outros métodos, como o vizinho mais próximo aproximado, devem ser usados.
O que fazer:
Escreva uma função para realizar uma busca pelo vizinho mais próximo usando
Critérios de Aceitação:
k-d tree. A função recebe dois parâmetros: um array de pontos k-dimensionais e um único ponto k-dimensional cujo vizinho mais próximo deve ser retornado pela função. Será dado um ponto k-dimensional como um conjunto de k elementos.Critérios de Aceitação:
Testes:
- `kdNN` deve ser uma função.
- `kdNN([[[2, 3], [5, 4], [9, 6], [4, 7], [8, 1], [7, 2]], [9, 2])` deve retornar um array.
- `kdNN([[[2, 3], [5, 4], [9, 6], [4, 7], [8, 1], [7, 2]], [9, 2])` deve retornar `[ 8, 1 ]`.
- `kdNN([[[2, 3], [5, 4], [9, 6], [4, 7], [8, 1], [7, 2]], [7, 1])` deve retornar `[ 8, 1 ]`.
- `kdNN([[[2, 3], [5, 4], [9, 6], [4, 7], [8, 1], [7, 2]], [3, 2])` deve retornar `[ 2, 3 ]`.
- `kdNN([[2, 3, 1], [9, 4, 5], [4, 6, 7], [1, 2, 5], [7, 8, 9], [3, 6, 1]], [1, 2, 3])` deve retornar `[ 1, 2, 5 ]`.
- `kdNN([[2, 3, 1], [9, 4, 5], [4, 6, 7], [1, 2, 5], [7, 8, 9], [3, 6, 1]], [4, 5, 6])` deve retornar `[ 4, 6, 7 ]`.
- `kdNN([[2, 3, 1], [9, 4, 5], [4, 6, 7], [1, 2, 5], [7, 8, 9], [3, 6, 1]], [8, 8, 8])` deve retornar `[ 7, 8, 9 ]`.
Console