You must be signed in to change notification settings

## Folders and files

NameName
Last commit message
Last commit date

## History

WHAT IS THIS?

used by Ivan Dynnikov in his paper:

Ivan Dynnikov, Recognition algorithms in knot theory. (Russian)
Uspekhi Mat. Nauk 58 (2003), no. 6(354), 45--92; translation in
Russian Math. Surveys 58 (2003), no. 6, 1093--1139.

Dynnikov proved in the paper above that any rectangular diagram of an
unknot or split link can be **monotonically** reduced to a trivial
diagram by a sequence of elementary moves.  Thus this gives a recognition
algorithm for grid diagrams of the unknot.

More recently (Fall 2006) these diagrams have been used to give a
combinatorial description of the knot and link Floer homology.

Ciprian Manolescu, Peter Ozsvath and Sucharit Sarkar, A
combinatorial description of knot Floer
homology,arXiv:math.GT/0607691

Ciprian Manolescu, Peter Ozsvath, Zoltan Szabo and Dylan Thurston,
On combinatorial link Floer homology, arXiv:math.GT/0610559.

projection consisting of horizontal and vertical line segments lying
in the integer grid, such that whenever two segments cross, the
vertical segment is the overcrossing.  The diagram is also required to
be in standard position, in the sense that no two segments are
colinear.

Dynnikov defines three elementary moves on a rectangular diagram: the
castling, or exchange move; the cyclic permutation, and the
destabilization move.  The castling move is an isotopy which drags one
vertical (horizontal) segment across an adjacent one, interchanging
the x (y) coordinates of the two segments, and fixes all segments
which do not meet the two that are being interchanged.  (Because it is
an isotopy, a castling move can only be performed when the projections
of boundary 0-spheres of the two segments are unlinked.)  The cyclic
permutation is like a castling move involving the top and bottom (left
and right) horizontal (vertical) segments, thought of as lying on the
2-sphere.  The simplest destabilization move removes a pair of
consecutive segments of length 1.  However, the boundary of a segment
of length 1 can never be linked.  So there is a more general
destabilization move that removes any segment of length 1; this is
the destabilization implemented by the program.

HOW DO YOU USE IT?

The easiest way to run the program is to type
from the directory containing the files gridlink.py and
gridlink_data.py.  This will start the GUI.

gridlink as a python module from the python interpreter with the
command:
For this to work, make sure that your python interpreter can find the
starting the python interpreter from the directory containing the
files, or by putting them in a directory that is specified in your
PYTHONPATH variable, or by putting them in the python site-packages
directory.

When the program starts, a small window with an image of the figure 8
knot is presented.  Each link opens in a new window, and these are
tracked in the Windows menu.  If all of the link windows are closed
the figure 8 window will reappear. Closing the figure 8 window
terminates the program.

Inside a link window, when two segments are highlighted in blue,
click the mouse to exchange.  Click and drag the mouse on the
background to do cyclic permutation.  Gridlinks are oriented, and the
orientation is displayed with an arrow head on each vertical segment.
(They can also be displayed as a matrix of dots, or X's and O's.) The
orientation of a component can be reversed by clicking the "reverse"
button and then selecting the component with the mouse.  The buttons
labelled "NE", "NW" "SE", "SW" select one of the four types of
stabilization moves.  (The checkboxes under these buttons can be used
to limit which types of stabilizations are allowed.)  After clicking a
stabilization button, select a segment to be stabilized.  If a
vertical segment is selected, the move takes place at the tail of the
segment.  To perform a move at the head of a vertical segment, select
the following horizontal segment.  In this case, the stabilization
move is equivalent to stabilizing at the tail of the vertical segment
and then transporting the new length 1 segment to the head by exchange
moves.  To destabilize, click the "destab" button and select a length
1 segment to remove.

There are shortcut keys for all operations except for stabilization:
d to destabilize, r to reverse, u to undo, and arrow keys for
cyclic permutations.

The program records all moves, and the list can be displayed by
running the "print_moves" method at the python prompt.  The number of
moves is displayed at the lower right corner of the gridlink window.
The "Moves->Reset" menu action clears the list of saved moves and
restarts the counter.  The "Moves->Review" menu action allows you to
step forward or backward through your sequence of moves, displaying
the projection at each step.  The "Moves->Simplify" menu action
applies a random sequence of 10000 (unrecorded) elementary moves,
performing (allowed) destabilizations when possible.  In most cases
this will reduce the presentation to something close to minimal.  If
not, try again.  Note that the process does not involve stabilization.
(Question: Can any link diagram be reduced to the minimal number of
segments without stabilizing?)

The "View" menu gives several choices for presenting the grid
projection.  You can save or load a projection together with a list of
moves with "File->Save as ...", or "File->Open".  You can save a
Postscript rendering of the link with "File->Snapshot ...".

A link can be entered as a closed braid from the menu
File->New->ClosedBraid.  A dialog window will ask for the number of
strands and a word in the braid group.  For example, the word
1,1,-2,1,3,-2,3,4,-3,4 describes a 5 strand braid representation of
knot 9_12.

The program also contains a table of closed braid representions of
knots up to 12 crossings, generated from a query of Chuck Livingston's
knotinfo database: http://www.indiana.edu/~knotinfo/ To load a knot
from the table use the File->New->Knot menu.

a matrix containing exactly one X and one O in each row and column.
The link is consists of a vertical segment from the X to the O in
each column, and a horizontal segment from the O to the X in each
row.  Enter the link by listing the column indices of the X's and
the column indices of the O's.

Example session (using the interpreter):

% python
>>> #Here are a couple of links that cannot be reduced by elementary moves.
>>> #Thanks to Dylan Thurston for these.
>>> L4a1 = XOlink(A, [1,2,5,0,3,4], [3,0,1,4,5,2])
>>> #Here are a couple of interesting unknots.  Thanks to Ian Agol for these.
[0,4,2,6,5,8,1,7,3,10,12,9,11,18,14,20,13,16,15,19,17,21])
[15,10,13,14,11,12,8,9,3,2,1,5,4,0,7,6])
>>> K9_12 = ClosedBraid(A,5,[1,1,-2,1,3,-2,3,4,-3,4])
>>> K = Knot(A,'11a_123')

No description, website, or topics provided.

## Releases

No releases published

## Packages 0

No packages published