Главная
Новости
Строительство
Ремонт
Дизайн и интерьер
Полезная информация

















Яндекс.Метрика





Задача о наименьшей окружности

Задача о наименьшей окружности или задача о минимальном покрывающем круге — задача о вычислении наименьшей окружности, содержащей все заданные точки из множества на евклидовой плоскости. Соответствующая задача в n-мерном пространстве, задача о наименьшей ограничивающей сфере, вычисляет наименьшую гиперсферу, содержащую все точки заданного множества. Задачу о наименьшей окружности первым поставил английский математик Джеймс Джозеф Сильвестр в 1857.

Задача о наименьшей окружности на плоскости является примером задачи о размещении объектов (задача об 1-центре), в которой расположение новой организации нужно выбрать так, чтобы обслужить заданное множество клиентов с минимизацией максимального расстояния, которое должен преодолеть клиент, чтобы добраться до организации. Как задача о наименьшей окружности на плоскости, так и задача о наименьшей ограничивающей гиперсфере в более высоких размерностях разрешимы за линейное время.

Описание

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

  • Минимальный покрывающий круг единственен.
  • Минимальный покрывающий круг множества S может быть определён максимум по трём точкам из S, которые лежат на границе круга. Если он определяется лишь двумя точками, то хорда, соединяющая эти точки, является диаметром минимальной окружности. Если окружность определяется тремя точками, то треугольник не может быть тупоугольным.

Решение за линейное время

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

Эмо Вельцль предложил простой рандомизированный алгоритм для задачи покрытия кругом, среднее время работы которого равно O ( N ) {displaystyle O(N)} , основанный на алгоритме линейного программирования Раймунда Зейделя. Алгоритм является рекурсивным и в качестве аргументов принимает два множества точек S и Q. Алгоритм вычисляет наименьшую окружность, ограничивающую объединение множеств S и Q, если любая точка множества Q является граничной точкой возможной ограничивающей окружности. Исходная задача о наименьшей ограничивающей окружности может быть решена, начав с S, равного полному множеству точек, и с Q, равного пустому множеству. Когда алгоритм вызывает себя рекурсивно, он увеличивает множество Q, пока в него не попадут все граничные точки.

Алгоритм обрабатывает точки множества S в случайном порядке, используя множество P обработанных точек и минимальную окружность, ограничивающую объединение P и Q. На каждом шаге алгоритм проверяет, принадлежит ли обрабатываемая точка r этой окружности. Если не принадлежит, алгоритм заменяет ограничивающую окружность путём рекурсивного вызова алгоритма на множествах P и Q+r. В зависимости о того, заменяется ли окружность или нет, r включается в множество P. Обработка каждой точки, таким образом, заключается в проверке (за постоянное время), принадлежит ли точка окружности, и возможном рекурсивном вызове алгоритма. Можно показать, что i-я обрабатываемая точка имеет вероятность O ( 1 / i ) {displaystyle O(1/i)} рекурсивного вызова, а потому общее время линейно.

Позднее задача о наименьшей окружности была включена в общий класс задач LP-типа, которые могут быть решены алгоритмами, подобными алгоритму Вельцля, основанному на линейном программировании. Как следствие принадлежности этому классу, было показано, что зависимость постоянного множителя от размерности в оценке времени O ( N ) {displaystyle O(N)} , которая была факториальной в методе Зейделя, может быть сведена к субэкспоненциальной, но оценка времени остаётся линейной по N.

Другие алгоритмы

До результата Мегиддо, показывающего, что задача о наименьшей окружности может быть решена за линейное время, в литературе появлялись алгоритмы большей сложности. Наивный алгоритм решает задачу за время O(n4) путём проверки окружностей, задаваемых всеми парами и тройками точек.

  • Алгоритм Христала и Пирса использует стратегию локальной оптимизации. Алгоритм просматривает две точки на границе ограничивающей окружности и последовательно уменьшает окружность, заменяя пары ограничивающих точек, пока не будет найдена оптимальная окружность. Чакраборты и Чаудхури предложили метод с линейным временем работы для выбора подходящей начальной окружности и пары граничных точек на окружности. Каждый шаг алгоритма включает в качестве второй ограничивающей точки новую вершину выпуклой оболочки, так что, если выпуклая оболочка имеет h вершин, этот метод может работать за время O(nh).
  • Элзинга и Хирн описали алгоритм, который рассматривает ограничивающие сферы для подмножества точек. На каждом шаге точка, лежащая вне сферы, используется для поиска большей сферы, включающей новое подмножество точек, в которое входит эта точка. Хотя наихудший случай работы алгоритма оценивается как O(h3n), авторы утверждают, что в их экспериментах алгоритм работал за линейное время. Сложность метода проанализировали Дрезнер и Шелах. В статье Хирна, Виджея и Никеля можно найти коды метода на Фортране и C.
  • Задачу о наименьшей сфере можно сформулировать как задачу квадратичного программирования, определённую как систему линейных ограничений с выпуклой квадратичной целевой функцией. Таким образом, любой алгоритм возможных направлений может дать решение задачи. Хирн и Виджей доказали, что подход на основе метода возможных направлений, выбранный Якобсеном, эквивалентен алгоритму Христала–Пирса.
  • Двойственную задачу задаче квадратичного программирования можно сформулировать явно. Алгоритм Лоусона можно описать как алгоритм одновременного решения прямой и двойственной задач.
  • Шамос и Хауи предложили алгоритм со временем решения O(n log n), основанный на наблюдении, что центр наименьшей ограничивающей окружности должен быть вершиной наиболее удалённой точки в диаграмме Вороного входного множества точек.

Взвешенные варианты задачи

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