Покрытие простого многоугольника с кругами


10

Предположим, у меня есть простой многоугольник и целое число k . Каковы некоторые существующие подходы для нахождения наименьшего радиуса ¨R таким образом, что я могу покрыть S с K окружностей радиуса г ? Как насчет, если г фиксирован, и я хочу минимизировать к ?SКрSКррК

Ответы:


11

Используйте алгоритм кластеризации k-центра: см. Раздел 4.2 в http://goo.gl/pLiEO .

С помощью скользящих сеток можно получить алгоритм приближения 1 + eps.

Естественно предположить, что проблема NP-Hard из-за работы Федера и Грина.


1
Это то, что дает вам скользящая сетка ...
Сариэль Хар-Пелед

Спасибо за ваш ответ. Я более или менее знаком со скользящими решетками. В сценарии точек он в решающей степени опирается на тот факт, что в каждой ячейке сетки можно оптимально решить задачу покрытия, поскольку каждый диск содержит две точки на своей границе, плюс число дисков, покрывающих ячейку, ограничено. Таким образом, можно решить это грубой силой. Но в настройке многоугольника я не вижу, как оптимально решить задачу в одной ячейке сетки. Не могли бы вы дать несколько советов по этому поводу?
101011

Скользящие сетки подразумевают, что внутри ячейки сетки размер решения невелик. Затем вам нужно решить проблему внутри каждой ячейки сетки (обычно точно), используя другой алгоритм. Вот альтернативный способ думать об этом - очень плотно выбрать полигон, а затем решить свою проблему на примере ... И да, точные детали того, как это сделать, могут быть довольно болезненными ... Итак, предположим, что у вас есть многоугольник с n ребрами, и вы знаете, оптимальное решение имеет размер к. Вы знаете, как решить проблему именно в этом случае?
Сариэль Хар-Пелед

Еще раз спасибо. После некоторых размышлений я все еще не знаю, как оптимально покрыть многоугольник k дисками, даже если я знаю k. Тот факт, что он имеет небольшую дискретную природу, делает его очень трудным для меня. Что касается вашего подхода к отбору проб: После отбора проб вы хотите охватить только отобранную часть? Разве мы не сталкиваемся с проблемой потери большого количества дисков, чтобы заполнить пробелы?
101011

1
Рассмотрим площадь. Покройте этосеткой N × N , для N = O ( k / ϵ ) . Легко доказать, что любые k дисков, которые охватывают все эти точки, будут покрывать всю площадь после расширения каждого диска на ϵ доли его радиуса. Что касается многоугольника, триангулируйте его, формируйте сетку, как указано выше для каждого треугольника (это требует некоторой осторожности, но это не особенно сложно). Затем вы получаете ту же гарантию, если вы берете объединение всех этих наборов баллов. Это похоже на конструкцию набора ядер для кластеризации k-центров. N×NNзнак равноО(К/ε)ε
Сариэль Хар-Пелед

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.