R-дерево (англ. R-trees) — деревоподібна структура даних, яка використовується для організації доступу до просторових даних, тобто для індексації багатовимірної інформації, такої, наприклад, як географічні координати, прямокутники або многокутники. R-дерево було запропоноване в 1984 році і знайшло значне застосування як у теоретичному, так і у прикладному аспектах. Типовим запитом з використанням R-дерев міг би бути такий: «Знайти всі музеї у радіусі 2 кілометрів від мого поточного місця розташування» або «знайти всі дороги в межах 2 кілометрів від мого поточного місця розташування» (для навігаційної системи). R-дерево також прискорює пошук найближчого сусіда для різних метрик відстані, включаючи відстань по сфері.
R-tree | ||
---|---|---|
Тип | Дерево | |
Винайдено | 1984 | |
Винайшли | ||
Обчислювальна складність у записі великого О | ||
Середня | Найгірша | |
Простір | ||
Пошук | O(logMn) | |
Вставляння | O(n) | |
Видалення |
У випадку двовимірного простору, ця структура даних розбиває простір на множину ієрархічно вкладених прямокутників, які можуть перетинатись. У разі тривимірного або багатовимірного простору це будуть прямокутні паралелепіпеди.
Алгоритми вставки і видалення використовують ці обмежуючі прямокутники для забезпечення того, щоб «близько розташовані» об'єкти були поміщені в одну листову вершину. Зокрема, новий об'єкт потрапить у ту листову вершину, для якої потрібно найменше розширення її прямокутника. Кожен елемент листової вершини зберігає два поля даних: спосіб ідентифікації даних, що описують об'єкт, (або самі ці дані) і прямокутник, який обмежує цей об'єкт.
Аналогічно, алгоритми пошуку (наприклад, перетин, включення, окіл) використовують обмежуючі прямокутники для прийняття рішення про необхідність пошуку в дочірній вершині. Таким чином, більшість вершин ніколи не використовуються при пошуку. Як і у випадку з B-деревами, ця властивість R-дерев обумовлює їх придатність для баз даних, де вершини можуть вивантажуватися на накопичувач в міру необхідності.
Для розділення переповнених вершин можуть застосовуватися різні алгоритми, що породжує поділ R-дерев на підтипи: квадратичні та лінійні.
Спочатку R-дерева не гарантували гарних характеристик для найгіршого випадку, хоча добре працювали на реальних даних. Однак, в 2004-му році був опублікований новий алгоритм, що визначає пріоритетні R-дерева. Стверджується, що цей алгоритм ефективний, як і найбільш ефективні сучасні методи, і в той же час є оптимальним для найгіршого випадку.
Структура R-дерева
Кожна вершина R-дерева має змінну кількість елементів (не більше деякого заздалегідь заданого максимуму). Кожен елемент не листової вершини зберігає два поля даних: спосіб ідентифікації дочірньої вершини і обмежує прямокутник (кубоїд), що охоплює всі елементи цієї дочірньої вершини. Всі збережені кортежі зберігаються на одному рівні глибини, таким чином, дерево ідеально збалансовано. При проектуванні R-дерева потрібно задати деякі константи:
- maxNumOfEntries — максимальне число дітей у вершини
- minNumOfEntries — мінімальне число дітей у вершини, за винятком кореня.
Для коректної роботи алгоритмів необхідно, щоб minNumOfEntries <= maxNumOfEntries / 2. У кореневій вершині може бути від 2 до maxNumOfEntries нащадків. Часто вибирають minNumOfEntries = 2, тоді для кореня виконуються ті ж умови, що і для інших вершин. Також іноді розумно виділяти окремі константи для кількості точок в листових вершинах, так як їх часто можна робити більше.
Ідея R-дерева
Основна ідея структури даних полягає в групі прилеглих об'єктів і представляти їх з їх мінімальним обмежувальним прямокутником в наступному вищому рівні дерева; звідси ця буква «R» (англ. rectangle) у назві R-дерева. Так як всі об'єкти знаходяться в межах цього контурного прямокутника, запит, який не перетинає прямокутник також не може перетинати будь-який з об'єктів прямокутника. На рівні (листка), кожен прямокутник описує один об'єкт; на більш високих рівнях агрегації все більше об'єктів. Це також можна розглядати як збільшення грубої апроксимації набору даних.
За аналогією з В-деревом, R-дерево також збалансоване дерево пошуку (так що всі вузли листя знаходяться на однаковій висоті), організовує дані в сторінках, і призначене для зберігання на диску (як воно використовується в базах даних). Кожна сторінка може містити максимальну кількість записів, які часто позначаються як . Це також гарантує мінімальні заповнення (для кореневого вузла, як виняток), проте краще виконання було представлено з мінімальним заповненням 30 %-40 % від максимальної кількості входів (B-дерева гарантують 50 % заповнення сторінки, а В*-дерева навіть 66 %). Причиною цього є необхідність більш складного балансування для просторових даних, на відміну від лінійних даних, що зберігаються в B-деревах.
Як і з більшістю дерев, алгоритми пошукових (наприклад, перетин, локалізації, пошук найближчого сусіда) досить прості. Ключова ідея полягає в тому, щоб використати обмежуючі рамки, для прийняття рішення, чи варто шукати всередині піддерева. Таким чином, більшість вузлів в дереві ніколи не читали під час пошуку. На відміну від B-дерев, це робить R-дерева, придатними для великих наборів даних і баз даних, де вузли можуть бути вивантажені в пам'яті, коли це необхідно, і все дерево не може зберігатися в оперативній пам'яті.
Основні труднощі R-дерев є створення ефективного дерева, яке, з одного боку, збалансоване (так що вузли листа знаходяться на тій же висоті) з іншого боку прямокутниками не покривають занадто багато порожнього простору і не перекривають один одного занадто (так що під час пошуку, менше піддерева повинні бути оброблені). Наприклад, початкова ідея для вставки різних елементів, щоб отримати ефективне дерево — вставляти в піддерево, яке вимагає найменшого розширення його обмежувальної рамки. Після того, як сторінка заповнилась, дані розбиваються на дві групи, які повинні охоплювати мінімальну площу кожного. Більшість досліджень і удосконалень для R-дерев спрямована на поліпшення шляху побудови дерева і можуть бути згруповані в два об'єкти: побудова ефективного дерева з нуля (відомий як насипний завантаженням) і виконання змін в існуючому дереві (вставка і видалення).
R-дерева не гарантують гарну продуктивність в [en], але в цілому добре працюють з реальними даними. У той час як більш теоретичний інтерес, (насипна завантаженим) [en] — це найбільш оптимальний варіант R-дерева в найгіршому випадку, але через підвищену складність, йому не приділялося багато уваги в практичних додатках до цих пір.
Коли дані організовані в R-дереві, найближчі К-сусіди (для будь-якого Lp-Norm) всіх точок ефективно можна обчислити за допомогою просторового об'єднання. Це вигідно для багатьох алгоритмів, заснованих на найближчих К сусідах, наприклад Local Outlier Factor. DeLi-Clu, Density-Link-Clustering є алгоритмом кластерного аналізу, який використовує структуру R-дерева для подібного роду просторового приєднання ефективно обчислювати кластеризацію OPTICS.
Різновиди
- R*-дерево
- [en]
- [en]
- [en]
Алгоритми
Вставка
Побудова R-дерева відбувається, як правило, за допомогою багаторазового виклику операції вставки елемента в дерево. Ідея вставки схожа на вставку в B-дерево: пробуємо додати крапку в підходящу листову вершину, якщо вона переповнюється, поділяємо її і, поки вимагається, ділимо її предків. Наведемо нижче класичний алгоритм вставки, описаний Антоніном Гуттманном.
Функція insert
- викликає chooseLeaf, щоб вибрати лист, куди ми хочемо вставити крапку. Якщо вставка здійснена, то дерево могло бути поділено, і розкол міг дійти до вершини. У цьому випадку chooseLeaf повертає дві розколоті вершини splittedNodes для вставки в корінь
- викликається функція adjustBounds, яка розширює обмежує прямокутник кореня на вставляється точку
- перевіряє, якщо chooseLeaf повернула ненульові splittedNodes, то дерево росте на рівень вгору: з цього моменту коренем оголошується вершина, діти якої ті самі splittedNodes
Функція chooseLeaf
- якщо на вході лист (база рекурсії), то:
- викликає функцію doInsert, яка здійснює безпосередню вставку елемента в дерево і повертає два листи, якщо відбулося розділення
- змінює обмежуючий прямокутник вершини з урахуванням вставленої точки
- повертає splittedNodes, які нам повернув doInsert
- якщо на вході не листова вершина:
- з усіх нащадків вибирається той, чиї кордони вимагають мінімального збільшення для вставки даної точки
- рекурсивно викликається chooseLeaf для обраного нащадка
- поправляються обмежуючі прямокутники
- якщо splittedNodes від рекурсивного виклику нульові, то покидаємо функцію, інакше:
- якщо numOfEntries <maxNumOfEntries, то додаємо нову вершину до дітей, чистимо splittedNodes
- інакше (коли немає місць для вставки), ми конкатенуємо масив дітей з новою вершиною і передаємо отримане функції linearSplitNodes або іншої функції поділу вершин, і повернемо з chooseLeaf ті splittedNodes, які нам повернула використовувана функція поділу.
Функція linearSplit
Для поділу вершин можуть використовуватися різні алгоритми, це один з них. Він має всього лінійну складність і просто реалізується, правда видає не саме оптимальне розділення. Однак практика показує, що такої складності зазвичай достатньо.
- по кожній координаті для всього набору поділюваних вершин обчислюється різниця між максимальною нижньою межею прямокутника з цієї координаті та мінімальної верхньої, потім ця величина нормалізується на різницю між максимальною і мінімальною координатою точок вихідного набору для побудови всього дерева
- знаходиться максимум цього нормалізованого розкиду по всіх координатах
- встановлюємо як перших дітей для повертаних вершин node1 і node2 ті вершини з вхідного списку, на яких досягався максимум, видаляємо їх з вхідного списку, коригуємо bounds для node1 і node2
- далі, виконується вставка для решти вершин:
- якщо в списку залишилося настільки мало вершин, що якщо їх все додати в одну з вихідних вершин, то в ній виявиться minNumOfEntries вершин, то в неї додається залишок, повернення з функції
- якщо в якійсь з вершин вже набраний максимум нащадків, то залишок додається в протилежну, повернення
- для чергової вершини зі списку порівнюється, на скільки треба збільшити обмежує прямокутник при вставці в кожну з двох майбутніх вершин, де менше — туди її і вставляється
Функція фізичної вставки doInsert
- якщо в вершині є вільні місця, то точка вставляється туди
- якщо ж місць немає, то діти вершини конкатенуються з точкою, яка додається, і викликається функція linearSplit або іншу функцію поділу, що повертає дві розділені вершини, які ми повертаємо з doInsert
Розбиття за допомогою алгоритмів кластеризації
Іноді замість R-дерева використовують так зване cR-дерево (c означає clustered). Основна ідея в тому, що для розділення вершин або точок використовуються алгоритми кластеризації, такі як k-means. Складність k-means теж лінійна, але він в більшості випадків дає кращий результат, ніж лінійний алгоритм поділу Гуттмана, на відміну від якого він не тільки мінімізує сумарну площу огинаючих паралелепіпедів, але і відстань між ними і площа перекриття. Для кластеризації точок використовується обрана метрика початкового простору, для кластеризації вершин можна використовувати відстань між центрами їх огинаючих паралелепіпедів або максимальною відстанню між ними.
Алгоритми кластеризації не враховують те, що число нащадків вершини обмежено зверху і знизу константами алгоритму. Якщо кластеризація видає неприйнятний результат, можна використовувати для цього набору класичний алгоритм, так як на практиці таке відбувається не часто.
Цікава ідея використовувати кластеризацію на кілька кластерів, де кілька може бути більше двох. Однак треба враховувати, що це накладає певні обмеження на параметри структури R-дерева.
Відзначимо, що крім cR-дерева існує його варіація clR-дерево, засноване на методі кластеризації, де як центр використаний ітераційний алгоритм розв'язання «задачі розміщення». Алгоритм має квадратичну обчислювальну складність, але забезпечує побудову більш компактних огинаючих паралелепіпедів у записах вершин структури.
Пошук
Пошук в дереві досить тривіальний, треба лише враховувати той факт, що кожна точка простору може бути покрита декількома вершинами.
Вплив різних розщеплень евристики на базі даних з американськими поштовими районами | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Обговорення R-дерев
Переваги
- ефективно зберігають локалізовані в просторі групи об'єктів
- збалансовані, значить, швидкий пошук в гіршому випадку
- вставка / видалення однієї точки не вимагає істотної перебудови дерева (динамічний індекс)
Недоліки
- чутливе до порядку додавання даних
- обмежують прямокутники вершин можуть перекриватися
Примітки
- Guttman, A. (1984). R-Trees: A Dynamic Index Structure for Spatial Searching. (PDF). с. 47. doi:10.1145/602259.602266. ISBN . Архів оригіналу (PDF) за 9 березня 2016. Процитовано 23 січня 2017.
- Y. Manolopoulos; A. Nanopoulos; Y. Theodoridis (2006). . Springer. ISBN . Архів оригіналу за 18 червня 2013. Процитовано 8 жовтня 2011.
- Roussopoulos, N.; Kelley, S.; Vincent, F. D. R. (1995). Nearest neighbor queries. Proceedings of the 1995 ACM SIGMOD international conference on Management of data – SIGMOD '95. с. 71. doi:10.1145/223784.223794. ISBN .
- Schubert, E.; Zimek, A.; (2013). Geodetic Distance Queries on R-Trees for Indexing Geographic Data. Advances in Spatial and Temporal Databases. Lecture Notes in Computer Science. Т. 8098. с. 146. doi:10.1007/978-3-642-40235-7_9. ISBN .
- ; De Berg, M.; Haverkort, H. J.; Yi, K. (2004). The Priority R-tree. (PDF). с. 347. doi:10.1145/1007568.1007608. ISBN . Архів оригіналу (PDF) за 6 березня 2021. Процитовано 17 березня 2015.
- Hwang, S.; Kwon, K.; Cha, S. K.; Lee, B. S. (2003). Performance Evaluation of Main-Memory R-tree Variants. Advances in Spatial and Temporal Databases. Lecture Notes in Computer Science. Т. 2750. с. 10. doi:10.1007/978-3-540-45072-6_2. ISBN .
- Brinkhoff, T.; ; Seeger, B. (1993). Efficient processing of spatial joins using R-trees. ACM SIGMOD Record. 22 (2): 237. doi:10.1145/170036.170075.
- Achtert, E.; Böhm, C.; Kröger, P. (2006). DeLi-Clu: Boosting Robustness, Completeness, Usability, and Efficiency of Hierarchical Clustering by a Closest Pair Ranking. LNCS: Advances in Knowledge Discovery and Data Mining. Lecture Notes in Computer Science. 3918: 119—128. doi:10.1007/11731139_16. ISBN .
- Greene, D. (1989). An implementation and performance analysis of spatial data access methods. [1989] Proceedings. Fifth International Conference on Data Engineering. с. 606–615. doi:10.1109/ICDE.1989.47268. ISBN .
- Ang, C. H.; Tan, T. C. (1997). New linear node splitting algorithm for R-trees. У Scholl, Michel; Voisard, Agnès (ред.). Proceedings of the 5th International Symposium on Advances in Spatial Databases (SSD '97), Berlin, Germany, July 15–18, 1997. Lecture Notes in Computer Science. Т. 1262. Springer. с. 337—349. doi:10.1007/3-540-63238-7_38.
- Beckmann, N.; ; Schneider, R.; Seeger, B. (1990). The R*-tree: an efficient and robust access method for points and rectangles. (PDF). с. 322. doi:10.1145/93597.98741. ISBN . Архів оригіналу (PDF) за 17 квітня 2018. Процитовано 23 січня 2017.
Посилання
- R*-tree або індексація геопросторових даних [ 2 квітня 2015 у Wayback Machine.]
- Revisiting R-tree Construction Principles. Sotiris Brakatsoulas, Dieter Pfoser, and Yannis Theodoridis [ 27 січня 2007 у Wayback Machine.]
- Гулаков В. К., Трубаков А. О. Багатовимірні структури даних. [ 3 квітня 2015 у Wayback Machine.] 2010. 387 стр.
Це незавершена стаття про структури даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
R derevo angl R trees derevopodibna struktura danih yaka vikoristovuyetsya dlya organizaciyi dostupu do prostorovih danih tobto dlya indeksaciyi bagatovimirnoyi informaciyi takoyi napriklad yak geografichni koordinati pryamokutniki abo mnogokutniki R derevo bulo zaproponovane v 1984 roci i znajshlo znachne zastosuvannya yak u teoretichnomu tak i u prikladnomu aspektah Tipovim zapitom z vikoristannyam R derev mig bi buti takij Znajti vsi muzeyi u radiusi 2 kilometriv vid mogo potochnogo miscya roztashuvannya abo znajti vsi dorogi v mezhah 2 kilometriv vid mogo potochnogo miscya roztashuvannya dlya navigacijnoyi sistemi R derevo takozh priskoryuye poshuk najblizhchogo susida dlya riznih metrik vidstani vklyuchayuchi vidstan po sferi R treeTip DerevoVinajdeno 1984VinajshliObchislyuvalna skladnist u zapisi velikogo OSerednya NajgirshaProstirPoshuk O logMn Vstavlyannya O n VidalennyaProstij priklad R dereva dlya 2D pryamokutnikiv Vizualizaciya R dereva dlya 3D punktiv vikoristovuyuchi en kubi adresni storinki U vipadku dvovimirnogo prostoru cya struktura danih rozbivaye prostir na mnozhinu iyerarhichno vkladenih pryamokutnikiv yaki mozhut peretinatis U razi trivimirnogo abo bagatovimirnogo prostoru ce budut pryamokutni paralelepipedi Algoritmi vstavki i vidalennya vikoristovuyut ci obmezhuyuchi pryamokutniki dlya zabezpechennya togo shob blizko roztashovani ob yekti buli pomisheni v odnu listovu vershinu Zokrema novij ob yekt potrapit u tu listovu vershinu dlya yakoyi potribno najmenshe rozshirennya yiyi pryamokutnika Kozhen element listovoyi vershini zberigaye dva polya danih sposib identifikaciyi danih sho opisuyut ob yekt abo sami ci dani i pryamokutnik yakij obmezhuye cej ob yekt Analogichno algoritmi poshuku napriklad peretin vklyuchennya okil vikoristovuyut obmezhuyuchi pryamokutniki dlya prijnyattya rishennya pro neobhidnist poshuku v dochirnij vershini Takim chinom bilshist vershin nikoli ne vikoristovuyutsya pri poshuku Yak i u vipadku z B derevami cya vlastivist R derev obumovlyuye yih pridatnist dlya baz danih de vershini mozhut vivantazhuvatisya na nakopichuvach v miru neobhidnosti Dlya rozdilennya perepovnenih vershin mozhut zastosovuvatisya rizni algoritmi sho porodzhuye podil R derev na pidtipi kvadratichni ta linijni Spochatku R dereva ne garantuvali garnih harakteristik dlya najgirshogo vipadku hocha dobre pracyuvali na realnih danih Odnak v 2004 mu roci buv opublikovanij novij algoritm sho viznachaye prioritetni R dereva Stverdzhuyetsya sho cej algoritm efektivnij yak i najbilsh efektivni suchasni metodi i v toj zhe chas ye optimalnim dlya najgirshogo vipadku Struktura R derevaKozhna vershina R dereva maye zminnu kilkist elementiv ne bilshe deyakogo zazdalegid zadanogo maksimumu Kozhen element ne listovoyi vershini zberigaye dva polya danih sposib identifikaciyi dochirnoyi vershini i obmezhuye pryamokutnik kuboyid sho ohoplyuye vsi elementi ciyeyi dochirnoyi vershini Vsi zberezheni kortezhi zberigayutsya na odnomu rivni glibini takim chinom derevo idealno zbalansovano Pri proektuvanni R dereva potribno zadati deyaki konstanti maxNumOfEntries maksimalne chislo ditej u vershini minNumOfEntries minimalne chislo ditej u vershini za vinyatkom korenya Dlya korektnoyi roboti algoritmiv neobhidno shob minNumOfEntries lt maxNumOfEntries 2 U korenevij vershini mozhe buti vid 2 do maxNumOfEntries nashadkiv Chasto vibirayut minNumOfEntries 2 todi dlya korenya vikonuyutsya ti zh umovi sho i dlya inshih vershin Takozh inodi rozumno vidilyati okremi konstanti dlya kilkosti tochok v listovih vershinah tak yak yih chasto mozhna robiti bilshe Ideya R derevaOsnovna ideya strukturi danih polyagaye v grupi prileglih ob yektiv i predstavlyati yih z yih minimalnim obmezhuvalnim pryamokutnikom v nastupnomu vishomu rivni dereva zvidsi cya bukva R angl rectangle u nazvi R dereva Tak yak vsi ob yekti znahodyatsya v mezhah cogo konturnogo pryamokutnika zapit yakij ne peretinaye pryamokutnik takozh ne mozhe peretinati bud yakij z ob yektiv pryamokutnika Na rivni listka kozhen pryamokutnik opisuye odin ob yekt na bilsh visokih rivnyah agregaciyi vse bilshe ob yektiv Ce takozh mozhna rozglyadati yak zbilshennya gruboyi aproksimaciyi naboru danih Za analogiyeyu z V derevom R derevo takozh zbalansovane derevo poshuku tak sho vsi vuzli listya znahodyatsya na odnakovij visoti organizovuye dani v storinkah i priznachene dlya zberigannya na disku yak vono vikoristovuyetsya v bazah danih Kozhna storinka mozhe mistiti maksimalnu kilkist zapisiv yaki chasto poznachayutsya yak M displaystyle M Ce takozh garantuye minimalni zapovnennya dlya korenevogo vuzla yak vinyatok prote krashe vikonannya bulo predstavleno z minimalnim zapovnennyam 30 40 vid maksimalnoyi kilkosti vhodiv B dereva garantuyut 50 zapovnennya storinki a V dereva navit 66 Prichinoyu cogo ye neobhidnist bilsh skladnogo balansuvannya dlya prostorovih danih na vidminu vid linijnih danih sho zberigayutsya v B derevah Yak i z bilshistyu derev algoritmi poshukovih napriklad peretin lokalizaciyi poshuk najblizhchogo susida dosit prosti Klyuchova ideya polyagaye v tomu shob vikoristati obmezhuyuchi ramki dlya prijnyattya rishennya chi varto shukati vseredini piddereva Takim chinom bilshist vuzliv v derevi nikoli ne chitali pid chas poshuku Na vidminu vid B derev ce robit R dereva pridatnimi dlya velikih naboriv danih i baz danih de vuzli mozhut buti vivantazheni v pam yati koli ce neobhidno i vse derevo ne mozhe zberigatisya v operativnij pam yati Osnovni trudnoshi R derev ye stvorennya efektivnogo dereva yake z odnogo boku zbalansovane tak sho vuzli lista znahodyatsya na tij zhe visoti z inshogo boku pryamokutnikami ne pokrivayut zanadto bagato porozhnogo prostoru i ne perekrivayut odin odnogo zanadto tak sho pid chas poshuku menshe piddereva povinni buti obrobleni Napriklad pochatkova ideya dlya vstavki riznih elementiv shob otrimati efektivne derevo vstavlyati v pidderevo yake vimagaye najmenshogo rozshirennya jogo obmezhuvalnoyi ramki Pislya togo yak storinka zapovnilas dani rozbivayutsya na dvi grupi yaki povinni ohoplyuvati minimalnu ploshu kozhnogo Bilshist doslidzhen i udoskonalen dlya R derev spryamovana na polipshennya shlyahu pobudovi dereva i mozhut buti zgrupovani v dva ob yekti pobudova efektivnogo dereva z nulya vidomij yak nasipnij zavantazhennyam i vikonannya zmin v isnuyuchomu derevi vstavka i vidalennya R dereva ne garantuyut garnu produktivnist v en ale v cilomu dobre pracyuyut z realnimi danimi U toj chas yak bilsh teoretichnij interes nasipna zavantazhenim en ce najbilsh optimalnij variant R dereva v najgirshomu vipadku ale cherez pidvishenu skladnist jomu ne pridilyalosya bagato uvagi v praktichnih dodatkah do cih pir Koli dani organizovani v R derevi najblizhchi K susidi dlya bud yakogo Lp Norm vsih tochok efektivno mozhna obchisliti za dopomogoyu prostorovogo ob yednannya Ce vigidno dlya bagatoh algoritmiv zasnovanih na najblizhchih K susidah napriklad Local Outlier Factor DeLi Clu Density Link Clustering ye algoritmom klasternogo analizu yakij vikoristovuye strukturu R dereva dlya podibnogo rodu prostorovogo priyednannya efektivno obchislyuvati klasterizaciyu OPTICS RiznovidiR derevo en en en AlgoritmiVstavka Pobudova R dereva vidbuvayetsya yak pravilo za dopomogoyu bagatorazovogo vikliku operaciyi vstavki elementa v derevo Ideya vstavki shozha na vstavku v B derevo probuyemo dodati krapku v pidhodyashu listovu vershinu yaksho vona perepovnyuyetsya podilyayemo yiyi i poki vimagayetsya dilimo yiyi predkiv Navedemo nizhche klasichnij algoritm vstavki opisanij Antoninom Guttmannom Funkciya insert viklikaye chooseLeaf shob vibrati list kudi mi hochemo vstaviti krapku Yaksho vstavka zdijsnena to derevo moglo buti podileno i rozkol mig dijti do vershini U comu vipadku chooseLeaf povertaye dvi rozkoloti vershini splittedNodes dlya vstavki v korin viklikayetsya funkciya adjustBounds yaka rozshiryuye obmezhuye pryamokutnik korenya na vstavlyayetsya tochku pereviryaye yaksho chooseLeaf povernula nenulovi splittedNodes to derevo roste na riven vgoru z cogo momentu korenem ogoloshuyetsya vershina diti yakoyi ti sami splittedNodesFunkciya chooseLeaf yaksho na vhodi list baza rekursiyi to viklikaye funkciyu doInsert yaka zdijsnyuye bezposerednyu vstavku elementa v derevo i povertaye dva listi yaksho vidbulosya rozdilennya zminyuye obmezhuyuchij pryamokutnik vershini z urahuvannyam vstavlenoyi tochki povertaye splittedNodes yaki nam povernuv doInsert yaksho na vhodi ne listova vershina z usih nashadkiv vibirayetsya toj chiyi kordoni vimagayut minimalnogo zbilshennya dlya vstavki danoyi tochki rekursivno viklikayetsya chooseLeaf dlya obranogo nashadka popravlyayutsya obmezhuyuchi pryamokutniki yaksho splittedNodes vid rekursivnogo vikliku nulovi to pokidayemo funkciyu inakshe yaksho numOfEntries lt maxNumOfEntries to dodayemo novu vershinu do ditej chistimo splittedNodes inakshe koli nemaye misc dlya vstavki mi konkatenuyemo masiv ditej z novoyu vershinoyu i peredayemo otrimane funkciyi linearSplitNodes abo inshoyi funkciyi podilu vershin i povernemo z chooseLeaf ti splittedNodes yaki nam povernula vikoristovuvana funkciya podilu Funkciya linearSplit Dlya podilu vershin mozhut vikoristovuvatisya rizni algoritmi ce odin z nih Vin maye vsogo linijnu skladnist i prosto realizuyetsya pravda vidaye ne same optimalne rozdilennya Odnak praktika pokazuye sho takoyi skladnosti zazvichaj dostatno po kozhnij koordinati dlya vsogo naboru podilyuvanih vershin obchislyuyetsya riznicya mizh maksimalnoyu nizhnoyu mezheyu pryamokutnika z ciyeyi koordinati ta minimalnoyi verhnoyi potim cya velichina normalizuyetsya na riznicyu mizh maksimalnoyu i minimalnoyu koordinatoyu tochok vihidnogo naboru dlya pobudovi vsogo dereva znahoditsya maksimum cogo normalizovanogo rozkidu po vsih koordinatah vstanovlyuyemo yak pershih ditej dlya povertanih vershin node1 i node2 ti vershini z vhidnogo spisku na yakih dosyagavsya maksimum vidalyayemo yih z vhidnogo spisku koriguyemo bounds dlya node1 i node2 dali vikonuyetsya vstavka dlya reshti vershin yaksho v spisku zalishilosya nastilki malo vershin sho yaksho yih vse dodati v odnu z vihidnih vershin to v nij viyavitsya minNumOfEntries vershin to v neyi dodayetsya zalishok povernennya z funkciyi yaksho v yakijs z vershin vzhe nabranij maksimum nashadkiv to zalishok dodayetsya v protilezhnu povernennya dlya chergovoyi vershini zi spisku porivnyuyetsya na skilki treba zbilshiti obmezhuye pryamokutnik pri vstavci v kozhnu z dvoh majbutnih vershin de menshe tudi yiyi i vstavlyayetsyaFunkciya fizichnoyi vstavki doInsert yaksho v vershini ye vilni miscya to tochka vstavlyayetsya tudi yaksho zh misc nemaye to diti vershini konkatenuyutsya z tochkoyu yaka dodayetsya i viklikayetsya funkciya linearSplit abo inshu funkciyu podilu sho povertaye dvi rozdileni vershini yaki mi povertayemo z doInsertRozbittya za dopomogoyu algoritmiv klasterizaciyi Inodi zamist R dereva vikoristovuyut tak zvane cR derevo c oznachaye clustered Osnovna ideya v tomu sho dlya rozdilennya vershin abo tochok vikoristovuyutsya algoritmi klasterizaciyi taki yak k means Skladnist k means tezh linijna ale vin v bilshosti vipadkiv daye krashij rezultat nizh linijnij algoritm podilu Guttmana na vidminu vid yakogo vin ne tilki minimizuye sumarnu ploshu oginayuchih paralelepipediv ale i vidstan mizh nimi i plosha perekrittya Dlya klasterizaciyi tochok vikoristovuyetsya obrana metrika pochatkovogo prostoru dlya klasterizaciyi vershin mozhna vikoristovuvati vidstan mizh centrami yih oginayuchih paralelepipediv abo maksimalnoyu vidstannyu mizh nimi Algoritmi klasterizaciyi ne vrahovuyut te sho chislo nashadkiv vershini obmezheno zverhu i znizu konstantami algoritmu Yaksho klasterizaciya vidaye neprijnyatnij rezultat mozhna vikoristovuvati dlya cogo naboru klasichnij algoritm tak yak na praktici take vidbuvayetsya ne chasto Cikava ideya vikoristovuvati klasterizaciyu na kilka klasteriv de kilka mozhe buti bilshe dvoh Odnak treba vrahovuvati sho ce nakladaye pevni obmezhennya na parametri strukturi R dereva Vidznachimo sho krim cR dereva isnuye jogo variaciya clR derevo zasnovane na metodi klasterizaciyi de yak centr vikoristanij iteracijnij algoritm rozv yazannya zadachi rozmishennya Algoritm maye kvadratichnu obchislyuvalnu skladnist ale zabezpechuye pobudovu bilsh kompaktnih oginayuchih paralelepipediv u zapisah vershin strukturi Poshuk Poshuk v derevi dosit trivialnij treba lishe vrahovuvati toj fakt sho kozhna tochka prostoru mozhe buti pokrita dekilkoma vershinami Vpliv riznih rozsheplen evristiki na bazi danih z amerikanskimi poshtovimi rajonamiKvadratichnij rozkol Guttmana V comu derevi nakladeno bagato storinok Kvadratichnij rozkol Guttmana V comu derevi nakladeno bagato storinok Linijnij rozkol Guttmana She girsha struktura ale yiyi shvidshe buduvati Linijnij rozkol Guttmana She girsha struktura ale yiyi shvidshe buduvati Rozkol Grina Storinki perekrivayutsya znachno menshe nizh za strategiyeyu Guttmana Rozkol Grina Storinki perekrivayutsya znachno menshe nizh za strategiyeyu Guttmana Linijnij rozkol Ang Tana Cya strategiya peredbachaye narizannya storinok yaki chasto prizvodyat do poganoyi produktivnosti zapitiv Linijnij rozkol Ang Tana Cya strategiya peredbachaye narizannya storinok yaki chasto prizvodyat do poganoyi produktivnosti zapitiv Topologichnij rozkol R dereva Storinki perekrivayutsya nabagato menshe tak yak R derevo namagayetsya zvesti do minimumu dublyuvannya storinok a takozh vstaviti dodatkovo optimizovane derevo Strategiya rozkolu nadaye perevagu kvadratnim storinkam sho daye krashu produktivnist dlya najbilsh chasto vikoristovuvanih dodatkiv karti Topologichnij rozkol R dereva Storinki perekrivayutsya nabagato menshe tak yak R derevo namagayetsya zvesti do minimumu dublyuvannya storinok a takozh vstaviti dodatkovo optimizovane derevo Strategiya rozkolu nadaye perevagu kvadratnim storinkam sho daye krashu produktivnist dlya najbilsh chasto vikoristovuvanih dodatkiv karti Bulk zavantazhene R derevo vikoristovuye Sort Tile Recursive STR Storinki listya ne perekrivayutsya a storinki katalogu tilki trohi perekrivayut odna odnu Ce duzhe efektivne derevo ale vono vimagaye shob dani buli povnistyu vidomi zazdalegid Bulk zavantazhene R derevo vikoristovuye Sort Tile Recursive STR Storinki listya ne perekrivayutsya a storinki katalogu tilki trohi perekrivayut odna odnu Ce duzhe efektivne derevo ale vono vimagaye shob dani buli povnistyu vidomi zazdalegid en podibni do R derev ale vikoristovuyut vkladeni sferichni storinki Rozsheplennya cih storinok nabagato skladnishe i storinki yak pravilo perekrivayutsya nabagato bilshe en podibni do R derev ale vikoristovuyut vkladeni sferichni storinki Rozsheplennya cih storinok nabagato skladnishe i storinki yak pravilo perekrivayutsya nabagato bilshe Obgovorennya R derevPerevagi efektivno zberigayut lokalizovani v prostori grupi ob yektiv zbalansovani znachit shvidkij poshuk v girshomu vipadku vstavka vidalennya odniyeyi tochki ne vimagaye istotnoyi perebudovi dereva dinamichnij indeks Nedoliki chutlive do poryadku dodavannya danih obmezhuyut pryamokutniki vershin mozhut perekrivatisyaPrimitkiGuttman A 1984 R Trees A Dynamic Index Structure for Spatial Searching PDF s 47 doi 10 1145 602259 602266 ISBN 0897911288 Arhiv originalu PDF za 9 bereznya 2016 Procitovano 23 sichnya 2017 Y Manolopoulos A Nanopoulos Y Theodoridis 2006 Springer ISBN 978 1 85233 977 7 Arhiv originalu za 18 chervnya 2013 Procitovano 8 zhovtnya 2011 Roussopoulos N Kelley S Vincent F D R 1995 Nearest neighbor queries Proceedings of the 1995 ACM SIGMOD international conference on Management of data SIGMOD 95 s 71 doi 10 1145 223784 223794 ISBN 0897917316 Schubert E Zimek A 2013 Geodetic Distance Queries on R Trees for Indexing Geographic Data Advances in Spatial and Temporal Databases Lecture Notes in Computer Science T 8098 s 146 doi 10 1007 978 3 642 40235 7 9 ISBN 978 3 642 40234 0 De Berg M Haverkort H J Yi K 2004 The Priority R tree PDF s 347 doi 10 1145 1007568 1007608 ISBN 1581138598 Arhiv originalu PDF za 6 bereznya 2021 Procitovano 17 bereznya 2015 Hwang S Kwon K Cha S K Lee B S 2003 Performance Evaluation of Main Memory R tree Variants Advances in Spatial and Temporal Databases Lecture Notes in Computer Science T 2750 s 10 doi 10 1007 978 3 540 45072 6 2 ISBN 978 3 540 40535 1 Brinkhoff T Seeger B 1993 Efficient processing of spatial joins using R trees ACM SIGMOD Record 22 2 237 doi 10 1145 170036 170075 Achtert E Bohm C Kroger P 2006 DeLi Clu Boosting Robustness Completeness Usability and Efficiency of Hierarchical Clustering by a Closest Pair Ranking LNCS Advances in Knowledge Discovery and Data Mining Lecture Notes in Computer Science 3918 119 128 doi 10 1007 11731139 16 ISBN 978 3 540 33206 0 Greene D 1989 An implementation and performance analysis of spatial data access methods 1989 Proceedings Fifth International Conference on Data Engineering s 606 615 doi 10 1109 ICDE 1989 47268 ISBN 0 8186 1915 5 Ang C H Tan T C 1997 New linear node splitting algorithm for R trees U Scholl Michel Voisard Agnes red Proceedings of the 5th International Symposium on Advances in Spatial Databases SSD 97 Berlin Germany July 15 18 1997 Lecture Notes in Computer Science T 1262 Springer s 337 349 doi 10 1007 3 540 63238 7 38 Beckmann N Schneider R Seeger B 1990 The R tree an efficient and robust access method for points and rectangles PDF s 322 doi 10 1145 93597 98741 ISBN 0897913655 Arhiv originalu PDF za 17 kvitnya 2018 Procitovano 23 sichnya 2017 PosilannyaR tree abo indeksaciya geoprostorovih danih 2 kvitnya 2015 u Wayback Machine Revisiting R tree Construction Principles Sotiris Brakatsoulas Dieter Pfoser and Yannis Theodoridis 27 sichnya 2007 u Wayback Machine Gulakov V K Trubakov A O Bagatovimirni strukturi danih 3 kvitnya 2015 u Wayback Machine 2010 387 str ISBN 978 5 89838 515 6 Ce nezavershena stattya pro strukturi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi