Here's a simple package for drawing knot diagrams and computing the Alexander polynomial. A typical usage case for the AlexanderPolynomial function is when a knot needs to be identified and only a visual representation of the knot is available. Then it's trivial to write down the Dowker sequence by hand and then the sequence can be used as an input for this package. The KnotDiagram function also takes the Dowker sequence as an input.

 

TorusKnot(p, q) and PretzelKnot(p, q, r) are accepted as an input as well and can also be passed to the DowkerNotation function.

 

The algorithm is fairly simple, it works as follows: represent each double point as a quadrilateral (two 'in' vertices and two 'out' vertices); connect the quads according to the Dowker specification; draw the result as a planar graph; erase the sides of each quad and draw its diagonals instead. This draws the intersections corresponding to the double points and guarantees that there are no other intersections. The knot polynomial is then computed from the diagram.

 

The diagrams work fairly well for pretzel knots, but for certain knots they can be difficult to read because some of the quads around the double points can become too small or too skewed. Also, the code doesn't check that the generated quadrilaterals are convex (which is an implicit assumption in the algorithm).

 

knot.txt

knot.mw

read "c:/math/prg/maple/knot.txt"

_m489214528

(1)

with(Knots)

[AlexanderPolynomial, DowkerNotation, KnotDiagram]

(2)

AlexanderPolynomial([6, 8, 10, 2, 4], t)

t^4-t^3+t^2-t+1

(3)

AlexanderPolynomial([4, 10, 14, 12, 2, 8, 6], t)

3*t^2-5*t+3

(4)

AlexanderPolynomial([6, 18, 16, 14, -20, 4, 2, 22, 12, -8, -10], t)

2*t^6-11*t^5+24*t^4-31*t^3+24*t^2-11*t+2

(5)

KnotDiagram([10, 12, -20, -16, -18, 2, 22, 24, -8, -4, -6, 14])

 

AlexanderPolynomial([10, 12, -20, -16, -18, 2, 22, 24, -8, -4, -6, 14], t)

t^10-t^9-t^8+6*t^7-11*t^6+13*t^5-11*t^4+6*t^3-t^2-t+1

(6)

AlexanderPolynomial([4, 8, 10, 16, 2, 18, 20, 22, 6, 14, 12], t)

2*t^6-11*t^5+25*t^4-31*t^3+25*t^2-11*t+2

(7)

DowkerNotation(TorusKnot(5, 4))

[-24, -10, 20, -30, -16, 26, -6, -22, 2, -12, -28, 8, -18, -4, 14]

(8)

KnotDiagram(TorusKnot(5, 4))

 

AlexanderPolynomial(TorusKnot(p, q), t); 1; simplify(subs([p = 5, q = 4], %))

(t^(p*q)-1)*(t-1)/((t^p-1)*(t^q-1))

 

t^12-t^11+t^8-t^6+t^4-t+1

(9)

DowkerNotation(PretzelKnot(3, -4, 5))

[-16, -14, 20, 22, 24, 18, -4, -2, 10, 12, 6, 8]

(10)

KnotDiagram(PretzelKnot(3, -4, 5))

 

AlexanderPolynomial(PretzelKnot(p, q, r), t)

piecewise(p::odd and q::odd and r::odd, piecewise(p*q+p*r+q*r <> -1, (1/4)*signum(p*q+p*r+q*r+1)*((p*q+p*r+q*r)*(t^2-2*t+1)+t^2+2*t+1), 1), AlexanderPolynomial(PretzelKnot(p, q, r), t))

(11)

eval(%, [p = 3, q = -4, r = 5])

2*t^8-3*t^7+2*t^6-t^5+t^4-t^3+2*t^2-3*t+2

(12)

 

Download knot.mw

knot.txt


Please Wait...