Дерево диапазона
Дерево диапазона | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тип | дерево | |||||||||||||||||
Изобретенный | 1979 | |||||||||||||||||
Изобретён | Джон Луис Бентли | |||||||||||||||||
|
В информатике дерево диапазонов — это упорядоченная древовидная структура данных, содержащая список точек. обо всех точках в заданном диапазоне Он позволяет эффективно сообщать и обычно используется в двух или более измерениях. Деревья хребта были представлены Джоном Луи Бентли в 1979 году. [1] Подобные структуры данных были независимо открыты Люкером. [2] Ли и Вонг, [3] и Уиллард. [4] Дерево диапазонов является альтернативой дереву k -d . По сравнению с деревьями k -d деревья диапазонов обеспечивают более быстрое время запроса (в нотации Big O ). но хуже хранить , где n — количество точек, хранящихся в дереве, d — размерность каждой точки, а k — количество точек, сообщаемых данным запросом.
Бернар Шазель улучшил это, чтобы время запроса и пространственная сложность . [5] [6]
Структура данных [ править ]
Дерево диапазонов на наборе одномерных точек представляет собой сбалансированное двоичное дерево поиска по этим точкам. Точки, хранящиеся в дереве, хранятся в листьях дерева; каждый внутренний узел хранит наибольшее значение своего левого поддерева.Дерево диапазонов на множестве точек в d -размерах представляет собой рекурсивно определенное многоуровневое двоичное дерево поиска . Каждый уровень структуры данных представляет собой двоичное дерево поиска по одному из d -измерений.Первый уровень представляет собой двоичное дерево поиска по первой из d -координат. Каждая вершина v этого дерева содержит связанную структуру, которая представляет собой ( d −1)-мерное дерево диапазонов в последних ( d −1)-координатах точек, хранящихся в поддереве v .
Операции [ править ]
Строительство [ править ]
Одномерное дерево диапазонов на наборе из n точек — это двоичное дерево поиска, которое можно построить в время. Деревья диапазонов в более высоких измерениях строятся рекурсивно путем построения сбалансированного двоичного дерева поиска по первой координате точек, а затем для каждой вершины v в этом дереве строится ( d −1)-мерное дерево диапазонов по точкам, содержащимся в поддерево v . Построение дерева диапазонов таким способом потребует время.
Это время построения можно сократить для двумерных деревьев диапазонов до . [7] Пусть S — набор из n двумерных точек. Если S содержит только одну точку, верните лист, содержащий эту точку. В противном случае постройте связанную структуру S , 1-мерное дерево диапазонов по y -координатам точек в S . Пусть x m — медианная x -координата точек. Пусть SL и будет набором точек с координатой x, меньшей или равной x m, пусть SR большей , будет набором точек с координатой x, чем x m . Рекурсивно постройте v L 2-мерное дерево диапазонов на SL v , и R , 2-мерное дерево диапазонов на SR , . Создайте вершину v с левым дочерним элементом v L и правым дочерним элементом v R .Если мы отсортируем точки по их координатам y в начале алгоритма и сохраним этот порядок при разделении точек по их координате x , мы сможем построить связанные структуры каждого поддерева за линейное время.Это сокращает время построения двумерного дерева диапазонов до , а также сокращает время построения d -мерного дерева диапазонов до .
Запросы диапазона [ править ]
Запрос диапазона в дереве диапазонов сообщает набор точек, лежащих внутри заданного интервала. Чтобы сообщить точки, которые лежат в интервале [ x 1 , x 2 ], мы начинаем с поиска x 1 и x 2 . В какой-то вершине дерева пути поиска x 1 и x 2 разойдутся. Пусть v Split будет последней вершиной, общей для этих двух путей поиска. Для каждой вершины v в пути поиска от v, разделенного до x 1 , если значение, хранящееся в v, больше x 1 , сообщите о каждой точке в правом поддереве v . Если v является листом, сообщите значение, хранящееся в v , если оно находится внутри интервала запроса. Аналогично, отчет обо всех точках, хранящихся в левых поддеревьях вершин со значениями меньше x 2 вдоль пути поиска от v Split до x 2 , и отчет о листе этого пути, если он находится в пределах интервала запроса.
Поскольку дерево диапазонов представляет собой сбалансированное двоичное дерево, пути поиска к x 1 и x 2 имеют длину . Отчет обо всех точках, хранящихся в поддереве вершины, может быть выполнен за линейное время с использованием любого обхода дерева алгоритма . Отсюда следует, что время выполнения запроса диапазона равно , где k — количество точек в интервале запроса.
Запросы диапазона в d -размерах аналогичны. Вместо того, чтобы сообщать обо всех точках, хранящихся в поддеревьях путей поиска, выполните запрос ( d -1)-мерного диапазона для связанной структуры каждого поддерева. В конечном итоге будет выполнен запрос одномерного диапазона и будут получены правильные точки. Поскольку d -мерный запрос состоит из ( d -1)-мерных запросов, отсюда следует, что время, необходимое для выполнения запроса d -мерного диапазона, равно , где k — количество точек в интервале запроса. Это можно свести к используя вариант дробного каскадирования . [2] [4] [7]
См. также [ править ]
Ссылки [ править ]
- ^ Бентли, Дж.Л. (1979). «Разложимые задачи поиска» (PDF) . Письма об обработке информации . 8 (5): 244–251. дои : 10.1016/0020-0190(79)90117-0 . Архивировано из оригинала 24 сентября 2017 года.
- ↑ Перейти обратно: Перейти обратно: а б Люкер, Г.С. (1978). «Структура данных для запросов ортогонального диапазона». 19-й ежегодный симпозиум по основам информатики (SFC, 1978) . стр. 28–21. дои : 10.1109/SFCS.1978.1 . S2CID 14970942 .
- ^ Ли, DT; Вонг, СК (1980). «Четверичные деревья: файловая структура для многомерных систем баз данных». Транзакции ACM в системах баз данных . 5 (3): 339. дои : 10.1145/320613.320618 . S2CID 2547376 .
- ↑ Перейти обратно: Перейти обратно: а б Уиллард, Дэн Э. Алгоритм супер- b -дерева (технический отчет). Кембридж, Массачусетс: Компьютерная лаборатория Эйкена, Гарвардский университет. ТР-03-79.
- ^ Шазель, Бернар (1990). «Нижние границы для поиска в ортогональном диапазоне: I. Случай отчетности» (PDF) . Журнал АКМ . 37 (2): 200–212. дои : 10.1145/77600.77614 . S2CID 8895683 .
- ^ Шазель, Бернар (1990). «Нижние границы для поиска в ортогональном диапазоне: II. Арифметическая модель» (PDF) . Журнал АКМ . 37 : 439–463. дои : 10.1145/79147.79149 . S2CID 15935619 .
- ↑ Перейти обратно: Перейти обратно: а б де Берг, Марк; Чеонг, Отфрид; ван Кревелд, Марк; Овермарс, Марк (2008). Вычислительная геометрия . дои : 10.1007/978-3-540-77974-2 . ISBN 978-3-540-77973-5 .
Внешние ссылки [ править ]
- Деревья диапазонов и сегментов в CGAL , библиотеке алгоритмов вычислительной геометрии.
- Лекция 8: Деревья хребта , Марк ван Кревельд. Архивировано здесь .
- Деревья диапазонов с использованием PAM , параллельной расширенной библиотеки карт.
- 2D-визуализация дерева диапазонов , Чжоу Кайсюань.