То, что вы ищете, является эвристическим. Ни один алгоритм не может сказать, учитывая граф друзей как единственный вход, являются ли два человека, не связанные напрямую, друзьями или нет; отношение дружба / знакомство не гарантированно будет транзитивным (мы можем предполагать симметрию, но это может быть даже натяжение в реальной жизни). Поэтому любая хорошая эвристика должна основываться на понимании того, как люди взаимодействуют, а не на математическом понимании природы графиков отношений (хотя нам нужно будет количественно оценить эвристику в этих терминах).
Предлагать друзей с равной вероятностью - относительно дешевая, но неточная эвристика. Например, у моего отца есть друзья, но я бы не сказал, что я дружу с кем-либо из них (хотя я бы, вероятно, сказал, что я друг моего отца для целей, например, социальной сети). Наличие человека на относительно близком расстоянии не обязательно делает его хорошим кандидатом.
Предложение людей, с которыми у вас очень много расширенных связей, также кажется плохим выбором в целом, потому что это может привести к экспоненциальному росту друзей людей, которые забегают вперед на раннем этапе (семь степеней отделения от игры Кевина Бэкона - это пример этому).
Я предлагаю схему на основе схемы. Предположим , что каждое звено является резистор сопротивлением . Тогда лучшим кандидатом для нового друга может быть человек с самым низким эквивалентным сопротивлением. Вот плохо выполненный пример графики ASCII:R
_____
/ \
a---c f
| | /
b d---e
| \ |
g h i
Скажем, мы хотим найти новых друзей для a
. a
«S текущие друзья b
, c
и f
. Мы оцениваем чистую эквивалентное сопротивление между a
и каждый из d
, e
, g
, h
и i
:
pair resistance
(a,d) 6/7
(a,e) 13/7
(a,g) 7/4
(a,h) 1/1
(a,i) inf
Согласно этой эвристике, d
это лучший кандидат в друзья, а за ним внимательно следят h
. g
следующая лучшая ставка, сопровождаемая e
. i
никогда не может быть кандидатом в друзья по этой эвристике. Считаете ли вы, что результаты этой эвристики отражают реальные человеческие социальные взаимодействия - вот что важно. С точки зрения вычислений, это будет включать в себя поиск подграфа, содержащего все пути между двумя индивидуумами (или, что может быть интересно, некоторое осмысленное выбранное усечение этого), а затем оценку эквивалентного сопротивления между узлами источника и приемника.
РЕДАКТИРОВАТЬ: Так какова моя социальная мотивация для этого? Что ж, это может быть грубая модель того, как трудно связаться, а затем передать, возможно, значительное количество информации через посредников (друзей). В терминах CS (а не в терминах физики) это может быть истолковано как пропускная способность между двумя узлами в графе. Расширения этой системы должны были бы разрешать различные виды связей между людьми с разным весом (сопротивлением, пропускной способностью и т. Д.) И действовать, как указано выше.