I'm very curious where this came up. In any case, the answer to the first question is yes, it does distinguish these trefoils; you found the minimal representatives. Let $a_0,\dots,a_{N-1}$ be the roots of unity that are visited along the knot, in (cyclic) order. Suppose we have a minimal representative for some non-trivial knot. Then we cannot have $|a_k - a_{k+1}| = 1$ for any $k$, as otherwise we could replace this pair $a_k, a_{k+1}$ by a single root of unity (for $N-1$), adjusting the other roots of unity as appropriate. A little more subtly, we cannot have $|a_{k-1} - a_{k+1}| = 1$ either, as then we could again delete $a_k$ from the sequence to get a smaller representation. With these simple constraints, the smallest possible sequence for a non-trivial knot is the one you found for one of the trefoils with $N=7$. There are several possibilities for $N=8$, including the one you found for the other trefoil. I've included a very short Haskell program below that computes this. The possibilities for $N=8$ are $$ (2,7,5,3,1,6,4,0)\quad (2,5,7,3,1,6,4,0)\quad (3,6,1,4,7,2,5,0)\quad (2,6,4,1,7,3,5,0) $$ $$ (3,1,6,4,2,7,5,0)\quad (2,4,6,1,3,7,5,0)\quad (3,5,1,7,4,2,6,0)\quad (4,2,7,5,1,3,6,0) $$ $$ (3,1,5,7,2,4,6,0)\quad (5,3,1,6,4,2,7,0)\quad (2,4,6,1,3,5,7,0) $$ For the second question, I have never heard of this representation before. Here is the code, for anyone interested. -- A (partial) circular stick representation is a list of integers, -- the order of the roots of unity to visit in order type CircStick = [Int] -- The next element ak after a partial representation a1, ..., a{k-1} -- must satisfy -- (a) ak has not already been seen -- (b) |ak - a{k-1}| > 1 -- (c) |ak - a{k-2}| > 1 -- There are a few more "easy" constraint, eg the first and last entries -- cannot differ by one. We do not impose those constraint here. nexts :: Int -> CircStick -> [Int] nexts n [] = [0] nexts n [a1] = filter (\a -> abs (a-a1) > 1) [0..n-1] nexts n (a1:a2:as) = filter (\a -> not (elem a as)) $ filter (\a -> abs (a-a1) > 1) $ filter (\a -> abs (a-a2) > 1) $ [1..n-1] completions :: Int -> CircStick -> [CircStick] completions n as | length as >= n = [as] completions n as = concat [completions n (a:as) | a <- nexts n as] -- Impose final constraints: -- (a) Last entry cannot be 1 -- (b) Take entry that is lexicographically less than its reverse -- (c) first and next-to-last entries cannot differ by one circSticks :: Int -> [CircStick] circSticks n = filter (\as -> abs ((as!!0) - (as!!(n-2))) > 1) $ filter (\as -> as < tail (reverse as)) $ filter (\as -> head as /= 1) $ (completions n [])