Oto pytanie z poprzedniego egzaminu, który próbuję rozwiązać:
Dla niekierowanego wykresu z dodatnimi wagami w ( e ) ≥ 0 staram się znaleźć minimalne cięcie. Nie znam innych sposobów na zrobienie tego poza wykorzystaniem twierdzenia o maksymalnym przepływie min-cut. Ale wykres nie jest przekierowany, więc jak mam go pokierować? Myślałem o kierowaniu krawędzi na obu końcach, ale który wierzchołek byłby źródłem, a który wierzchołek byłby zlewem? Czy istnieje inny sposób na znalezienie minimalnego cięcia?
algorithms
graph-theory
Józef
źródło
źródło
Odpowiedzi:
Istnieje wiele algorytmów służących do znalezienia minimalnego wycięcia niekierowanego wykresu. Algorytm Kargera to prosty, ale skuteczny algorytm randomizowany.
Krótko mówiąc, algorytm działa poprzez wybieranie losowo równomiernie krawędzi i kurczenie ich przy usuniętych pętlach własnych. Proces zatrzymuje się, gdy pozostały dwa węzły, a dwa węzły reprezentują cięcie. Aby zwiększyć prawdopodobieństwo sukcesu, algorytm randomizowany jest uruchamiany kilka razy. Podczas wykonywania biegów śledzi się najmniejsze znalezione dotąd cięcie.
Zobacz wpis Wikipedii, aby uzyskać więcej informacji. Być może dla lepszego wprowadzenia zapoznaj się z pierwszym rozdziałem Prawdopodobieństwo i obliczenia: algorytmy randomizowane i analiza probabilistyczna autorstwa Michaela Mitzenmachera i Eli Upfala.
źródło
Nie ma znaczenia
źródło
Algorytm Forda-Fulkersona powinien działać dla Ciebie. Możesz utworzyć dwa fałszywe wierzchołki. źródło i zlew.
Zobacz także algorytm Edmondsa-Karpa . Istnieją dwie odmiany:
, w przeciwieństwie do Forda Fulkersona, który obiera dowolną ścieżkę.
To dobry zasób.
źródło