Этот вопрос относится к спонсируемому Google AI Challenge , конкурсу, который проводится каждые несколько месяцев и в котором претенденты должны представить бота, способного автономно играть в игру против других игроков-роботов.Конкурс, который только что завершился, назывался "муравьи", и вы можете прочитать все его спецификации здесь , если вам интересно.
Мой вопрос относится к одному аспекту муравьев : боевая стратегия .
Задача
Учитывая сетку дискретных координат [как на шахматной доске] и учитывая, что у каждого игрока есть количество муравьев, которые на каждом ходу могут либо:
- стоять на месте
- двигаться на восток / север / запад / юг,
... муравей будет убит вражеским муравьем, если вражеский муравей в радиусе действия будет окружен меньшим количеством (или то же самое) своих врагов, чем муравей [эквивалентно: «Муравей убьет муравья-врага, если враг, находящийся на расстоянии, окружен большим (или тем же) врагом, чем его цель»]
Aвизуальный пример:
В этом случае желтые муравьи собираются двигаться на запад, а у оранжевого муравья, не способного отойти [синие плитки блокируют], будет дважелтые муравьи «в пределах досягаемости» и умрут (если объяснение все еще неясно, я приглашаю вас посетить ссылку выше , чтобы увидеть больше примеров и объясненных сценариев).
Вопрос
Мой вопрос по существу о сложности.Я много думал об этой проблеме, но все равно не смог придумать приемлемый способ расчета оптимального набора ходов за разумное время .Мне кажется, что для нахождения наилучшего возможного набора ходов для моих муравьев я должен оценить результат для каждого возможного сценария, но поскольку битвы могут быть довольно переполнены муравьями, это будет означать, что время вычислений будет расти в геометрической прогрессии (5^n
где n - число задействованных муравьев).
Еще одним ограничением этого подхода является то, что решение, над которым работает, не повышает его эффективность пропорционально времени, потраченному на вычисления, , поэтому произвольное прерывание его выполнения может оставить вас снеприемлемое решение .
Я подозреваю, что хорошее решение может быть найдено по некоторым геометрическим соображениям в сочетании с линейной алгеброй (возможно, вычисление некоторых "центров тяжести" для группмуравьев?) но я не мог пройти уровень «интуиции» на этом ...
Итак, мой вопрос действительно сводится к:
Как решить эту проблемунайти [почти] оптимальные решения за время вычисления ~ 50-100 мс на современном компьютере (эта цифра получена из официальных правил конкурса)?
Если вас интересует проблема инужно немного вдохновения, я настоятельно рекомендую посмотреть некоторые из доступных игровых повторов .