Computing Atlas

How Computing Was Built
Atlas Trail

How Fast Can an Algorithm Go?

9 stops

Two classic algorithms, the pioneers who invented them, and the notation and open questions computer scientists use to judge how efficient an algorithm really is. This trail moves from what a computer can compute at all to the still unresolved question of what it can compute quickly.

Stop 1 of 9.
Concepts

Alan Turing's 1936 model defines computation itself, an infinite tape and a finite rule table, powerful enough to describe anything a general purpose computer can do. Every algorithm on this trail is, in the end, something a Turing machine could carry out.

Stop 2 of 9.
Concepts

A procedure that solves a problem by calling itself on a smaller version of the same problem, until a base case stops it. The mathematics behind it goes back to Alonzo Church and Kurt Godel in the 1930s, and John McCarthy brought it into practical programming with Lisp around 1958 to 1960.

Stop 3 of 9.
Concepts

Pick a pivot, split everything else into smaller and larger, and sort each side the same way. Quicksort is recursion put to work on one of computing's most common tasks, sorting a list.

Stop 4 of 9.
Pioneers

Hoare invented quicksort and later wrote An Axiomatic Basis for Computer Programming in 1969, a founding paper for reasoning formally about whether a program is correct.

Stop 5 of 9.
Concepts

Conceived in 1956 and published in 1959, Dijkstra's algorithm grows the set of nodes whose shortest distance is settled, always extending it through the nearest unsettled node until it reaches the destination. It is the standard answer to finding the shortest path through a network.

Stop 6 of 9.
Pioneers

Dijkstra invented the shortest path algorithm that carries his name and later led the structured programming movement, arguing against unrestricted goto statements in his 1968 letter Go To Statement Considered Harmful.

Stop 7 of 9.
Concepts

Big O notation expresses that a function's growth is bounded above by another, simpler function, letting algorithms like quicksort and Dijkstra's algorithm be compared by growth rate rather than by counting exact operations.

Stop 8 of 9.
Concepts

An NP complete problem is one where, if any single one of them could be solved in polynomial time, every problem in NP could be solved that fast too. That tight link, established in 1971, is why NP completeness sits right next to the open question of P versus NP.

Stop 9 of 9.
Concepts

Whether every problem whose solution can be checked quickly can also be solved quickly is one of the seven Millennium Prize Problems, unresolved since Stephen Cook posed it precisely in 1971. Most computer scientists suspect the answer is no, but nobody has proved it either way.

Download Card

Create an account to keep this trail. Saving copies its stops into a collection of your own, which you can add to, reorder and share.

Where you have got to in this trail is kept by your own browser and is never sent to us. Clearing your browser data clears it. All trails.