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