Минимакс
Гарантированный результат игры: максимизируем минимум, который оставит соперник.
1function minimax(node: Node, maximizing: boolean): number {2 if (isLeaf(node)) return node.value3 4 if (maximizing) {5 let best = -Infinity6 for (const child of node.children) {7 best = Math.max(best, minimax(child, false))8 }9 return best10 } else {11 let best = Infinity12 for (const child of node.children) {13 best = Math.min(best, minimax(child, true))14 }15 return best16 }17}Проблема
Гарантированный результат игры: максимизируем минимум, который оставит соперник.
Что вы видите
Листья — исходы; MIN-узлы забирают меньшее, MAX — большее из детей.
Как это работает
Рекурсия по дереву игры: на своих ходах берём максимум, на ходах соперника — минимум (худшее для нас). Результат — лучшее, что можно гарантировать при рациональном сопернике.
Пошаговый разбор
- 01
MIN-уровень
Соперник выберет худшее.
- 02
MAX-уровень
Мы выбираем лучшее.
- 03
Корень
Гарантированный результат.
Complexity и ограничения
Сложность см. в шапке страницы.
Edge cases
- Пустой вход
Корректная тривиальная обработка.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Шахматы
Основа всех движков.
Крестики-нолики
Идеальная игра.
Переговоры
Максиминные стратегии.
Связанные алгоритмы
«Гарантия против любого соперника: минимакс»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.