Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СКТ - 5,6сем.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
8.67 Mб
Скачать

Задачи регионального поиска. Многомерное двоичное дерево

Задачу регионального поиска на двухмерном случае можно решить используя дихотомию. Всю плоскость можно считать бесконечным прямоугольником, который будет разрезан сначала на две полуплоскости прямой, параллельной одной из осей, скажем оси у. Затем каждая из этих полуплоскостей может разрезаться еще раз прямой, параллельной оси х, и т.д., меняя на каждом шаге направление разрезающей линии. При выборе разрезающей линии следует пользоваться принципом получения приблизительно равного числа элементов по каждую сторону от разреза (т.е. дихотомия). Эта идея является основой метода многомерного двоичного дерева.

Назовем обобщенным прямоугольником такую область на плоскости, которая определена декартовым произведением [x1,x2] [y1,y2] х-интервала [x1,x2] и у-интервала [y1,y2], включая предельные случаи, когда в любой комбинации допускается: x1=–, x2=, y1=–, y2=. Прямоугольниками будем считать даже неограниченные полосы и всю плоскость.

Процесс разбиения множества S путем разрезания плоскости будем сочетать с построением двумерного двоичного дерева Т. С каждым v узлом Т неявно свяжем прямоугольник R(v) (он определен выше) и подмножество S(v)S точек, лежащих внутри R(v). Явно же, т.е. как фактические параметры этой структуры данных, свяжем с v одну избранную точку P(v) из S(v) и секущую прямую L(v), проходящую через P(v) и параллельную одной из координатных осей.

Этот процесс начинается с определения корня Т. С R(корень) соотносится вся плоскость, и полагается, что S(корень)=S. Затем определяется точка pS, такая что x(p) – медиана множества абсцисс точек из S(корень), и полагается, что P(корень)=p, а с L(корень) соотносится прямая с уравнением x=x(p). Точка p разбивает S на два множества приблизительно равной мощности, назначенных потомками корня. Процесс дробления прекращается, когда обнаружен прямоугольник, не содержащий внутри точек, соответствующий ему узел является листом дерева Т.

Это разбиение плоскости моделируется деревом на рис.:

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

Такая структура данных часто называется 2-D-деревом.

Для использования 2-D-дерева в региональном поиске используется алгоритмическая схема метода “разделяй и властвуй”.

Рассмотрим взаимное расположение прямоугольной области R(v), связанной с v узлом Т, и некоего прямоугольного региона D такого, что R(v) и D имеют непустое пересечение. Область R(v) разрезана на два прямоугольника R1 и R2 прямой L(v), проходящей через P(v).

Если DR(v) полностью содержится в Ri (i=1,2), то поиск продолжается с единственной парой типа (область, регион), а именно с (Ri, D) (рис1). Если же область DR(v) разрезана прямой L(v), то L(v) имеет непустое пересечение с D, а значит, D может содержать P(v). Поэтому сначала проверим, находится ли P(v) внутри D, и если да, то поместим эту точку в выбираемое множество; затем продолжим поиск с двумя парами типа (область, регион), а именно с (R1, D) и (R2, D). Этот процесс поиска прекращается при достижении любого листа.

Таким образом, метод дает алгоритм, характеризующийся:

  1. (N) – затраты памяти (по узлу на точку множества)

  2. O(NlogN) – время предобработки (сортировка абсцисс и ординат точек множества)

  3. O( ) – время запроса.

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

Время потрачено в узле v не зря, если точка P(v) выбирается (продуктивный узел), иначе этот узел считается непродуктивным.

Рассмотрим различные типы пересечений D с R(v), когда это пересечение не пусто.

Только тип 4 всегда продуктивен. Все остальные могут оказаться непродуктивными.

Оценка времени прохождения непродуктивных узлов представляет собой оценку худшего случая и равна O( ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]