Вычислительная геометрия
Вычислительная геометрия — это раздел информатики, посвященный изучению алгоритмов , которые могут быть сформулированы в терминах геометрии . Некоторые чисто геометрические проблемы возникают в результате изучения вычислительных геометрических алгоритмов, и такие проблемы также считаются частью вычислительной геометрии. Хотя современная вычислительная геометрия возникла недавно, это одна из старейших областей вычислений, история которой уходит корнями в древность.
Сложность вычислений занимает центральное место в вычислительной геометрии и имеет большое практическое значение, если алгоритмы используются с очень большими наборами данных, содержащими десятки или сотни миллионов точек. Для таких наборов разница между O( n 2 ) и O( n log n ) могут быть разницей между днями и секундами вычислений.
Основным толчком к развитию вычислительной геометрии как дисциплины стал прогресс в области компьютерной графики и систем автоматизированного проектирования и производства ( CAD / CAM ), однако многие задачи вычислительной геометрии носят классический характер и могут возникнуть в результате математической визуализации .
Другие важные применения вычислительной геометрии включают робототехнику ( планирования движения проблемы и видимости), географические информационные системы (ГИС) (геометрическое местоположение и поиск, планирование маршрута), проектирование интегральных схем (проектирование и проверка геометрии ИС), автоматизированное проектирование (CAE). (генерация сетки) и компьютерное зрение ( 3D-реконструкция ).
Основными разделами вычислительной геометрии являются:
- Комбинаторная вычислительная геометрия , также называемая алгоритмической геометрией , рассматривает геометрические объекты как дискретные сущности. В основополагающей книге Препараты и Шамоса по этой теме первое использование термина «вычислительная геометрия» в этом смысле датируется 1975 годом. [ 1 ]
- Численная вычислительная геометрия , также называемая машинной геометрией , компьютерным геометрическим проектированием (CAGD) или геометрическим моделированием , которая занимается в первую очередь представлением объектов реального мира в формах, подходящих для компьютерных вычислений в системах CAD/CAM. Эту ветвь можно рассматривать как дальнейшее развитие начертательной геометрии и часто считают ветвью компьютерной графики или САПР. Термин «вычислительная геометрия» в этом значении используется с 1971 года. [ 2 ]
Хотя большинство алгоритмов вычислительной геометрии были разработаны (и разрабатываются) для электронных компьютеров, некоторые алгоритмы были разработаны для нетрадиционных компьютеров (например, оптических компьютеров). [ 3 ] )
Комбинаторная вычислительная геометрия
[ редактировать ]Основной целью исследований в области комбинаторной вычислительной геометрии является разработка эффективных алгоритмов и структур данных для решения задач, сформулированных в терминах основных геометрических объектов: точек, отрезков прямых, многоугольников , многогранников и т. д.
Некоторые из этих проблем кажутся настолько простыми, что их вообще не считали проблемами до появления компьютеров . Рассмотрим, например, задачу о ближайшей паре :
- По заданным n точкам на плоскости найти две точки, находящиеся на наименьшем расстоянии друг от друга.
Можно вычислить расстояния между всеми парами точек, которых имеется n(n-1)/2 , а затем выбрать пару с наименьшим расстоянием. Этот алгоритм грубой силы требует O ( n 2 ) время; т.е. время его выполнения пропорционально квадрату количества точек. Классическим результатом в вычислительной геометрии была формулировка алгоритма, который принимает O( n log n ). Рандомизированные алгоритмы , требующие ожидаемого времени O( n ), [ 4 ] а также детерминированный алгоритм, который занимает время O( n log log n ), [ 5 ] также были обнаружены.
Проблемные классы
[ редактировать ]Основные проблемы вычислительной геометрии можно классифицировать по-разному в соответствии с различными критериями. Можно выделить следующие общие классы.
Статическая проблема
[ редактировать ]В задачах этой категории задаются некие входные данные, и необходимо построить или найти соответствующие выходные данные. Некоторые фундаментальные проблемы этого типа:
- Выпуклая оболочка : по заданному набору точек найдите наименьший выпуклый многогранник/многоугольник, содержащий все точки.
- Пересечение сегментов линий : найдите пересечения между заданным набором сегментов линий.
- Триангуляция Делоне
- Диаграмма Вороного : Учитывая набор точек, разделите пространство в соответствии с тем, какие точки находятся ближе всего к заданным точкам.
- Линейное программирование
- Ближайшая пара точек : Учитывая набор точек, найдите две точки, находящиеся на наименьшем расстоянии друг от друга.
- Самая дальняя пара точек
- Самый большой пустой круг : по набору точек найдите самый большой круг, центр которого находится внутри выпуклой оболочки и не заключает ни одну из них.
- Евклидов кратчайший путь : соедините две точки в евклидовом пространстве (с многогранными препятствиями) кратчайшим путем.
- Триангуляция многоугольника : учитывая многоугольник, разделите его внутреннюю часть на треугольники.
- Генерация сетки
- Булевы операции над многоугольниками
Вычислительная сложность для этого класса задач оценивается временем и пространством (памятью компьютера), необходимыми для решения данного экземпляра задачи.
Проблемы с геометрическими запросами
[ редактировать ]В задачах геометрического запроса , широко известных как задачи геометрического поиска , входные данные состоят из двух частей: части пространства поиска и части запроса , которая варьируется в зависимости от экземпляра задачи. Пространство поиска обычно необходимо предварительно обработать , чтобы можно было эффективно ответить на несколько запросов.
Некоторые фундаментальные проблемы геометрических запросов:
- Поиск по диапазону . Предварительная обработка набора точек для эффективного подсчета количества точек внутри области запроса.
- Проблема с расположением точки . Учитывая разделение пространства на ячейки, создайте структуру данных, которая эффективно сообщает, в какой ячейке находится точка запроса.
- Ближайший сосед : Предварительная обработка набора точек, чтобы эффективно найти точку, ближайшую к точке запроса.
- Трассировка лучей . Учитывая набор объектов в пространстве, создайте структуру данных, которая эффективно сообщает, какой объект первым пересекает луч запроса.
Если пространство поиска фиксировано, вычислительная сложность для этого класса задач обычно оценивается как:
- время и пространство, необходимые для создания структуры данных, в которой будет осуществляться поиск.
- время (а иногда и дополнительное место) для ответов на вопросы.
О случае, когда пространство поиска может меняться, см. « Динамические задачи ».
Динамические проблемы
[ редактировать ]Еще одним крупным классом являются динамические задачи , целью которых является поиск эффективного алгоритма многократного поиска решения после каждого постепенного изменения входных данных (добавления или удаления входных геометрических элементов). Алгоритмы решения задач этого типа обычно включают динамические структуры данных . Любую вычислительную геометрическую задачу можно преобразовать в динамическую за счет увеличения времени обработки. Например, задача поиска диапазона может быть преобразована в задачу поиска динамического диапазона путем обеспечения добавления и/или удаления точек. Проблема динамической выпуклой оболочки состоит в том, чтобы отслеживать выпуклую оболочку, например, для динамически изменяющегося набора точек, т. е. во время вставки или удаления входных точек.
Вычислительная сложность для этого класса задач оценивается по формуле:
- время и пространство, необходимые для создания структуры данных, в которой будет осуществляться поиск.
- время и пространство для изменения искомой структуры данных после постепенного изменения в пространстве поиска
- время (а иногда и дополнительное пространство) для ответа на запрос.
Вариации
[ редактировать ]Некоторые проблемы можно отнести к любой из категорий, в зависимости от контекста. Например, рассмотрим следующую проблему.
- Точка в многоугольнике : решите, находится ли точка внутри или снаружи данного многоугольника.
Во многих приложениях эта задача рассматривается как однократная, т.е. относящаяся к первому классу. Например, во многих приложениях компьютерной графики распространенной проблемой является определение того, на какую область экрана нажимает указатель . Однако в некоторых приложениях рассматриваемый многоугольник является инвариантным, а точка представляет собой запрос. Например, входной многоугольник может представлять собой границу страны, а точка — это положение самолета, и задача состоит в том, чтобы определить, нарушил ли самолет границу. Наконец, в ранее упомянутом примере компьютерной графики в приложениях САПР изменяющиеся входные данные часто сохраняются в динамических структурах данных, которые можно использовать для ускорения запросов «точка в полигоне».
В некоторых контекстах задач запросов существуют разумные ожидания относительно последовательности запросов, которые можно использовать либо для эффективных структур данных, либо для более точных оценок сложности вычислений. Например, в некоторых случаях важно знать наихудший случай общего времени для всей последовательности из N запросов, а не для одного запроса. См. также « амортизированный анализ ».
Численная вычислительная геометрия
[ редактировать ]Эта отрасль также известна как геометрическое моделирование и компьютерное геометрическое проектирование (CAGD).
Основными проблемами являются моделирование и представление кривых и поверхностей.
Наиболее важными инструментами здесь являются параметрические кривые и параметрические поверхности , такие как кривые Безье , сплайновые кривые и поверхности. Важным непараметрическим подходом является метод набора уровней .
Области применения вычислительной геометрии включают судостроение, авиационную и автомобильную промышленность.
Список алгоритмов
[ редактировать ]- Задача о ближайшей паре : найти пару точек (из набора точек) с наименьшим расстоянием между ними.
- Алгоритмы обнаружения столкновений : проверка столкновения или пересечения двух заданных твердых тел.
- Алгоритм конуса : определение точек поверхности
- Алгоритмы выпуклой оболочки определение выпуклой оболочки набора точек :
- Преобразование евклидова расстояния : вычисляет расстояние между каждой точкой сетки и дискретным набором точек.
- Геометрическое хеширование : метод эффективного поиска двумерных объектов, представленных дискретными точками, подвергшимися аффинному преобразованию.
- Алгоритм расстояния Гилберта – Джонсона – Кирти : определение наименьшего расстояния между двумя выпуклыми формами.
- Алгоритм Jump-and-Walk : алгоритм определения местоположения точек в триангуляциях.
- Сглаживание по Лапласу : алгоритм сглаживания полигональной сетки.
- Пересечение сегментов линий : определение того, пересекаются ли линии, обычно с помощью алгоритма развертки линии.
- Алгоритмы минимальной ограничивающей рамки : найдите ориентированную минимальную ограничивающую рамку, включающую набор точек.
- Поиск ближайшего соседа : найдите ближайшую точку или точки к точке запроса.
- Алгоритм вложения : максимально эффективно используйте материал или пространство.
- Алгоритмы «Точка в полигоне» : проверяет, находится ли данная точка внутри данного многоугольника.
- Алгоритмы регистрации набора точек : находит преобразование между двумя наборами точек для их оптимального выравнивания.
- Вращающийся штангенциркуль : определите все противоположные пары точек и вершин на выпуклом многоугольнике или выпуклой оболочке .
- Алгоритм шнурков : определение площади многоугольника, вершины которого описаны упорядоченными парами на плоскости.
- Триангуляция
- Триангуляция Делоне
- Алгоритм Руперта (также известный как уточнение Делоне): создание качественных триангуляций Делоне.
- Второй алгоритм Чу : создание триангуляций Делоне с ограниченным качеством.
- Марширующие треугольники : восстановление двумерной геометрии поверхности из неструктурированного облака точек.
- Алгоритмы триангуляции полигона : разложение многоугольника на набор треугольников.
- Диаграммы Вороного , геометрические двойственные . триангуляции Делоне
- Алгоритм Бойера – Ватсона : создание диаграммы Вороного в любом количестве измерений.
- Алгоритм Фортуны : создаем диаграмму Вороного
- Квазитриангуляция
- Триангуляция Делоне
См. также
[ редактировать ]- Список тем комбинаторной вычислительной геометрии
- Список тем по числовой вычислительной геометрии
- CAD / CAM / CAE
- Твердотельное моделирование
- Вычислительная топология
- Компьютерное представление поверхностей
- Цифровая геометрия
- Дискретная геометрия (комбинаторная геометрия)
- Разделение пространства
- Трикомплексный номер
- Надежные геометрические вычисления
- Викиверситет:Тема:Вычислительная геометрия
- Викиверситет:Компьютерный геометрический дизайн
Ссылки
[ редактировать ]- ^ Франко П. Препарата и Майкл Ян Шамос (1985). Вычислительная геометрия. Введение . Спрингер-Верлаг . ISBN 0-387-96131-3 . 1-е издание; 2-е издание, исправленное и дополненное, 1988 г.
- ^ А. Р. Форрест, «Вычислительная геометрия», Proc. Королевское общество Лондона , 321, серия 4, 187–195 (1971)
- ^ Евгений Борисович Карасик (2019). Оптическая вычислительная геометрия . ISBN 979-8511243344 .
- ^ С. Хуллер и Ю. Матиас. Простой алгоритм рандомизированного сита для решения задачи поиска ближайшей пары . Инф. Comput., 118(1):34—37,1995 ( PDF )
- ^ С. Форчун и Дж. Э. Хопкрофт. «Заметка об алгоритме ближайшего соседа Рабина». Письма об обработке информации, 8 (1), стр. 20–23, 1979 г.
Дальнейшее чтение
[ редактировать ]Журналы
[ редактировать ]Комбинаторная/алгоритмическая вычислительная геометрия
[ редактировать ]Ниже приведен список основных журналов, в которых публикуются исследования в области геометрических алгоритмов. Обратите внимание, что с появлением журналов, специально посвященных вычислительной геометрии, доля геометрических публикаций в журналах общего назначения по информатике и компьютерной графике снизилась.
- Обзоры вычислительной техники ACM
- Транзакции ACM с графикой
- Закон об информатике
- Достижения в геометрии
- Алгоритмика
- Арс Комбинатория
- Вычислительная геометрия: теория и приложения
- Коммуникации ACM
- Компьютерное геометрическое проектирование
- Компьютерная графика и приложения
- Мир компьютерной графики
- Вычисления в геометрии и топологии
- Дискретная и вычислительная геометрия
- Геомбинаторика
- Посвящается геометрии.
- Транзакции IEEE в графике
- Транзакции IEEE на компьютерах
- Транзакции IEEE по анализу шаблонов и машинному интеллекту
- Письма об обработке информации
- Международный журнал вычислительной геометрии и приложений
- Журнал комбинаторной теории , серия B
- Журнал вычислительной геометрии
- Журнал дифференциальной геометрии
- Журнал ACM
- Журнал алгоритмов
- Журнал компьютерных и системных наук
- Наука управления
- Распознавание образов
- Буквы распознавания образов
- SIAM Journal по вычислительной технике
- Новости СИГАКТ ; представил «Колонку вычислительной геометрии» Джозефа О'Рурка.
- Теоретическая информатика
- Визуальный компьютер