В LinkedIn есть эта замечательная функция, в которой при посещении профиля какого-либо пользователя LinkedIn запрашивает, как вы подключаетесь к этому пользователю через сеть.
Предполагая, что посетитель и владелец профиля являются двумя узлами графа, где узлы представляют пользователей, а край представляет дружбу, простым решением может быть bfs, начиная с обоих узлов до определенного уровня и проверяя, есть ли какие-либо пересечения. Пересечения будут узлами связи сети.
Хотя это звучит аккуратно, проблема в том, что для определения друзей каждого человека необходим отдельный запрос к БД. Когда сеть идет глубже двух уровней, это может потребовать много времени. Есть ли более эффективная альтернатива? Если нет, как мы можем добавить лучшую аппаратную поддержку (параллельные вычисления, гриды, распределенную базу данных и т. Д.), Чтобы сократить время, необходимое для вычислений?