Когда дело доходит до языка, вы должны использовать то, что вам наиболее удобно. Например, у них есть пример кода для PHP, поэтому, если вы знаете PHP, вы можете начать с него. Java тоже подойдет.
Теперь я не знаю, есть ли в API fbook какая-либо функция, которая выполняет эту задачу. Но, как вы уже упоминали, вы хотите найти «кратчайший путь». На самом деле существует множество алгоритмов, которые найдут кратчайший путь между двумя узлами графа.
Вы ищете кратчайший путь между двумя узлами графа. Что за график?
График, как он звучит - набор узлов и ребер. В этом случае каждый человек будет узлом. А ребра, соединяющие узлы, образуются дружескими отношениями.
Допустим, у вас есть Друг X , у которого есть друзья {A, B, C, D} и Друг Y , у которого есть друзья (B, D, E, F }. Вы начинаете с создания графика всех друзей (то есть возьмите объединение из двух наборов). {A, B, C, D, E, F, X, Y} Мы включите X и Y, потому что в конечном итоге мы хотим найти кратчайшее расстояние между этими двумя.
Как только вы получите социальный график каждого друга (который является их друзьями, дружат ли они друг с другом и т. Д.), Вы можете поместить их в структуру графика. Я не буду говорить о том, как это сделать - просто собираюсь рассказать об этом здесь.
Один способ представить это с помощью матрицы смежности:
A B C D E F X Y
A 1 0 0 0 0 0 1 0
B ...
C
D
E
F
X
Y
То есть посмотрите на каждый элемент сетки. Если два человека дружат, поставьте «1» в их сечении, иначе «0».
Теперь примените алгоритм кратчайшего пути к этим данным. Вы можете использовать алгоритм Дейкстры для достижения этой цели.
Итак: вам нужно иметь немного знаний о графиках, матрицах смежности и алгоритмах кратчайшего пути. Может даже быть библиотека Java, которая сделает все это за вас. Или даже PHP или R библиотеки. Но на высоком уровне это то, что вы пытаетесь достичь. Я даже не уверен, что API fbook предоставит вам все данные, необходимые для решения этой проблемы.
Удачи!