Prowadzę własną stronę internetową, na której ludzie mają możliwość zawierania znajomości. ten sposób przechowywać przyjaźnie:Połączenie między dwoma użytkownikami
id1 | id2
1 | 2
1 | 3
2 | 4
Zasadniczo id użytkownika 1 znajomość z identyfikatorem użytkownika 2 i 3 oraz id użytkownika 2 jest id znajomi użytkownika 4.
Co Próbuję dostać się jak na przykład są połączone 1 i 4. Obecnie jest tak:
1 -> 2 -> 4
Jeśli chodzi o między 4 i 3 byłoby:
4 -> 2 -> 1 -> 3
Chodzi o to, aby znaleźć jak szybki związek pomiędzy tymi dwoma, jak to możliwe
Jedynym sposobem Mogę myśleć o tworzeniu ogromnej, wielkiej pętli z dużą ilością pętli i podobnych rzeczy, które prawdopodobnie mogą być lepsze i bardziej wydajne.
brzmi jak wariacja na podróżującego sprzedawcy? – KevinDTimm
To nie jest banalne. Zajrzyj do [teorii grafów] (http://en.wikipedia.org/wiki/Graph_theory). – engineerC
Z grubsza ile wpisów masz w tabeli znajomych? Jaka jest gęstość wykresu, np. Większość ludzi ma kilku przyjaciół lub większość ludzi ma setki znajomych? Czy wymagane jest znalezienie bezwzględnej najkrótszej ścieżki, czy jakakolwiek ścieżka jest w porządku? Czy chcesz znaleźć ścieżkę bez względu na to, jak długo to się dzieje, czy możesz zatrzymać się na przykład przy maksymalnie 5 linkach? Czy "id1" jest zawsze mniejsze niż "id2"? – mellamokb