Почему R-дерево неупорядочено? Тем не менее, говорят, что он следует правилам B-дерева

Хорошо, на скриншоте, прикрепленном ниже, показано дерево R. Он имеет R1 и R2 в корне. слева от R1 находится r3,r3,r5. Это почему? Я думал, что элементы слева от корневого элемента должны быть меньше. Если бы корневым элементом в корне был R6, то имело бы смысл поставить R3,R4,R5 слева. Насколько мне известно, B+ и B-деревья следуют этому правилу.

Также на листовых узлах, почему после R12 и тому подобное есть пустое место? Я в замешательстве.

введите здесь описание изображения


person coder85    schedule 05.12.2016    source источник
comment
Может ли кто-нибудь помочь?   -  person coder85    schedule 05.12.2016


Ответы (2)


B-дерево и R-дерево основаны на совершенно разных концепциях. У них мало общего: похожие имена и высокая n-арность (чтобы их можно было хранить на дисках с плохим временем произвольного доступа).

  1. B-дерево хранит одномерные значения, которые упорядочены естественным образом. R-дерево хранит многомерные значения, которые нельзя упорядочить естественным образом. (Как вы собираетесь упорядочивать пары координат x/y?).

  2. B-дерево хранит сами элементы, а R-дерево хранит координаты искусственно построенных ограничивающих рамок. Ri на изображении выше — это просто случайные метки — вы можете заменить их любыми именами, которые вам нравятся.

  3. Связи в B-дереве и R-дереве означают совершенно разные отношения.

    Если какой-то узел B-дерева хранит n значений, то он имеет n+1 указателей, которые расположены (семантически) между соседними значениями. Если, например, какой-то указатель находится между значениями 25 и 70, то он ведет к поддереву, в котором разрешено хранить элементы с 26 по 69. Таким образом, можно сказать, что связи в B-дереве означают в -между отношениями.

    Если какой-то узел R-дерева хранит n координат ограничивающих рамок, то он также имеет n указателей на нижний уровень, по одному на каждую ограничивающую рамку. Если некоторый указатель принадлежит Ri, то он ведет к поддереву, содержащему все внутренние ограничивающие рамки относительно Ri. Это своего рода «содержащее» отношение.

Чтобы понять дальнейшую разницу между деревьями B и R, вы можете построить R-дерево, которое хранит одномерные числа (прямоугольники вырождаются в отрезки) и сравнить его с B-деревом.

Итак, чтобы ответить на ваш первый вопрос: R1 не меньше, чем R3, R4 или R5. Это просто метки соответствующих прямоугольников. Вместо этого R3, R4 и R5 являются частью R1.

Что касается того, почему есть пустое место - это зависит от алгоритма, используемого для построения дерева. Разные алгоритмы и разные порядки вставки/удаления могут привести к разным деревьям, содержащим один и тот же набор элементов. (То же самое верно и для B-деревьев.)

person gudok    schedule 05.12.2016
comment
Значит, r3, r4, r5 тоже можно разместить слева? Не обязательно ? - person coder85; 06.12.2016
comment
Гудок, как работает вставка и удаление в дереве R? Объяснения, которые я видел в Интернете, настолько расплывчаты. они не объясняют это подробно. - person coder85; 06.12.2016
comment
Да. Вы не можете сказать, что Ri больше, чем Rj — для прямоугольников такое отношение просто не определено. Но вы можете сказать, что Ri содержится в Rj — вот почему R3, R4, R5 расположены в поддереве с корнем R1. Думайте о значениях внутри каждого узла как о наборе, а не как об отсортированном списке (как в B-дереве). Вы можете легко переставить R3, R4, R5 в R5, R3, R4 вместе с их поддеревьями. Практическая реализация, конечно, каким-то образом упорядочит прямоугольники внутри узлов для ускорения поиска (поскольку типичный узел может содержать тысячи прямоугольников, а не только 3, как на изображении выше). - person gudok; 06.12.2016
comment
Нет хорошего объяснения вставкам и удалениям, потому что R-дерево не является четко определенной структурой. Каждая конкретная реализация использует разные эвристики. В Википедии кратко упоминаются известные эвристики. - person gudok; 06.12.2016

Упорядочиваются только одномерные данные.

Идея балансировки и разделения R-дерева аналогична B-дереву; аналогично R-дерево обеспечивает минимальное заполнение страницы и т. д. Концепция страниц также аналогична.

Но в то время как B-дерево использует линейный порядок узлов, R-дерево использует иерархию ограничивающего объема, а не линейный порядок, поскольку многомерные данные не упорядочены. В R-дереве нет «левого» или «правого».

person Erich Schubert    schedule 21.12.2016