Friends' friends make friends


I completed an intense month-long summer course in Santa Fe this year. We were a fairly diverse (but uniformly so) 80 people ensemble of young scientists and no-one knew eachother beforehand. We did random mingling events and initially interactions felt sporadic, but after a week or so cliques had formed.

Some groups had slight bias (gender, ethnicity, age) but most looked and felt diverse. To me this was super interesting. If people had little to go on other than random encounters, how could groups form?

Friendships form in any healthy environment, but that does not explain the clustering. My suspicion was that people would acquaint more or less randomly, become friends, and then preferentially make friends with their friends' friends. Intuitively, this mechanism should produce cliques but I wanted to know what it could look like when displayed as a network.

To play along, hit d and add the first link. Everytime you press, a friendship is created. Initially, they appear randomly, but if you look closely you will be able to see that eventually triangles form. This happens because each person connects to friends' friends if possible. I added the small twist that nodes can shed a link to make a new connection (though still following the same principle). The process stops when each node has degree five. Press r to reset and f to toggle fast-mode.

I think there are interesting things to notice. If you run the model multiple times, you'll find that it rarely creates communities that are completely disconnected from the rest. Also, groups are never that small. We would probably see different results if we used a different non-uniform degree distribution, tuned the number of nodes, altered the linking dynamics, etc.. But that sounds like work.

The code is available here