Estrutura de dados rápida e com eficiência de espaço para vizinhos mais próximos em 3 dimensões?


7

Estou procurando estruturas de dados para responder a consultas de vizinhos mais próximos em 3D que sejam razoavelmente eficientes em termos de espaço (ou seja, use no máximo O(n1 1+ϵ) espaço) e rápido (O(nϵ) ou O(euogk(n)) consulta na pior das hipóteses).

Como um resumo do que eu já sei:

  • 1D é trivial (basta classificar os pontos e usar a pesquisa binária).

  • 2D é um pouco mais complicado, mas com uma estrutura de dados de localização de pontos + diagrama voronoi, você pode fazer isso em O(n) espaço e O(euog(n)) tempo de consulta.

  • Em 3D e acima, essa solução se decompõe, pois o diagrama Voronoi de um conjunto de pontos é O(nfeuoor(d/2)).

Estou ciente das técnicas aproximadas baseadas em árvores kd ou em métodos baseados em grade, embora elas dependam de assumir uma distribuição uniforme de pontos ou algo sobre a distância do vizinho mais próximo, e não tenham um desempenho tão bom em todos os casos. Não estou interessado nessas soluções aleatórias ou aproximadas - quero algo que funcione para qualquer conjunto de dados no pior dos casos. Existe alguma coisa lá fora que faz isso, ou há algum limite inferior que sopra essa idéia da água?

Respostas:


1

Eu gosto do hash hierárquico de voxel de Drost . Tem uma complexidade média de tempo deO(euog(euog(|D|))), Onde |D|é o número de pontos na nuvem de dados. Embora a construção seja um pouco mais entediante, a pesquisa fica muito mais rápida.

O método também é estendido para uma versão do diário, encontrada neste link .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.