Перейти на главную страницу сайта


загрузка...

Алгоритм Киркпатрика

Построение выпуклой оболочки методом «разделяй и властвуй» — алгоритм построения выпуклой оболочки.

Содержание

  • 1 Описание
  • 2 Определения
  • 3 Реализация
  • 4 Сложность алгоритма
  • 5 Ссылки

Описание

Дано множество , состоящее из точек.

  1. Если ( — некоторое небольшое целое число), то построить выпуклую оболочку одним из известных методов и остановиться, иначе перейти к шагу 2.
  2. Разобьем исходное множество произвольным образом на два примерно равных по мощности подмножества и (пусть содержит точек, а содержит точек).
  3. Рекурсивно находим выпуклые оболочки каждого из подмножеств и .
  4. Строим выпуклую оболочку исходного множества как выпуклую оболочку объединения двух выпуклых многоугольников и .

Поскольку: , сложность этого алгоритма является решением рекурсивного соотношения , где  — время построения выпуклой оболочки объединения двух выпуклых многоугольников, каждый из которых имеет около вершин. Далее будет показано, что .

Определения

Опорной прямой к выпуклому многоугольнику называется прямая , проходящая через некоторую вершину многоугольника таким образом, что все внутренние точки многоугольника лежат по одну сторону от прямой .

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

Реализация

Пусть мы уже имеем построенные выпуклые оболочки и .

  1. Найдём некоторую внутреннюю точку многоугольника (например, центроид любых трёх вершин ). Такая точка будет внутренней точкой .
  2. Возможно два случая:
    1. Точка не является внутренней точкой многоугольника . Проводим две опорные прямые для многоугольника , проходящие через точку . Эти опорные прямые проходят через вершины и многоугольника . Все точки внутри треугольника не принадлежат границе выпуклой оболочки . Все остальные точки упорядочиваем по полярному углу относительно точки , слиянием двух упорядоченных списков вершин за время , а затем применяем к полученному списку метод обхода Грэхема, требующий лишь линейное время.
    2. Точка является внутренней точкой многоугольника . Упорядочиваем вершины обоих многоугольников относительно центра , сливая два упорядоченных списка вершин и за .
  3. Теперь к полученному списку вершин можно применить алгоритм Грэхема за исключением фазы сортировки точек по полярной координате, тогда он будет выполнен за линейное время.

Теперь получена выпуклая оболочка объединения выпуклых многоугольников .

Сложность алгоритма

В сумме все три фазы алгоритма выполняются за время . Таким образом, и получаем соотношение , решением которого, как известно, является , что и определяет сложность алгоритма.

Ссылки

  • http://www.cs.umd.edu/~samir/754/kshand.ps (англ.)


  • Проставить интервики в рамках проекта Интервики.
  • Проверить достоверность указанной в статье информации.

Источник: Русская википедия 2012

Вы можете разместить ссылку на этот материал у себя на сайте, блоге или форуме

HTML-cсылка на публикацию
BB-cсылка на публикацию (для форумов)
Прямая ссылка на публикацию


Похожие статьи
Алгоритм Киркпатрика
Алгоритм Киркпатрика Построение выпуклой оболочки методом «разделяй и властвуй» — алгоритм построения выпуклой оболочки. Содержание 1 Описание 2 Определения 3 Реализация 4 Сложность алгоритма 5 Ссылки Описание Дано множество , состоящее из точек. Если ( — некоторое небольшое целое число), то построить выпуклую оболочку одним из известных методов и остановиться, иначе перейти к шагу 2. Разобьем исходное множество произвольным образом на два примерно равных по мощности подмножества и (пусть содержит точек, а содержит точек). Рекурсивно

Алгоритм Киркпатрика
Алгоритм Киркпатрика Алгоритм Киркпатрика Текущая версия (не проверялась) Построение выпуклой оболочки методом «разделяй и властвуй» — алгоритм построения выпуклой оболочки. Содержание 1 Описание 2 Определения 3 Реализация 4 Сложность алгоритма 5 Ссылки Описание Дано множество S, состоящее из N точек. Если |S| k0 (k0 — некоторое небольшое целое число), то построить выпуклую оболочку одним из известных методов и остановиться, иначе перейти к шагу 2. Разобьем исходное множество S произвольным образом на два примерно равных по мощности

Алгоритм Ву
Алгоритм Ву Распределение интенсивности пикселя в зависимости от расстояния до идеальной линии Алгоритм Ву — это алгоритм разложения отрезка в растр со сглаживанием. Был предложен У Сяолинем (Xiaolin Wu, отсюда устоявшееся в русском языке название алгоритма) в статье, опубликованной журналом Computer Graphics в июле 1991 года. Алгоритм сочетает высококачественное устранение ступенчатости и скорость, близкую к скорости алгоритма Брезенхема без сглаживания. Алгоритм Горизонтальные и вертикальные линии не требуют никакого сглаживания, поэтому их

Алгоритм Ли
Алгоритм Ли Алгоритм Ли — волновой алгоритм поиска пути на карте, алгоритм трассировки. С его помощью можно построить путь, или трассу, между двумя любыми элементами в лабиринте. Из начального элемента распространяется в четырёх направлениях волна. Тот элемент, в который она пришла, образует фронт волны. Элементы первого фронта волны являются источниками вторичных волн. Элементы второго фронта генерируют волну третьего фронта и так далее. Процесс заканчивается тогда, когда достигается конечный элемент. На втором этапе строится трасса.

КМП-алгоритм
КМП-алгоритм Алгоритм Кнута — Морриса — Пратта (КМП-алгоритм) — алгоритм поиска образца (подстроки) в строке. Содержание 1 Постановка задачи 2 История возникновения 3 Пример практической реализации 4 Реализация алгоритма на языке Паскаль 5 Реализация алгоритма на языке C++ 6 Реализация алгоритма на языке Си 7 Реализация алгоритма на языке С# 8 Ссылки 9 См. также Постановка задачи Поставим следующую задачу: имеется образец и строка , и нужно определить индекс, начиная с которого строка содержится в строке . Если не содержится в — вернуть индекс,

Искать все статьи, похожие на текущую (Алгоритм Киркпатрика)
Это интересно! Кинотеатр «Современник» (Иваново)   Рот Фронт (жест)   Лобазнюк, Екатерина   МИТРИДАТ VI ЕВПАТОР   Муромонтит   
Универсальная энциклопедия 2012
Карта сайта
Страница создана за 0.042765 сек. Всего документов включено в базу знаний: 5150576