Yesterday at work we had a staff day, where we were asked to play an interesting game as an icebreaker.
We (50 or so people) were told to stand in a circle and choose 2 people at random out of the group. We were then asked to walk to a point so that we would be equidistant to those two people. After a few eyerolls, we set off, but contrary to most people's expectations, the outcome was quite fascinating! We found that the group as a whole appeared to be in constant movement, although finally we did reach some sort of equillibrium.
This got me thinking, would a collection of points set up in this way ever reach a position of stasis?
Of course, there are obvious conditions under which there might be no movement at all (eg if each person chose the 2 people adjacent to him/her to start with), but apart from these unlikely conditions, I have no idea whether, given unlimited runtime, stasis would ever be achieved.
In the "game" we enacted as a group, participants were allowed to triangulate their positions to achieve equidistance. However, I would like to add the extra constraint that equidistance in this case should mean the shortest possible equidistance, since triangulation adds all sort of complications.
I am also assuming that the points are infinitesimally small, so collision is not an issue.
Ok. So I was a bit geeky, and went home and made a little simulation of it (imagine the people are holding black umbrellas and an aerial film was shot of the first 300 frames!):
code (improvements in scaling)
Looking at the gif, other questions arise of course, like what on earth is going on with this order$\rightarrow$chaos$\rightarrow$ strange-attractor-type shapes? And why do they seem to exhibit this mean curvature flow-type behaviour?
Added
As requested by @AlexR. here is a second gif of $k=100$ points slowed down to show what happens between frames 1 and 100 (as process appears to start converging to the loops just before $k$ frames).
Note
Original code was faulty (whole thing was wrapped in manipulate
which meant random seed was constantly changing). Code and gifs now updated. The images certainly seem to make more sense - it appears that the group tend towards eventually reforming back into a circle, but this is only speculation. The same questions still apply though.
Point mechanics
Just to clarify (to reiterate comment below in answer to question by @Anaedonist), given a step size of 1 unit (the unit circle around the black point), the black point will move 1 unit in the direction of the midpoint (dark blue) of its corresponding pair (red), so its new position is the light blue point (image on left), unless the midpoint is inside the unit circle, in which case, the step size is smaller, and the light blue point reaches the midpoint (image on right):
I should probably add the requirement that each point must be selected (ie there are no points that are unselected /unpaired). This simplifies it somewhat, and probably accounts for the regularity seen in the above images. It also avoids the problem of potential breaking off into smaller sub-groups. (In a real-life enactment, this might be remedied by selecting participant names out of a hat, or similar.)
A note on scaling
Since the code update, it appears that scaling has an impact on point behaviour, issofar as if the points are small in comparison to the step size (ie the unit circle within which movement is permitted per frame), the points enter into the strange looping structures as seen in the gifs. The further apart the points are spread to begin with, the more quickly convergence to elliptical uniformity appears to occur:
Left image shows $k=100$ points, starting positions within unit circle produced with pursuit[#, Floor[Sqrt[#] #], 1] &[100]
; right-hand image shows $k=100$ points, starting positions within unit circle $\times k \log k$ produced with pursuit[#, Floor[Sqrt[#] #], # Log[#]] &[100]
.
Likely convergence conditions
Its fairly clear from this that the closed curves start when the points converge to within the step size of the unit circle.
code (lengthy, but far more transparent, added for straightforward manual edits) or less transparent code for any k.
This code is more faithful to the true pursuit curve. Though not a true pursuit curve, it mimics it, and the difference can be seen in the smoother transitions:
Comparison with true pursuit curve:
where red $=$ true pursuit curve and blue $=$ mimicking function.