Покриття простого багатокутника колами


10

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

Відповіді:


11

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

Можна отримати алгоритм наближення 1 + eps за допомогою розсувних сіток.

Закономірно припустити, що проблема є NP-Hard через роботу Федера та Гріна.


1
Саме це і дає розсувна сітка ...
Саріель Хар-Пелед

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

Розсувні сітки означають, що всередині комірки розмір розчину невеликий. Потім потрібно вирішити проблему всередині кожної комірки сітки (як правило, саме) за допомогою іншого алгоритму. Ось альтернативний спосіб подумати над цим - відібрати багатокутник дуже щільно, а потім вирішити свою проблему на зразку ... І так, точні деталі, як це зробити, можуть бути досить болісними ... Отже, припустимо, у вас є багатокутник з n ребрами, і ви знаєте, що оптимальне рішення має розмір k. Чи знаєте ви, як вирішити проблему саме в цьому випадку?
Саріель Хар-Пелед

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

1
Розглянемо квадрат. Накрийте його сіткою для N = O ( k / ϵ ) . Неважко довести, що будь-які k диски, що охоплюють усі ці точки, охоплювали б весь квадрат після розгортання кожного диска на ϵ частку його радіусу. Що стосується багатокутника, тріангулюйте його, сформуйте сітку, як вище, для кожного трикутника (для цього потрібно певний догляд, але це не особливо важко). Потім ви отримуєте ту саму гарантію, якщо приймете об'єднання всіх цих точкових наборів. Це схоже на конструкцію coreset для кластеризації k-center. N×NN=О(к/ϵ)ϵ
Саріель Хар-Пелед

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.