The best-known techniques for telling knots apart are with knot invariants. These are algebraic objects (e.g polynomials) associated to knots. If two knots have different invariants, then you know they really are different knots rather than different configurations of the same knot.

But there is an alternative *algorithmic* approach to this question.

In 1970, the German-born mathematician Wolfgang Haken, at the University of Illinois, tackled the question of telling when two knots are the same: his tactic was to turn the whole problem inside out. Instead of comparing two knots floating in space, he looked at the knots’ *complements*: the 3-dimensional shapes that are left when you remove the knots from the surrounding matter, leaving knot-shaped holes. (Imagine setting the loosely knotted loops in blocks of glass, and then removing the strings.) If he could tell when these two objects could be deformed one into the other, then the same would go for the knots.

He set to work on a method which would take the two knot-complements, dissect them in stages, and eventually decide whether or knot they were the same. He made a great deal of progress, but Haken’s algorithm was left with holes in it when he moved onto other concerns (most notably in 1976 with Kenneth Appel he proved the famous Four Colour Theorem). However other people picked up the algorithm, notably Sergei Matveev at Chelyabinsk State University in Russia who filled in the final gap in 2003.

So in theory, mathematicians now have the foolproof^{[1]} method for distinguishing knots that they longed for. A tremendous achievement though this is, it may be too cumbersome ever to be fully implemented on a computer in the real-world. So other, less powerful but more practical algorithms are used in current knot tabulation efforts.

Another reason for mathematicians’ reticence is that the Haken algorithm doesn’t leave any fingerprints. In theory, it can provide a yes/no answer to the question of whether two specific knots are the same. But it can’t identify or describe individual knots: algebraic invariants are needed for that.

For the specific problem of recognising configurations of the unkot, more manageable algorithms have been found. But with these too, it is an open question whether they can be made to run fast enough (i.e in Polynomial Time) to be of widespread practical use in the real world: this is the so-called unkotting problem.

[1] perhaps “watertight” would be more accurate here – not a lot of mathematics is foolproof