The future forgets the past. Given the present state, the next state is independent of everything before it — and a chain that forgets still settles down. A row-stochastic matrix P plus power iteration yields the one stationary distribution π with πP = π. It is runnable: edit P, watch any start vector converge to the same π. For the seed chain P = [[0.9,0.1],[0.5,0.5]] the stationary law is π = [5/6, 1/6], exact, self-checked.
source A. A. Markov (1856–1922), 1913 study of vowel/consonant runs in Pushkin’s Eugene Onegin — the first Markov chain fit to real data. Historical figures after B. Hayes, “First Links in the Markov Chain,” American Scientist 101 (2013). Room · THE NUMBER. Rendered, not quoted.
One rule defines everything: P(Xₙ₋₁ = j | Xₙ = i, past) = P(Xₙ₋₁ = j | Xₙ = i). The whole history collapses into the single current state. Row i of P is the departure law from state i; it must sum to 1.
The transition graph for the seed chain (V = vowel, C = consonant):
V —0.9→ V V —0.1→ C
C —0.5→ V C —0.5→ C
Sticky V, fair C. Because V holds tighter, the chain spends most of its time in V — that asymmetry is exactly what π measures. LIT
The stationary vector of a stochastic matrix is one idea with many children:
PageRank (1998) — the web is a chain; a page’s rank is its stationary probability. MCMC — build a chain whose π is the distribution you want to sample, then walk it. Hidden Markov models — the chain runs unseen; you observe only emissions (speech, genomes, tagging).
All of it rests on the same two facts this engine checks: rows sum to 1, and power iteration lands on the fixed point πP = π. interpretation
The blue team re-checks the live matrix every render: each row sums to 1, power iteration converged, π sums to 1, and the residual ‖πP − π‖ is under tolerance. If red corrupts a row (6), this badge is where it dies.
Feed a 2×2 row-stochastic P. Each row is a departure law and must sum to 1. The seed is the anchor chain; the preset loads Markov’s Eugene Onegin counts.
| from \ to | V | C | row sum |
|---|---|---|---|
| V | 1.000 | ||
| C | 1.000 |
Start anywhere on the simplex and multiply by P again and again. A memoryless chain forgets its start: the distribution row settles onto π. Every number below is computed on the spot.
| step | P(V) | P(C) | Δ from prev |
|---|
Converged in — steps. The march no longer moves — that fixed row is the stationary law.
CONVERGENCE. Any valid start — V, C, or the mixed vector — lands on the same π. That independence is the memoryless property made visible: the limit knows nothing of where you began. Residual ‖πP − π‖ = —.
P. A. Nekrasov argued the law of large numbers requires independence — and read free will into the gap. Markov built chains of dependent events that obey the LLN anyway, to refute him. The vowel/consonant runs of Onegin were his proof: letters are far from independent, yet their averages still converge.
“An LLM is just a Markov chain.” Cut, with nuance. A Markov chain has fixed, finite states and a matrix you can print. A transformer conditions on a long, learned, high-dimensional context — its “state” is not a symbol but a whole activation. It is not memoryless over tokens. The analogy points somewhere true (next-token from current context) and then breaks.
“A stationary chain must be independent.” Cut. That was Nekrasov’s error — the whole reason the chain exists.
“π depends on where you start.” Cut. For an irreducible chain π is unique; the start is forgotten.
The red team’s move: corrupt row C so it sums to 1.4, not 1 — an invalid stochastic matrix. Probability is no longer conserved: the “distribution” leaks mass, πP stops equalling π, and the residual blows up.
Break the row-sum-to-1 law and the witness (7) recomputes: rows no longer sum to 1, π no longer conserves probability, the badge turns red. The attack is real and it is caught.