# Algorithms for untying knots?

A typical problem I run into while doing anything involving ropes (e.g. climbing or sailing) is how to eliminate tangles efficiently, preferably without having to feed one end of the rope back through all the gnarls. Do there exist algorithms for unknotting ropes efficiently?

Wikipedia alludes to an algorithm to determine whether two knots are equivalent, but this is slightly different than the practical problem I am interested in. What I would like would be something like the following:

1. An algorithm that can be implemented by hand to reduce the complexity of a tangle of rope. E.g. something like "First identify a half hitch, then follow it until you find another half hitch, then do something else...".
2. An algorithm that I could program into an app, which would look at a picture of a rope and say something like "If you pull on this doubled strand, the whole tangle will fall apart."

The latter option could presumably be phrased as a combinatorial problem along the lines of "find the minimum number of moves (suitably defined) to reduce this knot to the unknot (where rope ends are identified for purposes of recognizing knots)."

• There's an algorithm of $O(1)$ complexity invented by Alexander the Great ... ;) – Hagen von Eitzen Jul 19 at 22:22
• @HagenvonEitzen But it requires a call to an oracle... – Yly Jul 19 at 23:30

Maybe this paper and its $$28$$ references will help: