Goldberg-Tarjan-Algorithmus

Goldberg-Tarjan-Algorithmus

Der Goldberg-Tarjan-Algorithmus, auch Push-Relabel-Algorithmus genannt, ist ein Algorithmus aus der Graphentheorie zur Berechnung eines maximalen s-t-Flusses in einem Netzwerk. Er wurde von Andrew Goldberg und Robert Endre Tarjan entwickelt und 1988 publiziert.

Der Algorithmus

Im Folgenden bezeichnet im Netzwerk (G,u,s,t) G den gerichteten Graphen, u: E(G) \rightarrow \mathbb{R}_+ die Kapazitätsfunktion (wobei u(e) die Kapazität einer Kante e angibt), s den Knoten, von dem der Fluss startet, und t den Zielknoten des Flusses. V(G) bezeichnet die Knotenmenge des Graphen G, E(G) die Kantenmenge und δ + (v) die Menge der Kanten, die den Knoten v verlassen.

Der Algorithmus berechnet einen maximalen s-t-Fluss, indem er einen Fluss f so lange modifiziert, bis er ein s-t-Fluss ist. Tritt dies ein, ist der erhaltene s-t-Fluss auch maximal. Der Algorithmus arbeitet des Weiteren mit einer Distanzmarkierung, d.h. mit einer Funktion \psi: V(G) \rightarrow \mathbb{N}_0 mit ψ(s) = | V(G) | , ψ(t) = 0 und für alle Kanten e=(v,w)\in G_f: \ \psi(v) \leq \psi(w) +1. Eine Kante (v, w) \in E(G_f) des Residualgraphen Gf heißt erlaubt, wenn sie ψ(v) = ψ(w) + 1 erfüllt.

Der Algorithmus arbeitet wie folgt:

  1. Setze für alle Kanten e\in \delta^+(s): f(e): = u(e), und für alle anderen Kanten e: f(e): = 0.
  2. Setze ψ(s): = | V(G) | und für alle anderen Knoten v: ψ(v): = 0.
  3. Solange es einen aktiven Knoten v\in V(G) gibt (d.h. einen Knoten v\in V(G)\setminus \{s, t\}, auf dem mehr Fluss ankommt als abfließt), wähle so einen Knoten v und tue:
    Wenn im Residualgraphen Gf keine erlaubte Kante den Knoten v verlässt, setze \psi(v):=\min\{\psi(w)+1 \mid \exists e\in E(G_f): e=(v, w) \}
    Ansonsten augmentiere f entlang einer erlaubten Kante e, die v verlässt (d.h.: Falls e\in E(G) ist, setze f(e):=f(e)+\min\{u_f(e), \operatorname{ex}(v)\}; andernfalls ist e\in E(G_f)\setminus E(G), und somit e=\overleftarrow{g} Rückkante einer Kante g\in E(G), dann setze f(g):=f(g)-\min\{u_f(e), \operatorname{ex}(v)\}. Hierbei bezeichnen uf die Residualkapazitäten und \operatorname{ex}(v) den Überschuss am Knoten v, also die Differenz des an v ankommenden und des abfließenden Flusses.).

Eine Modifikation des Flusses f in Schritt 3 wird auch „Push“ genannt, eine Modifikation der Distanzmarkierung ψ „Relabel“. Daher rührt der Name Push-Relabel-Algorithmus.

Am Ende ist f ein maximaler s-t-Fluss. Denn zu jedem Zeitpunkt ist der Knoten s die einzige Quelle und der Algorithmus hält erst an, wenn der Knoten t die einzige Senke ist. Da ψ stets eine Distanzmarkierung bleibt und damit die oben beschriebenen Eigenschaften erfüllt, ist gewährleistet, dass im Residualgraphen Gf der Knoten t niemals von der Quelle s aus erreichbar ist. Damit ist sichergestellt, dass der vom Algorithmus berechnete s-t-Fluss tatsächlich ein maximaler s-t-Fluss ist.

Laufzeit

So allgemein wie oben angegeben hat der Algorithmus eine Laufzeit von \mathcal{O}(|V(G)|^2 \ |E(G)|).

Wählt man in Schritt 3 des Algorithmus immer einen aktiven Knoten v, für den unter allen aktiven Knoten die Distanzmarkierung ψ maximalen Wert hat (also ein v mit \psi(v)=\max\{\psi(x) \mid x \text{ ist aktiver Knoten}\}), lässt sich eine Laufzeit von \mathcal{O}(|V(G)|^2 \sqrt{|E(G)|}) beweisen. Bei der Implementierung erfordert dies jedoch, dass für jeden Wert i von 0 bis 2\mathopen|V(G)\mathclose|-2 jeweils eine Liste aller aktiven Knoten v mit ψ(v) = i geführt wird (also für jeden Wert, den ψ theoretisch annehmen kann), zusätzlich muss das jeweils aktuelle Maximum von ψ auf der Menge der aktiven Knoten nachgehalten werden. Dies ist erforderlich, damit in jedem Durchlauf der Schleife ein aktiver Knoten v mit maximalen ψ(v) ohne Laufzeitverlust gewählt werden kann.

Mit ausgeklügelteren Implementierungen lassen sich auch Laufzeiten von

\mathcal{O}(|V(G)| \ |E(G)| \ \log_{2+\frac{|E(G)|}{|V(G)| \log (|V(G)|)}}(|V(G)|))

und

\mathcal{O}(\min\{\sqrt{|E(G)|}, \sqrt[3]{|V(G)|^2}\} \ |E(G)| \ \log \left(\frac{|V(G)|^2}{|E(G)|}\right) \ \log (u_{\max}))

erreichen. Hierbei bezeichnet umax  den maximalen Wert der Kapazitätsfunktion u.

Quellen


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Algorithmus von Dinic — Der Algorithmus von Dinic ist ein Algorithmus aus der Graphentheorie zur Bestimmung eines maximalen s t Flusses in einem Netzwerk. Er wurde von E. A. Dinic (Jefim (Chaim) Dinic) entwickelt und 1970 publiziert. Er ist eine Weiterentwicklung des… …   Deutsch Wikipedia

  • Robert Tarjan — 2010 Robert „Bob“ Endre Tarjan (* 30. April 1948 in Pomona, Kalifornien) ist ein amerikanischer Informatiker. 1986 wurde er zusammen mit John E. Hopcroft für das Design und die Analyse von Algorithmen und Datenstrukturen mit dem Turing Award… …   Deutsch Wikipedia

  • Algorithmus von Tarjan — In der Graphentheorie werden unterschiedliche Algorithmen nach Robert Tarjan benannt: Der Algorithmus von Tarjan zur Bestimmung starker Zusammenhangskomponenten Der Algorithmus von Tarjan zur Bestimmung eines minimalen Spannbaumes Der Algorithmus …   Deutsch Wikipedia

  • Flüsse und Schnitte in Netzwerken — sind Strukturen der Graphentheorie, die vielfältige Anwendungen finden. Inhaltsverzeichnis 1 Definitionen, wichtige Begriffe und Eigenschaften 1.1 Netzwerk 1.2 Fluss 1.2.1 …   Deutsch Wikipedia

  • Liste von Algorithmen — Dies ist eine Liste von Artikeln zu Algorithmen in der deutschsprachigen Wikipedia. Siehe auch unter Datenstruktur für eine Liste von Datenstrukturen. Inhaltsverzeichnis 1 Klassen von Algorithmen nach Komplexität 2 Klassen von Algorithmen nach… …   Deutsch Wikipedia

  • Fluss (Graphentheorie) — Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht… …   Deutsch Wikipedia

  • Flussalgorithmus — Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht… …   Deutsch Wikipedia

  • Flussnetzwerk — Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht… …   Deutsch Wikipedia

  • Maximaler Fluss — Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht… …   Deutsch Wikipedia

  • Maximalfluss — Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”