Примечание: этот вопрос помечен как language-agnostic и python, поскольку моя главная задача - найти алгоритм для реализации решения задачи, но информация о том, как реализовать его эффективно (=выполнить быстро!) на python, будет плюсом.
Правила игры:
An
) и другую из агентов B (Bn
). Sn
), которые могут быть заняты. Вопрос:
Я пытаюсь найти эффективный способ вычисления наилучшего возможного хода для агентов A
, где "наилучший возможный ход" означает либо максимизацию, либо минимизацию шансов занять те же слоты, которые занимает команда B
. Ходы команды B
заранее не известны.
Пример сценария:
Этот сценарий намеренно тривиален. Он просто предназначен для иллюстрации игровой механики.
A1 can occupy S1, S2
A2 can occupy S2, S3
B1 can occupy S1, S2
В этом случае решение очевидно: A1 → S1
и A2 → S2
- это вариант, который гарантирует встречу с B1
[поскольку B1
не может избежать занятия ни S1
, ни S2
], тогда как A2 → S3
и A1 → random(S1, S2)
- это те, которые максимизируют шансы избежать B1
.
Реальные сценарии:
В реальных сценариях слотов могут быть сотни, а агентов в каждой команде - десятки. Сложность в наивной реализации, которую я пробовал до сих пор, заключается в том, что я в основном рассматриваю каждый возможный набор ходов для команды B
, и оцениваю каждый из возможных альтернативных наборов ходов для A
. Таким образом, мое время вычислений увеличивается экспоненциально.
Тем не менее, я не уверен, что эта проблема может быть решена только "грубой силой". И даже если это так, я задаюсь вопросом:
Спасибо!