Quello che stai cercando è un euristico. Nessun algoritmo può dire, dato un grafico di amici come unico input, se due individui non direttamente collegati sono amici o no; la relazione di amicizia / conoscenza non è garantita per essere transitiva (possiamo assumere la simmetria, ma potrebbe anche essere un tratto nella vita reale). Qualsiasi buon euristico dovrà quindi basarsi sulla comprensione di come le persone interagiscono, piuttosto che su una comprensione matematica della natura dei grafici delle relazioni (anche se avremo bisogno di quantificare l'euristico in questi termini).
Suggerire amici di amici con uguale probabilità è un'euristica relativamente economica ma imprecisa. Ad esempio, mio padre ha degli amici, ma non direi che sono amico di nessuno di loro (anche se probabilmente direi che sono un amico di mio padre ai fini, ad esempio, di un social network). Avere una persona a una distanza relativamente vicina non lo rende necessariamente un ottimo candidato.
Suggerire alle persone a cui hai molte connessioni estese sembra anche una cattiva scelta in generale, perché questo tenderà a portare a una crescita esponenziale di amici di persone che si spingono avanti presto (i sette gradi di separazione dal gioco Kevin Bacon è un esempio di questo).
R
_____
/ \
a---c f
| | /
b d---e
| \ |
g h i
Di 'che vogliamo trovare nuovi amici per a
. a
's amici attuali sono b
, c
e f
. Si valuta la resistenza equivalente netto tra a
e ciascuna d
, e
, g
, h
, e i
:
pair resistance
(a,d) 6/7
(a,e) 13/7
(a,g) 7/4
(a,h) 1/1
(a,i) inf
Secondo questa euristica, d
è il miglior amico candidato, seguito da vicino h
. g
è la prossima scommessa migliore, seguita da vicino da e
.i
non potrà mai essere un candidato amico di questo euristico. Se trovi che i risultati di questa euristica siano rappresentativi di interazioni sociali umane reali è ciò che è importante. Dal punto di vista computazionale, ciò implicherebbe la ricerca di un sottografo che contenga tutti i percorsi tra due individui (o, forse in modo interessante, qualche troncamento significativamente selezionato di questo), quindi la valutazione della resistenza equivalente tra i nodi source e sink.
EDIT: Quindi qual è la mia motivazione sociale per questo? Bene, questo potrebbe essere un modello approssimativo di quanto sia difficile mettersi in contatto con, e successivamente comunicare eventualmente quantità significative di informazioni tramite intermediari (amici). In termini CS (piuttosto che termini fisici), questo potrebbe essere interpretato come larghezza di banda tra due nodi in un grafico. Le estensioni di questo sistema dovrebbero consentire diversi tipi di collegamenti tra persone con pesi diversi (resistenza, larghezza di banda, ecc.) E procedere come sopra.