While helping my dad straighten a line of survey flags in somewhat thick woods, I pondered the effectiveness of the algorithm we were using:

  1. For many iterations:
  2. For each middle flag in the line:
  3. Sight from the previous flag along to the next flag, then,
  4. Move the middle flag to be inline to the line-of-sight.
  5. Next flag.
  6. Next iteration.

This algorithm is illustrated by the above simulator, though the simulation places the middle flag at the midpoint of the left and right flags, not just on the line of sight.

We eventually discovered that what was supposed to be a line was actually a curve arcing out through the woods, as you'll see in many of the simulations. Positional information travels from the endpoints in towards the middle nodes, but the signal strength is cut in half with each flag along the way. This produces an agonizingly slow asymptotic approach to the ideal line.

Our final algorithm involved increasing the "local signal area" by standing at far-away flags and waving flagging tape at each other to increase visibility. Then I would run along the flags and reposition them from memory. By doing this, we could adjust about a third of the flags at a time, and the work went much faster. (Perhaps I will make a simulation for this alternate algorithm.)