The Mathematics of Chess (Combinatorial Game Theory)

Chess is a game of perfect information with no randomness, no hidden cards, and a finite board. By the standards of game theory it should be solvable — and in principle it is. The mathematics of chess touches game theory and its cousin, combinatorial game theory, which studies perfect-information sequential games. The catch is the size. Chess’s game tree contains more possible games than there are atoms in the observable universe, which is why we can prove the game has an optimal strategy without ever being able to compute it.
Key takeaways
- Chess is a finite, perfect-information, zero-sum game with no chance elements — the kind game theory loves.
- Zermelo’s theorem (1913) proves chess has a determined outcome under perfect play, but doesn’t tell us what it is.
- Shannon’s number — roughly 10^120 — is the estimated game tree complexity of chess.
- Draw rules based on repetition and the 50/75-move limits are what make chess finite at all.
- Endgames with 7 or fewer pieces are fully solved (Lomonosov and Syzygy tablebases); 8-piece endgames are not.
The game-theoretic classification
Game theory classifies chess as a two-player, finite, perfect-information, zero-sum, sequential game. Each of those properties matters:
- Two-player: only White and Black act.
- Finite: repetition and move-count draw rules guarantee that every game eventually ends.
- Perfect information: both players see the full board at every move. No hidden state, no shuffled deck.
- Zero-sum: White’s win is Black’s loss; a draw is a tie.
- Sequential: players alternate moves rather than committing simultaneously.
These five properties put chess in the same class as checkers, Connect Four, Nim, and Go. Game theory has strong results for this class — strongest of all is Zermelo’s theorem.
Zermelo’s theorem
Ernst Zermelo proved in 1913 that any finite two-player game of perfect information has a determined outcome under perfect play. Either the first player can force a win, the second player can force a win, or both sides can force at least a draw. There is no fourth case.
For chess, the theorem says one of three statements is true: White can force a win against any Black defense; Black can force a win against any White attack; the game is a forced draw with best play on both sides. Most chess theorists believe the answer is the third (a forced draw), but it has not been proven and may never be.
Shannon’s number
Claude Shannon estimated in 1950 that the chess game tree contains roughly 10^120 nodes. This estimate — known as Shannon’s number — is a lower bound on the complexity of solving chess by brute force. For comparison:
- Atoms in the observable universe: about 10^80.
- Microseconds since the Big Bang: about 10^24.
- Possible bridge deals: about 10^28.
- Chess game tree (Shannon’s number): about 10^120.
The number is so large that no conceivable computer could enumerate it move sequence by move sequence. Chess is mathematically determined and computationally untouchable in the same breath.
Game tree complexity vs. state space complexity
Two different numbers describe chess. State-space complexity counts distinct legal positions the board can reach (recent estimates put it around 10^44, with older upper bounds near 10^46). Game-tree complexity counts distinct sequences of moves that can produce a game (Shannon’s 10^120). The game tree is much larger because the same position can be reached through many different move orders, and each path is a separate node in the tree.
Most solving approaches care about the state space (you only need to evaluate each unique position once). Even at 10^44, the state space is far beyond enumeration. Tablebases handle small endgame positions because the state space of, say, 7-piece endings is in the hundreds of trillions — large but storable.
Tablebases: chess solved at the endgame
An endgame tablebase is a database of every legal position with a given small number of pieces, each annotated with the perfect outcome. Tablebases up to 7 pieces (the Lomonosov tablebases, completed in 2012, and the Syzygy tablebases, completed in 2018) are complete — every 7-piece position has been computed to game-theoretic perfection.
The 7-piece tablebases revealed surprising results. Some positions require over 500 moves to convert from a winning advantage to checkmate. The 50-move rule (which lets a player claim a draw if no pawn move or capture occurs for 50 moves by each side) turns many of these long wins into draws in practice. The community has discussed whether the 50-move rule should be extended for known long wins, but no rule change has been adopted.
Going from 7-piece to 8-piece tablebases would require vastly more storage and compute. A complete 8-piece set hasn’t been built yet, though it is not ruled out as hardware improves.
The branching factor
The average branching factor in chess (number of legal moves available at a typical position) is around 35. The average game length is around 40 moves (each side). That gives 35^80 ≈ 10^123 — close to Shannon’s estimate, with refinements for early-game and endgame variations producing the 10^120 figure.
The branching factor is what makes chess engines so impressive. Modern engines (Stockfish, AlphaZero, Leela) don’t search the full tree — they prune aggressively using evaluation functions and selective search. Stockfish on a normal computer evaluates millions of positions per second and routinely reaches search depths of 30 ply or more at long time controls.
Chess engines and perfection
The strongest engines play above the level of any human and beat each other only in narrow tactical margins. Engine rating lists such as the CCRL put top engines in the mid-3000s, though those ratings sit on a separate scale from human FIDE ratings, so the gap is best described as large rather than precise.
But none of this is mathematical perfection. The engines search deep, evaluate well, and prune intelligently — but they still don’t know whether chess is a forced draw or a forced win. They play empirically, not deductively. The Zermelo theorem is still unfulfilled.
Solving chess: where the math stands
Checkers was solved in 2007 by the Chinook project. The result: a draw with perfect play on both sides. Solving checkers took Jonathan Schaeffer’s team nearly two decades of work, on a state space (about 5 × 10^20 positions) far smaller than chess’s.
Solving chess is not on any reasonable timeline. The state space is around 10^44. Even storing one bit per position would require about 10^44 bits — vastly more than all the data storage on Earth. Solving chess by brute force is not merely hard; with any foreseeable technology it is out of reach.
What might be possible in theory: a proof of the game’s outcome that doesn’t require enumerating every position. No such proof exists, and most researchers consider it very unlikely.
Why the 50-move and threefold repetition rules matter mathematically
Without rules that force a game to end, chess would not be finite. Two kings could shuffle around an empty board forever. The 50-move rule (50 moves by each side without a pawn move or capture lets a player claim a draw) and the threefold repetition rule (the same position occurring three times allows a draw claim) only work if someone claims them. Since 2014, FIDE’s Laws of Chess also include automatic draws after 75 moves without a pawn move or capture, or after fivefold repetition, so every game must end even if nobody claims anything.
Game theorists usually model chess with rules like these in place. Without them, Zermelo-style arguments get harder because some paths would never end. The rules look procedural; they’re actually foundational.
The connection to combinatorial game theory
Combinatorial game theory studies games like Nim, Hackenbush, and Go endgames, assigning positions algebraic values (including the surreal numbers). Chess as a whole is a poor fit for CGT, but specific constructed positions, such as certain mutual-zugzwang pawn endings analyzed by mathematician Noam Elkies, can be broken into independent parts and studied with CGT tools. The field’s foundational book is John Conway’s “On Numbers and Games” (1976), which established the framework for assigning exact values to positions in simpler games.
For broader context on chess’s history and the engine era, see the game complexity Wikipedia article, and our games like chess list for related strategy games.
Frequently asked questions
Is chess solved?
No. Endgames with 7 or fewer pieces are fully solved via tablebases. The full game has not been solved and cannot be solved by brute force given the size of the game tree (Shannon’s number, roughly 10^120). A clever proof that avoids enumeration is conceivable, but nobody has one.
What is Shannon’s number?
An estimate of the chess game-tree complexity — about 10^120 possible game continuations. Claude Shannon proposed it in 1950 as a lower bound on the difficulty of brute-force chess solving. It exceeds the number of atoms in the observable universe by 40 orders of magnitude.
What does Zermelo’s theorem say about chess?
The 1913 theorem proves that chess, as a finite zero-sum game of perfect information, has a determined outcome under perfect play. Either White can force a win, Black can force a win, or the game is a forced draw. The theorem doesn’t tell us which case applies, only that one of them does.
Why isn’t chess a draw by perfect play according to engines?
Engines don’t play perfect chess — they play deeply searched, heuristically pruned chess. Top engines draw the large majority of their games against each other at long time controls, especially from balanced openings, which is consistent with chess probably being a forced draw but doesn’t prove it.
How big is the chess game tree?
Shannon’s estimate is 10^120 nodes. State-space complexity (distinct legal positions) is around 10^44. Both are unimaginably large, but the state-space figure is the one that matters for tablebase-style enumeration approaches.
The bottom line
The mathematics of chess sits between certainty and impossibility. We know the game has a determined outcome under perfect play. We can’t compute that outcome and likely never will. Tablebases solve the endgame; engines play the middle game heuristically; the full game is mathematical territory unmapped and probably unmappable. If you want to feel the branching factor for yourself, try a game of free browser chess against our computer opponent. For a perfect-information game with a much smaller state space, the Chrome Dino game at the top of this page has exactly one decision per cactus — jump or don’t.








