Исследование и развитие метода декомпозиции для анализа больших пространственных данных 1
Золотов В.А., Семенов В.А.
Аннотация. Статья посвящена развитию метода декомпозиции для индексации, поиска и анализа больших пространственных данных. Главное внимание уделяется алгоритмам, основанным на регулярных октальных деревьях и обеспечивающим эффективное решение ряда вычислительных задач. Исследуемые алгоритмы определения столкновений и выборки по заданной области, в частности, применимы для моделирования сложных динамических пространственно-трехмерных сцен с объектами, имеющими протяженные границы. Для модельного набора данных на основе вероятностного анализа выводятся оценки сложности, которые обобщают и улучшают известные результаты, а также служат теоретическим обоснованием для применения алгоритмов к более широкому классу приложений.
Ключевые слова: Пространственные индексы, октальные деревья, вычислительная сложность.
1. Введение
Стремительный рост объемов информации, а также необходимость ее анализа приводят к развитию новых подходов к управлению данными и, в частности, методов пространственного индексирования, без которых невозможен быстрый поиск и обработка в геоинформационных базах данных, системах логистического обеспечения, системах автоматизации проектирования, системах управления проектами. Как правило, популярные универсальные и специализированные СУБД предусматривают для этих целей средства пространственного индексирования и поиска. Подобные средства успешно справляются с обработкой статической информации, однако часто не приспособлены для данных, подлежащих перманентным изменениям [1]. Проблемы эффективного поиска и анализа еще более усложняются, когда информация представляет собой не просто массивы точек, а сложноструктурированные наборы данных, например, множества объектов с протяженными пространственными границами [2]. Класс подобных
1 Исследование поддержано грантом РФФИ 13-07-00294.
приложений чрезвычайно широк и охватывает не только перечисленные выше прикладные области, но и многочисленные системы компьютерной графики, визуализации и анимации. Эти факторы определяют актуальность темы и огромный интерес, как со стороны научного сообщества, так и производителей системного и прикладного программного обеспечения. В частности, активные разработки в этой области ведут компании Google, Oracle, IBM, Autodesk, Bentley, Intergraph, AVEVA, сталкивающиеся с проблемой увеличения объемов анализируемой пространственно-временной информации.
В работе [3] были системно проанализированы фундаментальные семейства методов индексации и поиска многомерных данных. В частности, рассматривались структуры поиска на интервалах, сбалансированные ветвистые деревья во внешней памяти, бинарные деревья пространственной декомпозиции, префиксные деревья, нерегулярные и регулярные многоуровневые сетки, метрические деревья, а также связанные с ними разнообразные методики хэширования, расщепления и кластеризации. Большое внимание было уделено методам пространственной индексации на основе регулярных октальных деревьев. Главным их достоинством является простота развертывания и модификации индексов, обусловленная априори известным положением секущих плоскостей. Это позволяет относительно легко обновлять индексы и обеспечивать эффективность исполнения типовых пространственных запросов при перманентных изменениях самих данных. Однако данные методы не обеспечивают сбалансированность структур индексов и могут приводить к их деградации в тех случаях, когда данные неравномерно распределены по пространству или имеют протяженные границы. Известные оценки сложности в подобных наихудших случаях приводят к пессимистическим выводам и не определяют реальных границ применимости методов декомпозиции на основе регулярных октальных деревьев. По-видимому, они нуждаются в более детальном исследовании и развитии, исходя из оценок сложности в среднем, которые могут быть получены на основе вероятностного анализа основных алгоритмов при необходимой конкретизации условий прикладных задач.
В разделе 2 рассматривается постановка задачи, связанной с визуальным анализом пространственно-трехмерных сцен. В рамках данной постановки исследуется алгоритм развертывания регулярных октальных деревьев. В разделе 3 описываются алгоритмы определения столкновений и выборки объектов по заданной области, основанные на регулярных октальных деревьях. Полученные для них оценки сложности в среднем обобщают и существенно улучшают известные результаты, а выработанные рекомендации создают предпосылки к широкому практическому применению методов декомпозиции для индексации, поиска и анализа больших пространственных данных. В заключении подводятся итоги проведенного исследования.
2. Пространственная декомпозиция на основе октальных деревьев
Начнем с анализа классического метода пространственной декомпозиции, основанного на регулярных октальных деревьях. В трехмерном случае параллелепипед, пространственно ограничивающий весь набор данных (или в англоязычной литературе ААВВ — Axis Aligned Bounding Box), разбивается на восемь равных частей плоскостями, перпендикулярными каждой из координатных осей. Процесс рекурсивно применяется до тех пор, пока количество элементов данных в каждом вновь образованном октанте не окажется ниже некоторого предустановленного порога т > 1. С результирующим пространственным разбиением ассоциируется соответствующее дерево. Корень дерева соответствует исходному параллелепипеду, содержащему в себе весь набор данных, а вершины — вложенным октантам, группирующим данные на разных иерархических уровнях пространственной декомпозиции. Пример декомпозиции и полученного октального дерева приведен на рис. 1.
Рисунок 1. Пример пространственной декомпозиции и соответствующего ей
октального дерева.
Заметим, что способ ассоциирования элементов данных с вершинами октального дерева, в конечном счете, определяется способом их дальнейшей локализации и поэтому зависит от их пространственной семантики. Точечные данные могут быть непосредственно ассоциированы с листовыми октантами. Однако геометрические объекты с протяженными границами могут занимать определенный объем исходного параллелепипеда. Поэтому более рациональным представляется их ассоциирование с теми октантами, в которых они могут быть размещены полностью [4]. Для такого способа есть и иные причины, связанные с возможным пересечением секущими плоскостями даже небольших объектов и невозможностью установить простое соответствие между ними и листовыми октантами.
Рассмотрим псевдокод алгоритма построения октального дерева, приведенный ниже:
FUNCTION BUILD_OCTREE(box, objects, m)
BOX box
OBJECT COLLECTION objects
INTEGER m
RETURNS POINTER NODE root_octant
rootoctant = new NODE(box);
FOR EACH (POINTER OBJECT о IN objects) INSERT(o, root octant)
PROCEDURE INSERT(object,octant)
POINTER OBJECT object POINTER NODE octant
POINTER NODE child = LOCALIZE(object, octant) IF(child)
RETURN INSERT(object,child)
ELSE
ADD(object,GET_OBJECTS(octant))
IF (C ANSPLIT (octant))
SPLIT(octant)
PROCEDURE SPLIT(octant)
POINTER NODE octant
DECOMPOSE(octant)
FOR_EACH(OBJECT POINTER object IN GET OBJECTS(octant))
{
POINTER NODE child = LOCALIZE(object,octant) if(child)
{
ERASE(object,GET_OBJECTS(octant))
INSERT(object, child)
}
}
Алгоритм 1. Построение регулярного октального дерева.
Функция BUILD OCTREE принимает в качестве входных параметров ограничивающий параллелепипед box, множество объектов (элементов данных с пространственной семантикой) objects, а также параметр заполнения вершин октального дерева т. Возвращаемое значение — указатель на корень развернутого октального дерева. Для построения используется вспомогательная процедура INSERT, которая выполняет вставку
заданного объекта object 6 objects в октальное дерево, начиная с заданного родительского октанта octant. Остановимся на этой процедуре более подробно. В псевдокоде процедуры используется вспомогательная функция LOCALIZE, которая определяет, в каком из дочерних октантов может быть полностью размещен объект. Если исходный октант является листовым или объект не локализуется ни в одном из дочерних октантов, функция возвращает нулевое значение. При успешной локализации процедура вставки рекурсивно повторяется. В противном случае, посредством процедуры ADD, объект приписывается исходному октанту (более точно, коллекции объектов, получаемой при помощи вспомогательной функции GETOBJECTS). Функция CANSPLIT проверяет условие наполнения октанта и целесообразность его разбиения, которое реализуется при помощи процедуры SPLIT. При вызове процедуры DECOMPOSE создается восемь дочерних октантов и
предпринимается попытка перераспределить по ним объекты родительского октанта. Перенос объектов в дочерние октанты осуществляется посредством процедур INSERT и ERASE.
Определение. Октальное дерево, построенное на основе рассмотренного алгоритма 1 с порогом наполнения октантов гп, назовем регулярным и обозначим Octree(ni).
Регулярное октальное дерево может использоваться для решения различного рода вычислительных задач, связанных с поиском и анализом
пространственно-временных данных. Естественно, что затраты на
развертывание дерева должны сполна компенсироваться более быстрым решением целевых задач. Оценим затраты на построение октального дерева. Заметим, что подобные оценки могут существенно зависеть от специфики прикладных данных и анализ наихудшего случая, как правило, приводит к довольно пессимистическим результатам, не отражающим реальные показатели производительности для большинства приложений. Поэтому получим оценки сложности в среднем на основе вероятностного анализа некоторого упрощенного набора данных.
Для этого рассмотрим набор данных, связанный с визуальным анализом пространственно-трехмерных сцен и допускающий содержательную параметризацию. Пусть сцена представляется набором п трехмерных геометрических объектов, равномерно расположенных внутри единичного куба. Ограничивающим объемом каждого объекта является куб с характерным размером сторон 0 < I < 1. В рамках подобной постановки x,y,z-координаты центров являются независимыми равномерно распределенными величинами на соответствующих отрезках [1,1 — /]. Для обсуждаемых задач анализа сцен будет применяться единая техника пространственной локализации объектов на основе их ограничивающих объемов, поэтому в дальнейшем мы не делаем никаких различий между понятиями геометрического объекта и его ограничивающего параллелепипеда. Рисунок 2а иллюстрирует область возможного расположения центров объектов внутри объема всей сцены. При
п13
этом величина р(п,1) =------------ определяет эффективную пространственную
1^1 I)
плотность данных.
Рисунок 2. а) Область возможного расположения центров объектов внутри ограничивающего объема набора данных, б) Область возможного расположения центров объектов, локализуемых в октантах следующего уровня.
Определение. Набор п кубов назовем модельным и обозначим как S(n, i). если они равномерно распределены в единичном кубе, а их ребра ориентированы вдоль главных координатных осей и имеют относительный размер 0 < I <-.
Заметим, что при относительном размере объектов I > - октальная структура вырождается, поскольку все объекты локализуются в самом верхнем октанте
при глубине дерева h = 1. Поэтому при дальнейшем рассмотрении мы
1
ограничимся содержательным случаем I < -. Исследуем свойства регулярных октальных деревьев, развернутых для модельного набора данных. Для этого сформулируем и докажем несколько вспомогательных утверждений.
Лемма 1. Пусть регулярное октальное дерево глубиной h < llog2ll
построено для модельного набора S(n, Г). Тогда математическое ожидание числа объектов в октантах і-то уровня и ниже (!</</?) есть
Доказательство:
Прежде всего, заметим, что глубина регулярного октального дерева всегда
могут быть локализованы в октантах размера равного или меньшего, чем I. Поэтому анализу подлежат лишь допустимые уровни локализации объектов
Далее, уточним область трехмерного пространства, где могут располагаться центры объектов, приписанных октантам разных уровней. На рисунке 2а темным цветом выделена область возможного расположения центров объектов в октанте верхнего уровня, поскольку они не могут находиться к
построению дерева объект приписывается родительскому октанту, если он пересекается одной из секущих плоскостей. В противном случае предпринимается попытка локализовать его в одном из дочерних октантов следующего уровня. На рисунке 16 темным цветом показана одна из таких областей в октантах второго уровня. Чтобы оценить число объектов, локализуемых на втором уровне дерева или ниже, воспользуемся предположением об их равномерном пространственном распределении и геометрической интерпретацией вероятности.
Вероятность того, что объект не будет пересечен секущими верхнего октанта и, следовательно, будет локализован на втором уровне дерева или ниже, равна
В знаменателе выражения — объем области допустимого расположения центров объектов в октанте первого уровня, в числителе — суммарный объем областей возможного расположения центров объектов, локализуемых в восьми дочерних октантах. Рассуждая аналогично для оставшихся уровней, получим вероятность того, что объект не будет пересечен секущими г-го октанта и будет локализован на следующих уровнях дерева
71,- = 71
(1 — 2¿“1Z)3
(1 - О3
ограничена величиной [log2il’ поскольку объекты модельного набора не
1 < і <
граням ограничивающего параллелепипеда ближе, чем на расстоянии -. По
п а-2*)3 2 (і-/)3
_Ф~2‘)3 _ (1-2‘іу
4+1 —
(¿1-0= (1-2“1,)3
Тогда математическое ожидание числа объектов, локализованных в октантах /-го уровня и ниже (!</</?) вьфажается как
или
(1 — 2/)3 (1 — 4/)3 (1 — 8/)3 (1 — 2^-хг)3
(I-/)3 (1-2/)3 (1-4О3 (1-21~ЧУ
(1 - 2¿-1Z)3
п-
(1-1У
Что и требовалось доказать.
Лемма 2. Пусть регулярное октальное дерево глубиной h < |log2 yj
построено для модельного набора S(n,l), тогда математическое ожидание числа объектов в октанте i-то уровня есть
( (1-?-ЧУ-(1-2ЧУ
п-------8¿-1(l — ¿)3-----л^1<к
(1 — 2¿-1Z)3 n8¿-1(l-/)3’í ~k
Ni = {
Доказательство:
Лемма 1 определяет ожидаемое число объектов в октантах /-го уровня и ниже как щ, а ожидаемое число объектов в октантах і 1-го уровня и ниже как п1+1. Поскольку на г-ом уровне дерева имеется 81-1 октантов, то математическое ожидание числа объектов в одном таком октанте определяется выражением
1 -(1-2Ч)3
N. = дРгСп, - пм) = п------------8,--1(1_0з--------
Вьфажение справедливо для всех октантов уровней !</</? . Для определения ожидаемого числа объектов в листовых октантах воспользуемся непосредственно леммой 2. Тогда для октантов уровня і = /? имеем
(1 -2і-1/)3 Мі ~ П 8І_1(1 — /)3
Что и требовалось доказать.
На основе доказанных лемм удается оценить глубину регулярного октального дерева. Имеет место следующая теорема.
Теорема 1. Ожидаемая глубина регулярного октального дерева Octree (т), построенного для модельного набора данных S(n,l) с плотностью пространственного заполнения р(п, Г), определяется следующим выражением:
h = <
log2'
т > р(п, I)
1
log* у
т < р(п, I)
Доказательство:
Согласно алгоритму построения регулярного октального дерева его глубина ограничивается следующими факторами:
— размер листового октанта должен быть строго больше габаритов объекта I, чтобы объект мог быть размещен в нем целиком;
— разбиение октантов возможно лишь при их достаточном наполнении, превышающем заданный порог т.
Чтобы процедура разбиения могла быть применена к октантам /-го уровня в соответствии с леммой 2, должны выполняться следующие условия:
1 > 21
71-
2*-1 (1 - 2i~1l)3 81-\1 -I)3
> т
В листовых октантах, по крайней мере, одно из приведенных условий не выполняется. Невыполнение первого условия приводит к неравенству <
21 , а в комбинации с ранее полученной оценкой к < |log2y], имеем для
глубины дерева строгое равенство Л, = у|.
Рассмотрим более подробно второе условие. Условия разбиения должны выполняться в октантах предпоследнего уровня и не должны выполняться в листовых октантах с ожидаемым числом объектов, не превышающим заданный порог т. Следовательно, имеют место следующие неравенства:
(1-2п~11)3 (1-2 п~21)3
71
8ft-4l-03
< 7П < 71
8ft-2(l — Z)3
Их согласованный анализ приводит к следующей оценке глубины дерева:
/ь =
ІоЯг'
>+а-іф
Поскольку рост дерева прекращается, когда нарушается одно из условий разбиения октантов, то ожидаемая глубина регулярного октального дерева будет определяться минимальным из найденных значений И = шт(й1( /?2). Сравнив найденные значения, получим соотношение параметров, при котором глубина определяется первым фактором. В самом деле, из условия /?, < /?2
следуют соотношения log2 ■----—
1 і ^ ґ* т\3 т - n¿3
, : < 1ой? - , I < (1 - 0 - , ГП > --------т
,з|т ¿ ’ у ЛІ п ’ (1-і)3
ИЛИ
г+(1_г) л|п
т > р(п,Г) с учетом определения эффективной пространственной плотности
№1, ш > р(п, I)
данных. Тем самым, имеет место /?
= [Й1’ к.
2, Ш < р(п, /)
и теорема доказана.
3. Теоретический анализ сложности метода декомпозиции
Итак, проанализируем вычислительные затраты на развертывание регулярного октального дерева, а также на выполнение запросов, связанных с выборкой объектов по заданной пространственной области и определением столкновений.
Как отмечалось, асимптотические оценки сложности, а также оценки сложности в наихудшем случае не отражают реальную эффективность метода декомпозиции для многих важных классов приложений. Поэтому воспользуемся описанным модельным набором данных и получим оценку сложности на основе проведенного вероятностного анализа и полученных результатов о свойствах октальных деревьев. Существенной стороной проводимого анализа является попытка получить оценки не в асимптотическом приближении, а на всем диапазоне изменения размерности и других параметров задачи. При анализе сложности будем учитывать только две, наиболее часто используемые вычислительные операции, а именно: определение принадлежности объекта одному из дочерних октантов с условной стоимостью Сь и определение факта пересечения двух объектов со стоимостью С/ в том же самом предположении, что объекты геометрически представляются своими ограничивающими параллелепипедами. Затраты на конструирование новых октантов в структуре дерева, а также затраты на вставку и удаление ассоциированных объектов исключаются из рассмотрения. На самом деле эти операции всегда применяются в контексте основных вычислительных операций и поэтому неявно могут учитываться уже введенными константами.
3.1 Анализ стоимости развертывания регулярного октального дерева
Имеет место следующая лемма.
Лемма 3. Средняя стоимость развертывания регулярного октального дерева глубиной /г для модельного набора данных 5 (п, I) есть
(¿аерюу = 5б(^ /)3 (56/1 - 56 + 168/ - 84 • 2Ч - 56/2 + 14 • 22П12 + 8/3 — 2зп13)
Доказательство:
По лемме 1 математическое ожидание числа объектов в октантах /-го уровня и ниже (1 < I < /г ) есть
(1-2^1/)3 Щ ~П (I-/)3
Именно столько объектов необходимо проанализировать для того, чтобы принять решение об их локализации на уровне ¿. Анализу не подлежат объекты, приписанные листовым октантам, поскольку необходимость их перераспределения в дочерних октантах отсутствует. Исходя из этих рассуждений, стоимость построения октального дерева определяется суммой затрат на локализацию объектов на уровнях 1,2, ...,/1 — 1 и определяется следующей формулой:
Л-1 ■ 1 й-1
^(1 - 21 х/)3 СЬП V1 ,_1 ,
_^ьП (I-/)3 =(1-/)3Х(1_2
= (56/1 - 56 + 168/ - 84 • 2п1 - 56/2
56(1 - /)3 4 + 14 • 22Ч2 + 8/3 - 23?1/3)
Лемма доказана.
Необходимо отметить, что в случае точечных данных (I = 0) стоимость построения октального дерева определяется выражением (2аер1оу = Сьп{к — 1), что соответствует случаю полной локализации данных в листовых октантах и хорошо согласуется с известными результатами [5]. Заметим, что в силу леммы 1 количество объектов, подлежащих локализации, монотонно уменьшается с каждым уровнем и поэтому затраты на построение дерева всегда могут быть оценены как ()аер1оу 5= Сьп(1г — 1) с учетом выражения для ожидаемой глубины дерева, основанного на результатах теоремы 1.
200000
400000
300000
100000
0.1
0.2
0.3
0.4
0.5
0.1
0.2
0.3
0.4
0.5
в
г
Рисунок 3. Зависимость стоимости развертывания дерева от габаритов объектов при разных соотношениях п и т. а)п = 1000, т = 10 б)п = 1000, т = 50 в)п = 100000, т = 10 г)п = 100000, т = 50
На рисунке 3 показаны кривые сложности развертывания октального дерева от габаритов объектов при разном соотношении общего числа объектов и порога наполненности октантов. Верхние кривые соответствуют приведенной приближенной оценке, нижние — воспроизводят функцию стоимости, полученную точно в предположениях леммы 3. Построенные графики показывают, что приближенная оценка отражает общий характер исследуемых зависимостей и отличается от функции стоимости на всем интервале изменения параметров не более, чем в два раза. Это дает основания применять ее на практике.
Теорема 2. Для модельного набора данных 5(п, Г) регулярное октальное дерево Octree{m) может быть построено в среднем за Qdepioy = CLq(n,m, I) • п, причем коэффициент q(n, т, Г) удовлетворяет следующим соотношениям:
q(n,m, I) = ^log2 п — ^log2 т при I = 0,
q(n, m, I) < log2 - при I > 0
Доказательство:
Рассмотрим случай 1 = 0. По лемме 3
(¿аерюу = 5б(^ /)3 (56Л - 56 + 168/ - 84 • 2Ч - 56/2 + 14 • 22П12 + 8/3 — 2зп13)
Подставляя I = 0, получим
Qdeploy 1)
По теореме 1, при I = 0 выполняется следующее равенство:
h =
log2‘
/ + (1-0$
2
log2
з т
л/ п
з П
l0g4m + 1
-\og2n--\og2m
+ 1
Следовательно,
-l°g2n--log2m
n
Первая часть теоремы доказана.
Рассмотрим случай I > 0. Как было показано выше, имеет место общая оценка сложности развертывания дерева Qdeploy ^ CLn(h — 1). По теореме 1 глубина
2
дерева всегда может быть ограничена как h < log2 -. Следовательно, Qdeploy — CL log2 у • n и теорема доказана.
Теорема 2 имеет важные следствия, связанные с разным асимптотическим ростом сложности развертывания октального дерева для точечных и протяженных данных. Для первых (I = 0) сложность оценивается как 0(nlog2n), а для вторых (I > 0) — как 0(п). На рисунке 4 приведены графики сложности построения октального дерева от количества объектов в модельном наборе п при разных значениях порога наполненности октантов т, построенные на основе результатов леммы 3 для точечных (верхние кривые) и протяженных объектов (нижние кривые).
£?с1ф1оу
О;
£?с1фЬу
О;
Рисунок 4. Зависимость стоимости построения октального дерева от количества объектов при различных габаритах объектов и параметра заполнения листовых октантов, а) т = 10,1 = 0,0.001,0.1 б) т = 100,1 = 0,0.01,0.1
Примечательно, что в исследуемом диапазоне размерности задачи (до ста тысяч объектов) все кривые выглядят схожим образом, несмотря на наличие логарифмического фактора в асимптотической оценке сложности для точечных объектов. Согласно приведенным графикам сложность построения дерева для протяженных объектов несколько ниже, чем для точечных данных. Это объясняется тем обстоятельством, что при одинаковом общем количестве протяженные объекты локализуются на более высоких уровнях октального дерева и не возникает необходимости в его дальнейшем развертывании.
3.2 Анализ сложности определения столкновений
Перейдем к оценкам затрат на выполнение типовых запросов, связанных с поиском столкновений объектов в пространственно-трехмерных сценах. Как 144
правило, точное пересечение двух геометрических объектов сложной формы требует большого объема вычислений. Поэтому более эффективной стратегией является предварительная локализация потенциальных столкновений с помощью простых тестов, основанных на сепарации пространства и пересечении ограничивающих объемов [6]. Точная процедура определения столкновений применяется лишь в случае положительного вердикта, что происходит в приложениях относительно редко и, как результат, существенно уменьшает общее время поиска столкновений. Эффект особенно ощутим для сцен, объекты которых геометрически представлены сложными аналитическими кривыми, поверхностями или полиэдрами с большим числом граней [7, 8].
Обсудим алгоритмические варианты использования октального дерева для локализации столкновений в сценах и получим оценки сложности в предположении, что сцена представлена модельным набором данных S(n,l). Предположим, что октальное дерево развернуто и предстоит выявить все пары объектов, допускающие столкновения. В наивном алгоритме пришлось бы попарно пересечь все ограничивающие объемы объектов, что привело бы к затратам-CIп(п — 1). Однако октальное дерево позволяет сделать это гораздо эффективнее с применением следующего алгоритма.
PROCEDURE CLASH (octant, result)
POINTER NODE octant
POINTER OBJECT PAIR COLLECTION result FOR_EACH(OBJECT objectl IN OBJECTS(octant))
{
FOR_EACH(OBJECT object2 != objectl IN OBJECTS(octant)) IF(IS_INTERSECTING(objectl,object2))
IN SERTRESULT (result, PAIR(objectl,
object2))
FOR_EACH(NODE child IN CHILDREN(octant)) CLASHCHILDREN(child, objectl, result)
}
FOR_EACH(NODE child IN CHILDREN(octant))
CLASH(child, result)
PROCEDURE CLASHCHILDREN(octant, object, result)
POINTER NODE octant
POINTER OBJECT object
POINTER OBJECT PAIR COLLECTION result
IF (!IS_INTERSECTING(octant,object))
RETURN
FOR_EACH(OBJECT о IN OBJECTS (octant)) IF(IS_INTERSECTING(object, o))
INSERTRESULT(PAIR(object, o), result)
FOR_EACH(NODE child IN CHILDREN(octant)) CLASHCHILDREN(child, object, result)
Алгоритм 2. Поиск столкновений при помощи регулярного октального дерева. Процедура CLASH принимает в качестве параметра указатель на текущий октант, а также указатель на коллекцию результатов, каждый из которых представлен в виде пары объектов, имеющих потенциальную коллизию. В теле этой процедуры происходит поиск коллизий среди объектов, принадлежащих текущему октанту, а затем проверяются пересечения этих объектов с объектами, принадлежащими дочерним октантам при помощи вспомогательной процедуры CLASHCHILDREN, принимающей в качестве параметра объект и, посредствам поиска в глубину, ищущей все объекты, имеющие пересечения с данным. Затем процедура CLASH рекурсивно повторяется для всех дочерних октантов текущего октанта.
Перейдем к оценкам сложности для описанного алгоритма.
Лемма 4. Пусть регулярное октальное дерево Octree(m) глубиной h развернуто для модельной сцены S(n, Г). Тогда столкновения объектов в ней могут быть локализованы за Qciash в соответствии со следующей оценкой:
Qclasn ~ 2 • 8^(1 — /)б (8 + К357 ' 1643 ~ 28 ' 3244 + 6445
- 128(3 - 3/ + /2) + 56 • 2h(3 + 8/(3 - 3/ + /2))
- 42 • 4Л/(23 + 16/(3 - 3/ + /2)) + 8ft/(114
+ 1970/ - 1483/2 + 106/3 + 105/4)) + 14/i(45 + 8/(3 — 3/ + /2))))))
Анализ совпадений точечных данных (I = 0) в сцене может быть проведен за
Доказательство:
Описанный выше алгоритм 2 предполагает последовательный обход октантов всех уровней, начиная с самого верхнего. При обходе очередного октанта сначала анализируются возможные парные столкновения объектов внутри
него. Для каждой ячейки это потребует - — 1) < ^ . Затем
анализируются возможные столкновения внутренних объектов
рассматриваемого октанта с объектами, приписанными дочерним октантам.
Заметим, что каждый внутренний объект пересекается не более, чем с восемью дочерними октантами на каждом следующем уровне октального дерева, поэтому затраты ограничиваются выражением £у=1+1 пг Такая оценка априори не более чем в четыре раза превышает вычислительную сложность операции, поскольку в лучшем случае внутренний объект пересекается с двумя дочерними октантами. Таким образом, получаем следующую оценку стоимости локализации столкновений:
ЯсШзП < ^ С/84 Ч ( у + 8 ^ п7 ¿=1 \ у=1+1
По лемме 2
П;
п
(1-21~Ч) -(1-2Ну
8г—1 (1 — /)3 (1 - 2п~Ч)3 8к-Н1 ~ О3
, I = 1.. Л. — 1
п
Подставляя и выполнив суммирование рядов, получим требуемое вьфажение для общей оценки. Как и следовало ожидать, сложность локализации столкновений в общем случае пропорциональна квадрату числа объектов. Особый случай составляют точечные объекты (7 = 0), для которых
С/и2 т-г
полученное вьфажение принимает вид 8^_1. По построению регулярного октального дерева для точечных объектов выполняется соотношение < т
С171771
и, следовательно, имеет место оценка ^—. Что и требовалось
доказать.
Важным следствием леммы является линейная сложность определения совпадений точечных данных с использованием регулярного октального дерева. Оценим эффект применения октального дерева для поиска столкновений протяженных объектов. На рисунке 5 представлены графики функции стоимости определения столкновений в модельном наборе данных в зависимости от относительных габаритов объектов. Графики построены на основе общей оценки леммы 4, а для наглядности значения стоимости отнесены к пессимистической оценке наивного поиска столкновений ^С,п(п- 1).
га
м 1 _к
0.01 0.02 0.03 0.04 0.05
а б
Рисунок 5. Графики приведенной стоимости определения столкновений в модельном наборе данных в зависимости от габаритов объектов а) характер функции стоимости на всем диапазоне изменения габаритов объектов б) характер функции стоимости при относительно небольших габаритах объектов.
На графиках видно, что при больших габаритах объектов функция стоимости асимптотически стремится к пессимистической оценке. Для относительно небольших объектов стоимость поиска столкновений существенно ниже, однако быстро нарастает по мере увеличения габаритов объектов и пространственного заполнения сцены.
Проанализируем качественно, как стоимость поиска столкновений зависит от числа объектов и их размеров. На рисунках 6а и 66 приведены графики, иллюстрирующие характер зависимости при разных значениях порога наполнения октантов гп = 10игп = 100 и вариации габаритов объектов I = 0 , I = 0.001 и I = 0.003. Видно, что сложность возрастает с увеличением числа объектов и их размеров. Нижние прямые на графиках соответствуют 148
точечным данным, а средние и верхние кривые — протяженным объектам соответствующих размеров. Хотя анализ совпадений точечных данных имеет линейную сложность, а поиск столкновений протяженных объектов — квадратичную, для разреженных сцен различия оказываются не столь существенным даже для значительного числа объектов, составляющего на приведенных графиках 100000. Это обстоятельство оказывается чрезвычайно важным для применения обсуждаемых алгоритмов в индустриальных приложениях, оперирующими большими данными и подверженным быстрой деградации производительности даже при использовании алгоритмов невысокой полиномиальной сложности. Согласно приведенным графикам параметр наполнения октантов также влияет на стоимость поиска столкновений, однако принципиально не меняет характер исследуемых зависимостей.
С?сМ1
С1
С1
а б
Рисунок 6. График стоимости локализации столкновений в зависимости от количества объектов при различных значениях габаритов (1 = 0, I = 0.001, I = 0.003) а) при пороге наполнения октантов т = 10 б) при пороге наполнения октантов
т = 100.
Таким образом, эффект использования регулярных октальных деревьев для быстрого поиска столкновений является значительным. Естественным является вопрос, в какой степени окупаются затраты на развертывание самих деревьев. Для этого построим семейство графиков для функции относительной сложности определения столкновений, приведенной к затратам на развертывание дерева. Построенные графики представлены на рисунке 7 и соответствуют значениям габаритов объектов I = О, I = 0.001, I = 0.01 и I = 0.03 при значении порога наполнения октантов т = 10. На графике 7а, соответствующем точечным данным, видно, что затраты на развертывание октального дерева приблизительно соотносятся с затратами на анализ совпадений, а с учетом достигнутого эффекта в производительности всегда окупятся. Различия еще более ощутимы для сцен с протяженными объектами. Затраты на построение дерева становятся пренебрежительно малы по отношению к затратам на определение столкновений. Однако следует иметь в виду, что и эффект от использования октальных деревьев существенно падает с заполнением сцены и необходимостью применения наивного алгоритма для пересечения всех пар объектов в октантах верхних уровней.
СЬ 6с1а8Ь С1 бсфоу
С1 бсфоу
С1 6сЫ| С1 С?4рЬу
С1 бЛрЬу
в г
Рисунок 7. График стоимости определения столкновений относительно затрат на развертывание рег\>лярно октапъного дерева при различных габаритах объектов ' а)1 = 0 6)1 = 0.001 в)1 = 0.01 г)1 = 0.03
Важным представляется вопрос о выборе порогового значения наполнения октантов гп, обеспечивающего минимальные затраты на определение столкновений. Уменьшение порога приводит к неизбежному перераспределению объектов в листовых октантах следующего уровня дерева. С одной стороны, это приводит к более высокой фрагментации объектов и уменьшению затрат на определение столкновений внутри отдельных листовых октантов. С другой стороны, с увеличением глубины дерева возрастают расходы на анализ столкновений объектов, локализованных на верхних уровнях дерева, с объектами, перераспределенными в листьях. Однако проведенный анализ показывает, что второй фактор не является доминирующим и выбор минимального порога всегда приводит к уменьшению затрат на определение столкновений. На рисунке 8 представлено семейство графиков для функции затрат в зависимости от порога наполнения т. Графики построены для разных сочетаний числа объектов и их
относительных габаритов. Как следует из анализа графиков, выбор т = 10 является вполне оправданным для всех проанализированных вариантов. Данное значение всегда обеспечивает низкие затраты на определение столкновений. В тоже время, он исключает излишне детальную декомпозицию пространства и неизбежные расходы по памяти на хранение более глубокого представления октального дерева. Действительно, с каждым новым уровнем дерева количество октантов увеличивается в восемь раз, что приводит к быстрому исчерпанию объема доступной памяти приложениями.
бсЫЬ
С1
150000
100000
всЬзЬ.
С1
300000
20
40
60
100
SO ООО 60000 40000 20000
ôdaîh
Cl
600 000 ; 500000
400000 ; 300000 ; 200000 ; 100000 -
É?cLaih
Cl
i:xюб ■
1.0 xlO6 -SOOOOO —' 600000 -400000 -200000 -
20 40 60 SO
SzliEh
Cl
З.Эх 106 :.5x io6 :.0x io6 1.5 X 1E>6 l.Ox 1E>6 500000
20 40 60 80 100
à e
Рисунок 8. График функции затрат на определение столкновении в зависимости от порога наполнения октантов при различных параметрах модельной сцены а) п = 5000,1 = 0б)п = 5000,1 = 0.01 в) п = 10000,1 = 0 г) п = 10000,1 = 0.01 д) п = 5000,1 = 0.03 е)п= 10000,1 = 0.03
3.3 Анализ сложности выборки объектов по заданной области
Перейдем к оценкам затрат на выборку объектов, принадлежащих заданной пространственной области или имеющих непустое пересечение с ней. Для определенности будем считать, что область представляет собой куб с относительным размером ребер L. приведенным к габаритам ограничивающего параллелепипеда всего набора данных. Ниже приведен псевдокод алгоритма выборки.
PROCEDURE CLIP (octant, box, resuit)
POINTER NODE octant BOX box
—1<- ai 100
POINTER OBJECT COLLECTION R
IF (!IS_INTERSECTING(octant,box))
RETURN
FOR_EACH(OBJECT о IN OBJECTS(octant))
{
IF (I SINTERSECTING(o, box))
ADD (o, result)
}
FOR_EACH(NODE child IN CHILDREN(octant))
CLIP(child, box, result)
Алгоритм 3. Выборка объектов no заданной области на основе регулярного
В теле процедуры СЫР октальное дерево обходится с самого верхнего уровня и октанты подвергаются рекурсивной проверке на пересечение с областью выборки. В случае положительного вердикта аналогичной проверке подвергаются все объекты, приписанные к текущему октанту, а также все дочерние октанты, в случае отрицательного вердикта — поиск в глубину текущего октанта прекращается. Объекты, приписанные октантам с ненулевым пересечением области выборки, группируются и формируют окончательный результат.
Определим характерный уровень локализации области выборки как Н =
Лемма 5. Пусть регулярное октальное дерево глубиной И развернуто для модельной сцены S(n,l). Тогда выборка объектов по области с уровнем локализации Н может быть проведена в среднем за QciíP в соответствии со следующей оценкой:
октального дерева.
ґ
С¡71
64 - 224 • 2hl + 336 • 4Н2 + 8ft(llZ - 81Z2 + (113 - 56/i)Z3)
<
C¡n
8h(l - I)3 +8C,(h — 1), h < H 64 - 224 • 2Hl + 336 • 4Hl2 + 8Я(111 - 8112 + (113 - 56Я)/3)
8Я(1 — Z)3
Qh-H+2 + 56H _ 120
+Ci
7
,h> H
V
Доказательство:
В соответствии с приведенным алгоритмом вначале определяются октанты, принадлежащие области выборки, а затем выбираются объекты, имеющие ненулевое пересечение с ней. Заметим, что на первом уровне необходимо проанализировать лишь один октант и все приписанные ему объекты. На каждом следующем уровне I = 2 ...Н вплоть до уровня локализации области анализу подлежит не менее одного и не более восьми октантов. На оставшихся уровнях I = Н + 1... И. достаточно проанализировать не более 81-и+1 октантов. С учетом математического ожидания числа объектов щ на каждом /-уровне дерева вычислительная сложность выборки может быть оценена как
я П
п1 + 8 У (Щ + 1) +
и и -1
н
<2с11р
с,
I
<
Я+1
(щ + 1) ,Л > Я
Отметим, что такая оценка не более чем в 8 раз превосходит минимальные затраты на выполнение выборки. Используя результаты леммы 2 для математического ожидания числа объектов щ и проводя суммирование рядов, имеем при й < Н
<2сИр
< Сгп
64 - 224 • 24 + 336 • 4п12 + 8п(111 - 8112 + (113 - 56Л)/3)
841-О3
+ 8С1{1г - 1)
В противоположном случае й > Н имеем оценку <2сИр
64 - 224 • 2Н1 + 336 • 4н12 + 8Я(111
< С/П-
81/2 + (113 - 56Я)/3)
8Я(1 — /)3
+ С,
Qh—H+2 + 56Я _ 120
Что и требовалось доказать.
Заметим, что при Н = к полученные выражения полностью совпадают. Первые слагаемые в обеих оценках выражают затраты на поиск объектов, принадлежащих области выборки или пересекающие ее, вторые — затраты на
предварительную локализацию октантов, в которых такие объекты могут быть найдены. Полученные результаты согласуются с ранее полученными оценками для точечных данных [9].
На рисунке 9 представлены семейства графиков, иллюстрирующие зависимость стоимости выборки объектов от габаритов объектов и размера области выборки. Как видно, стоимость выборки растет с увеличением размера области выборки и при Ь > - использование октального дерева теряет
4
всякий смысл. При меньших размерах применение октального дерева вполне оправданно, однако рост габаритов объектов может нивелировать суммарный эффект.
1.0
1.0
1.0
в д
Рисунок 9. Графики стоимости выборки от габаритов объектов и размера области выборки а) п = 5000, т = 5 б) п = 10000, т = 5 в) п = 5000, т = 10 г) п =
10000, т = 10
Обсудим вопрос о разумном выборе порога наполнения октантов. Для этого построим соответствующие графики зависимости стоимости выборки от порога наполнения и размеров области выборки. Семейства графиков на рисунке 10 воспроизводят эти зависимости при разных параметрах модельной сцены, а именно: при вариации числа объектов и их размеров. Как видно из этих графиков, затраты на выполнение выборки возрастают с ростом габаритов области выборки. Вместе с тем, зависимость от порога наполнения октантов носит более сложный характер. Так, при больших габаритах области выборки (Ь > —) выгодны большие значения порога заполнения, поскольку в
этом случае в стоимости выборки превалирует компонент, связанный с предварительной локализацией октантов, в которых могут содержаться интересующие нас объекты. С другой стороны, при малых габаритах области выборки (Ь < —), наибольшее влияние оказывает слагаемое соответствующее затратам на поиск объектов, которые, в свою очередь, пропорциональны значению т.
В исследуемом диапазоне изменения параметров сцены выбор т = 50 является вполне приемлемым, поскольку минимизирует затраты на исполнение типовых запросов выборки и при этом не приводит к избыточному расходованию памяти на развертывание глубоких октальных деревьев.
Тем не менее, выбор порога наполнения в общем случае является нетривиальным. Во-первых, рассмотренный модельный набор данных лишь эмулирует упрощенную постановку задачи, связанной с моделированием пространственно-трехмерных сцен. В реальных приложениях сцены могут содержать объекты, которые имеют существенно различные габариты и неравномерно распределены по пространству. Полученные строгие оценки применимы лишь к модельному набору данных, однако правомерность их использования для произвольных сцен, видимо, должна подкрепляться вычислительными экспериментами. Тем не менее, по мере приближения к модельному случаю, мы можем рассчитывать и на адекватность полученных теоретических результатов. Во-вторых, неопределенность с выбором порога наполнения усугубляется тем обстоятельством, что приложения могут консолидировать многие функции одновременно, а их эффективная реализация может предполагать использование совершенно разных значений порога, как в рассмотренных задачах локализации столкновений и выборки по области. В этих случаях, видимо, следует руководствоваться частотой применения отдельных функций и выбора порога, обеспечивающего их равномерно высокую эффективность.
в
г
д
е
Ж 3
Рисунок 10. Графики зависимости стоимости выборки от размеров области и порога наполнения октантов при разных параметрах модельной сцены, а) п = 5000,1 = 0 б)п = 10000,1 = 0в)п = 20000,1 = 0г)п = 40000,1 = 0 д) п = 5000,1 = 0.01 е) п = 10000,1 = 0.01 ж)п = 20000,1 = 0.01 з) п = 40000,1 = 0.01
4. Заключение
Таким образом, рассмотрено важное семейство методов декомпозиции, основанное на регулярных октальных деревьях и обеспечивающее эффективную индексацию, быстрый поиск и анализ больших пространственных данных. Для алгоритмов определения столкновений и выборки объектов по заданной области получены оценки сложности в среднем, которые улучшают известные пессимистические результаты и служат теоретическим обоснованием их применения к более широкому классу приложений. В частности, обсуждены возможности применения рассмотренных алгоритмов к приложениям моделирования сложных пространственно-трехмерных сцен с объектами, имеющими протяженные границы. Существенной стороной проведенного исследования является
163
попытка определить границы применимости методов декомпозиции, а также выработать практические рекомендации по использованию конкретных алгоритмов в широком диапазоне изменения характеристик пространственных данных.
Список литературы
[1]. М. Cai., P. Revesz, Parametric rectangles: an index structure for moving objects, в Proceedings of the 10th COMAD International conference on management of data, 2000.
[2]. V. Semenov, K. Kazakov, S. Morozov, O. Tarlapan, V. Zolotov и T. Dengenis, 4D modeling of large industrial projects using spatio-temporal decomposition, в e Work and eBusiness in Architecture, Engineering and Construction, London, UK, pp. 89-95, 2010.
[3]. В. Золотов и В. Семенов, Современные методы поиска и индексации многомерных данных в приложениях моделирования больших динамических сцен, Труды Института системного программирования, (24), pp. 381-416, 2013.
[4]. G. Kedem, The quad-CIF tree: a data structure for hierarchical on-line algorithms, в Proceedings of the 19th Design Automation Conference, pp. 352-357, 1992.
[5]. B. J. Finkel R.A., Quad trees: a data structure for retrieval on composite keys, Acta Informatica, 1(4), pp. 1-9, 1974.
[6]. V. Semenov, K. Kazakov, V. Zolotov, H. Jones и S. Jones, Combined strategy for efficient collision detection in 4D planning applications, в Computing in Civil and Building Engineering, Nottingham, UK, pp. 31-39, 2010.
[7]. S. Gottschalk, М. C. Lin и D. Manocha, OBB Tree: a hierarchical structure for rapid interference detection, в Proceedings of the SIGGRAPH'96 Conference, New Orleans, USA, pp. 171-180, 1996.
[8]. S. Gottschalk, Collision queries using oriented bounding boxes, Chapel Hill: The University of North Carolina, 2000.
[9]. H. Samet, Foundations of Multidimentional and Metric Data Structures, San Francisco: Morgan Kaufmann, 2006.
On application of spatial decomposition method for large data sets indexing.
Zolotov V.A,. Semenov VA.
Annotation. This paper is devoted to the elaboration of spatial indexing methods implemented by means of decomposition technique. Special attention is given to decomposition based on regular octrees, which is known to provide efficient solution for collision detection and spatial query problem and being applicable not only to sets of point data, but also to spatially extended objects. Based on probabilistic analysis, complexity estimations are evaluated for model set of data. They generalize previous results and serve as theoretical background to wide practical application of discussed methods.
Key words: spatial indexing, octrees, computational complexity