Greedy Algorithm Visualizations

Greedy algorithm visualizations show the boldest strategy in the algorithm toolbox: at every step, take the choice that looks best right now, and never look back. This collection animates that gamble step by step — interval scheduling picking the earliest finish, Huffman coding merging the two rarest symbols — each synced to its real code and to the argument for why the gamble is safe.

A greedy algorithm is trivially easy to write and dangerously easy to get wrong, and the entire subject lives in that gap. Any rule you can state in one sentence — earliest start, biggest value, cheapest next step — makes a plausible greedy algorithm; almost none of them are correct. What separates the winners is not cleverness in the code but a proof shape: show that any optimal solution can be exchanged, one choice at a time, into the greedy one without getting worse. When that argument goes through, the dumbest-looking strategy in the book is provably unbeatable.

What Each Greedy Lesson Shows

LessonGreedy ruleWhy it's safeWhat you watch
Interval Schedulingtake the compatible interval with the earliest finishexchange argument: the earliest finish leaves the most room, so it can replace any optimum's first picka schedule fills while a second optimal schedule is exchanged, step by step, into the greedy one
Jump Gameextend one farthest-reach frontier per indexjumps are "up to" nums[i], so the reachable set is one solid prefix — its right edge is the whole state, and a gap in it is finalorange jump arcs race a green reach rail; one preset funnels every arc into a zero and the rail freezes
Huffman Codingmerge the two lowest-frequency subtreesmerging rare symbols early buries only cheap leaves; frequent symbols stay shallowa prefix-code tree assembles from a priority queue, then beats fixed-length encoding on a live bit count
Fractional Knapsackfill by value density, cutting the last item to fita vertical cut keeps density, so densest-first maximizes packed value — revoke divisibility and the same rule loses even to the 0/1 optimuma shelf fills with density rectangles, then 205 / 220 / 240 compare bars settle the argument

A Recommended Learning Order

  1. Interval Scheduling first. It is the cleanest possible stage for the exchange argument — one resource, one rule, and a proof act where you watch a different optimal schedule get transformed into the greedy one without losing a single interval. The long-blocker preset also shows a tempting wrong rule (earliest start) failing, which is half of what learning greedy means.
  2. Jump Game second. The smallest greedy state you will ever meet: one integer. Its invariant — the reachable set stays a solid block — is the template for every "maintain a frontier" argument, and the failure preset (same numbers, swapped once, opposite verdict) shows that greedy verdicts hang on structure, not on values.
  3. Huffman Coding third. Here the greedy choice builds a structure — a binary tree whose shape is the answer — and optimality shows up as a number you can check: 23 bits against fixed-length's 33 on the default text, and a dead tie on the uniform preset, where no prefix tree can beat the flat two bits per symbol.
  4. Fractional Knapsack last. It closes the loop by showing the boundary of the whole strategy: the identical density-greedy rule is provably optimal while items are divisible and stops being safe the moment they aren't — the built-in contrast act replays it 0/1-style and watches it lose.

After these four, the greedy graph algorithms — Dijkstra's shortest paths and the minimum spanning tree — are the natural next stop; they live in the Graph Algorithms section because their data structure, not their proof style, dominates the lesson.