В математике , если задано непустое множество объектов конечной протяженности в -мерном пространстве , например, множество точек, ограничивающая сфера , объемлющая сфера или объемлющий шар для этого множества, то это -мерная сплошная сфера, содержащая все эти объекты.
Ограничивающая сфера, используемая в компьютерной графике и вычислительной геометрии , является особым типом ограничивающего объема . Существует несколько быстрых и простых алгоритмов построения ограничивающей сферы, имеющих высокую практическую ценность в приложениях компьютерной графики в реальном времени. [1]
В статистике и исследовании операций объектами обычно являются точки, и, как правило, сфера интереса — это минимальная ограничивающая сфера , то есть сфера с минимальным радиусом среди всех ограничивающих сфер. Можно доказать, что такая сфера уникальна: если их две, то рассматриваемые объекты лежат внутри их пересечения. Но пересечение двух несовпадающих сфер одинакового радиуса содержится в сфере меньшего радиуса.
Задача вычисления центра минимальной ограничивающей сферы также известна как «невзвешенная евклидова задача об одном центре ».
Такие сферы полезны при кластеризации , когда группы схожих точек данных классифицируются вместе.
В статистическом анализе разброс точек данных внутри сферы может быть обусловлен ошибкой измерения или естественными (обычно термическими) процессами, в этом случае кластер представляет собой возмущение идеальной точки. В некоторых обстоятельствах эта идеальная точка может использоваться в качестве замены точек в кластере, что выгодно для сокращения времени расчета.
В исследовании операций кластеризация значений в идеальную точку может также использоваться для сокращения количества входов с целью получения приблизительных значений для NP-трудных задач за разумное время. Выбранная точка обычно не является центром сферы, поскольку это может быть смещено выбросами, но вместо этого вычисляется некоторая форма среднего местоположения, например, точка наименьших квадратов, чтобы представить кластер.
Существуют точные и приближенные алгоритмы решения задачи об ограничивающей сфере.
Нимрод Мегиддо подробно изучал проблему 1-центра и опубликовал по ней не менее пяти работ в 1980-х годах. [2] В 1983 году он предложил алгоритм « обрезки и поиска », который находит оптимальную ограничивающую сферу и работает за линейное время, если размерность фиксирована как константа. Если принять во внимание размерность, сложность времени выполнения составляет , [3] [4] что непрактично для приложений с высокой размерностью.
В 1991 году Эмо Вельцль предложил гораздо более простой рандомизированный алгоритм , обобщающий рандомизированный алгоритм линейного программирования Раймунда Зайделя . Ожидаемое время работы алгоритма Вельцля составляет , что снова сводится к для любой фиксированной размерности . В статье приводятся экспериментальные результаты, демонстрирующие его практичность в более высоких размерностях. [5] Более поздний детерминированный алгоритм Тимоти Чана также работает во времени, с меньшей (но все еще экспоненциальной) зависимостью от размерности. [4]
Библиотека алгоритмов вычислительной геометрии с открытым исходным кодом (CGAL) содержит реализацию алгоритма Вельцла. [6]
В 1990 году Джек Риттер предложил простой алгоритм для поиска неминимальной ограничивающей сферы. [7] Он широко используется в различных приложениях из-за своей простоты. Алгоритм работает следующим образом:
Алгоритм Риттера работает во времени на входных данных, состоящих из точек в -мерном пространстве, что делает его очень эффективным. Однако он дает только грубый результат, который обычно на 5–20 % больше оптимального. [7]
Бадою и др. представили приближение к задаче ограничивающей сферы [8] , где приближение означает, что построенная сфера имеет радиус не более , где — наименьший возможный радиус ограничивающей сферы.
Coreset — это небольшое подмножество, расширение решения на котором является ограничивающей сферой всего множества. Coreset строится постепенно, путем добавления самой дальней точки в множество в каждой итерации .
Кумар и др. усовершенствовали этот алгоритм аппроксимации [9], так что он теперь работает со временем .
Фишер и др. (2003) предложили точный решатель, хотя алгоритм не имеет полиномиального времени выполнения в худшем случае. [10] Алгоритм является чисто комбинаторным и реализует схему поворота, похожую на симплексный метод для линейного программирования , использовавшийся ранее в некоторых эвристиках. Он начинается с большой сферы, которая покрывает все точки, и постепенно сжимает ее до тех пор, пока ее нельзя будет сжать дальше. Алгоритм имеет правильные правила завершения в случаях вырождений, упущенных предыдущими авторами; и эффективную обработку частичных решений, что дает значительное ускорение. Авторы подтвердили, что алгоритм эффективен на практике в низких и умеренно низких (до 10 000) измерениях, и утверждают, что он не проявляет проблем с числовой устойчивостью в своих операциях с плавающей точкой. [10] Реализация алгоритма на C++ доступна как проект с открытым исходным кодом. [11]
Larsson (2008) предложил метод «оптимальной сферы экстремальных точек» с контролируемой скоростью приближения точности для решения проблемы ограничивающей сферы. Этот метод работает, беря набор векторов направления и проецируя все точки на каждый вектор в ; служит переменной компромисса скорости и точности. Точный решатель применяется к экстремальным точкам этих проекций. Затем алгоритм выполняет итерации по оставшимся точкам, если таковые имеются, увеличивая сферу при необходимости. Для больших этот метод на порядки быстрее точных методов, при этом давая сопоставимые результаты. Он имеет худшее время . [1]