Szukam szybkiego algorytmu do obliczenia maksymalnego przepływu na wykresach dynamicznych. tzn. biorąc pod uwagę wykres i , mamy maksymalny przepływ w od do . Następnie nowy / stary węzeł dodane / usunięty z jego odpowiednich krawędziach, tworząc krzywą . Jaki jest maksymalny przepływ na nowo utworzonym wykresie? Czy istnieje sposób, aby zapobiec ponownemu obliczeniu maksymalnego przepływu?s , t ∈ V F G s t u G 1
Doceniane jest wszelkie przetwarzanie wstępne, które nie zajmuje dużo czasu / pamięci.
Najprostszym pomysłem jest ponowne obliczenie przepływu.
Innym prostym pomysłem jest zapisanie wszystkich ścieżek rozszerzających, które były użyte w poprzednim obliczeniu maksymalnego przepływu, aby dodać wierzchołek , możemy znaleźć proste ścieżki (w zaktualizowanym wykresie wydajności z poprzedniego kroku), które zaczynają się od źródła, przechodzą do a następnie przechodzą do miejsca docelowego, ale problem polega na tym, że ta ścieżka powinna być prosta, nie mogłem znaleźć lepszego niż dla tego przypadku, dla. (Zauważ też, że jeśli była to tylko jedna ścieżka, można to zrobić w ale tak nie jest.)v O ( n ⋅ m ) m = | E | O ( n + m )
Również do usuwania węzła powyżej pomysł nie działa.
Widziałem też papiery takie jak Przyrostowe podejście do krawędzi , ale wydaje się, że w tym przypadku nie są wystarczająco dobre, to więcej niż dla każdej krawędzi i wydaje się, że nie jest odpowiednim rozszerzeniem w tym przypadku (po prostu ponownie obliczamy przepływ). Również obecnie używam algorytmu maksymalnego przepływu Forda-Fulkersona Jeśli istnieje lepsza opcja dla algorytmów online, dobrze to wiedzieć.