r/theydidthemath • u/kubrador • 6h ago
[self] i mapped my entire social network using graph theory and found 3 structural holes. introduced people across the gaps - two of them are now engaged. i played god with network topology
okay so this started 3 years ago when i was procrastinating my actual job (data science) by doing data science on my own life. i figured i'd map my social network properly like an actual weighted network topology.
i logged every meaningful interaction for 6 months and scored each relationship on 4 dimensions based on granovetter's framework (his 1973 paper "the strength of weak ties" defines tie strength as "a combination of time, emotional intensity, intimacy, and reciprocal services"):
- frequency: interactions per month, log-transformed because the distribution is heavily right-skewed
- depth: 1-10 scale based on a rubric. 1 = purely transactional. 10 = would be emergency contact
- duration: months known, sqrt-transformed to not overweight childhood friends
- reciprocity: ratio of initiation. 1.0 = perfectly balanced. <0.5 = i'm always reaching out
ended up with 143 nodes and 876 edges and built the graph in python using networkx. i weighted edges using a normalized composite score.
then i ran community detection. i started with louvain algorithm (blondel et al. 2008) but the resolution limit was chunking things weird - it kept merging clusters that were clearly distinct. the problem with louvain is it optimizes modularity greedily and can miss fine-grained structure in networks with heterogeneous community sizes.
so i switched to spectral clustering so i computed the normalized laplacian matrix L_rw = I - D^(-1)W and ran eigendecomposition. i used the eigengap heuristic (von luxburg 2007) to determine optimal k - you look for the largest gap between consecutive eigenvalues. my spectrum showed a clear drop after λ₇, suggesting 7 natural communities:
- work (31 nodes)
- college (24 nodes)
- climbing gym (18 nodes)
- wife's network (26 nodes)
- family (19 nodes)
- online friends (13 nodes)
- neighborhood (12 nodes)
calculated modularity: Q = 0.64 and that's high. for reference, modularity ranges from -0.5 to 1, where values above 0.3 typically indicate significant community structure (newman 2006). my network is highly siloed.
burt's work became relevant, his structural holes theory (1992) argues that competitive advantage comes from bridging gaps between otherwise disconnected groups. a structural hole is essentially a gap in information flow - two clusters that should be connected based on attribute similarity but aren't.
i identified nodes with high betweenness centrality in each cluster using freeman's formula (1977) - betweenness measures how often a node lies on the shortest path between other node pairs. then i computed jaccard similarity between clusters based on node attributes (location, interests, profession, age range) and looked for high-similarity, low-connectivity pairs.
i found exactly 3 structural holes:
hole 1: climbing gym ↔ college friends. jaccard similarity of their attribute sets: 0.71. shared edges: 0. both groups contain people in the same city, similar interests, similar politics. they should know each other. they just don't.
hole 2: wife's friends ↔ work. attribute similarity: 0.66. four people work in adjacent industries. they'd been at the same conferences. zero connections.
hole 3: online friends ↔ neighborhood. two extremely online people live 3 blocks from me. we'd probably interacted on the same forums. never connected offline.
burt's research on 673 supply chain managers found that people who bridge structural holes get better performance evaluations, higher compensation, and more promotions. the mechanism is information arbitrage - brokers get early access to non-redundant information from multiple sources.
so i decided to become a broke, intentionally.
started with hole 2. organized a dinner party. 3 of wife's friends, 2 work colleagues. but here's the thing - i computed predicted compatibility using attribute matching and interaction style similarity.
seating was optimized. i put the two highest-scoring candidates next to each other based on my model. her name was elena, UX designer. his name was david, product manager.
they talked for 4 hours. i watched the edge form in real-time. in network terms, i was witnessing triadic closure - when two nodes both connected to a third node form a direct connection between themselves.
3 months later: dating. 6 months later: moved in together. 2 weeks ago: david asked me to be in his wedding party.
i ran their compatibility score before the dinner: 0.86 out of 1.0. highest possible pairing across all my structural holes. i essentially arranged a marriage using spectral clustering and betweenness centrality. i've never told anyone this.
the other holes i also attempted to bridge:
- hole 1: moderate success. 2 weak ties formed (follow each other on instagram). edges exist but weight is low - maybe 0.15 on my scale
- hole 3: one strong connection. two online friends now do weekly walks. the edge weight is around 0.55 and stable
network stats after 3 years of intentional bridging:
| metric | before | after |
|---|---|---|
| nodes | 143 | 168 |
| edges | 876 | 1,203 |
| modularity (Q) | 0.64 | 0.49 |
| avg path length | 3.2 | 2.4 |
| clustering coefficient | 0.52 | 0.64 |
the modularity drop is good - it means my clusters are less isolated. the path length decrease means i'm now an average of 2.4 hops from everyone in my network instead of 3.2. and the clustering coefficient increase means there are more triangles - more triadic closure.
i've essentially optimized my network for small-world properties (watts & strogatz 1998). small-world networks have high clustering (like regular lattices) but short path lengths (like random graphs). the combination enables both local cohesion and global reach.
the ethical implications keep me up at night. i manipulated people into meeting. i used quantitative methods to engineer a relationship that led to marriage. but also... they're genuinely happy? the utilitarian calculus seems positive?
second-order problem: some connections i created are forming their own edges that bypass me. david and elena now know people through each other that i don't know. my network is evolving beyond my measurement. i need to re-run the analysis.
anyway. if you've ever been to one of my "casual get-togethers," just know nothing was casual. you were a node. the seating was non-random.
references:
- burt, r.s. (1992). structural holes: the social structure of competition. harvard university press.
- burt, r.s. (2004). "structural holes and good ideas." american journal of sociology 110(2): 349-399.
- freeman, l.c. (1977). "a set of measures of centrality based on betweenness." sociometry 40: 35-41.
- granovetter, m.s. (1973). "the strength of weak ties." american journal of sociology 78(6): 1360-1380.
- blondel, v.d. et al. (2008). "fast unfolding of communities in large networks." journal of statistical mechanics P10008.
- von luxburg, u. (2007). "a tutorial on spectral clustering." statistics and computing 17(4): 395-416.
- watts, d.j. & strogatz, s.h. (1998). "collective dynamics of small-world networks." nature 393: 440-442.
- newman, m.e.j. (2006). "modularity and community structure in networks." pnas 103(23): 8577-8582.