REMARQUE : La question a été reformulée dans mes réponses: en supposant maintenant que nous pouvons trouver les ancêtres frères les plus bas en , l'ANN peut-il vraiment être exécuté en ?O ( log n )
Les Quadtrees sont des indices spatiaux efficaces. J'ai un casse-tête avec l'implémentation d'une recherche de voisin le plus proche dans une structure à quatre arbres compressée comme décrit dans [2]. (Sans entrer dans les détails, la recherche va de haut en bas le long de carrés dits équidistants, se terminant par le nœud de queue d'un chemin équidistant. Dans l'image jointe, il peut s'agir de n'importe lequel des nœuds du sud-est remplis de points.)
Pour que leur algorithme fonctionne, il faut maintenir pour chaque nœud - un carré avec au moins deux quadrants non vides - des pointeurs pour chaque nœud ancêtre le plus bas (le plus proche dans la hiérarchie) dans chacune des quatre directions (nord, ouest, sud , est). Ceux-ci sont indiqués par les flèches vertes pour l'ancêtre des nœuds vers l'ouest (la flèche pointe au centre du carré des ancêtres).
Le document prétend que ces pointeurs peuvent être mis à jour dans O (1) lors des insertions et suppressions de points. Cependant, quand on regarde l'insertion du point vert, il semble que je doive mettre à jour n'importe quel nombre arbitraire de pointeurs, dans ce cas six d'entre eux.
J'espère une astuce pour faire cette mise à jour du pointeur en temps constant. Peut-être existe-t-il une forme d'indirection qui peut être exploitée?
ÉDITER:
La section pertinente de l'article est 6.3, où il se lit: "si le chemin a des virages, alors en plus du ancêtres les plus bas de , nous devrions également considérer pour chacune des directions la plus basse ancêtre de qui va dans cette direction [...] Trouver ces carrés à partir de peut être fait en fois par carré si nous associons pointeurs supplémentaires à chaque carré dans pointant vers ses ancêtres les plus proches pour chaque direction . Ces pointeurs peuvent également être mis à jour en temps lors de l'insertion ou de la suppression d'un point. "q q O ( 1 ) 2 d Q 0 O ( 1 ) q
[2]: Eppstein, D. et Goodrich, MT et Sun, JZ, «The Skip Quadtree: A Simple Dynamic Data Structure for Multidimensional Data», dans Actes du vingt et unième symposium annuel sur la géométrie informatique, pp. 296—305 , 2005.