Attualmente sto tentando di trovare K Nearest Neighbor di tutti i nodi di unequilibrata KD-Tree (con K = 2).metodo efficiente per la ricerca di KNN di tutti i nodi di un albero KD-
La mia implementazione è una variazione del codice dallo Wikipedia article ed è decentemente veloce per trovare KNN di qualsiasi nodo O (log N).
Il problema sta nel fatto che ho bisogno di trovare KNN di ogni nodo. Prossimamente con O (N log N) se eseguo l'iterazione su ciascun nodo ed eseguo la ricerca.
Esiste un modo più efficiente per farlo?
Vuoi provocare qualche lista o scorrere i tuple (t, knn1, knn2) memorizzare? –
Solo iterazione. Anche se sono curioso, quale sarebbe la differenza nell'approccio? –
La differenza principale tra la ricerca KNN e la ricerca è che tutti i valori di ricerca sono già nella struttura. Quindi la ricerca inizia in un nodo che non è il nodo radice. Partendo da ogni nodo è possibile attraversare l'albero, trovare 2 candidati e attraversare fino a quando non ci può essere un altro candidato più vicino. Questo può essere sicuro per alcuni nodi traversali ma è ancora O (n log n) se l'albero è bilanciato. Forse c'è un modo per riutilizzare i calcoli (che sarà ancora O (n log n)). –