Znajdowanie połączeń brzegowych sieci za pomocą algorytmu maksymalnego przepływu
Chcę znaleźć łączność krawędzi (tj. Minimalną liczbę krawędzi do usunięcia w celu rozłączenia wykresu) nieukierunkowanego wykresu przy użyciu algorytmów maksymalnego przepływu (algorytmy Edmonda Karpa / Forda-Fulkersona),
Wiem, że mogę wykonać to zadanie, znajdując minimalny maksymalny przepływ między każdym z dwóch węzłów wykresu, ale spowoduje to liczbę O (| V | ^ 2) sieci przepływowych,
int Edge-Connectivity(Graph G){
int min = infinite;
for (Vertex u: G.V){
for (Vertex v: G.V){
if (u != v){
//create directed graph Guv (a graph with directed edges and source u and sink v)
//run Edmonds-Karp algorithm to find the maximum flow |f*|
if (min > |f*|)
min = |f*|;
}
}
}
return min;
}
Ale chciałbym to zrobić za pomocą | V | sieci przepływowe (uruchamiające algorytm maksymalnego przepływu tylko dla czasów O (| V |)) zamiast O (| V | ^ 2) z nich