It is an open question as to whether there is a polynomial time algorithm for recognizing the unknot. Consider the following procedure for doing so on an actual physical string: Suppose there is a physical string that is tangled and I am holding both of its ends. To determine whether the string is knotted, all I have to do is pull on both ends, tightening the string. If we end up with an unknotted string, then the string is unknotted. Otherwise, the string is knotted. I would think if we simulated this process on a digital computer, it would take polynomial time, since in real life it is quick, at least in my experience. Has this idea ever been considered in the literature? Update: When I wrote this question, I made a mistake in my understanding of what is the unknot. The mathematical definition is a string with its ends glued together with the topology of a torus. I had thought that a string with no knots in it is for all practical purposes the same thing, at least for this question. It turns out that they are not the same. In fact, I now can remember learning a few magic tricks that make use of the fact that they are not the same. Thanks to Andy Putman for pointing my mistake out in the comments. Another update: Thank you to JoshuaZ in the comments for the link to the problem unknot. I tried it out on my own rope and indeed this example shows that the premise of my question is false. Pulling the ends of this rope will not solve this problem.