Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|cite|improve this question
Even checking if a given diagram represents the unknot is a hard problem: – Suresh Venkat Feb 24 '14 at 6:24
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. – Martin Berger Feb 24 '14 at 11:24
up vote 12 down vote accepted

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 .

share|cite|improve this answer

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.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.