Jestem bardzo nowy w kodowaniu Pythona i szukam algorytmu, który szybko znajdzie wszystkie ścieżki między węzłem początkowym a węzłem końcowym dla bardzo dużego wykresu - powiedzmy wykres ma około 1000 węzłów i 10 000 krawędzi. Liczba ścieżek, które faktycznie istnieją od węzła początkowego do węzła końcowego, jest mała - dziesięć lub mniej. Aby nieco uszczegółowić to pytanie, zastanów się nad siecią społecznościową - jeśli miałbym 1000 przyjaciół i chciałem wiedzieć, ile sposobów mój najlepszy przyjaciel z liceum łączy się z moim współlokatorem ze studiów, nie obchodzi mnie to, że mój najlepszy przyjaciel z liceum jest podłączony do wszystkich 200 moich przyjaciół ze szkoły średniej, ponieważ te ścieżki nigdy nie prowadzą do mojego współlokatora. Co chcę zrobić z tym kodem Pythona, szybko podzielę ścieżki, które istnieją między moimi dwoma przyjaciółmi i zasadniczo pozbywam się całego "szumu", który istnieje wokół tych dwóch węzłów.Bardzo szybki algorytm dla wszystkich ścieżek między dwoma węzłami
Próbowałem wprowadzić wiele przykładów kodu, z których wszystkie działają dobrze na małych, prostych wykresach. Jednak, gdy próbuję włączyć je do mojej dużej analizy wykresów, wszystkie one trwają zbyt długo, aby były przydatne.
Czy wszyscy mają jakieś sugestie dotyczące metod badania (np. Coś, co zostało już stworzone w siecix, a nawet informacje na temat używania stosu vs. rekursji, itp.), Przykłady kodu do zaimplementowania lub nawet inne trasy poza pyton do ścigania? Pamiętaj, jestem początkującym pytonem.
Przekłada jednym z rozwiązań w tym poście do Python: http://stackoverflow.com/questions/58306/ graf-algorytm-do-znalezienia-wszystkich-połączeń-między-dwu-arbitralnych-wierzchołków –
Ponadto, to: http://stackoverflow.com/questions/8922060/breadth-first-search-trace-path –
Wyzwaniem jest wiedza kiedy je wszystkie znajdziesz. Nie sądzę, że to możliwe bez zbadania ogromnej liczby węzłów. Algorytm nie może zaniedbać 200 znajomych, ponieważ nie może dowiedzieć się (bez sprawdzania ich i ich dalszych przyjaciół), że nie łączą się ze współlokatorem. Rzeczywiście, nie określa, czy istnieją ścieżki przez tych przyjaciół cały punkt prowadzenia wyszukiwania? – Blckknght