В Chazelle, B .; Lee, в статье DT Computing 36, 1-16 (1986), теорема 3 на стр. 15, говорится, что алгоритм поиска максимального окружающего круга требует временных затрат.O(n2)
Я думаю, что ключом по-прежнему является алгоритм построения графа пересечений он упоминает ранее (или см. Edelsbrunner, H. (1987), Algorithms in Combinatorial Geometry, глава 7). После этого поиск максимального круга должен быть простым.O(n2)
По-видимому, эта задача эквивалентна нахождению точки, покрытой максимальным количеством заданных окружностей, и легко узнать, что только те точки, которые пересекаются заданными n окружностями, должны рассматриваться как кандидаты. (Это также приводит к алгоритму напрямую)2n2O(n2log(n))
Однако, используя вышеупомянутый алгоритм построения , он также приводит алгоритм для этой задачи. Потому что граф пересечений, построенный с вершинами в качестве точек пересечения и ребрами в виде дуг, является планарным графом Эйлера. Таким образом, можно просто пройти все дуги через цикл Эйлера и порядок дуг, проиндексированных по индексам окружностей, к которым он принадлежит, и информацию о том, является ли какая-либо дуга «уходящей дугой» (изогнутой назад) или «входящей в дугу» ( кривая вперед) для встреченной вершины, на которую падает эта дуга, будет записано.O(n2)O(n2)
По теореме Джордана вершина пересечения окружена окружностью только в том случае, если она сначала встречает «уходящую дугу», принадлежащую этому кругу, или имеет падающую дугу, принадлежащую этому кругу. Таким образом, после всего путешествия можно легко найти максимальный окружающий круг. Это аналогично случаю определения времен покрытия для точек с упорядоченными интервалами вдоль прямой линии (или т. Е. Одномерной версии этой охватывающей задачи), за исключением того, что порядок уже задан путём перемещения. В то время как по формуле Эйлера для плоского графа, общее количество дуг является линейным с количеством вершин, и, поскольку нет необходимости снова записывать связанную информацию при возвращении к уже посещенным вершинам путем рукопожатия лемма, общая стоимость времени будет O ( nV+E−F=2 .O(n2)