chcę NetworkX znaleźć absolutną najdłuższą drogę w mojej reżyserii, graf acykliczny.NetworkX: skutecznie znaleźć absolutną najdłuższą ścieżkę w dwuznakiem
Wiem o Bellman-Ford, więc zanegowałem moje długości wykresów. Problem: networkx's bellman_ford() wymaga węzła źródłowego. Chcę znaleźć absolutną najdłuższą drogę (lub najkrótszą drogę po negacji), a nie najdłuższą ścieżkę od danego węzła.
Oczywiście mogłem uruchomić bellman_ford() na każdym węźle na wykresie i sortować , ale czy istnieje bardziej wydajna metoda?
Z tego co czytałem (np http://en.wikipedia.org/wiki/Longest_path_problem) Zdaję sobie sprawę, że rzeczywistości nie może być bardziej skuteczny sposób, ale zastanawiałem się, czy ktoś miał jakieś pomysły (i/lub okazały P = NP (uśmiech)).
Uwaga: Wszystkie długości krawędzi w moim wykresu są +1 (lub -1 po negacji), a zatem sposób, który po prostu odwiedza większość węzłów będzie działać. Ogólnie rzecz biorąc, nie będzie można oczywiście odwiedzić WSZYSTKICH węzłów.
EDIT: OK, po prostu sobie sprawę, że można dodać dodatkowy węzeł, który po prostu łączy się z każdym innym węzłem na wykresie, a następnie uruchomić bellman_ford z tego węzła. Jakieś inne sugestie?
To nie jest praca domowa. Z pewnością networkx wdroży ten algorytm?Próbowałem Twojego linku i wygląda na to, że wymaga logowania? – barrycarter
Zaktualizowałem za pomocą kodu. Masz rację - ten link jest zły. Powinny być inne odniesienia - może uda nam się znaleźć coś dobrego. – Aric
Okazuje się, że mój wykres jest już sortowany topologicznie i że mogę rozwiązać problem bez korzystania w ogóle z networkx (śledząc najdłuższą ścieżkę przychodzącą na węzeł i poprzedni węzeł dla każdej z takich ścieżek, jak wskazano). Nie mogę uwierzyć, że to takie proste! – barrycarter