Проблема в категории «Динамическое программирование», и вы сами отметили свой вопрос greedy
(ваш подход действительно жадный).Будут случаи, когда минимальное расстояние для данного запроса (локальный минимум) не является оптимальным для полного набора запросов (глобальный минимум).Следовательно, вам необходимо учитывать все возможные назначения роботов для запросов, но с помощью методов DP это не исчерпывающий поиск.
Я не хочу подробно описывать точное решение для вас, поскольку в Интернете имеется множество ресурсов.на DP (составьте двумерную таблицу затрат, перемещаясь по столбцам = робот 1, перемещаясь по рядам = робот 2, найдите оптимальный путь через таблицу…).Но я хочу показать вам пример ситуации, когда жадный подход является неоптимальным.
A
робот 1 B
робот 2 F
начальная точка запроса T
конечная точка запроса
Решено с использованием жадного подхода:
(A) B
1 . . F . T . . . . . . // A is closer to F, travels 2 (to F) + 2 (to T) = 4
(A) B
2 . . . . . . F . T . . // A is closer to F, travels 2 (to F) + 2 (to T) = 4
(A) B
3 F T . . . . . . . . . // A is closer to F, travels 8 (to F) + 1 (to T) = 9
A B
Общее пройденное расстояние: 4 + 4 + 9 = 17
.
Оптимальный подход (может быть несколько):
(A) B
1 . . F . T . . . . . . // A takes query, travels 2 (to F) + 2 (to T) = 4
A (B)
2 . . . . . . F . T . . // B takes query, travels 4 (to F) + 2 (to T) = 6
(A) B
3 F T . . . . . . . . . // A takes query, travels 4 (to F) + 1 (to T) = 5
A B
Общее пройденное расстояние: 4 + 6 + 5 = 15
.
Обратите внимание, что B
взял второй запрос дажехотя это было не ближе всего к начальной точке.