
- •Геометрический поиск
- •Задача локализации точки
- •Задача локализации точки на планарном подразбиении
- •Представление пплг с помощью реберного списка с двойными связями
- •Техника плоского заметания
- •Методы локализации точки на планарном подразбиении
- •Метод полос
- •Метод цепей
- •Метод детализации триангуляции
- •Триангуляция с ограничениями
- •Алгоритм локализации точки
- •Метод трапеций
- •Реализация алгоритмов
- •Требования к реализации алгоритмов
- •Сравнительное исследование методов локализации
- •Визуализация работы алгоритмов
- •Результаты экспериментальных исследований
- •Анализ затрат времени на предобработку
- •Анализ затрат времени на запрос
- •Заключение
- •Список литературы
Алгоритм локализации точки
Предположим,
что -
вершинный ППЛГ
является триангуляцией, в том случае,
если он не триангуляция, его можно
преобразовать в нее с помощью алгоритма
представленного выше. Кроме того, окружим
триангуляцию треугольной границей,
путем построения охватывающего
треугольника, и триангулирования области
между этими двумя объектами.
Будем
строить последовательность триангуляций
,
где
,
а
получается из
по следующим правилам:
Удалить некоторое множество внутренних несмежных вершин
и инцидентные им ребра.
Вновь триангулировать многоугольники, образовавшиеся в результате удаления вершин и ребер.
Таким
образом,
не имеет внутренних вершин (т.е. состоит
из одного треугольника).
Треугольники,
главные объекты данного метода, будем
обозначать буквой
.
Треугольник
может появляться во многих триангуляциях,
однако условимся, что
принадлежит триангуляции
,
если
создан на втором этапе построения
.
Структура
данных
для поиска, узлам которой будут
соответствовать треугольники, строится
следующим образом: от узла соответствующего
треугольнику
проводится дуга к узлу соответствующему
треугольнику
,
если при построении
после
имеем:
удаляется из
на первом этапе.
создается в
на втором этапе.
Ø.
Топология
структуры
представляется ориентированным
ациклическим графом (см. рис.2.9.).Картинка
неправильная
Рис.2.9. Последовательность триангуляций, и построенная структура данных поиска.
Отметим,
что треугольники из
не имеют исходящих дуг в
,
и только они обладают этим свойством.
Легко
понять, как происходит локализация
точки, в структуре данных поиска.
Элементарной операцией является
«принадлежность треугольнику», которая
очевидно, выполняется за время
.
Начальный шаг состоит локализации
пробной точки в триангуляции
.
Далее, если достигнут некоторый узел в
структуре
(т.е. точка локализована в соответствующем
узлу треугольнике), то проверяется
принадлежность пробной точки всем
потомкам этого узла. Так как точка
принадлежит только одному из потомков,
то данный шаг выполняется с новым узлом
и т.д., пока не будет достигнут узел, не
имеющий потомков (т.е. точка локализована
в одном из треугольников триангуляции
).
Запишем этот алгоритм в форме процедуры.
Procedure ЛокализацияТочки (z)
Begin
if
(корень)
then
ОТВЕТ(вне);
else begin
=
корень; //
-
вершина графа, которая соответствует
while
(Ø)
do
begin
repeat =
очередная вершина из списка
;
until ;
;
end
ОТВЕТ();
end
End
Теперь обсудим очень важный аспект
алгоритма построения последовательности
триангуляций, а именно выбор множества
удаляемых вершин на первом этапе
построения триангуляции
из
,
т.к. от этого выбора существенно зависит
эффективность метода. Предположим, что
можно выбрать это множество так, чтобы
выполнялись следующие свойства (здесь
через
обозначено число вершин в
):
.
Каждый треугольник
из
пересекается не более чем с
треугольниками из
и наоборот.
Следствием первого свойства является
то, что
поскольку при переходе от
к
удаляется, по меньшей мере, фиксированная
доля вершин. Это позволяет нам сделать
вывод о том, что локализацию точки в
структуре
можно осуществить за время
.
Теперь оценим память, отводимую для
хранения узлов. Из теоремы Эйлера о
плоских графах следует, что
содержит менее
треугольников, т.е. ярус в
,
соответствующий
,
содержит менее
узлов. Тогда общее число узлов в
можно оценить следующим образом:
.
Из второго свойства следует, что каждый
узел содержит не более
указателей, тогда память отводимая под
указатели не превосходит значения
.
Итого, суммарная требуемая память равна:
.
Теперь покажем, что существует критерий,
удовлетворяющий обоим свойствам. Возьмем
в качестве этого критерия следующий:
«Удалить несмежные вершины со степенью
меньше
»
(здесь
- целое число, которое мы подберем позже).
Порядок просмотра и, если необходимо,
удаления этих вершин произволен: начинаем
с любой из них, помечаем ее соседей (они
не могут удаляться) и продолжаем, пока
еще остаются непомеченные вершины.
Проверим
выполнение первого свойства. Из формулы
Эйлера для плоских графов, в частном
случае триангуляции, ограниченной тремя
ребрами, следует, что число вершин и число ребер
связаны соотношением
.
Пока в триангуляции есть внутренние
вершины (в противном случае задача
тривиальна), степень каждой из трех
граничных вершин не меньше трех. Поскольку
существует
ребер, а каждое ребро инцидентно двум
вершинам, то сумма степеней всех вершин
меньше
.
Отсюда сразу следует, что не менее
вершин имеет степень меньше 12.
Следовательно, пусть
.
Пусть
- это число выбранных вершин. Поскольку
каждой из них инцидентно не более
ребер, а три граничные вершины не
выбираются, то мы имеем:
.
Тогда число оставшихся вершин равно:
.
Следовательно
,
что доказывает справедливость первого
свойства.
Выполнение
второго свойства обеспечивается
тривиально. Поскольку удаление вершины
со степенью меньше
приводит к образованию многоугольника
с числом ребер менее
,
то каждый из удаленных треугольников
пересекает не более
новых треугольников.
Резюмируем:
Локализацию точки на
-
вершинном планарном подразбиении можно
реализовать с помощью метода детализации
триангуляции за время
с использованием
памяти, если
времени ушло на предобработку.
Отметим, что данный метод обладает оптимальными характеристиками, в смысле требуемых ресурсов.