- •Геометрический поиск
- •Задача локализации точки
- •Задача локализации точки на планарном подразбиении
- •Представление пплг с помощью реберного списка с двойными связями
- •Техника плоского заметания
- •Методы локализации точки на планарном подразбиении
- •Метод полос
- •Метод цепей
- •Метод детализации триангуляции
- •Триангуляция с ограничениями
- •Алгоритм локализации точки
- •Метод трапеций
- •Реализация алгоритмов
- •Требования к реализации алгоритмов
- •Сравнительное исследование методов локализации
- •Визуализация работы алгоритмов
- •Результаты экспериментальных исследований
- •Анализ затрат времени на предобработку
- •Анализ затрат времени на запрос
- •Заключение
- •Список литературы
Реализация алгоритмов
Требования к реализации алгоритмов
Ниже описаны требования к разрабатываемой программе разработанные в ходе НИРС для выполнения курса лабораторных работ по дисциплине «Комбинаторные алгоритмы».
Входные/выходные данные:
Входными (исходными) данными являются, например: набор точек, плоский планарный граф, простые многоугольники и т.п.
Требования к входным данным:
Чтение и сохранение в файле;
Генерация по определенному набору параметров;
Анализ корректности;
Ввод и редактирование в интерактивном режиме.
Выходными данными являются: графическое представление исходных данных, структур данных, и проделанной обработки над ними, на любом шаге работы алгоритма.
Функционирование программы:
Возможность выполнения алгоритма в трех следующих режимах:
Автоматическом (отображение конечного шага работы алгоритма, без визуализации промежуточных)
Пошаговом (каждый следующий шаг работы алгоритма инициируется пользователем и сопровождается визуализацией выходных данных)
Следует предусмотреть возможность завершения выполнения алгоритма в автоматическом режиме в любой момент пошагового исполнения. А также возможность возврата к начальному шагу предобработки или обработки запроса.
Наличие двух режимов функционирования программы:
Ввод и редактирование исходных данных
Выполнение алгоритма (включает в себя выполнение предобработки и непосредственно обработки запроса);
Визуализация исходных и выходных данных:
Вывод текстовой подсказки по выполнению основных действий программы;
Интерфейс
Интерфейс программы должен удовлетворять следующему списку требований:
MDI;
наличие меню;
наличие панели управления;
наличие строки состояния;
наличие “холста”; допускается использование разделителя;
использование диалоговых окон для ввода и просмотра настроек, параметров и других дополнительных параметров программы.
В соответствии с этими требованиями была спроектирована и реализована обучающая программа (PointLocation), которая позволяет:
Проводить сравнительное исследование вышеизложенных методов;
Визуализировать работу алгоритмов.
Сравнительное исследование методов локализации
Сравнительное исследование методов локализации точки, фактически заключается в определении мультипликативных констант в асимптотических оценках затрат времени на предобработку и локализацию точки. В связи с этим представляется разумным определить машинный эксперимент, как следующую последовательность действий:
Выбор исследуемых алгоритмов;
Определение параметров генерации (количество и размер ППЛГ, а также количество пробных точек);
Генерация ППЛГ и пробных точек;
Непосредственно фиксация затрат времени того или иного метода на предобработку и ответ на запрос;
Представление результатов в виде графиков.
Теперь
обсудим более подробно вопрос генерации
ППЛГ. Задача состоит в получении ППЛГ
общего вида с заданным числом вершин.
Генерация
множества вершин
,
причем так, чтобы никакие две вершины
не имели одинаковых ординат, не
представляет труда, и очевидно выполнима
за время
.
Простой
(и очень не эффективный) способ получения
множества ребер
может быть следующий. Просматриваем
вершины, например, снизу вверх, и для
каждой вершины произвольным образом
выбираем вторую. Далее пытаемся добавить
ребро инцидентное этим двум вершинам.
Попытка заключается в проверке пересечения
добавляемого ребра с уже существующими
(такая проверка осуществима за время
).
В случае установления пересечения,
следует выбрать другую вершину и
повторить попытку. Иначе же, после
добавления одного или нескольких ребер
перейти к следующей вершине.
Этот
алгоритм требует в худшем случае
времени, т.к. для каждой вершины добавление
нового ребра стоит
,
а попыток, его добавления, может быть
сделано, в худшем случае,
.
Попробуем
несколько улучшить наш алгоритм, сократив
число просматриваемых ребер при
установлении пересечения. Для этого
наложим на ребра следующее ограничение:
любое ребро может пересекать не более
полос, где
- это целое число, являющееся параметром
алгоритма генерации. Под полосой будем
понимать интервал ординат между двумя
вершинами, внутри которого нет ни одной
вершины ППЛГ(см. рис.3.1).

Рис.3.1. Ребра e1 иe2 пересекают две и одну полосу соответственно.
При
наличии такого ограничения, число ребер,
с которыми следует искать пересечение
при добавлении нового ребра
,
равно числу ребер инцидентных вершинам
находящимся внутри интервала
,
а число таких вершин ограничено
.

Рис.3.2. Зависимость времени генерации ППЛГ от количества вершин.

Рис.3.3. Пример сгенерированного ППЛГ (алгоритм с модификацией)

Рис.3.4. Пример выполненного машинного эксперимента с использованием программы PointLocation.
