# How can I compute knots?

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?

• Even checking if a given diagram represents the unknot is a hard problem: en.wikipedia.org/wiki/Unknotting_problem 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. 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.