Alpha-Beta Algorithm Tutorial

Interactive demonstration of game tree search with pruning

© 2025 Michael Roberts

Algorithm Overview

The Alpha-Beta algorithm is an enhanced version of the Minimax algorithm used in game tree search. It finds the optimal move by exploring possible future game states while dramatically reducing the search space through a technique called "pruning."

Key Concept: If we can prove that a move leads to a worse outcome than one we've already found, we don't need to explore it further. This eliminates entire branches of the game tree without affecting the final result.

Alpha-Beta Game Tree Visualization

3 MAX (Root) 3 α: 3 β: ∞ 2 α: 3 β: 2 2 α: 3 β: ∞ 3 12 8 2 4 6 14 5 2 Ply 0 (MAX) Ply 1 (MIN) Ply 2 (Terminals) 1. Evaluate completely 2. Prune after β≤α 3. Complete search Pruning Condition: β (2) ≤ α (3) → Cut remaining branches
Maximizing Player (MAX)
Minimizing Player (MIN)
Terminal/Evaluated Nodes
Pruned Branches
Demonstration Results: Out of 8 possible terminal nodes, only 6 were evaluated (75% efficiency). The algorithm found the optimal move (value = 3) while eliminating 2 unnecessary evaluations.

How Alpha-Beta Pruning Works

The algorithm maintains two values during search:

  • Alpha (α): The best value the maximizing player can guarantee
  • Beta (β): The best value the minimizing player can guarantee

When α ≥ β, we can safely prune the remaining branches because:

The minimizing player will never choose this path since they already have a better option available

Algorithm Implementation

function alphaBeta(position, alpha, beta, depth, maximizing) { if (isTerminal(position, depth)) { return evaluate(position); } if (maximizing) { maxEval = -∞; for each child of position { eval = alphaBeta(child, alpha, beta, depth+1, false); maxEval = max(maxEval, eval); alpha = max(alpha, eval); if (beta ≤ alpha) break; // Prune! } return maxEval; } else { minEval = +∞; for each child of position { eval = alphaBeta(child, alpha, beta, depth+1, true); minEval = min(minEval, eval); beta = min(beta, eval); if (beta ≤ alpha) break; // Prune! } return minEval; } }

Performance Benefits

In the optimal case, Alpha-Beta pruning can reduce the search complexity from O(b^d) to O(b^(d/2)), where:

  • b = branching factor (average moves per position)
  • d = search depth
Example: For a chess position with 35 possible moves searching 4 moves deep:
• Without pruning: ~1.5 million positions
• With Alpha-Beta: ~7,000 positions (99.5% reduction!)

Application in the LiveCode Demo

The tic-tac-toe implementation demonstrates several key concepts:

  • Complete Search: Explores all possible game outcomes
  • Position Evaluation: Scores board positions based on strategic value
  • Optimal Play: Computer never makes suboptimal moves
  • Pruning Statistics: Shows real-time efficiency gains

The algorithm ensures the computer plays perfectly, making tic-tac-toe unwinnable for human players when both sides play optimally.