DEV//UNIT

Альфа-бета отсечение

Тот же ответ, что минимакс — но ветки, не влияющие на решение, не раскрываются.

время O(b^(d/2)) в лучшемпамять O(d)уровень: средний
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function alphabeta(node: Node, depth: number, alpha: number, beta: number, maximizing: boolean): number {
2 if (isLeaf(node)) return node.value
3
4 if (maximizing) {
5 let best = -Infinity
6 for (const child of node.children) {
7 best = Math.max(best, alphabeta(child, depth + 1, alpha, beta, false))
8 alpha = Math.max(alpha, best)
9 if (beta <= alpha) break // β-отсечение: соперник не пустит нас сюда
10 }
11 return best
12 } else {
13 let best = Infinity
14 for (const child of node.children) {
15 best = Math.min(best, alphabeta(child, depth + 1, alpha, beta, true))
16 beta = Math.min(beta, best)
17 if (beta <= alpha) break // α-отсечение
18 }
19 return best
20 }
21}

Проблема

Тот же ответ, что минимакс — но ветки, не влияющие на решение, не раскрываются.

Что вы видите

α — лучший уже найденный максимум, β — минимум соперника; β ≤ α — ветку можно выбросить.

Как это работает

Если соперник уже гарантировал себе β меньше нашего α, эту ветку он никогда не выберет — зачем считать? Порядок ходов определяет число отсечений: с хорошей эвристикой — корень из дерева.

Пошаговый разбор

  1. 01

    α и β

    Лучший максимум и минимум.

  2. 02

    Отсечение

    β ≤ α: ветка мертва.

  3. 03

    Экономия

    Тот же ответ вдвое-вчетверо быстрее.

Complexity и ограничения

time
O(b^(d/2)) в лучшем
space
O(d)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Stockfish

Движки мирового уровня.

Игры

AI в стратегиях и го-движках (до MCTS).

Планирование

Adversarial search в роботике.

Связанные алгоритмы

Shorts

«Шахматный движок не смотрит всё дерево»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Шахматный движок не смотрит всё дерево
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/alpha-beta