Automatic knot/link identification

23 Views Asked by At

My program spits out links as a crossing diagram. In fact, it does have some topological data (not only graphic) since the links are constructed as sums of tangles, and instead of drawing line A to line B, I could "follow" this lines and see if at the end some Dowker code results (but my brain already hurts now). Main problem: The diagram isn't slightliest in minimal form, so I would have to apply some Reidemeister move heuristic too. (I surely won't go beyond 10 crossings, and for 9 I already have lots of paper sheets sorted by all kind of link properties, so the hassle is reducing diagrams not yet in minimal form. Think of the eight crossing diagram for the Borromei rings - could you reduce it with one look?)

Any idea how I could do this faster as "by hand" (and I am quite fast)?

Exhibit 1. Link 4_2_1+, only messy

Random output: $4^2_{1-}$, far from minimal. Red lines split the tangles that were involved in construction.

1

There are 1 best solutions below

1
On BEST ANSWER

For link diagrams up to 11 crossings, you could use KnotFolio, so long as the knot or link is prime and non-split, and so long as you are ok with identification up to symmetry. KnotFolio makes use of the KnotInfo and LinkInfo databases.

First, I filtered your diagram in an image editor to get the diagram itself.

filtered out red lines

I copy/pasted this into KnotFolio and adjusted some sliders to scale it up and blur/threshold it until all the gaps from the removed red lines went away:

importing

Then I clicked "accept" to go into image editing mode

editing

Editing the image further turns out not to be necessary — upon clicking "convert to diagram" it manages to be interpretable as a diagram.

diagram

From here, we can see that it's unambiguously L4a1. The curly braces indicate which variant it is; swapping the orientation of one of the components gives the other variant.


There are other options too, such as using KLO. It doesn't have image importing, but it does let you interactively manipulate knots using Reidemeister moves.

Or, there's generating a PD code using your program and using the Mathematica KnotTheory library to calculate invariants. Theoretically KnotFolio could accept PD codes, but there is no UI for it yet.