Вестник Сыктывкарского университета. Сер Л. Вып. Ц-2011
УДК 515
О ДВУХ ПОДХОДАХ К РЕШЕНИЮ ОДНОЙ КЛАССИЧЕСКОЙ ЗАДАЧИ ВЫЧИСЛИТЕЛЬНОЙ
ГЕОМЕТРИИ
А. А. Васильев, А. Н. Гинтнер
Рассматриваются задачи нахождения наибольшей пустой и наименьшей охватывающей окружностей. Описывается реализация алгоритмов решения данных задач с помощью методов вычислительной геометрии: триангуляции Делоне, диаграмм Вороного и методов нелинейного программирования. Приводятся результаты численных экспериментов.
Ключевые слова: диаграмма Вороного, наименьшая охватывающая окружность, наибольшая пустая окружность, триангуляция Делоне.
1. Задача нахождения наименьшей охватывающей окружности множества точек на плоскости
Постановка задачи. Для заданного множества точек плоскости 5 = = {р\чР2ч • • ч Рп} найти окружность наименьшего радиуса такую, что все точки 5 содержатся в круге, границей которого является данная окружность.
Нетрудно видеть, что для решения задачи необходимо найти центр и радиус искомой окружности. Оказывается [3], что наименьшая охватывающая окружность единственна, и, кроме того, она либо является окружностью, проходящей через некоторые три точки множества 5, либо некоторая пара точек 5 служит диаметром этой окружности. Очевидно, что найти наименьшую охватывающую окружность можно, просто перебрав все пары и тройки точек множества 5.
© Васильев А. А., Гинтнер А. Н., 2011.
Данный подход к решению поставленной задачи не является самым эффективным, так как с увеличением числа точек п количество комбинаций всех пар (Сп = 21(п-2)! ~ п(п~^) комбинаций) и троек точек (С^ =
= з!(п—з)! = п(п—1)(п—2) К0м5инаци^^ резко увеличивается. Наименьшая охватывающая окружность, построенная методом перебора для п = 30,
а) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(1.5,3) и радиусом г = 3.35.
Существуют более эффективные алгоритмы, чем рассмотренный выше. Один из таких быстрых алгоритмов основан на использовании свойств, которыми обладает диаграмма Вороного [3]. Используя эти свойства, опишем алгоритм построения наименьшей охватывающей окружности [4].
Алгоритм (Нахождение наименьшей охватывающей окружности)
Шаг 1. На множестве исходных точек строится диаграмма Вороного.
Шаг 2. Для каждой вершины диаграммы Вороного строим окружность, охватывающую все точки исходного множества и вычисляем её радиус.
Шаг 3. Среди всех окружностей, полученных на шаге 2, выбираем имеющую наименьший радиус.
Конец алгоритма.
Наименьшая охватывающая окружность, построенная с помощью диаграммы Вороного для п = 30, приведена на Рис.2.
В исследовании операций задача об охватывающей окружности известна под названием «минимаксная задача о размещении центра обслуживания». В этой задаче требуется найти точку р0 — (^о ? 2/о) (цеытр окружности), для которой наибольшее из расстояний до точек заданного множества минимально. Точка ро определяется критерием:
min max \(xi - х)2 + - у)2} (1)
X, у 1 = 1..П
а)
б)
Рис.2 а) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(2.56,3.48) и радиусом г = 4.14.
Согласно Меджиддо [3] данная задача может быть сведена к следующей задаче нелинейного программирования :
г тгп
(Хг ~ X)2 + {Уг ~ у)2 < г, I = 1..П.
(2)
Заметим, что значение координаты г в точке решения равно квадрату радиуса этой окружности [3]. Наименьшая охватывающая окружность, построенная с помощью метода нелинейного программирования для п = 30, приведена на Рис.З.
1 2 3
а)
Рис.З
а) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(3.57, 3.25) и радиусом г = 3.82.
2. Задача нахождения наибольшей пустой окружности
Постановка задачи. На плоскости заданы п точек. Требуется найти наибольшую окружность, не содержащую внутри точек исходного множества, центр которой лежит внутри выпуклой оболочки множества точек(рис.4,а).
а) б) в)
Рис.4
Определение максимальной пустой окружности: а) исходные данные; б) диаграмма Вороного; в) отсечение диаграммы Вороного выпуклой оболочкой точек
На практике такого рода задачи возникают при размещении каких-либо служб или предприятий, которые необходимо максимально удалить от других заданных объектов. Например, размещаемый объект может быть источником загрязнений, поэтому необходимо минимизировать его воздействие на другие объекты, либо это магазин, и необходимо поместить его подальше от конкурентов. Центр искомой окружности лежит либо в узле диаграммы Вороного (т.е. является окружностью Делоне: окружностью, описанной вокруг некоторого треугольника триангуляции Делоне), либо в точке пересечения диаграммы Вороного и выпуклой оболочки исходных точек. Опишем соответствующий алгоритм [4].
Алгоритм (Нахождение наибольшей пустой окружности)
Шаг 1. На множестве исходных точек строится диаграмма Вороного (рис.4,б). При этом, для каждой точки диаграммы оказываются вычисленными центр и радиус соответствующей окружности Делоне.
Шаг 2. Строится выпуклая оболочка множества исходных точек и определяются точки её пересечения с конечными рёбрами диаграммы Вороного (рис.4,в). Для каждой из этих точек вычисляется расстояние до ближайшей исходной точки, которая определяется одной из двух смежных ячеек диаграммы Вороного. Найденное расстояние определяет радиус наибольшей окружности, которую можно здесь разместить, не накрывая никаких точек.
Шаг 3. Среди всех окружностей, полученных на шагах 1-2, выбираем имеющую максимальный радиус.
Конец алгоритма.
Наибольшая пустая окружность, построенная с помощью диаграммы Вороного для п = 30, приведена на Рис.5.
6-5 -
0 1 2 3 4 5 6 7
а)
б)
Рис.5
а) Исходное множество точек; б) Наибольшая пустая окружность с центром в точке С(3.77; 2.77) и радиусом г = 1.41.
Данная задача является двойственной к задаче о наименьшей охватывающей окружности и называется «максиминной задачей». В этом случае приходится накладывать ограничение на расположение центра окружности, так как при его отсутствии задача может не иметь ограниченного решения. Иначе говоря, требуется найти точку р0, определяемую критерием:
IIIах пип
х, у г=
1П1 [(ж< - X)2 + (уг ~ у)2]
1..П
(3)
Известно [3], что может существовать несколько точек ро, удовлетворяющих данному критерию.
Задача (3), так же как и (1), может быть сведена к следующей задаче нелинейного программирования:
г —тах
(Хг ~ X)2 + (Уг ~ у)2 > г, I = 1..П.
(4)
Наибольшая пустая окружность, построенная с помощью метода нелинейного программирования для п = 30, приведена на Рис.6.
6-
6-
5-
3-
4-
4-
3-
2-
2-
1 -
1 -
а)
б)
Рис.6
а) Исходное множество точек; б) Наибольшая пустая окружность с центром в точке С(2.33, 3.57) и радиусом г = 1.25.
Сведение задач (1),(3) к задачам (2),(4) позволяет говорить о том, что данные задачи могут рассматриваться и в пространствах более высокой размерности, чем т=2. Ниже приводятся примеры наименьшей охватывающей и наибольшей пустой сфер, построенные с помощью метода нелинейного программирования в пространстве Л3 для п — 30 (Рис.7 и Рис.8).
а)
б)
Рис.7
а) Исходное множество точек; б) Наименьшая охватывающая сфера с центром в точке С(2.43, 3.47, 3.88) и радиусом г = 4.48.
а) б)
Рис.8
а) Исходное множество точек; б) Наибольшая пустая сфера с центром в точке С(3.40, 1.90, 3.07) и радиусом г = 1.96.
Все численные эксперименты проводились с помощью пакета Optimization системы Maple.
Литература
1. Васильев А.А., Королева А.Н. Некоторые применения вычислительной геометрии к задачам линейного программирования. // Вестник Сыктывкарского университета. Серия 1: Мат., Мех., Инф. - 2009. - Вып. 10. - с.113-118.
2. Аладьев В.З., Бойко В.К., Ровба Е.А. Программирование и разработка приложений в Maple. Гродно: ГрГУ; Таллинн: Межд. Акад. Ноосферы,Балт. отд.- 2007. 456 с.
3. Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. М.: Мир, 1989. 478 с.
4. Скворцов А.В., Костюк Ю.Л. Применение триангуляции для решения задач вычислительной геометрии. Изд-во Томск: ТГУ, 2002. 128 с.
5. Скворцов А.В., Костюк Ю.Л. Эффективные алгоритмы построения триангуляции Делоне. Геоинформатика. Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. с. 22-47.
Summary
Vasiliev A. N., Gintner А. N. Two approaches to the solution of one classical problem of computational geometry
In this work consider problems of finding the largest empty circle and the smallest covering circle. The implementation of algorithms for solving these problems by using methods of computational geometry, in particular of Delaunay triangulation and its dual Voronoi diagram is discribed . In the work also performed numerical experiments and graphically presents results of problems.
Keywords: Voronoi diagram, the smallest covering circle, the largest empty circle, Delaunay triangulation.
Сыктывкарский государственный университет Поступила 10.10.2011