Введение

Дерево R+ – это метод поиска данных по местоположению, часто по координатам (x, y), и нередко для определения местоположений на поверхности Земли. Поиск по одному параметру – уже решенная задача, однако поиск по двум или более параметрам и запрос местоположений, близких по координатам x и y, требует более сложных алгоритмов. По сути, дерево R+ является древовидной структурой данных, вариантом R-дерева, используемым для индексирования пространственных данных.

Разница между деревьями R+ и R

R+ деревья — это компромисс между R-деревьями и kd-деревьями: они избегают перекрытия внутренних узлов, при необходимости вставляя объект в несколько листьев. Покрытие — это общая площадь, необходимая для охвата всех связанных прямоугольников. Перекрытие — это общая площадь, содержащаяся в двух или более узлах. Минимальное покрытие уменьшает количество "пустого пространства" (незанятой области), покрываемого узлами R-дерева. Минимальное перекрытие уменьшает количество поисковых путей к листьям (что еще более критично для времени доступа, чем минимальное покрытие). Эффективный поиск требует минимального покрытия и перекрытия. R+ деревья отличаются от R-деревьев тем, что: узлы не гарантированно заполнены хотя бы наполовину, записи любого внутреннего узла не перекрываются, и идентификатор объекта может храниться более чем в одном листе.

Преимущества

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

Недостатки

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