Какая есть литература, алгоритм для расположения минимального количества дозорных башен для охраны территории на плоскости?

Есть следующая задача:
Задано некоторое ограниченное многосвязное множество А, необходимо расставить минимальное количество дозорных вышек, с углом обзора 360 градусов и с бесконечным радиусом видимости, так, чтобы совместная область обзора дозорных вышек равнялась множеству А.

Пример А:
5a192f4e465fe645546681.jpeg

Пример вышки и её области видимости:
5a192fd3dcda4155637528.jpeg

Текущая формализация:
A - ограниченное многосвязное множество из R^2 ( охраняемая территория )

N - натуральное число ( количество дозорных вышек )
Pos_k - точка из A ( позиция k-ой вышки )
V_k - подмножество из А, звездная область относительно точки Pos_k ( область видимости k-ой вышки )

5a192edd662c7932292659.jpegНа данный момент, я придумал жадный алгоритм:
N = 0.
Пока A != ПУСТО делаем
---Находим позицию для вышки так, чтобы её область видимости была максимальна. (На A ввожу сетку, для ---каждого узла сетки нахожу площадь области видимости из данного узла, далее выбираю узел с ----максимальной площадью) Так и получаем позицию вышки.
---Далее из A удаляем область видимости, получившейся вышки, N++;


Но, не понятно будет ли он оптимальным?(
Возможно, его оптимальность можно доказать из теоремы Радо-Эдмондса
Но, если не получится это доказать, то хотелось бы найти не жадный алгоритм.

Подскажите, какую литературу можно почитать?
Или может есть похожая задачка?
А может динамическое программирование тут применить? (не знаю к месту ли это, но дин. прогр. я не очень знаю)
  • Вопрос задан
  • 992 просмотра
Решения вопроса 1
longclaps
@longclaps
Задано некоторое ограниченное множество

Такая терминология в геометрической задаче выдаёт некоторую вашу беспомощность. Попробуйте вернуться к Началам Эвклида, у него всё поприличнее.
Жадный алгоритм вы возможно и придумали, но раскрыть не пожелали. Ключевой вопрос: какою мерой будете мерять область видимости?
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@dikysa Автор вопроса
Студент
Если кому еще интересно, то чтобы точное решение найти, можно данную задачу свести к задаче о минимальном покрытии множества.
Ответ написан
Комментировать
DarkWizardUa
@DarkWizardUa
Математик, кодер
Если видимость каждой вышки максимально, то мне кажется, что это и будет оптимальный вариант, но доказать это я не могу(
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
Итак, обычно сторожевые башни размещают на внешней стороне охранямого периметра. Это позволяет осматривать территорию как изнутри (внутренее покрытие), так и снаружи (внешнее покрытие).
Правильными критериями оптимальности при постановке задачи должны быть следующие:
1. Полное внутреннее покрытие
2. Минимальное внутреннее перекрытие
3. Максимальное внешнее покрытие
4. Радиус видимости человека в ночное время и при обычной непогоде (например средний снегопад или дождь).
5. Минимальное количество точек

Думаю надо начинать отсюда stu.sernam.ru/book_plane.php?id=25
Потом читать про нелинейное программирование и градиентный спуск.
Ответ написан
profesor08
@profesor08
Ставишь в одну точку и смотришь сколько покрывает, ставишь в следующую и тд. Выбираешь из всех результатов один с максимальным покрытием. Далее для непокрытых участков повторяешь то-же самое. Идеальный вариант решения для твоей задачи из примера это две вышки. На крутой алгоритм это не похоже, но даст тебе понять как решать эту задачу. Собственно иллюстрация:
fkBN9kIqTRiGsliSOahIHQ.png
Ответ написан
Комментировать
@malaev
Студент
Я бы ставил башни в углы. Так как перебор всех вариантов слишком долгий то проще было бы ставить именно в углы при этом нужно понимать, что для одного отрезка нет смысла ставить башню в оба угла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы