NOTA : La pregunta se ha reformulado en mis respuestas: Suponiendo ahora que podemos encontrar a los antepasados hermanos más bajos en el tiempo , ¿se puede realizar realmente el ANN en ?O ( log n )
Los quadtrees son índices espaciales eficientes. Tengo un enigma con la implementación de una búsqueda de vecino más cercano en una estructura de árbol cuádruple comprimido como se describe en [2]. (Sin entrar en detalles, la búsqueda va de arriba hacia abajo a lo largo de los llamados cuadrados equidistantes, terminando en el nodo de cola de un camino equidistante. En la imagen adjunta, este podría ser cualquiera de los nodos en el sureste llenos de puntos).
Para que su algoritmo funcione, uno debe mantener para cada nodo, un cuadrado con al menos dos cuadrantes no vacíos, punteros para cada nodo ancestro más bajo (más cercano en la jerarquía) en cada una de las cuatro direcciones (norte, oeste, sur , este). Estos están indicados por las flechas verdes para el ancestro hacia el oeste de los nodos (la flecha apunta al centro del cuadrado del ancestro).
El documento afirma que estos punteros pueden actualizarse en O (1) durante las inserciones y eliminaciones de puntos. Sin embargo, al observar la inserción del punto verde, parece que necesito actualizar cualquier número arbitrario de punteros, en este caso seis de ellos.
Espero un truco para hacer esta actualización de puntero en tiempo constante. ¿Quizás hay una forma de indirección que puede ser explotada?
EDITAR:
La sección relevante del artículo es 6.3, donde se lee: "si la ruta tiene curvas, además de los antepasados más bajos de de , también deberíamos considerar para cada una de las direcciones las más bajas ancestro de que va en esa dirección [...] Encontrar estos cuadrados de se puede hacer en tiempo por cuadrado si asociamos punteros adicionales a cada cuadrado en apuntando a sus ancestros más cercanos para cada dirección . Estos punteros también pueden actualizarse en el tiempo durante una inserción o eliminación de un punto ".q 2 d q q O ( 1 ) 2 d Q 0 O ( 1 )
[2]: Eppstein, D. y Goodrich, MT y Sun, JZ, "The Skip Quadtree: A Simple Dynamic Data Structure for Multidimensional Data", en Actas del vigésimo primer simposio anual sobre geometría computacional, págs. 296—305 2005.