Eighteen Types, Fifty-One Arrows, and Not One of Them Comes Back to a Winner

Take the official Pokémon type-effectiveness table and throw away everything except its strongest relation: the doubled-damage, “it’s super effective” cells. What is left is a directed graph on eighteen labelled nodes, current as of Generation VI and every mainline game since — Pokémon X and Y, Sun and Moon, Scarlet and Violet, Pokémon GO — with an edge from A to B exactly when a type-A move deals double damage to a type-B Pokémon [1]. Count every edge in that graph, including the ones that loop a node back to itself, and the total is fifty-one, spread across a space of three hundred twenty-four possible ordered pairs (eighteen types, eighteen possible targets each, self-pairs included). Ask that graph a simple question — which node has no arrow pointing into it, the type nothing can touch — and the answer is nobody. Run down all eighteen types and every single one has at least one arrow landing on it: Electric and Normal are the hardest to hit, with exactly one attacker apiece, but “hardest to hit” is not the same claim as “unhittable,” and no type clears that second, higher bar [1].

That absence is not a rounding artifact of Game Freak’s own design choices; it is a structural property you can prove once and stop re-litigating. A hierarchy — a real one, the kind biology and formal logic actually build — requires an apex: some element that beats everything reachable from it and loses to nothing. The super-effective relation, read as a graph rather than as eighteen independent lookup tables, contains a three-node cycle and two nodes that point at themselves. Both of those are enough, on their own, to rule out ever finding that apex. What follows is not an appeal to intuition about “rock-paper-scissors design” — it is the graph, built from the published chart, audited node by node, with an actual strongly-connected-components algorithm run over the result rather than assumed.

A Ranking Relation Is Not Allowed Two Reflexive Edges, and This One Has Exactly Two

Order theory’s definition of a strict partial order has two clauses, and either one failing is fatal: the relation must be irreflexive (no element precedes itself) and transitive (if A precedes B and B precedes C, then A precedes C) [6]. Every real taxonomic hierarchy — species nested in genera nested in families — satisfies both without exception, because “X is a more specific version of X” is not a sentence that means anything. A ranking table that lets an element rank above itself has already failed the first, cheaper test, before transitivity is even inspected.

ADVERTISEMENT

The super-effective relation fails that first test twice. Ghost-type moves are super effective against Ghost-type Pokémon, and Dragon-type moves are super effective against Dragon-type Pokémon [1]. Neither is a folk rumor or a fan-wiki error waiting to be corrected: Bulbapedia’s own entry on the Ghost type states plainly that “Ghost-type moves are super effective against Ghost- and Psychic-type Pokémon,” and its entry on the Dragon type states, with equal directness, that “Dragon-type moves are super effective against Dragon-type Pokémon” [3, 2]. The two pages even name each other on this exact point, in a trivia note that groups them as a matched pair: Dragon and Ghost, the encyclopedia notes, “are the only types that are weak to themselves” — the only two reflexive edges in the entire eighteen-node graph, out of eighteen possible self-loops available to have [2]. A single self-loop would already be enough to disqualify the relation from strict-partial-order status. Two, independently confirmed and cross-referenced by the same source, closes the question rather than merely opening it.

A freshly drawn self-loop arrow curling back onto a labelled "Ghost" node on the whiteboard graph, the wet ink trail leaving a small gap not yet closed back onto its own starting point
Figure 1. Ghost is drawn here doing something almost nothing else on the chart does: pointing back at itself. The loop closes at one node, not between two — the chart's plainest violation of a strict ranking's first rule.Image prompt and art direction by Brecht Corbeel; generation pending.

It is worth being precise about why this matters more than it might first appear to. A casual reader of the chart notices Ghost’s self-loop quickly, because Ghost-type strategy famously turns on it — a Ghost-type attacker facing a Ghost-type wall is not neutralized the way type-immunity intuition would suggest. Dragon’s self-loop gets less airtime, in part because Dragon-type Pokémon are historically rare enough, and their mirror matchups infrequent enough, that the interaction rarely decides a match the way Ghost-on-Ghost does. But formally, the two edges do identical work: each one is a single node with an arrow drawn from itself to itself, and a relation containing even one such edge cannot be irreflexive, full stop. The count matters for what comes later — when the graph’s strongly connected components are computed properly, Ghost’s self-loop and Dragon’s self-loop turn out to play structurally different roles, one nearly invisible and the other load-bearing — but for the immediate claim, “this cannot be a strict partial order,” one would have sufficed and two only makes the case more overdetermined.

Fire Beats Grass Beats Water Beats Fire Is Not a Rounding Error

Even a relation with zero self-loops can still fail order theory’s second test, transitivity, and the type chart’s most famous three-way matchup is a clean demonstration of exactly that failure. Fire-type moves are super effective against Grass; Grass-type moves are super effective against Water; Water-type moves are super effective against Fire [1]. Transitivity, applied honestly to that chain, would require Fire to be super effective against Water as well — the same way “taller than,” a genuinely transitive relation, lets you conclude Alex is taller than Casey from Alex-taller-than-Bailey and Bailey-taller-than-Casey. The chart does not cooperate. Fire-type moves against Water-type Pokémon are listed as not very effective — half damage, the opposite of what transitivity would predict, not merely a missing edge where a present one was expected [1].

This is the detail that separates a real cycle from a mere gap in coverage. A relation can be non-transitive by simply not defining enough edges to test the property meaningfully; that would be a boring, structural non-finding. This one actively reverses: the edge transitivity would require (Fire to Water) is not merely absent, it is replaced by data running in the exact opposite direction of what a hierarchy would want, since Water’s own super-effective edge points back at Fire, not the reverse. Three types, three edges, each one strictly stronger against the type feeding it super-effective damage than that type is against it, and the loop closes with no gap for an apex to occupy. Every strategy guide printed since 1996 has known this as folklore; order theory’s contribution is naming precisely which two axioms of a hierarchy it violates, and confirming that the violation survives contact with the actual published numbers rather than a remembered simplification of them.

Ground Throws Five Arrows Out; Normal Throws None

Set the cycle and the self-loops aside for a moment and look at the graph’s raw shape: how many outgoing edges does each type carry, and how many incoming ones land on it. Two types tie for the widest offensive reach in the current chart: Ground is super effective against five others (Fire, Electric, Poison, Rock, and Steel), and Fighting matches it, also reaching five (Normal, Ice, Rock, Dark, and Steel) [1]. Fire, Ice, and Rock each follow close behind at four apiece. At the opposite end sits Normal, the graph’s only true offensive sink: zero super-effective matchups against any of the other seventeen types, the lone node with an out-degree of zero in the entire chart [1].

ADVERTISEMENT

Defensively the shape inverts, but no type escapes entirely. Grass and Rock share the widest exposure, each one super effective against five separate attacking types landing on it — Fire, Ice, Poison, Flying, and Bug converge on Grass, while Water, Grass, Fighting, Ground, and Steel converge on Rock [1]. At the narrow end, Electric and Normal each take a hit from only one attacking type — Ground alone reaches Electric, Fighting alone reaches Normal — but “only one” is still “at least one.” Sum every out-degree in the graph and the total is fifty-one; sum every in-degree and it is the same fifty-one, since every edge is counted exactly once from each end, an identity that holds for any directed graph regardless of what it represents and serves here as a basic consistency check on the tally before any heavier machinery runs on it [8]. No type reaches zero on the incoming side. That single fact — not the cycle, not the self-loops, just the plain absence of a zero row in the “attacked by” column — is already sufficient on its own to rule out an undefeated apex, because an apex, at minimum, has to be a type nothing can touch.

Running Tarjan’s Algorithm on a Table Printed on the Inside of Strategy Guides

The cycle and the self-loops prove the relation is not a strict partial order. They do not, by themselves, answer a sharper question: does the graph’s structure allow for a partial hierarchy at some coarser level, even if no single type sits at the very top? The formal tool for that question is the strongly-connected-components decomposition — partition the graph’s nodes into maximal groups where every member can reach every other member by some directed path, then collapse each group to a single point and see what shape is left. Robert Tarjan’s 1972 algorithm computes this decomposition in one linear-time pass using depth-first search, tracking a discovery index and a “lowlink” value for every node to detect exactly when a group closes [5], and it remains the standard method taught for the problem precisely because it needs no more than a single traversal of the graph to produce a provably correct answer [8].

Applied to the real eighteen-node, fifty-one-edge adjacency list built directly from the published chart [1], Tarjan’s algorithm returns exactly three components. Sixteen of the eighteen types — Fire, Water, Grass, Electric, Ice, Fighting, Poison, Ground, Flying, Psychic, Bug, Rock, Ghost, Dark, Steel, and Fairy — collapse into one giant component: every one of those sixteen can reach every other one of the sixteen by some directed chain of super-effective edges, however long, which is precisely the definition of mutual reachability the algorithm is built to detect. The remaining two types, Dragon and Normal, each form their own single-node component, refusing to merge with the giant group or with each other.

A printed type-effectiveness matrix on a card-sorting table with only the Dragon-versus-Dragon cell freshly highlighted, the row's other cells still plain white and unmarked
Figure 2. The chart's own printed grid confirms it in one cell most readers skip past: Dragon is listed as super effective against Dragon. A second reflexive edge, sitting in plain sight the whole time.Image prompt and art direction by Brecht Corbeel; generation pending.
Component Members Size Contains a cycle?
Giant core Fire, Water, Grass, Electric, Ice, Fighting, Poison, Ground, Flying, Psychic, Bug, Rock, Ghost, Dark, Steel, Fairy 16 Yes — the Fire-Grass-Water triangle, Ghost’s self-loop, and many longer paths besides
Dragon Dragon 1 Yes — a single self-loop; the giant core sends edges in (Ice, Fairy), but no other edge leaves this component
Normal Normal 1 No — zero out-degree; a pure sink with no cycle of any length

This is a computed result, not an assumption carried in from the cycle and the self-loops already described — the algorithm was run over the full adjacency list independently of that earlier reasoning, and the three-component split above is what it returned.

The Giant Component Swallows Sixteen of Eighteen Types; the Other Two Fall Out As Sinks

A fair objection to “no apex anywhere” is that plenty of individual pairs inside the giant sixteen-type component ARE cleanly ordered — Water beats Ground, and nothing in the chart lets Ground answer back against Water with a super-effective hit of its own. A skeptic could reasonably argue that “no global apex” is a much narrower, more defensible claim than “no local order exists anywhere,” and that the graph’s raw appearance of chaos might dissolve into tidy sub-hierarchies once you stop looking at all eighteen types simultaneously.

The strongly-connected-components result answers that objection directly, and the honest answer sits in between the two extremes. Collapse the graph to its three components and look at the edges between them — the condensation, in the standard terminology — and a real, if minimal, structure appears: every condensation edge runs out of the sixteen-type giant component and into one of the two singletons, never the reverse, and there is no edge at all between the Dragon singleton and the Normal singleton. Something inside the giant component (Ice, specifically) reaches out to strike Dragon; something else inside it (Fighting) reaches out to strike Normal; nothing that either singleton can throw ever lands back inside the giant sixteen. That is a genuine two-level partial order — one source, two incomparable sinks — and pretending otherwise would be the overclaim the skeptic is right to worry about.

ADVERTISEMENT

What that two-level order does not do is rescue a hierarchy inside the group that actually matters competitively. Sixteen of eighteen types — the overwhelming majority of the chart, including every starter-relevant type and the entire Fire-Grass-Water cycle — sit inside one mutually reachable core where the strongly-connected-components test guarantees a path exists from any member back to any other member, however many steps it takes. No sub-ranking of those sixteen can be strict, because a strict order forbids exactly the kind of round-trip reachability that defines a strongly connected component in the first place; if Fire can eventually out-reach Steel and Steel can eventually out-reach Fire by some chain of super-effective hits, neither can be placed permanently above the other without contradiction. Dragon and Normal are real exceptions, but they are exceptions of the least interesting kind for a battling game — one type that can only ever hit a copy of itself, and one type that cannot hit anything at all. Neither is a candidate apex; an apex has to beat things, and Dragon’s total offensive reach is a single mirror match while Normal’s is nothing whatsoever.

A wall-mounted monitor displaying a node-link graph mid-render, sixteen of eighteen type nodes already recoloured into one shared cluster while two isolated nodes remain flat neutral grey
Figure 3. Tarjan's algorithm run on the real chart, not asserted about it: sixteen nodes fall into one mutually reachable cluster; Normal and Dragon are left over, and stay grey because nothing routes back into them.Image prompt and art direction by Brecht Corbeel; generation pending.

There is also an asymmetry worth naming between the two singleton sinks, since it explains why Dragon earns a component of its own while Normal does not merely tie it. A singleton with a self-loop is, by the algorithm’s own definition, still strongly connected — a single node can always reach itself in zero steps, and the self-loop supplies a one-step path back to it as well, which is enough for Tarjan’s method to certify a nontrivial cycle even in a component of size one. Normal has no such loop; its component is trivial in the strict sense, a bare node with an edge running in and nothing running out or around. Ghost’s self-loop, discovered in the section above to be one of exactly two reflexive edges in the whole chart, does not earn Ghost a component of its own the way Dragon’s does, precisely because Ghost is already mutually reachable with the other fifteen giant-component members through ordinary multi-step paths — its self-loop is real, sourced, and structurally redundant for connectivity purposes all at once. Dragon’s self-loop is not redundant; strip it out and Dragon would collapse from “a one-node cycle” to “a second pure sink exactly like Normal,” with no cycle anywhere in its component at all.

This Is a Sparse Digraph With Cycles, Not a Tournament, and the Difference Is Load-Bearing

A natural instinct, watching eighteen types square off in pairwise battles, is to reach for the vocabulary of a tournament — the specific graph-theoretic object where every pair of distinct competitors has played exactly one match, producing exactly one directed edge between them in every case. John Moon’s standard reference on the subject states the completeness requirement plainly: a tournament is an orientation of a complete graph, meaning every one of the pairs among its nodes carries a directed edge one way or the other, with no pair left unconnected [7]. Applied to eighteen types, a genuine tournament on this vocabulary would require an edge, in one direction or the other, across all one hundred fifty-three unordered pairs of distinct types.

The super-effective graph does not clear that bar, and the shortfall is not a close call. Of those one hundred fifty-three pairs, only forty-nine carry a super-effective edge in either direction — the fifty-one total edges counted earlier, minus Ghost’s and Dragon’s two self-loops, which sit on pairs of the same type and so are not counted among distinct-type pairs at all [1]. The remaining one hundred four pairs, just over two-thirds of every possible distinct-type matchup, carry no super-effective edge running either way — Bug and Ground, say, or Fairy and Ice, meet at ordinary, unremarkable damage in both directions, with the “super effective” relation simply silent on the matchup. A tournament cannot have a silent pair; every one of its games has to have been decided one way. Naming this graph a tournament would be reaching for a precise technical term the data does not earn, when the honest and equally precise term is close at hand: a sparse directed graph containing cycles, populated by nodes most of which never square off super-effectively against most of the others at all.

A printed adjacency list with a red editing pen's ink circling two compared lines, Fire-to-Water and Water-to-Fire, the circle around the second line drawn most of the way around but not yet closed
Figure 4. Fire is not very effective against Water; Water is super effective against Fire. The same two types, the same single move apart, and the relation runs only one direction — exactly what a strict order cannot do only some of the time.Image prompt and art direction by Brecht Corbeel; generation pending.

The distinction is worth holding onto because a companion piece in this same commission, The Type Chart Is a Payoff Matrix, and the Metagame Only Half-Solves It, takes the identical eighteen-type table and reads it through a genuinely different formal lens: restricted to a real, published slice of competitive usage data, the full effectiveness numbers (not just the super-effective sub-relation used here) are treated as a zero-sum payoff matrix and solved for a game-theoretic equilibrium, a question about strategic dominance among a metagame’s actual population rather than about the abstract graph’s own order-theoretic shape. The two pieces share a data source and nothing else load-bearing: one is discrete graph and order theory applied to the full eighteen-type design table in isolation, the other is equilibrium analysis applied to a smaller, usage-weighted slice of the same numbers. Neither result stands in for the other, and the chart supports both questions being asked of it without either one contaminating the other’s answer.

What Would Have to Change For an Apex to Exist

None of this is an argument that the type chart is broken, badly designed, or secretly incoherent — a battling game does not need its damage-multiplier table to form a strict partial order, and nothing about competitive Pokémon depends on one existing. It is a narrower, checkable claim: modeled honestly as a directed graph on its strongest relation, the chart fails irreflexivity twice over, fails transitivity on its most famous three-type cycle, and — when the strongly-connected-components computation is actually run rather than assumed — collapses sixteen of its eighteen nodes into one mutually reachable core that no sub-ranking can cut cleanly. Two singleton sinks fall out of that core, but neither is a plausible apex, and no version of “the best type” survives contact with the graph’s own published edges.

State the discriminator precisely, because a claim this specific should be falsifiable in specific terms. Had the condensation instead produced several nontrivial components — say, four or five real cycles of two or three types each — arranged so that every one of those groups beat every node in some other group and never the reverse, the finding here would have to soften considerably, from “no hierarchy exists” to “no hierarchy exists within groups, but a genuine hierarchy exists between them,” a materially weaker and more interesting claim in its own right. That is not what the algorithm returned. It returned one component holding sixteen of eighteen nodes, an asymmetric two-way split beneath it, and no further structure to soften the finding at any level that matters for actual play. A future generation could change this by retyping a species in a way that adds new super-effective edges — Generation VI already did exactly this once, adding an eighteenth type and rewriting part of the resistance chart in the process [4] — and any such change would require rerunning the same computation rather than assuming the three-component split still holds. Until then, the giant component owns sixteen of eighteen types, and the two types that escaped it did so by falling out the bottom, not by climbing to the top.