2016-11-14 1 views
-1

Я хочу, чтобы все понимали два измерения RTrees на Java, но я теряюсь в объяснениях, и я надеюсь, что кто-то может сказать мне, как они действительно работают.RTrees для манекенов

Что я получить о них заключается в следующем:

Вы начинаете со списком узлов с максимальным числом entrys М, когда вы пытаетесь получить еще одно значение, которое вы должны разделить этот узел, я должен держать корневой узел с двумя листьями. Я не хочу обсуждать о лучшем методе разделения, мы думаем в trully simple RTree.

Теперь я буду писать базовый код, как я думаю, что это работает:

class RTree<E> { 

    //I need a root which is a list of nodes. 
    public NodeList root; 

    //From data we create rectangles that contain values 
    class Rectangle { 
      public double x; 
      public double y; 
    } 

    class Node { 
      public E valor; 
      public Rectangle rect; 
    } 

    class ListNodo { 
      public Node node; 
      public NodeList next; 
    } 
} 

То, что я не получаю (Извините, если это так элементарно):

ли я спросить пользователь вводит значения в координатах?

Как будет работать метод вставки для базового футляра, какие параметры я задам?

Я все неправильно?

+0

Я просмотрел https://en.wikipedia.org/wiki/R-tree. Насколько я могу судить, только ваши листовые узлы shuold содержат элементы 'E', а не внутренние узлы. А прямоугольник должен иметь левый и правый (оба по оси х) и сверху и снизу. Да, вы должны получить координаты откуда-нибудь, так почему бы не пользователю? –

+0

спасибо @ OleV.V. теперь я знаю, что пользователь вводит прямоугольник, и я показываю, какие значения в нем. –

ответ

0

Прямоугольники в двумерном R-дереве являются ограничивающими прямоугольниками. Им нужны четыре координаты, например, левый, правый, верхний и нижний, как говорит OleV, а не только x и y.

Нелистовой узел в дереве содержит несколько записей, каждый из которых имеет ограничивающий прямоугольник и ссылку на другой узел дерева на следующем уровне вниз. Ограничивающий блок записи содержит ограничивающие поля всех записей в узле ниже.

Листовой узел аналогичен, но каждая запись имеет ограничивающий прямоугольник и ссылку на объект данных, который не является частью дерева. Ограничивающая рамка содержит объект данных.

У нас должен быть способ найти ограничивающий прямоугольник объекта. Чтобы вставить объект, определите его ограничительную рамку и составьте лист. Затем начните с корня и спускайтесь к листьям. На каждом уровне над листьями выберите поддерево для нового объекта, сравнив его ограничивающий прямоугольник с ограничивающими полями записей. Выберите поддерево, элементы данных которого близки к новому объекту.

Когда вы достигнете уровня листа, добавьте новую запись в этот узел. Возможно, вам придется разбить узел, если слишком много записей.

По пути вниз вам может потребоваться увеличить ограничивающие рамки в нелистовых записях, чтобы содержать новую запись.

+0

Таким образом, поиск объекта внутри дерева R должен находиться внутри ограничивающей рамки, заданной пользователем с помощью X и Y min и max, и в зависимости от того, будет ли он листовым узлом иметь размер и объекты, между тем один нелистный объект будет иметь объекты. Спасибо вам за это @Antonin –

0

В рамках моих исследований по истечении этого вопроса я нашел эту статью, в которой объясняются основные алориты дерева R. Если кто-то хочет получить более глубокие знания о деревьях R, которые дополняют ответ @Antonin, пожалуйста, взгляните на это: http://www.bowdoin.edu/~ltoma/teaching/cs340/spring08/Papers/Rtree-chap1.pdf

Смежные вопросы