Actualmente estoy tratando de encontrar K vecino más cercano de todos los nodos de unequilibrada KD-árbol (con K = 2).método eficiente para encontrar KNN de todos los nodos de un árbol KD-
Mi implementación es una variación del código del Wikipedia article y es decentemente rápido encontrar KNN de cualquier nodo O (log N).
El problema radica en el hecho de que necesito encontrar KNN de cada nodo. Próximamente con aproximadamente O (N log N) si repito sobre cada nodo y realizo la búsqueda.
¿Hay alguna forma más eficiente de hacerlo?
¿Desea almacenar el resultado en alguna lista o iterar sobre las tuplas (t, knn1, knn2)? –
Solo iterando. Aunque tengo curiosidad, ¿cuál sería la diferencia en el enfoque? –
La principal diferencia entre la búsqueda KNN y su búsqueda es que todos sus valores de búsqueda ya están en el árbol. Entonces su búsqueda comienza en un nodo que no es el nodo raíz. A partir de cada nodo puede recorrer el árbol, buscar 2 candidatos y recorrer hasta que no pueda haber otro candidato más cercano. Esto puede proteger algunos recorridos de nodo pero sigue siendo O (n log n) si el árbol está equilibrado. Tal vez haya una forma de reutilizar los cálculos (que aún será O (n log n)). –