Автоматика и телемеханика, № 5, 2020
© 2020 г. И.Н. ЛУЩАКОВА, канд. физ.-мат. наук (IrinaLushchakova@yandex.ru)
(Белорусский государственный университет
информатики и радиоэлектроники, Минск)
ГЕОМЕТРИЧЕСКИЕ АЛГОРИТМЫ ОПРЕДЕЛЕНИЯ
ТОЧКИ В ПЕРЕСЕЧЕНИИ ШАРОВ
Рассматривается задача определения точки в пересечении n шаров в
евклидовом пространстве Em. Для случая m = 2 предлагаются два алго-
ритма сложности O(n2 log n) и O(n3) операций. Для общего случая пред-
лагается точный полиномиальный рекурсивный алгоритм, использующий
ортогональное преобразование пространства Em.
Ключевые слова: пересечение шаров, аппроксимация эллипсоидами вы-
пуклого множества, полиномиальный алгоритм, доставка с помощью дро-
нов, конфигурация роя дронов.
DOI: 10.31857/S0005231020050098
1. Введение
В [1] была сформулирована следующая задача. В m-мерном евклидовом
пространстве Em рассматривается множество n шаров. Каждый шар Bi,
1 ≤ i ≤ n, задается указанием его центра Oi и радиуса Ri. Необходимо опре-
делить, является ли пересечение n шаров непустым множеством, и в случае
положительного ответа найти точку из этого пересечения.
В [1] отмечается, что при m = 2 данная задача является математической
моделью для следующей практической задачи. На плоскости располагаются
n передающих станций различной мощности. Сигнал от станции i, располо-
женной в точке Oi, может быть получен на расстоянии, не превышающем Ri
единиц измерения. Необходимо определить, можно ли найти место для строи-
тельства принимающей станции (принимая во внимание только характери-
стики дальности распространения сигналов от передающих станций) таким
образом, чтобы принимающая станция могла получать сигналы от всех пе-
редающих станций. Такая техническая интерпретация может быть обобщена
и на случай трехмерного пространства (m = 3), когда в модели учитывается
высота расположения передающих и принимающей станций. Кроме того, в
трехмерном случае рассматриваемой задаче можно придать различные ин-
терпретации в контексте актуального направления, связанного с использова-
нием непилотируемых летательных аппаратов (дронов) [2]. Например, жите-
ли небольших поселений, расположенных в труднодоступной гористой мест-
ности, могут использовать дроны для доставки лекарств, различных мелких
товаров и почтовых пакетов. Стартовая площадка для дрона в населенном
пункте i находится в точке Oi. С учетом технических характеристик дрон,
которым владеют жители поселка i, может без дозарядки преодолеть расстоя-
ние, не превышающее 2Ri единиц измерения (туда и обратно). Необходимо
139
определить координаты точки зависания воздушного транспортного средства
(вертолета, дирижабля), используемого в качестве склада товаров, таким об-
разом, чтобы этот склад был достижим для дронов каждого поселка. Ана-
логичная постановка может быть рассмотрена и при планировании доставки
с помощью дронов лекарств, медицинских приборов, расходных материалов
и т.д. различным бригадам спасателей в районах стихийных бедствий или
широкомасштабных катастроф. При этом постоянно меняющаяся обстановка
может потребовать многократного эффективного решения задачи определе-
ния координат точки зависания воздушного транспортного средства-склада,
достижимого для дронов всех бригад спасателей.
В [1] предлагаются два подхода к решению рассматриваемой задачи в об-
щем m-мерном случае. Первый подход связан с задачей минимизации линей-
ной функции с квадратичными ограничениями. Второй подход основан на
известном методе эллипсоидов (см., например, [3]). Следует отметить, что
рассматриваемую задачу можно отнести к широкому классу задач аппрок-
симации эллипсоидами выпуклого множества в пространстве Em [4]. Этот
класс задач подразделяется на задачи внутренней и внешней аппроксима-
ции. Решение рассматриваемой задачи может быть получено из решения
следующей задачи внутренней аппроксимации: найти эллипсоид наибольше-
го объема, содержащийся в пересечении n заданных эллипсоидов, если это
пересечение непусто (естественно, для решения интересующей задачи надо
рассматривать частный случай, в формулировке которого эллипсоиды заме-
няются на шары). В [4] демонстрируется, что последняя задача может быть
сведена к задаче выпуклого программирования. Аналогичная задача внеш-
ней аппроксимации может быть сформулирована следующим образом: найти
эллипсоид наименьшего объема, содержащий пересечение заданных эллип-
соидов, если это пересечение непусто. Однако (в отличие от указанной выше
задачи внутренней аппроксимации) данная задача внешней аппроксимации
является NP-трудной [4]. В [5] рассматривается ее частный случай: найти
шар наименьшего радиуса, содержащий пересечение заданных n шаров. В [5]
показано, что если пересечение заданных шаров непусто и n ≤ m - 1, то за-
дача нахождения шара наименьшего радиуса может быть решена с помощью
задачи минимизации выпуклой квадратичной функции.
Следует отметить, что все ранее предложенные подходы к рассмотренным
задачам с теоретической точки зрения являются полиномиальными. Однако
их реализация на практике либо может оказаться не очень эффективной,
особенно при больших значениях n (см., например, комментарий в [6], ка-
сающийся алгоритма эллипсоидов), либо затруднена в связи с достаточно аб-
страктным характером используемых конструкций (см., например, в [4] све-
дение задачи нахождения эллипсоида наибольшего объема, содержащегося
в пересечении заданных эллипсоидов, к задаче выпуклого программирова-
ния). В данной статье представлен альтернативный геометрический подход
к задаче нахождения точки в пересечении n шаров из пространства Em, ре-
зультатом которого явилась разработка точных полиномиальных алгоритмов
ее решения. Предлагаемый подход использует известный аппарат линейной
алгебры и аналитической геометрии.
140
Статья организована следующим образом. В разделе 2 описаны два ал-
горитма решения задачи для случая m = 2. Более специфический алго-
ритм BALLS1 имеет вычислительную сложность O(n2 log n) операций. Ал-
горитм BALLS2 проще по своей структуре, но имеет более высокую слож-
ность O(n3) операций. В разделе 3 рассматривается общий m-мерный слу-
чай, для которого разработан рекурсивный алгоритм BALLS3(m, n). В про-
цессе работы алгоритм BALLS3(m, n) использует либо алгоритм BALLS1,
либо алгоритм BALLS2, отчего зависит его вычислительная сложность
O(n2m-4(nm2 + m3 + n2 log n)) или O(n2m-4(nm2 + m3 + n3)) операций. За-
ключительные замечания представлены в разделе 4.
2. Алгоритмы определения точки в пересечении кругов
Несмотря на то, что в данном разделе будут описаны алгоритмы опреде-
ления точки в пересечении кругов на плоскости, для построения первого ал-
горитма необходимо точки на плоскости трактовать как точки в трехмерном
пространстве с нулевой третьей координатой. Поэтому введем в рассмотрение
декартову прямоугольную систему координат (O;i,j,k).
Пусть на плоскости Oxy имеется n кругов. Каждый круг Bi, 1 ≤ i ≤ n,
задается указанием его центра Oi(xi, yi, 0) и радиуса ri. Границей круга Bi
является окружность Ci, определяемая уравнением (x - xi)2 + (y - yi)2 = r2i.
Занумеруем круги Bi, 1 ≤ i ≤ n, в порядке невозрастания их радиусов: r1
≥r2 ≥...≥rn.
2.1. Предварительная обработка
Вначале проверим, пересекаются ли заданные круги попарно. Для каждой
пары кругов Bi и Bj, 1 ≤ i ≤ n - 1, i < j ≤ n, вычислим расстояние dij между
их центрами.
Если dij > ri + rj, то круги Bi и Bj не пересекаются, следовательно, задача
не имеет решения.
Если dij ≤ ri - rj, то круг Bj находится внутри круга Bi. Поэтому можно
удалить из дальнейшего рассмотрения круг Bi и решать задачу для n - 1
круга.
Если dij = ri + rj , то круги Bi и Bj имеют единственную общую точку M -
---→
точку касания их границ Ci и Cj . Найдем вектор
OiOj и нормируем его.
−-→
Пустьeij - это орт вектораOiOj. От точки Oi отложим вектор rie
ij, получим
точку M - точку касания кругов Bi и Bj. Остается проверить, принадлежит
ли точка M всем остальным кругам. Если да, то найденная точка M является
решением задачи. В противном случае задача не имеет решения.
2.2. Основная часть алгоритма BALLS1
В дальнейшем изложении будем без ограничения общности считать, что
для любой пары кругов Bi и Bj, 1 ≤ i ≤ n - 1, i < j ≤ n, выполняется нера-
венство ri - rj < dij < ri + rj . Это означает, что окружности Ci и Cj пересе-
каются в двух точках.
141
(1)
M
Bi
Bj
(2)
Mij
Рис. 1. Пересечение кругов Bi и Bj .
Зафиксируем одну из окружностей, например окружность Ci, и найдем
точки пересечения ее с какой-либо другой окружностью Cj, i = j. Для этого
решим систему уравнений:
{
(x - xi)2 + (y - yi)2 = r2i,
(1)
(x - xj)2 + (y - yj )2 = r2j.
Вычитая первое уравнение системы (1) из второго, получим уравнение ви-
да fx + gy + h = 0, задающее прямую, проходящую через точки пересечения
окружностей Ci и Cj. Выражая y из уравнения fx + gy + h = 0 и подстав-
ляя его в первое уравнение системы (1), получим квадратное уравнение вида
ax2 + bx + c = 0, которое имеет два различных действительных корня x(1)ij
и x(2)ij . Из уравнения fx + gy + h = 0 получим соответствующие значения y(1)ij
и y(2)ij и тем самым определим точки M(1)ij(x(1)ij,y(1)ij,0) и M(2)ij(x(2)ij,y(2)ij,0) пе-
ресечения окружностей Ci и Cj. Отметим, что круги Bi и Bj гарантированно
будут иметь общий отрезок [M(1)ij, M(2)ij] (см. рис. 1).
Точки M(1)ij и M(2)ij разбивают окружность Ci на две дуги. В дальнейшем
представляет интерес только та дуга, которая находится внутри круга Bj . До-
говоримся, что движение вдоль выбранной дуги будет осуществляться против
часовой стрелки. Тем самым одна из точек M(1)ij , M(2)ij будет выбрана в ка-
честве начальной точки пути, а другая в качестве конечной. Рассмотрим
------→
---→
тройку некомпланарных векторов
OiOj, M(1)ijM(2)ij,k и найдем их смешан-
------→
---→
−-→
ное произведение. Если (OiOj,M(1)ijM(2)ij,k) > 0, т.е. тройка векторовOiOj,
−-----→
M(1)ijM(2)ij,k
правая, то точка M(1)ij будет начальной точкой пути (покра-
сим ее белым цветом), а точка M(2)ij будет конечной точкой пути (покрасим ее
------→
---→
−-→
черным цветом). Если же (OiOj,M(1)ijM(2)ij,k) < 0, т.е. тройка векторовOiOj,
−-----→
M(1)ijM(2)ij,k
левая, то точка M(2)ij будет начальной точкой пути (покрасим
ее белым цветом), а точка M(1)ij будет конечной точкой пути (покрасим ее чер-
ным цветом). Указание начальной (белой) и конечной (черной) точек пути
142
Рис. 2. Ситуации взаимного расположения трех кругов.
при договоренности о направлении обхода против часовой стрелки полностью
определяет дугу окружности Ci, находящуюся внутри круга Bj. Обозначим
такую дугу через Lij и назовем ее подходящей дугой окружности Ci для
круга Bj.
Рассмотрим последовательно все круги Bj, 1 ≤ j ≤ n, j = i, и найдем мно-
жество всех подходящих дуг Lij окружности Ci. Если пересечение Li всех⋂
подходящих дуг непусто, т.е. Li =
Lij = ∅, то дуга Li окружно-
1≤j≤n,j=i
сти Ci будет находиться внутри каждого круга Bj , 1 ≤ j ≤ n, j = i. Кроме
того, хорда, соединяющая концы дуги Li, будет находиться внутри пересече-
ния всех кругов Bj , 1 ≤ j ≤ n. Отметим, что дуга Li является частью границы
области пересечения всех кругов. Если же пересечение всех подходящих дуг⋂
пусто, т.е. Li =
Lij = ∅, то либо никакая часть границы области
1≤j≤n,j=i
пересечения всех кругов не принадлежит окружности Ci (т.е. пересечение
всех кругов находится внутри открытого круга Bi \ Ci), либо пересечение
всех кругов пусто. Если пересечение всех кругов находится внутри откры-
того круга Bi \ Ci, то найдется другой круг, например круг Bk, k = i, такой
что часть границы области пересечения всех кругов является некоторой ду-
гой Lk окружности Ck. Перебирая последовательно все круги Bi, 1 ≤ i ≤ n,
либо найдем такой круг Bk, либо придем к выводу, что пересечение всех
кругов пусто.
Рассмотрим все возможные типичные ситуации взаимного расположения
кругов на примере трех кругов (см. рис. 2).
1. Дуга L1 окружности C1 является пересечением подходящих дуг L12 и
L13, при этом дуга L1 является частью границы области пересечения кругов
B1, B2 и B3.
2. Граница области пересечения кругов B1, B2 и B3 не содержит какой-
либо дуги окружности C1. При этом граница области пересечения всех кругов
состоит из дуг L2 и L3 окружностей C2 и C3.
3. Пересечение попарно пересекающихся кругов B1, B2 и B3 пусто.
Рассмотрим вопрос об эффективном определении пересечения Li =
=
Lij всех подходящих дуг окружности Ci, 1 ≤ i ≤ n.
1≤j≤n,j=i
Каждая подходящая дуга Lij определяется заданием точек M(1)ij(x(1)ij, y(1)ij, 0)
и M(2)ij(x(2)ij,y(2)ij,0) пересечения окружностей Ci и Cj и указанием, какая
143
из этих точек является начальной, а какая
конечной точкой пути. По-
ставим в соответствие каждой точке M(l)ij(x(l)ij, y(l)ij, 0), 1 ≤ l ≤ 2, элемент
φ(l)ij(x(l)ij,y(l)ij(l)ij). Индикатор α(l)ij указывает, в какой цвет покрашена точ-
ка M(l)ij. Если M(l)ij покрашена в черный цвет, то полагаем α(l)ij = 1, в против-
ном случае α(l)ij = 0. Таким образом, каждая подходящая дуга определяется
заданием двух элементов φ(1)ij и φ(2)ij.
Пусть для окружности Ci найдено множество всех элементов φ(l)ij, 1 ≤ l ≤ 2,
1 ≤ j ≤ n, j = i. Разобьем множество элементов φ(l)ij на два подмножества.
Если y(l)ij < 0, то отнесем элемент φ(l)ij(x(l)ij, y(l)ij, α(l)ij) ко множеству N1, а ес-
ли y(l)ij ≥ 0, то отнесем φ(l)ij ко множеству N2. Таким образом, множество N1
(множество N2) элементов φ(l)ij задает множество точек M(l)ij окружности Ci,
которым можно поставить во взаимно однозначное соответствие их проекции
на ось Ox (естественно, совпадающие точки M(l)ij проектируются в одинако-
вые точки на оси Ox).
Упорядочим множество N1 элементов φ(l)ij по неубыванию x(l)ij, а множе-
ство N2
по невозрастанию x(l)ij. Полученные последовательности элемен-
тов φ(l)ij обозначим соответственно как π1 и π2. Составим последовательность
π = (π12), которая представляет собой перечисление начальных и конечных
точек подходящих дуг Lij в процессе обхода окружности Ci против часовой
стрелки. Занумеруем элементы последовательности π, обозначив их через
ψk(xk,ykk), т.е. π = (ψ12,... ,ψ2n-2).
Просматривая последовательность π слева направо, выделим в ней подпо-
следовательности элементов, соответствующих совпадающим точкам окруж-
ности Ci, если такие существуют. Пусть π = (ψk, ψk+1, . . . , ψk+t) одна из
таких подпоследовательностей. У всех элементов ψp(xp, yp, αp) подпоследо-
вательности π одинаковые значения xp и одинаковые значения yp, а вот ин-
дикаторы αp у них могут быть разные. Разобьем элементы π на две подпо-
следовательности: к подпоследовательности π отнесем все элементы, у кото-
рых αp = 0, остальные элементы отнесем к подпоследовательности π′′ (у них
αp = 1). Если у элемента ψk-1, предшествующего подпоследовательности π
в последовательности π, индикатор αk-1 = 0, то в последовательности π за-
меним подпоследовательность π подпоследовательностью (π, π′′). Если же
αk-1 = 1, то заменим в π подпоследовательность π подпоследовательностью
′′, π). Аналогичные действия проделаем со всеми подпоследовательностя-
ми элементов, соответствующих совпадающим точкам окружности Ci. Такие
построения выполняются с целью минимизации количества переключений
индикатора αk в процессе перечисления начальных и конечных точек подхо-
дящих дуг Lij при обходе окружности Ci.
Перенумеруем элементы преобразованной последовательности π в соот-
ветствии с их расположением. Если у соседних элементов ψk(xk, yk, αk)
и ψk+1(xk+1,yk+1k+1), 1 ≤ k ≤ 2n - 3, последовательности π имеем αk =
144
(1)
M1
2
B3
(2)
M
13
B2
B1
(2)
M1
2
(1)
M1
3
Рис. 3. Граница области пересечения кругов содержит две дуги окружности C1.
= αk+1, то назовем эту ситуацию переключением индикатора. Просматривая
слева направо последовательность π, подсчитаем у нее количество ρ пере-
ключений индикатора.
Лемма 1. Пусть последовательность π элементов ψk(xk,ykk), 1 ≤
≤ k ≤ 2n - 2, соответствующих начальным и конечным точкам подходя-
щих дуг окружности Ci, построена по правилам, описанным выше. Тогда
если 1 ≤ ρ ≤ 2, то пересечение Li всех подходящих дуг окружности Ci непу-⋂
сто, т.е. Li =
Lij = ∅.
1≤j≤n,j=i
В Приложении приводится конструктивное доказательство леммы 1, в⋂
процессе которого показано, как найти дугу Li =
Lij = ∅, а зна-
1≤j≤n,j=i
чит, решить задачу, поскольку любая точка на дуге Li, а также любая точка,
принадлежащая хорде, соединяющей концы Li, принадлежит пересечению
всех кругов.
Отметим, что если ρ ≥ 3, то, как показывает следующий пример, никакого⋂
вывода о существовании непустого пересечения Li =
Lij подходя-
1≤j≤n,j=i
щих дуг окружности Ci сделать нельзя.
Пример 1. Пусть задана последовательность индикаторов
(0, 1, 0, 1).
Для этой последовательности количество переключений индикатора ρ = 3.
На рис. 2,б и рис. 2,в изображены две возможные ситуации. Для каждой из
этих ситуаций пересечение подходящих дуг окружности C1 пусто. На рис. 3
изображена третья возможная ситуация, когда пересечение подходящих дуг
окружности C1 состоит из двух дуг ⌣ M(1)12M(2)13 и ⌣ M(1)13M(2)12. Заметим, что
при этом градусная мера по крайней мере одной из дуг L12 и L13 больше 180.
Лемма 2. Градусная мера подходящей дуги Lij окружности Ci больше
180 только в том случае, если ее радиус ri меньше радиуса rj окружно-
сти Cj, j = i.
Следствие 1. Если радиус ri окружности Ci больше радиусов всех⋂
остальных окружностей Cj, j = i, и ρ ≥ 3, то Li =
Lij = ∅.
1≤j≤n,j=i
Напомним, что все круги Bi, 1 ≤ i ≤ n, занумерованы в порядке невоз-
растания их радиусов: r1 ≥ r2 ≥ . . . ≥ rn. Рассмотрим круг B1 и определим
для окружности C1 количество ρ переключений индикатора. В соответствии
с леммой 1 и следствием 1 для окружности C1, имеющей наибольший радиус,
в зависимости от значения ρ можно сделать вывод, имеет ли место ситуация
L1 = ∅.
145
Предположим, исследовали окружность C1 и пришли к выводу, что L1 = ∅.
Если при этом пересечение всех кругов непустое множество, то оно нахо-
дится внутри открытого круга B1 \ C1. Временно удаляем круг B1 и перехо-
дим к рассмотрению круга B2, т.е. круга со следующим по величине радиу-
сом. Процесс продолжаем до тех пор, пока не найдем круг Bk такой, что для⋂
окружности Ck имеем Lk =k<j≤n Lkj = ∅. Пусть Mkp и Mkq начальная и
конечная точки дуги Lk окружности Ck. По построению точка Mkp (и вообще
любая точка дуги Lk и любая точка хорды, соединяющей ее концы) принад-
лежит всем кругам Bk, Bk+1, . . . , Bn. Остается проверить, принадлежит ли
точка Mkp (либо какая-то из указанных точек) кругам B1, . . . , Bk-1. Если
да, то проверяемая точка искомая. В противном случае задача не имеет
решения.
Ниже приводится формальное описание алгоритма.
Алгоритм 1. BALLS1
Вход: Круги B1, . . . , Bn, заданные указанием их центров Oi(xi, yi, 0) и ра-
диусов ri, i = 1, n.
Выход: Общая точка для всех кругов B1, . . . , Bn либо ответ, что задача не
имеет решения.
1. Занумеровать круги B1, . . . , Bn таким образом, что r1 ≥ r2 ≥ . . . ≥ rn.
2. FOR i = 1 to n DO
3. N1 = ∅, N2 = ∅.
4.
FOR j = i + 1 to n DO
5.
Для окружностей Ci и Cj найти их точки пересечения
M(1)ij(x(1)ij,y(1)ij,0) и M(2)ij(x(2)ij,y(2)ij,0), решив систему (1).
------→
---→
6.
IF (
OiOj,M(1)ijM(2)ij,k) > 0 THEN полагаем α(l)ij = 0, α(2)ij = 1
(для дуги Lij точка M(1)ij начальная, а M(2)ij конечная)
ELSE полагаем α(l)ij = 1, α(2)ij = 0 (для дуги Lij точка M(2)ij
начальная, а M(1)ij конечная).
7.
FOR l = 1 to 2 DO
8.
Создать элемент φ(l)ij(x(l)ij, y(l)ij, α(l)ij).
9.
IF y(l)ij < 0 THEN N1 = N1 ∪ {φ(l)ij} ELSE N2 = N2 ∪ {φ(l)ij}.
END FOR l
END FOR j
10. Упорядочить множество N1 элементов φ(l)ij(x(l)ij, y(l)ij, α(l)ij) по неубыва-
нию x(l)ij, а множество N2 по невозрастанию x(l)ij. Обозначить полу-
ченные последовательности π1 и π2 соответственно.
11. Составить последовательность π = (π1, π2). Найти в последователь-
ности π подпоследовательности элементов, соответствующих совпа-
дающим точкам, и переупорядочить их (см. выше описание процесса
переупорядочивания).
12. Просматривая слева направо последовательность π, определить ко-
личество ρ переключений индикатора.
146
13. IF 1 ≤ ρ ≤ 2, THEN определить дугу Li =
Lij = ∅ (см.
1≤j≤n,j=i
доказательство леммы 1), положить k = i и перейти на шаг 15.
END FOR i
14. Перейти на шаг 19.
15. Определить Mkp и Mkq-начальную и конечную точки дуги Lk окруж-
ности Ck.
16. FOR i = 1 to k - 1 DO
17. IF Mkp ∈ Bi, THEN перейти на шаг 19.
END FOR i
18. Точка Mkp решение задачи. Стоп.
19. Задача не имеет решения. Стоп.
Упорядочение множеств N1 и N2 (шаг 10) представляет собой наиболее
трудоемкую операцию, входящую в цикл по i (шаги 2-13). Общая вычисли-
тельная сложность алгоритма составляет O(n2 log n) операций.
2.3. Основная часть алгоритма BALLS2
Каждый круг Bi, 1 ≤ i ≤ n, представляет собой выпуклое множество то-
чек. Известно, что пересечение конечного числа выпуклых множеств есть вы-
пуклое множество (см., например, [6]). Граница области пересечения n кругов
состоит из дуг некоторых из окружностей Ci, 1 ≤ i ≤ n. Пересечение кругов
фактически является выпуклой комбинацией (см. [6]) точек своей границы.
Среди всех граничных точек области пересечения кругов в первую очередь
представляют интерес точки стыковки дуг окружностей. Используя выпук-
лые комбинации этих точек, при необходимости можно будет найти и другие
точки пересечения кругов.
Алгоритм просматривает все пары окружностей Ci и Cj , 1 ≤ i, j ≤ n, i = j,
определяет их точки пересечения M(1)ij и M(2)ij и проверяет, принадлежит ли
хотя бы одна из них всем остальным кругам Bk, 1 ≤ k ≤ n, k = i, j. В случае
положительного ответа найденная точка (например, M(1)ij) решение задачи.
Если пересечение кругов не является пустым множеством, то граница об-
ласти пересечения содержит не менее двух дуг (с учетом предварительной
обработки), а значит, и не менее двух точек стыковки дуг. Поэтому перебрав
точки пересечения всех пар окружностей Ci и Cj , 1 ≤ i, j ≤ n, i = j, алгоритм
определит искомую точку.
Ниже приводится формальное описание алгоритма.
Алгоритм 2. BALLS2
Вход: Круги B1, . . . , Bn, заданные указанием их центров Oi(xi, yi, 0) и ра-
диусов ri, i = 1, n.
Выход: Общая точка для всех кругов B1, . . . , Bn либо ответ, что задача не
имеет решения.
1. FOR i = 1 to n - 1 DO
2.
FOR j = i + 1 to n DO
3.
Для окружностей Ci и Cj найти их точки пересечения M(1)ij и M(2)ij.
147
4.
l=1
5.
FOR k = 1 to n, k = i, k = j DO
6.
IF M(l)ij ∈ Bk, THEN перейти на шаг 8.
END FOR k
7.
Точка M(l)ij решение задачи. Стоп.
8.
l=l+1
9.
IF l ≤ 2, THEN перейти на шаг 5.
END FOR j
END FOR i
10. Задача не имеет решения. Стоп.
Цикл по переменной i содержит вложенный цикл по переменной j, кото-
рый в свою очередь содержит цикл по переменной k. Следовательно, общая
вычислительная сложность алгоритма составляет O(n3) операций.
3. Определение точки в пересечении шаров в пространстве Em
Пусть в m-мерном аффинном евклидовом пространстве Em задана декар-
това прямоугольная система координат (O,
e
m), где
e
m орто-
нормированный базис. Имеется n шаров. Каждый m-мерный шар Bi, i = 1, n,
задается указанием его центра Oi(x(i)1, . . . , xmi)) и радиуса Ri. Границей ша-
ра Bi является m-мерная сфера Si, определяемая уравнением (x1 - x(i)1)2+
... + (xm - xmi))2 = R2i. Предварительная обработка, т.е. проверка, пересека-
ются ли заданные шары попарно, проводится аналогично тому, как это было
проделано для случая m = 2 (см. раздел 2.1) с учетом, что в аффинном евкли-
довом пространстве Em расстояние между двумя точками Oi(x(i)1, . . . , xmi)) и
Oj(x(j)1,... ,xmj)) определяется по формуле
dij = (x(i)1 - x(j)1)2 + ... + (xmi) - xmj))2.
В дальнейшем будем без ограничения общности считать, что для любой пары
шаров Bi и Bj такой, что Ri ≥ Rj, выполняется неравенство Ri - Rj < dij <
< Ri + Rj, где dij расстояние между их центрами Oi и Oj. Это означает, что
m-мерные сферы Si и Sj пересекаются по “окружности” (т.е. по (m - 1)-мер-
ной сфере) Cij.
Зафиксируем две сферы Si и Sj с центрами в точках Oi(x(i)1, . . . , xmi)) и
Oj(x(j)1,... ,xmj)) соответственно и рассмотрим систему уравнений
(x1 - x(i)1)2 + ... + (xm - xmi))2 = R2i,
(2)
(x1 - x(j)1)2 + . . . + (xm - xmj))2 = R2j.
С геометрической точки зрения ее решение представляет собой (m - 1)-мер-
ную сферу (окружность при m - 1 = 2) Cij , по которой пересекаются m-мер-
148
ные сферы Si и Sj. Вычитая первое уравнение системы (2) из второго, полу-
чим уравнение вида
(3)
α1x1 + ... + αmxm
+ β = 0,
которое представляет собой уравнение гиперплоскости в аффинном про-
странстве Em. Гиперплоскость (3) как бы отрезает от шаров Bi и Bj части, из
которых состоит их область пересечения, причем (m - 1)-мерная сфера Cij
лежит в этой гиперплоскости и является границей “срезов” шаров Bi и Bj.
“Срезы” шаров Bi и Bj, т.е. (m - 1)-мерные шары (круги при m - 1 = 2) с гра-
ницей Cij , склеены по гиперплоскости (3). В пространстве Em (m - 1)-мер-
ный шар с границей Cij является аналогом хорды, соединяющей точки пере-
сечения двух окружностей (в случае m = 2).
С помощью некоторого ортогонального преобразования декартовой систе-
мы координат (некоторого поворота системы координат вокруг ее начала
в случае m = 3) уравнение (3) можно привести к виду xm = x, где x
константа. Подставляя xm = x в уравнение (x1 - x(i)1)2 + . . . + (xm - xmi))2 =
= R2i (первое уравнение системы (2)), получаем каноническое уравнение
(m - 1)-мерной сферы Cij . Покажем, как построить матрицу T такого ор-
тогонального преобразования (оператора).
Просматривая коэффициенты α1, . . . , αm уравнения (3), найдем коэффи-
циент αl = 0. Зададим координаты xi, i = 1, m, i = l точек P0, P1, . . . , Pm-1,
принадлежащих гиперплоскости (3), в соответствии со следующей таблицей:
x1
x2
xl
... xm
P0
0
0
x(0)l
0
P1
1
0
x(1)l
0
P2
0
1
x(2)l
0
Pm-1
0
0
x(m-1)l ...
1
Координата xl каждой из этих точек находится из уравнения (3).
---→
-----→
Система векторо
f1 =
P0P1, ...
fm-1 =
P0Pm-1 линейно независима, при-
чем каждый из этих векторов ортогонален вектор
fm = (α1,... ,αm). Таким
образом, система векторов
f1,...
fm может служить базисом в простран-
стве Em. Для системы векторо
f1,..
fm выполним процесс ортогонализа-
ции:
f1
h1 =
;
|
f1 |
gi
gi
fi -
fi,h1)h1 - ... -
fi,hi-1)hi-1,hi =
,
i = 2,...,m - 1;
|gi |
fm
hm =
|
fm |
149
В итоге получили ортонормированный базис h1, . . . ,hm. Составим матри-
цу T перехода от исходного ортонормированного базиса e1, . . . , em к базису
h1,... ,hm, записав в столбцы матрицы T координаты векторовh1,... ,hm в
базисе e1, . . . , em. Матрица T также является матрицей ортогонального опе-
ратора, переводящего гиперплоскость (3) в гиперплоскость вида xm = x.
Пересчитаем координаты центров Ok шаров Bk, k = 1, n, по формуле
X (k)=T -1X(k),
(4)
где X(k) = (x(k)1, . . . , xmk))T
вектор-столбец координат точки Ok в базисе
X (k)=(x(k)
e1,... ,em, а
,...,xmk))T
вектор-столбец ее координат в базисе
1
h1,... ,hm.
Для сфер Si и Sj рассмотрим систему уравнений (2) с новыми координа-
тами их центров Oi и Oj . Вычитая первое уравнение системы (2) из второго,
получим уравнение xm = x.
Далее, для каждой сферы Sk, k = 1, n, k = j, рассмотрим ее уравнение
(5)
(x1 - x(k)1)2 + . . . + (xm - x(k)m)2 = R2k
и подставим в него xm = x. Если R2k - (x - xmk))2 ≥ 0, то полагаем
(6)
r2k = R2k - (x - x(k)m)2.
Это будет означать, что m-мерная сфера Sk пересекается с плоскостью
xm = x и в результате получается (m - 1)-мерная сфера (окружность при
m - 1 = 2), задаваемая уравнением
(x1 - x(k)1)2 + . . . + (xm-1 - x(k)m-1)2 = r2k.
Если все сферы Sk (а значит, и все шары Bk), k = 1, n, k = j, пересекаются
с гиперплоскостью xm = x, то на данном этапе задача сводится к определе-
нию точки в пересечении множества n - 1 шаров в пространстве Em-1. Если
такая точка M0(x01, . . . , x0m-1, x) будет найдена, то остается только пересчи-
тать ее координаты в соответствии со следующей формулой:
(7)
X0 = TX0,
где
X0 =(x01,...,x0m-1,x)T
координаты точки M0 в базисеh1, . . . ,hm, а
X0 = (x01,... ,x0m)T
ее координаты в исходном базисе e1, . . . , em. Форму-
ла (7) задает преобразование координат, обратное преобразованию, опреде-
ляемому формулой (4).
Если же полученное на данном этапе множество n - 1 шаров из простран-
ства Em-1, определяемого гиперплоскостью xm = x, не пересекается, то пе-
реходим к следующему этапу алгоритма, т.е. к рассмотрению следующей
фиксированной пары сфер Si и Sj . Переход к следующему этапу алгоритма
150
осуществляется и в случае, когда не все сферы Sk, k = 1, n, k = j, пересека-
ются с гиперплоскостью xm = x, т.е. если для некоторой сферы Sk имеем
R2k - (x - xmk))2 < 0.
Вообще, если пересечение шаров не является пустым множеством, то гра-
ница области пересечения состоит из частей некоторых ограничивающих их
сфер (с учетом предварительной обработки таких сфер будет не менее двух).
Гиперплоскости, по которым стыкуются части сфер, ограничивающих об-
ласть пересечения шаров, проходят через область пересечения шаров. Пе-
ребирая все такие гиперплоскости (т.е. все пары m-мерных сфер Si и Sj,
1 ≤ i,j ≤ n, i = j) найдем гиперплоскость, содержащую искомую точку.
Ниже приводится краткое формальное описание рассмотренных выше ос-
новных этапов рекурсивного алгоритма BALLS3(m, n), решающего задачу в
пространстве Em, где m ≥ 3.
Алгоритм 3. BALLS3(m,n)
Вход: m-мерные шары B(m)1, . . . , Bnm), заданные указанием их центров
O(m)i(x(i)1,... ,xmi)) и радиусов R(m)i,i = 1,n.
Выход: Общая точка для всех шаров B(m)1, . . . , Bnm) либо ответ, что задача
не имеет решения.
1. Выполнить предварительную обработку.
2. FOR i = 1 to n - 1 DO
3. j = 2.
4.
FOR j ≤ n DO
5.
Из системы (2) определить гиперплоскость α1x1 +. . .+αmxm +β = 0,
содержащую пересечение сфер S(m)i и S(m)j.
6.
Построить матрицу T ортогонального преобразования, переводящего
гиперплоскость α1x1 + . . . + αmxm + β = 0 в гиперплоскость xm = x.
7.
Найти матрицу T-1.
8.
Ортогональное преобразование: для всех шаров B(m)k, k = 1, n, k = i,
пересчитать координаты их центров O(m)k по формуле (4).
9.
Из системы (2) уравнений сфер с новыми координатами их центров
определить плоскость xm = x, содержащую пересечение сфер S(m)i
и S(m)j.
10.
FOR k = 1 to n, k = j DO
11.
IF гиперплоскость xm = x не пересекает сферу S(m)k
THEN перейти на шаг 14
ELSE для (m - 1)-мерного шара B(m-1)k определить его радиус
R(m-1)k = rk по формуле (6) и центр O(m-1)k (отбрасывая
последнюю координату у точки O(m)k).
END FOR k
12.
IF m > 3 THEN для множества шаров B(m-1)k, 1 ≤ k ≤ n, k = j,
выполнить BALLS3(m - 1, n - 1)
ELSE выполнить для этого множества шаров BALLS1 или BALLS2.
13.
IF найдена точка M0(x01, . . . , x0m-1, x) в пересечении (m-1)-мерных
151
шаров B(m-1)k, 1 ≤ k ≤ n, k = j THEN обратное ортогональное
преобразование: пересчитать координаты точки M0 по формуле (7)
и стоп.
14.
Положить j = j + 1 и перейти на шаг 4.
END FOR j
END FOR i
15. Задача не имеет решения. Стоп.
Оценим вычислительную сложность алгоритма BALLS3(m, n). В про-
странстве Em расстояние dij между двумя точками Oi и Oj может быть
вычислено за O(m) операций. Поэтому предварительная обработка (шаг 1)
требует O(n2m) операций. Шаги 5 и 9 выполняются за O(m) операций.
Построение системы векторо
f1,...
fm может быть выполнено за O(m2)
операций (см. таблицу), а процесс ортогонализации системы векторов за
O(m3) операций (с учетом того, что скалярное произведение двух векторов
вычисляется за O(m) операций). Следовательно, матрица T , столбцами кото-
рой являются координаты ортонормированной системы векторовh1, . . .hm,
может быть построена за O(m3) операций (шаг 6). Обратная матрица T-1
может быть построена за O(m2) операций (шаг 7) с помощью следующе-
го известного метода, основанного на методе Гаусса. К расширенной матри-
це [T |Im], где Im единичная матрица порядка m, применяются элементар-
ные преобразования над строками, приводящие эту матрицу к виду [Im|C].
В итоге получается матрица T-1 = C.
Вычисление координат точки в новом базисе по формуле (4) может быть
выполнено за O(m2) операций. Следовательно, шаг 8 выполняется за O(nm2)
операций. Цикл по k (шаги 10-11) выполняется за O(n) операций. Пересчет
координат точки M0 по формуле (7) (шаг 13) выполняется за O(m2) операций.
С учетом двух основных циклов по i (шаги 2-14) и по j (шаги 4-14)
общая вычислительная сложность T (m, n) алгоритма BALLS3(m, n) может
быть выражена следующим рекуррентным уравнением:
(8)
T (m, n) = O(n3m2 + n2m3) + n2
T (m - 1, n - 1), m ≥ 3,
где T (2, n) = O(n2 log n), если используется алгоритм BALLS1, и T (2, n) =
= O(n3), если используется алгоритм BALLS2. Решение T (m,n) рекуррент-
ного уравнения (8) при m ≥ 3 не превосходит O(n2m-4(nm2 + m3 + T (2, n))).
Следовательно, в пространстве Em исходная задача может быть решена
за O(n2m-4(nm2 + m3 + n2 log n)) или O(n2m-4(nm2 + m3 + n3)) операций.
В частности, для трехмерного пространства сложность алгоритма составит
O(n4 log n) либо O(n5) операций.
4. Заключение
В статье предлагаются точные полиномиальные алгоритмы для опреде-
ления некоторой точки, принадлежащей пересечению n шаров в m-мерном
евклидовом пространстве. В практически значимых случаях m = 2 и m = 3
представленные алгоритмы могут быть использованы при разработке про-
граммного обеспечения в задачах управления различными динамическими
152
системами, включающими в себя множество дронов. Например, для заданной
конфигурации роя дронов необходимо определить местоположение управ-
ляющего дрона либо определить, возможно ли желаемое изменение конфигу-
рации без потери управления всеми дронами управляющим дроном. Другие
практические интерпретации рассматривались в разделе 1.
Отметим также, что можно выполнить небольшую модификацию пред-
ставленных алгоритмов таким образом, что будет найдена не одна точка,
принадлежащая пересечению шаров, а несколько таких точек (если это пе-
ресечение непусто и не состоит из единственной точки). Значит, возможно
определить и линейную комбинацию этих точек, целиком принадлежащую
области пересечения шаров. Заметим, что такая линейная комбинация угло-
вых точек границы области пересечения шаров не совпадает с множеством
точек шара наибольшего объема, содержащегося в области пересечения ша-
ров, который необходимо найти в задаче внутренней аппроксимации [4]. По-
этому предложенный в данной статье подход является альтернативным не
только по методу, но и по множеству получаемых решений, что предоставля-
ет дополнительные возможности при принятии решений.
ПРИЛОЖЕНИЕ
Доказательство леммы 1. 1. Пусть ρ = 1, т.е. последовательность
π имеет единственное переключение индикатора. Заметим, что в этом слу-
чае переключение индикатора произошло на элементе с номером n - 1, т.е.
αn-1 = αn. Возможны две ситуации.
а) αn-1 = 0, αn = 1. В этом случае последовательность π может быть
разбита на две подпоследовательности: π = (π(1), π(2)), где π(1) = (ψ1, ψ2,
...,ψn-1), π(2) = (ψnn+1,...,ψ2n-2). Все элементы подпоследовательно-
сти π(1) имеют нулевой индикатор, т.е. они соответствуют белым точкам на
окружности Ci (начальным точкам подходящих дуг). Все элементы подпо-
следовательности π(2) имеют индикатор 1, т.е. они соответствуют черным
точкам на окружности Ci (конечным точкам подходящих дуг). Любая под-
ходящая дуга Lij окружности Ci начинается в белой точке и заканчивается
в черной точке при договоренности, что движение вдоль дуги происходит
против часовой стрелки. Последовательность π соответствует перечислению
точек на окружности Ci в процессе обхода ее против часовой стрелки. По-
этому обходу любой дуги Lij от начальной до конечной точки соответствует
некоторая подпоследовательность (ψp, ψp+1, . . . , ψn-1, ψn, ψn+1, . . . , ψq) после-
довательности π, где (ψp, ψp+1, . . . , ψn-1) последовательность элементов с
индикатором 0, а (ψn, ψn+1, . . . , ψq)
последовательность элементов с ин-
дикатором 1. Заметим, что каковы бы ни были номера p и q, 1 ≤ p ≤ n - 1,
n ≤ q ≤ 2n - 2, в любую такую подпоследовательность обязательно войдут
элементы ψn-1 и ψn. Поэтому дуга Li, соединяющая точки окружности Ci,
соответствующие элементам ψn-1 (начальная точка) и ψn (конечная точка),⋂
будет содержаться в любой подходящей дуге Lij , т.е. Li =
Lij = ∅.
1≤j≤n,j=i
б) αn-1 = 1, αn = 0. В этом случае все элементы подпоследовательно-
сти π(1) имеют индикатор 1, а все элементы подпоследовательности π(2)
имеют индикатор 0. Обход окружности Ci против часовой стрелки может
быть осуществлен в порядке π = (π(2), π(1)) = (ψn, ψn+1, . . . , ψ2n-2, ψ1, ψ2, . . .
153
...,ψn-1). Тогда обходу любой подходящей дуги Lij от начальной до ко-
нечной точки соответствует некоторая подпоследовательность (ψp, ψp+1,
...,ψ2n-212,...,ψq) последовательности π, где (ψpp+1,...,ψ2n-2)
подпоследовательность элементов с индикатором 0, а (ψ1, ψ2, . . . , ψq) под-
последовательность элементов с индикатором 1. Каковы бы ни были номе-
ра p и q, n ≤ p ≤ 2n - 2, 1 ≤ q ≤ n - 1, в любую такую подпоследователь-
ность (ψp, ψp+1, . . . , ψ2n-2, ψ1, ψ2, . . . , ψq) обязательно войдут элементы ψ2n-2
и ψ1. Поэтому дуга Li, соединяющая точки окружности Ci, соответствую-
щие элементам ψ2n-2 и ψ1, будет содержаться в любой подходящей дуге, т.е.⋂
Li =
Lij = ∅.
1≤j≤n,j=i
2. Пусть ρ = 2, т.е. переключение индикатора происходит дважды: один
раз с 0 на 1, а другой раз с 1 на 0, причем порядок этих переключений может
быть произвольным. Следовательно, возможны две ситуации.
а) Пусть первое переключение индикатора присходит с 0 на 1 на элементе
с номером k, т.е. αk = 0, αk+1 = 1. В этом случае последовательность π может
быть разбита на три подпоследовательности: π = (π(1), π(2), π(3)), где π(1) =
= (ψ1, ψ2, . . . , ψk), π(2) = (ψk+1, ψk+2, . . . , ψk+n-1), π(3) = (ψk+n, ψk+n+1,
...,ψ2n-2), 1 ≤ k ≤ n - 2. Все элементы подпоследовательностей π(1) и π(3)
имеют индикатор 0, а все элементы подпоследовательности π(2) имеют ин-
дикатор 1. Обход окружности Ci против часовой стрелки может быть осу-
ществлен в порядке π = (π(3), π(1), π(2)). Тогда обходу любой подходящей
дуги Lij от начальной до конечной точек соответствует некоторая под-
последовательность (ψp,
kk+1,...,ψq), где (ψp,,...,ψk)
подпосле-
довательность элементов с индикатором 0, а (ψk+1, . . . , ψq)
подпосле-
довательность элементов с индикатором 1, k + n ≤ p ≤ 2n - 2, 1 ≤ p ≤ k,
k + 1 ≤ q ≤ k + n - 1, 1 ≤ k ≤ n - 2. В любую такую подпоследовательность
p, . . . , ψk, ψk+1, . . . , ψq) обязательно войдут элементы ψk и ψk+1. Поэтому
дуга Li, соединяющая точки, соответствующие элементам ψk и ψk+1, будет⋂
содержаться в любой подходящей дуге, т.е. Li =
Lij = ∅.
1≤j≤n,j=i
б) Пусть первое переключение индикатора происходит с 1 на 0 на элементе
с номером k, т.е. αk = 1, αk+1 = 0. Как и в случае 2а, последовательность π
может быть разбита на те же три подпоследовательности π = (π(1), π(2), π(3)).
Однако в данном случае все элементы подпоследовательностей π(1) и π(3)
имеют индикатор 1, а все элементы подпоследовательности π(2) имеют ин-
дикатор 0. Обход окружности Ci против часовой стрелки может быть осу-
ществлен в порядке π = (π(2), π(3), π(1)). Обходу любой подходящей дуги Lij
от начальной до конечной точек соответствует некоторая подпоследователь-
ность (ψp,
k+n-1k+n,... ,ψq), где (ψp,,... ,ψk+n-1)
подпоследова-
тельность элементов с индикатором 0, а (ψk+n, . . . , ψq)
подпоследова-
тельность элементов с индикатором 1, k + 1 ≤ p ≤ k + n - 1, k + n ≤ q ≤ 2n - 2,
1 ≤ q ≤ k, 1 ≤ k ≤ 2n - 2. В любую такую подпоследовательность (ψp,
...,ψk+n-1k+n,...,ψq) обязательно войдут элементы ψk+n-1 и ψk+n. По-
этому дуга Li, соединяющая точки, соответствующие элементам ψk+n-1 и⋂
ψk+n, будет содержаться в любой подходящей дуге, т.е. Li =
Lij =
1≤j≤n,j=i
= ∅.
Лемма 1 доказана.
154
Рис. 4.
Доказательство леммы 2. Пусть градусная мера подходящей ду-
ги Lij равна 2α > 180. Для определенности будем считать точку M(1)ij на-
чалом дуги Lij, а точку M(2)ij
ее концом. Градусная мера подходящей
дуги Lij равна сумме двух одинаковых тупых углов M(1)ijOiOj и M(2)ijOiOj
(см. рис. 4). Пусть d
это расстояние между центрами Oi и Oj окружно-
стей Ci и Cj . Тогда из треугольника M(1)ijOiOj по теореме косинусов имеем
r2j = r2i + d2 - 2ridcos α. Поскольку α тупой угол, то cos α < 0, следователь-
но, rj > ri, что и требовалось доказать.
СПИСОК ЛИТЕРАТУРЫ
1. Баркетов М.С. Полиномиальные методы определения точки в пересечении неко-
торого числа шаров // Танаевские чтения. Докл. Восьмой междунар. научн.
конф. 27-30 марта 2018 г. ОИПИ, Минск. 2018. С. 18-22.
2. Otto A., Agatz N., Campbell J., Golden B., Pesch E. Optimization approaches for
civil applications of unmanned aerial vehicles (UAVs) or aerial drones: A survey /
Networks, Wiley Periodicals. 2018. V.72. P. 411-458.
3. Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация: алгоритмы и
сложность. М.: Мир, 1985.
4. Boyd S.S., El Ghaoui L., Feron E., Balakrishnan V. Linear matrix inequalities in
system and control theory // SIAM Studies Appl. Math. 1994. V. 15. Philadelphia:
PA.
5. Beck A. On the convexity of a class of quadratic mappings and its application to
the problem of finding the smallest ball enclosing a given intersection of balls //
J. Global Optim., Elsevier Publ. 2007. V. 39. No. 1. P. 113-126.
6. Мину М. Математическое программирование. Теория и алгоритмы. М.: Наука,
1990.
Статья представлена к публикации членом редколлегии А.А. Лазаревым.
Поступила в редакцию 18.07.2019
После доработки 15.09.2019
Принята к публикации 28.11.2019
155