Is there a documented way to compute knots? (circumferences embedded in a 3-dimensional Euclidean space).

I mean, a datatype to represent them, and an algorithm to determine if two instances of the datatype represent the same knot.

If the answer is positive, what about the complexity of that problem?

  • 7
    $\begingroup$ Even checking if a given diagram represents the unknot is a hard problem: en.wikipedia.org/wiki/Unknotting_problem $\endgroup$ – Suresh Venkat Feb 24 '14 at 6:24
  • 4
    $\begingroup$ It is possible to represent knots as programs: see this paper by Meredith and Snyder. In that representation, knots are ambient isotopic whenever their encodings are weakly bisimilar. $\endgroup$ – Martin Berger Feb 24 '14 at 11:24

The most natural ways to represent knots are either to embed them piecewise linearly in $\mathbb{R}^3$ (just store the coordinates of the vertices and where you want to put segments) (any tame knot can be embedded piecewise linearly) or with a knot diagram, i.e. storing a projection on $\mathbb{R}^2$ as a graph where at every crossing you specify which strand is above.

As Suresh pointed out, checking knot equivalence is highly non-trivial (not known to be in P) but experimental results for unknot recognition are polynomial-like -- knot equivalence looks much harder though. If you are looking for software, peek at Regina .


One tradition way to represent knots is via knot diagrams. For a discussion of knot diagrams, see "Knots, links, braids and 3-manifolds" by Prasolov and Sossinsky

The program SnapPea represents knots in the three-sphere by converting a given knot diagram into a triangulation of the knot's complement. The triangulation simplification techniques in SnapPea appear to recognize the unknot within a second, for all "human-sized" knot diagrams. For the software SnapPy (Python upgrade of SnapPea) and much else, see the website CompuTop, maintained by Nathan Dunfield.

Ivan Dynnikov in his paper "Three-page approach to knot theory" has given a new and very interesting data structure for representing knots. This also recognizes unknots very quickly, and has led to interesting developments in Heegaard Floer homology -- see the discussions there on grid-links.


Your Answer

