Как решить эту проблему алгоритмической - Gopher 2

голоса
0

Я пытаюсь решить эту проблему https://open.kattis.com/problems/gopher2 :

Семья суслика, будучи предотвратив угрозу собачьей, должен столкнуться с новым хищником.

Являются 𝑛 суслики и отверстия суслика 𝑚, каждый на различных (𝑥, 𝑦) координат. Ястреб прибывает и если суслик не достигает дырку в 𝑠 секунд он уязвит для поедания. Отверстие может сэкономить более одного суслика. Все суслики работают с одинаковой скоростью 𝑣. Семья суслика нуждается в стратегии эвакуации, что сводит к минимуму числа уязвимых>> сусликов.

т минимизирует число уязвимых сусликов.

Перебор подход будет найти все возможные отверстия достижимых для каждого суслика, а затем найти весь различный (суслик, отверстие) пар.

Есть ли более быстрый алгоритм?

Задан 02/12/2019 в 23:57
источник пользователем
На других языках...                            


1 ответов

голоса
1

Это может быть сформулировано как экземпляр максимальных паросочетаний мощности на двудольный графе.

Пусть Aмножество сусликов и Bмножество отверстий. Существует ребро из суслика a ∈ Aв отверстие , b ∈ Bесли расстояние между ними не более s*v, то есть максимальным расстоянием суслик может работать в доступное время.

Раствор состоит из максимального размера подмножества ребер в этом графике, таким образом, что (1) каждый a ∈ Aимеет не более одного ребра, (2) каждый b ∈ Bимеет не более одного ребра. Ограничения представляют правила , что каждый суслик может идти только на одно отверстие, и каждое отверстие может поместиться только один суслик. Число «уязвимых» суслики тогда количество сусликов минус число ребер в соответствии.

График занимает O ( млн ) время для конструкции, и соответствующие максимальной мощности можно найти в O ( млн ) время или менее с использованием стандартного алгоритма , такими как Форд-Фулкерсон , где т есть число сусликов и п является числом отверстия.

Если этого не достаточно эффективно для интернет - судьи, вы можете использовать более эффективный алгоритм для поиска соответствия, и более эффективный способ , чтобы найти края в графике, например , с помощью квадрадерево для запроса , какие отверстия находятся в пределах расстояния s*vот а Gopher в соответствии с О ( п ) время.

Ответил 03/12/2019 в 00:29
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more