Okładka drzewa
Drzewo okładek to rodzaj struktury danych w informatyce , który został specjalnie zaprojektowany w celu ułatwienia przyspieszenia wyszukiwania najbliższego sąsiada . Jest to udoskonalenie struktury danych Navigating Net i powiązane z różnymi innymi strukturami danych opracowanymi do indeksowania danych z natury niskowymiarowych.
Drzewo można traktować jako hierarchię poziomów, przy czym najwyższy poziom zawiera punkt główny, a dolny poziom zawiera każdy punkt w przestrzeni metrycznej. Każdy poziom C jest powiązany z wartością całkowitą i , która zmniejsza się o jeden w miarę opadania drzewa. Każdy poziom C w drzewie okładek ma trzy ważne właściwości:
- zagnieżdżanie:
- Pokrycie: każdego punktu istnieje punkt taki, odległość od jest mniejsze lub równe i dokładnie jeden taki jest rodzicem .
- : dla wszystkich punktów odległość od jest większa niż do .
Złożoność
Znajdować
Podobnie jak inne drzewa metryczne, drzewo okładki umożliwia wyszukiwanie najbliższego sąsiada w gdzie jest stałą związaną z wymiarowość zbioru danych, a n to liczność. , podstawowe wyszukiwanie liniowe wymaga jest znacznie gorszą . Jednak w wielowymiarowych przestrzeniach metrycznych stała jest nietrywialna, co oznacza, że nie można jej zignorować w analizie W przeciwieństwie do innych drzew metrycznych, drzewo pokrycia ma teoretyczną granicę swojej stałej, która jest oparta na stałej ekspansji zbioru danych lub stałej podwojenia (w przypadku przybliżonego wyszukiwania NN). Ograniczeniem gdzie _
Wstawić
Chociaż drzewa okładek zapewniają szybsze wyszukiwanie niż podejście naiwne, tę zaletę należy rozważyć z dodatkowymi kosztami utrzymania struktury danych. W naiwnym podejściu dodanie nowego punktu do zbioru danych jest trywialne, ponieważ porządek nie musi być zachowany, ale w drzewie tytułowym może zająć czas. Jest to jednak górna granica i wdrożono pewne techniki, które wydają się poprawiać wydajność w praktyce.
Przestrzeń
Drzewo okładki wykorzystuje niejawną reprezentację do śledzenia powtarzających się punktów. Zatem wymaga tylko przestrzeni O (n).
Zobacz też
- Notatki
- Bibliografia
- Alina Beygelzimer, Sham Kakade i John Langford. Drzewa osłonowe dla najbliższego sąsiada. w Proc. Międzynarodowa konferencja na temat uczenia maszynowego (ICML), 2006.
- Strona drzewa okładek JL . Strona Johna Langforda zawiera linki do dokumentów i kodu.
- Implementacja C++ Cover Tree w serwisie GitHub .
- Implementacja drzewa okładki w Javie.