In[]:=
numnodes=100;​​nodecost=0.25;​​nodebenefit=1;​​fnode=1;​​​​(*fam=Table[Infinity,{i,1,numnodes},{j,1,numnodes}];*)​​famgraph=Graph[{1},{},VertexLabels{11}];​​For[i=1,i<=numnodes/2(*atleastthatmanyfamilies*),i++,benefits[i]=0;costs[i]=0;family[i]={}];​​benefits[1]=1;​​family[1]={1};​​Monitor[For[nodei=1,nodei<=numnodes,nodei++,​​famgraph=VertexAdd[famgraph,nodei,VertexLabelsTable[ii,{i,nodei}]];​​For[nodej=nodei+1,nodej<=numnodes,nodej++,​​If[!MemberQ[family[fnode],nodej],(*countsweightededgeswithinafamily,incrementingwhenconnectingtoothernodesinafamily.Weightisproportionaltoprobabilityofcheating*)(*ifjisnotalreadypartofi'sfamily,testifit'sgotitsownfamily,elsemovetonextj*)​​benefits[fnode]+=RandomReal[{0,nodebenefit}](*countsnodeswithinafamily,incrementingasanodeisadded*);​​famgraph=VertexAdd[famgraph,nodej,VertexLabelsTable[ii,{i,nodej}]];​​i=0;​​While[i<Length[family[fnode]],i++;​​famedge[family[fnode][[i]],nodej]=RandomReal[{0,nodecost}];​​famedge[nodej,family[fnode][[i]]]=famedge[family[fnode][[i]],nodej];​​(*fam[[family[fnode][[i]],nodej]]=1/famedge[family[fnode][[i]],nodej];​​fam[[nodej,family[fnode][[i]]]]=1/famedge[nodej,family[fnode][[i]]];*);​​famgraph=EdgeAdd[famgraph,family[fnode][[i]]nodej];​​(*WeightedAdjacencyGraph[fam(*,VertexLabels"Name"*)]*)​​Pause[1];​​costs[fnode]+=famedge[family[fnode][[i]],nodej]​​];(*countsweightededgeswithinafamily,incrementingwhenfirstconnectingtoanodewithinafamily*);​​If[costs[fnode]<=benefits[fnode],​​family[fnode]=Append[family[fnode],nodej];​​,(*else*)​​(*Print[fnode," ",nodei," ",nodej];*)​​famgraph=VertexDelete[famgraph,nodej];​​(*i=0;​​While[i<Length[family[fnode]],i++;​​(*fam[[family[fnode][[i]],nodej]]=Infinity;​​fam[[nodej,family[fnode][[i]]]]=Infinity​​Print[fnode," ",family[fnode][[i]]," ",nodej];*);​​famedge[family[fnode][[i]],nodej]=0;​​famedge[nodej,family[fnode][[i]]]=0​​];*)​​nodei=nodej-1;​​nodej=nodei;​​fnode++​​]​​]​​]​​],famgraph​​];famgraph​​​​(*fam=Table[If[famedge[i,j]>0.01,1/famedge[i,j],Infinity],{i,1,numnodes},{j,1,numnodes}];​​famgraph=WeightedAdjacencyGraph[fam,VertexLabels"Name"]*)