Skip to content

Use Case

classDiagram
    note_tv --|> notation
    note_tv *-- note_tv_t

    class note_tv_t {
        <<struct>>
        List~uint8_t~ twist_vec
    }

    class notation {
        <<interface>>
    }

Language

C

Implements

Uses

N/A

Libraries

N/A

Functionality

A rational tangle is given by alternating NE,SE and SE,SW twisting of the \(0\) tangle\({}^{[2]}\)\({}^{[1]}\). Discussion of canonicality of this construction of twist vector can be found in \({}^{[2]}\). A twist vector encodes these alternating twists as a list of integers.

Example

Starting with the \(0\) tangle then twisting NE/SE clockwise 3 times SW/SE clockwise 2 times NE/SE clockwise 2 times we have noted as \(\LB3\ 2\ 2\RB\)

Data Structure Description

When encoding a twist vector as a string the standard indexing is \(\LB x_n\ x_{n-1}\ \cdots\ x_0\RB\) we follow the convention but align the indexing to the array index, that is

$ $ \LB xn\ x\ \cdots\ x0\RB\to \begin{array}{|c|c|c|c|} \hline \text{0x0000}& & &\text{0x0000}+n\cdot \text{size_t}\\hline x_0&\cdots & x $ $} &x_n\ \hline \end{array

Encoding

When encoding the data structure to a string we need to reverse the order we read the twist vector array. This will left align the \(0\) index in the string.

Decoding

We need to insert entries into the twist vector data structure, to do this we will traverse the string in reverse.

Cite

  1. Conway, J.H. “An Enumeration of Knots and Links, and Some of Their Algebraic Properties.” In Computational Problems in Abstract Algebra, 329–58. Elsevier, 1970. https://doi.org/10.1016/B978-0-08-012975-4.50034-5.
  2. Kauffman, Louis H., and Sofia Lambropoulou. “On the Classification of Rational Knots,” 2002. https://doi.org/10.48550/ARXIV.MATH/0212011.