Я управляю своим собственным сайтом, где люди имеют возможность иметь друзей. Это, как хранить дружбу:Связь между двумя пользователями
id1 | id2
1 | 2
1 | 3
2 | 4
В основном идентификатор пользователя 1 дружит с идентификатором пользователя 2 и идентификатором 3 и 2 пользователя дружит идентификатор пользователя 4.
Что я пытаюсь получить как , например, соединены 1 и 4. В настоящее время это так:
1 -> 2 -> 4
Если речь идет о между 4 и 3 было бы:
4 -> 2 -> 1 -> 3
Идея заключается в том, чтобы найти как можно быстро связь между этими двумя, как это возможно
Единственным способом Я могу думать о создании массивной большой петли с множеством петель и тому подобным, который, вероятно, может быть лучше и эффективнее.
звучит как вариант для путешествующего коммивояжера? – KevinDTimm
Это нетривиально. Изучите [теорию графа] (http://en.wikipedia.org/wiki/Graph_theory). – engineerC
Примерно, сколько записей у вас есть в таблице друзей? Какова плотность графика, т. Е. У большинства людей есть пара друзей, или у большинства людей есть сотни друзей? Требуется ли вам найти абсолютный кратчайший путь или любой путь в порядке? Вы хотите найти путь независимо от того, как долго это происходит, или вы можете остановиться, например, с 5 ссылками max? Является ли 'id1' всегда меньше, чем' id2'? – mellamokb