Jaka jest różnica między drzewem KD a drzewem R?

Przyjrzałem się definicji KD-tree i R-tree. Wydaje mi się, że są prawie takie same.

Jaka jest różnica między drzewem KD a drzewem R?

Author: nbro, 2010-12-01

3 answers

R-drzewa i Kd-drzewa opierają się na podobnych ideach (podział przestrzeni oparty na regionach osi), ale najważniejsze różnice to:

  • węzły w K drzewa d reprezentują płaszczyzny rozdzielające, podczas gdy węzły w drzewach R reprezentują pola obwiedni.
  • k d-drzewa dzielą całą przestrzeń na regiony, podczas gdy R-drzewa dzielą tylko podzbiór przestrzeni zawierający punkty szczególne.
  • k d-drzewa reprezentują a podział rozdzielony (punkty należą tylko do jednego regionu), podczas gdy regiony w drzewie R mogą się nakładać.

(Istnieje wiele podobnych rodzajów struktur drzewiastych do partycjonowania przestrzeni: quadtrees, BSP-trees, r * - trees, itp. itd.)

 50
Author: Gareth Rees,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-03 12:58:32

Są właściwie zupełnie inne. Służą one podobnemu celowi (zapytania regionalne dotyczące danych przestrzennych) i oba są drzewami, ale to wszystko, co mają ze sobą wspólnego.

  • R-drzewa są zrównoważone, KD-drzewa nie są (chyba, że są zbiorczo załadowane). Dlatego drzewa R są preferowane do zmiany danych, ponieważ drzewa kd mogą wymagać przebudowy w celu ponownej optymalizacji.
  • R-drzewa są zorientowane na dysk . Faktycznie organizują dane w obszarach, które bezpośrednio mapują na dysku reprezentacyjne. To czyni je bardziej przydatnymi w rzeczywistych bazach danych i do pracy poza pamięcią. KD-drzewa są zorientowane na pamięć i nie są trywialne do umieszczenia na stronach dysku
  • R-drzewa nie obejmują całej przestrzeni danych. Puste obszary mogą być odkryte. KD-drzewa zawsze pokrywają całą przestrzeń.
  • KD-trees Binary split przestrzeń danych, r-trees dzieli dane na prostokąty. Podziały binarne są oczywiście rozdzielone; podczas gdy prostokąty drzewa r mogą nakładać się na siebie (co faktycznie jest czasami dobre, chociaż stara się zminimalizować nakładanie się)
  • KD-drzewa są dużo łatwiejsze do zaimplementowania w pamięci, co w rzeczywistości jest ich kluczową zaletą]} R-trees może przechowywać prostokąty i wielokąty , KD-trees przechowuje tylko Wektory punktowe (ponieważ zachodzi potrzeba nakładania się wielokątów)
  • drzewa R mają różne strategie optymalizacji, różne podziały, ładunki masowe, strategie wstawiania i ponownego zakładania itp.
 87
Author: Anony-Mousse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-08 20:13:26

Zasadnicza różnica między dwoma Nie wymienionymi w Ta odpowiedź jest taka, że drzewa KD są wydajne tylko w sytuacjach masowego ładowania. Po zbudowaniu, modyfikowanie lub równoważenie drzewa KD jest nietrywialne. R-drzewa nie cierpią z tego powodu.

 34
Author: SingleNegationElimination,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 16:26:24