Многомерное дерево отрезков — различия между версиями
Строка 2: | Строка 2: | ||
==Построение== | ==Построение== | ||
− | Пусть задано <tex>p</tex>-мерное пространство с координатными осями <tex>x_1, x_2, x_3...x_p</tex>.Т.к. при построении одномерного дерева, индексы массива разбиваются на отрезки, тогда при построении многомерного дерева координаты будут обрабатываться сначала по <tex>x_1 </tex>, затем по <tex>x_2</tex> и так далее...Далее дерево строится рекурсивно: далее координаты по <tex>x_1</tex> обрабатываем по координатам <tex>x_2</tex>, <tex>x_3</tex> | + | Пусть задано <tex>p</tex>-мерное пространство с координатными осями <tex>x_1, x_2, x_3...x_p</tex>.Т.к. при построении одномерного дерева, индексы массива разбиваются на отрезки, тогда при построении многомерного дерева координаты будут обрабатываться сначала по <tex>x_1 </tex>, затем по <tex>x_2</tex> и так далее...Далее дерево строится рекурсивно: далее координаты по <tex>x_1</tex> обрабатываем по координатам <tex>x_2</tex>, <tex>x_3</tex>(по всем возможным координатам)и далее по аналогии...То есть получается, что основная идея построения многомерного дерева отрезков - вкладывание деревьев отрезка друг в друга. |
==Пример двумерного дерева== | ==Пример двумерного дерева== | ||
Строка 9: | Строка 9: | ||
==Анализ и оценка структуры== | ==Анализ и оценка структуры== | ||
− | Структура использует <tex>O(n^p</tex> памяти, и отвечает на запрос за <tex>O(log^{p} n)</tex>, где <tex>p</tex>-размерность дерева. | + | Строится такое дерево за линейное время. |
+ | Структура использует <tex>O(n^p)</tex> памяти, и отвечает на запрос за <tex>O(log^{p} n)</tex>, где <tex>p</tex>-размерность дерева. | ||
+ | |||
+ | Ответ на запрос в таком дереве будет производиться так же,как и построение: сначала по координате <tex>x_1</tex>, затем <tex>x_2</tex> и так далее. |
Версия 06:48, 15 июня 2011
Дерево отрезков можно обобщить в многомерный случай.
Построение
Пусть задано
-мерное пространство с координатными осями .Т.к. при построении одномерного дерева, индексы массива разбиваются на отрезки, тогда при построении многомерного дерева координаты будут обрабатываться сначала по , затем по и так далее...Далее дерево строится рекурсивно: далее координаты по обрабатываем по координатам , (по всем возможным координатам)и далее по аналогии...То есть получается, что основная идея построения многомерного дерева отрезков - вкладывание деревьев отрезка друг в друга.Пример двумерного дерева
Рассмотрим процесс построения предельного случая при
. Пусть задан массив элементов размера .Упорядочим массив по первой координате и построим на нем дерево отрезков.После этого для каждого узла дерева строим еще одно дерево отрезков по координате , которые находятся на том же отрезке.Анализ и оценка структуры
Строится такое дерево за линейное время. Структура использует
памяти, и отвечает на запрос за , где -размерность дерева.Ответ на запрос в таком дереве будет производиться так же,как и построение: сначала по координате
, затем и так далее.