https://github.com/andreip/nns
Nearest neighbour search - K-D tree
https://github.com/andreip/nns
Last synced: about 1 year ago
JSON representation
Nearest neighbour search - K-D tree
- Host: GitHub
- URL: https://github.com/andreip/nns
- Owner: andreip
- Created: 2011-05-29T21:35:30.000Z (about 15 years ago)
- Default Branch: master
- Last Pushed: 2011-06-01T17:52:24.000Z (about 15 years ago)
- Last Synced: 2025-02-12T12:57:00.723Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 89.8 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
# Petre Andrei-Nicuale
Pentru a cauta mai eficient in planul xOy, am construit un K-D tree. Mai
exact, am creat arborele considerat ca nivelele pare sunt asociate axelor x,
iar cele impare, axelor y. Apoi adaugarea se face ca la arbori binari de cautare
, dar comparand, in functie de nivel, cu coordonata x, respectiv y.
Odata construit, parcurg arborele pentru fiecare coordonata si obtin un
cel mai aproape, pe care il updatez pana ajung in frunza. Asta se face in
complexitate logaritmica.
Apoi, la descarcarea stivei, se verifica daca cercul cu raza r = distanta
intre "request" si "cel mai aproape" intersecteaza axa nodului curent, iar
daca da, inseamna ca poate fi un nod mai aproape ca "cel mai aproape", altfel,
trecem mai departe (cel mai aproape se updateaza continuu).
O posibila optimizare ar fi sa se formeze mereu arborele echilibrat. Asta
s-ar putea face mai usor, alegand nodurile in ordine random, dar ar necesita,
in momentul de fata, utilizare de memorie suplimentara.