Я пытаюсь придумать алгоритм, который будет делать следующее:Пустой запрос круг алгоритм
Если множество точек дается, найти для точки запроса самый большой круг (с точки запроса в его центр), который не содержит точек из множества.
До сих пор я думал об использовании диаграммы Voronoi для поиска областей (ячеек), которые содержат точки, наиболее близкие к точке сайта набора, а затем использовать список краев из Voronoi для построения трапецеидального разложения. Из декомпозиции я смогу найти, в какой ячейке находится точка запроса, а затем радиус круга будет расстоянием от точки запроса до точки (сайта) этой ячейки. Я думаю, что хранилище, необходимое для создания чего-то подобного, является линейным, так как Voronoi нуждается в O (n) -хранилище, а создание трапецеидальной декомпозиции из Voronoi также может быть выполнено с O (n) хранилищем.
* Редактировать: время запроса должно быть O (logn), что означает, что я не могу перебирать все точки набора по одному.
Правильно ли это, или я чего-то не хватает?
Кроме того, если у кого-то есть ссылки, которые я мог бы рассмотреть относительно этого алгоритма, пожалуйста, дайте мне знать. Спасибо :)
«самый большой круг (с точкой запроса как его центр), который не содержит точек из набора». это всего лишь круг с наименьшим расстоянием до любой точки (эпсилон). –
Я могу быть невероятно плотным здесь, но вы вычисляете расстояние от точки запроса до всех остальных и находите ближайший; ближайший расскажет вам о радиусе круга. O (n), O (1) хранения. Да? –