Flüsse, Schnitte, bipartite Graphen. Martin Oettinger

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Flüsse, Schnitte, bipartite Graphen. Martin Oettinger"

Transkript

1 Flüsse, Schnitte, bipartite Graphen Martin Oettinger

2 Übersicht Einführung Algorithmen für maximalen Fluss Preflow-Push Ford-Fulkerson Spezialfall: Maximaler Fluss bei minimalen Kosten Reduktionen Bipartites Matching Minimaler Schnitt Zusammenfassung 2

3 Einführung

4 Graphennetzwerke Ein Netzwerk besteht aus einem gerichteten Graph G und einer Kapazitätsfunktion c, die jeder Kante (u,v) einen Wert c(u,v) 0 zuordnet Zwei besondere Knoten: Quelle s und Senke t, Material soll von s nach t transportiert werden Beispiele aus der Realität: Rohrleitungssysteme, Warentransportnetze, etc 4

5 Flüsse in Netzwerken Ein Fluss ist eine weitere Funktion, die in einem Netzwerk jeder Kante eine Zahl f(u,v) Є R zuordnet Beispiele aus der Realität: Tatsächliche Auslastung des Rohrleitungssystems, des Warentransportnetzes, etc. an jedem Teilstück 5

6 Eigenschaften von Flüssen Kapazitätsbeschränkung: u,v Є V: f(u,v) c(u,v) (Der Fluss einer Kante darf nicht größer als die Kapazität sein) Flusserhaltung: u Є V \ {s,t}: f(u,v) = 0 (Für alle Knoten außer Quelle und Senke gilt: Summe der eingehenden Flüsse ist genau so groß wie Summe der ausgehenden Flüsse) Flusssymmetrie: u,v Є V: f(u,v) = - f(v,u) (Der Fluss einer Kante ist genau der negative Fluss der Kante der entgegengesetzten Richtung) Der Betrag eines Flusses entspricht dem Wert der Summe der Einzelflüsse, die von der Quelle aus weg- bzw. zur Senke hinführen Ein maximaler Fluss ist ein Fluss mit maximalem Betrag 6

7 Residualgraph Der Residualgraph zu einem Fluss in einem Netzwerk gibt für jede Kante an, um welchen der Wert der Fluss der Kante maximal verändert werden kann, so dass die Kapazitätsbedingung f(u,v) c(u,v) nicht verletzt wird 7

8 Erweiternder Pfad Ein Pfad in einem Residualgraphen, der von der Quelle zur Senke führt, wird erweiternder Pfad genannt Durch diese Pfade kann der Fluss in einem Netzwerk erhöht werden, und zwar um das minimale Gewicht aller Kanten Unser Beispielgraph mit Fluss: Dazu Residualgraph, mit erweiterndem Pfad: Minimales Gewicht der Kanten des Pfades: 2 8

9 Algorithmen für den maximalen Fluss

10 Algorithmus von Ford-Fulkerson Aufgabenstellung: Ermittle zu einem Graphen G eine maximale Flussbelegung Grundsätzliche Algorithmusidee: 1 initialisiere Residualgraph G mit leerem Fluss f 2 solange erweiternder Pfad p von s nach t in G verfügbar 3 wähle erweiternden Pfad p aus 4 erhöhe f um den Flusswert von p 5 aktualisiere Residualgraph G 6 return f; Noch kein richtiger Algorithmus, da Auswahl des erweiternden Pfades nicht festgelegt ist, mehr dazu später 10

11 Ford-Fulkerson-Idee am Beispiel, Initialisierung Anfangs: Leerer Fluss und Graph, welcher bereits dem Residualgraphen entspricht 11

12 Ford-Fulkerson-Idee am Beispiel, 1. Schritt Auswahl eines erweiternden Pfades Aktualisieren des Residualgraphen Minimales Gewicht der Kanten des Pfades: 4 Aktualisieren der Flussfunktion 12

13 Ford-Fulkerson-Idee am Beispiel, 2. Schritt Auswahl eines erweiternden Pfades Aktualisieren des Residualgraphen Minimales Gewicht der Kanten des Pfades: 6 Aktualisieren der Flussfunktion 13

14 Ford-Fulkerson-Idee am Beispiel, 3. Schritt Auswahl eines erweiternden Pfades Aktualisieren des Residualgraphen Minimales Gewicht der Kanten des Pfades: 1 Aktualisieren der Flussfunktion 14

15 Ford-Fulkerson-Idee am Beispiel, Abschluss Nun lässt sich kein erweiternder Pfad mehr finden: Damit hat man einen maximalen Fluss gefunden: Der Betrag des Flusses ist 11, (Abzulesen an Quelle bzw. Senke) 15

16 Ford-Fulkerson-Idee: Auswahltechnik des Pfades Laufzeit des Algorithmus ist abhängig von der Art, wie man den erweiternden Pfad auswählt Überlegung: Tiefensuche Problem hierbei: Im Worst-case-Szenario werden stets Pfade mit niedriger Kapazität ausgewählt: Befindet sich hier z.b. immer die Kante mit dem Gewicht 1 im erweiternden Pfad, benötigt der Algorithmus 200 Durchläufe, bis es keinen Pfad mehr gibt und somit der maximale Fluss gefunden ist Daraus ergibt sich eine Laufzeit von O(E* maximalerfluss ) Angepasste Breitensuche (Edmonds-Karp-Strategie) Es wird immer der erweiternde Pfad mit der niedrigsten Anzahl an Kanten ausgewählt; damit ist der maximale Fluss im Beispiel in 2 Schritten gefunden Laufzeit: O(V*E²) (Beweis siehe Cormen) Implementierung siehe Wiki 16

17 Preflow-push-Algorithmen Arbeiten auch auf Residualgraphen Im Gegensatz zu Ford-Fulkerson werden keine erweiternden Pfade von der Quelle zur Senke gesucht, sondern der Fluss der einzelnen Kanten wird schrittweise lokal erhöht, ausgehend von der Quelle Jeder Knoten wird als Reservoir angesehen, das temporär unendlich viel Fluss aufnehmen kann, bis er in einem nächsten Schritt zu einem anderen Knoten geleitet wird, möglicher Weise auch zurück Richtung Quelle Knoten haben unterschiedliche Höhen Ist bei einem Knoten der Zufluss ungleich dem Abfluss, so ist dieser aktiv Zwei wesentliche Operationen auf aktiven Knoten Push: Fluss zu einem neuen Knoten ableiten, welcher genau um eine Höheneinheit niedriger sein muss Relabel: Das Niveau des aktuellen Knotens erhöhen, um dann evtl. push anwenden zu können 17

18 Preflow-push-Algorithmen Zwei Varianten Goldbergs generischer Push-relabel-Algorithmus Verwaltung der Knoten mit Überfluss in einer Warteschlange Grundidee: Solange bei einem Knoten angestauter Fluss existiert, gibt es eine Pushoder Relabel-Möglichkeit Genaue Abfolge von Push und Relabel nicht näher spezifiziert Relabel-to-front Weiterentwicklung von Push-relabel Verwaltung einer Liste aller Knoten, auch derer ohne angestauten Fluss 18

19 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 19

20 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 20

21 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 21

22 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 22

23 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 23

24 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 24

25 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 25

26 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 26

27 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 27

28 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 28

29 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 29

30 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 30

31 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 31

32 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 32

33 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 33

34 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 34

35 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 35

36 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 36

37 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 37

38 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 38

39 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 39

40 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 40

41 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 41

42 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 42

43 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 43

44 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 44

45 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 45

46 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 46

47 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 47

48 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 48

49 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 49

50 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 50

51 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 51

52 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 52

53 Push-relabel-Algorithmus am Beispiel Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 53

54 Push-relabel-Algorithmus am Beispiel Der Betrag des Flusses ist 11, (Abzulesen an Quelle bzw. Senke) Rot umrandete Knoten: Aktive Knoten Rosa gefärbter Knoten: Ausgewählter Knoten, dessen gestauter Fluss abgeleitet werden soll Beschriftung der Knoten: <Gestauter Fluss> <aktuelle Höhe> 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere leere Warteschlange w 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 nimm den vordersten Knoten k aus w 8 solange für k Zufluss ungleich Abfluss 9 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 11 erhöhe f um den Flusswert von (k,u) 12 aktualisiere Residualgraph G 13 setze u an das Ende von w, falls nicht schon enthalten 14 ansonsten 15 steigere die Höhe von k, bis es Kante(k,u) mit h(k) = h(u) + 1 gibt 16 gib f zurück 54

55 Relabel-to-front-Algorithmus Unterschiede zu Push-relabel rot dargestellt: 1 initialisiere Residualgraph G mit leerem Fluss f 2 setze Höhenfunktion h für alle Knoten auf 0 3 setze h(s) = V, h(t) = 0 4 initialisiere Warteschlange w Liste aller Knoten L 5 leite Fluss von s ab, unabhängig von h 6 solange w nicht leer ist 7 solange L Knoten mit angestautem Fluss enthält 8 nimm den vordersten Knoten k aus w 9 nimm den vordersten Knoten mit angestautem Fluss k 10 speichere die Höhe von k zwischen 11 solange für k Zufluss ungleich Abfluss 12 wenn es Kante (k,u) gibt mit h(k) = h(u) leite überzähligen Fluss über (k,u) an u ab 14 erhöhe f um den Flusswert von (k,u) 15 aktualisiere Residualgraph G 16 setze u an das Ende von w, falls nicht schon enthalten 17 ansonsten 18 steigere die Höhe von k, bis es Kante (k,u) mit h(k) = h(u) + 1 gibt 19 falls sich die Höhe von k gegenüber Zeile 10 geändert hat, setze k an den 20 Anfang von L 21 gib f zurück Implementierung siehe Wiki 55

56 Algorithmen für den maximalen Fluss, Laufzeitvergleich Algorithmus Ford-Fulkerson Ford-Fulkerson mit Preflow-Push, Preflow-Push, mit Tiefensuche Edmonds-Karp- Strategie Goldbergs generischer Push- Relabel-to-front- Weiterentwicklung relabel-algorithmus Laufzeit O(E* f ) O(V*E²) O(V²*E) O(V³), bei dicht f = maximaler Fluss besetzten Graphen asymptotisch mindestens so gut wie Push-relabel Bemerkung In der Praxis Geeignet für dünn Geeignet für dicht irrelevant besetzte besetzte Netzwerke Netzwerke V: Anzahl der Knoten, E: Anzahl der Kanten 56

57 Maximaler Fluss bei minimalen Kosten (1) Erweiterung des Graphennetzwerks um eine Kostenfunktion, die jeder Kante eine natürliche Zahl zuordnet Gesucht ist nun nach dem maximalen Fluss bei minimalen Kosten Beschriftung der Kanten: <Fluss>/<Kapazität>/<Kosten pro Flusseinheit> Durch diese Kante verursachte Kosten: 3 * 20 = 60 Zugehöriger Residualgraph; Beschriftung: <Fluss>/<Kosten pro Flusseinheit> 57

58 Maximaler Fluss bei minimalen Kosten (2) Beispiel: Maximaler Fluss, jedoch noch nicht minimale Kosten Kosten des Flusses: 7*2 + 6*20 + 5*3 + 6*1 + 4*1 + 4*2 + 1*5 + 1*3 + 2*2 = 179 Zugehöriger Residualgraph 58

59 Maximaler Fluss bei minimalen Kosten (3) Ein negativer Kostenzyklus im Residualgraphen ist ein Kreis, bei dem die Summe aller Produkte aus Fluss und zugehörigen Kosten der beteiligten Kanten negativ ist Beispiel: Kosten des Zyklus: 6 * * * (-20) = -60 Durch das gleichmäßige Verändern des Flusses aller an einem Zyklus beteiligten Kanten verändert sich der globale Betrag des Flusses nicht, die Kosten oft jedoch schon 59

60 Maximaler Fluss bei minimalen Kosten (4) Beispiel Maximal mögliche Flussveränderung: 6 Veränderung des Flusses um den Wert 6: 60

61 Maximaler Fluss bei minimalen Kosten (5) Zum Residualgraphen gehörige <Fluss>/<Kapazität>/<Kosten>-Funktionen: Kosten des neuen Flusses: 7*2 + 0*20 + 5*3 + 6*1 + 4*1 + 4*2 + 7*5 + 7*3 + 2*2 = 107 Um 72 Einheiten billiger als der ursprüngliche 61

62 Maximaler Fluss bei minimalen Kosten (6) Naheliegender Algorithmus (Negative Zyklen lassen sich mit den Algorithmen von Bellman-Ford oder Floyd finden) 1 berechne maximalen Fluss 2 solange es im Residualgraphen G einen negativen Kostenzyklus mit 3 minimalem Kantengewicht w gibt 4 erhöhe f um den Flusswert von w 5 aktualisiere Residualgraph G 6 return f; Weitere Algorithmen zur Bestimmung des maximalen Flusses bei minimalen Kosten:

63 Reduktionen

64 Reduktionen Problem: Ford-Fulkerson und Preflow-Push lassen sich nur auf Netzwerke mit bestimmten Eigenschaften anwenden Knoten dürfen keine Kapazitätsbeschränkung haben Kanten müssen gerichtet sein Es darf nur eine Quelle und eine Senke geben Einführung Algorithmen für den maximalen Fluss Reduktionen Minimaler Schnitt Maximaler Schnitt bei minimalen Kosten 64

65 Reduktionen, Beispiel Was macht man nun in folgendem Fall, um den maximalen Fluss zu berechnen? 65

66 Reduktionen, Beispiel Was macht man nun in folgendem Fall, um den maximalen Fluss zu berechnen? Knoten, Quellen und Senken mit Kapazitätsbeschränkung: Zwischenknoten mit Kante einführen, welche die Kapazität begrenzt 66

67 Reduktionen, Beispiel Was macht man nun in folgendem Fall, um den maximalen Fluss zu berechnen? Knoten, Quellen und Senken mit Kapazitätsbeschränkung: Zwischenknoten mit Kante einführen, welche die Kapazität begrenzt Ungerichtete Kanten durch zwei Kanten in beide Richtungen ersetzen, Kapazität übernehmen 67

68 Reduktionen, Beispiel Was macht man nun in folgendem Fall, um den maximalen Fluss zu berechnen? Knoten, Quellen und Senken mit Kapazitätsbeschränkung: Zwischenknoten mit Kante einführen, welche die Kapazität begrenzt Ungerichtete Kanten durch zwei Kanten in beide Richtungen ersetzen, Kapazität übernehmen Mehreren Quellen/Senken: Masterquelle bzw. Senke einführen, die die bisherigen Quellen bzw. Senken mit unendlicher Kapazität versorgt 68

69 Bipartites Matching

70 Bipartite Graphen Ein Graph heißt bipartit, falls sich die Knoten in zwei disjunkte Mengen A und B aufteilen lassen, so dass es keine Kanten zwischen Knoten aus A und Knoten aus B gibt 70

71 Maximales bipartites Matching (1) Ein Matching ist eine Untermenge der Kanten M Є E, so dass für alle Knoten vє V höchstens eine Kante aus M mit v verbunden ist Bei einem maximalen Matching ist M, also die Menge der aktiven Kanten, maximal 71

72 Maximales bipartites Matching (2) Anwendbar auf vielfältige Problemstellungen: Tanzpaarbildung, Arbeitsverteilung von Maschinen etc. Lösung: Umformung des bipartiten Graphen in ein Flussnetzwerk, anschließend Suche nach dem maximalen Fluss Hinzufügen von Quelle und Senke Verbinden der ersten Knotenmenge mit der Quelle, der zweiten mit der Senke Ersetzen der ungerichteten Kanten durch gerichtete mit der Kapazität 1, welche von der ersten Knotenmenge in die zweite zeigen 72

73 Maximales bipartites Matching (3) Darstellung des entstandenen Flussnetzes: 73

74 Maximales bipartites Matching, Beispielaufgabe (1) Aufgabenstellung Gegeben ist ein Schachbrett, bei dem jedoch manche Felder ausgespart sind Aggressive, unbewegliche Monster können auf den Feldern platziert werden Ein Monster kann nur auf andere Monster, welche sich in der selben Reihe oder Spalte befinden, Schüsse abgeben Ausgesparte Felder können nicht mit Monstern besetzt werden, stellen aber für den Angriff kein Hindernis dar Gesucht ist eine maximal mögliche Besetzung des Schachbretts mit Monstern, ohne dass es zu Schusswechseln kommt 74

75 Maximales bipartites Matching, Beispielaufgabe (2) Wie findet man nun algorithmisch eine maximale Belegung? Überlegung: Jede Zeile bzw. Spalte muss genau einmal besetzt werden, sofern sie nicht nur Löcher enthält 75

76 Maximales bipartites Matching, Beispielaufgabe (2) Wie findet man nun algorithmisch eine maximale Belegung? Überlegung: Jede Zeile bzw. Spalte muss genau einmal besetzt werden, sofern sie nicht nur Löcher enthält Lösung: Darstellung des Schachbretts als bipartiten Graphen Zwei disjunkte Knotenmengen: Zeilen und Spalten Eine Kante zwischen dem Knoten i und j steht für ein potentiell besetzbares Feld (i,j) auf dem Schachbrett 76

77 Maximales bipartites Matching, Beispielaufgabe (3) Berechnung eines maximalen Matchings mittels des maximalen Flusses (alle Kanten haben die Kapazität 1) Anhand der Kanten, die Teil eines maximalen Matchings sind, lassen sich nun die Positionen der Monster ablesen 77

78 Minimaler Schnitt

79 Schnitte Ein S-T-Schnitt ist eine Aufteilung der Knoten in zwei Mengen S und T, so dass gilt: s Є S, t Є T Auf dem Weg zwischen zwei Knoten einer der Mengen dürfen nur Knoten der selben Menge liegen (Die Mengen müssen zusammenhängend sein) Die Kapazität eines Schnittes ist definiert als die Summe der Kapazitäten der Kanten, welche Knoten aus S mit Knoten aus T verbinden Der Fluss eines Schnittes ist die Summe der Flüsse von S nach T, abzüglich derer von T nach S Kapazität des Schnittes: = 50 Fluss des Schnittes: = 5 Ein minimaler S-T-Schnitt ist ein Schnitt mit minimaler Kapazität Einführung Algorithmen für den maximalen Fluss Reduktionen Bipartites Matching Minimaler Schnitt Zusammenfassung 79

80 Max-Flow Min-Cut Theorem Die Kapazität eines minimalen S-T-Schnitts ist gleich dem maximalen Fluss in einem Netzwerk Der maximale Durchfluss wird also genau durch die Flaschenhalskanten im Netzwerk limitiert, diese sind natürlich bei maximaler Flussbelegung voll ausgelastet, daher entspricht deren Kapazität dem maximalen Fluss Kapazität des minimalen Schnittes: 11 Einführung Algorithmen für den maximalen Fluss Reduktionen Bipartites Matching Minimaler Schnitt Zusammenfassung 80

81 Minimaler Schnitt Der Betrag eines minimalen Schnittes lässt sich einfach über den maximalen Fluss ermitteln Wie findet man jedoch die Kanten, durch die der Schnitt verläuft? Eine Zerlegung der Menge der Knoten in vor und nach dem Schnitt lässt sich finden, indem man im Residualgraphen nachdem der maximale Fluss ermittelt wurde - alle von s aus noch erreichbaren Knoten auswählt Einführung Algorithmen für den maximalen Fluss Reduktionen Bipartites Matching Minimaler Schnitt Zusammenfassung 81

82 Zusammenfassung Durch Graphennetzwerke kann man verschiedene Flussprobleme aus der Realität darstellen Algorithmen zur Ermittlung des maximalen Flusses Ford-Fulkerson-Varianten Preflow-push-Varianten Berechnung des maximalen Flusses bei minimalen Kosten Mittels einfacher Reduktionen kann man auch Graphennetzwerke mit mehreren Quellen, Senken oder Knotenkapazitäten algorithmisch handhaben Maximales bipartites Matching lässt sich in ein Flussproblem verwandeln Ein minimaler Schnitt lässt sich leicht ermitteln, sobald ein maximaler Fluss bekannt ist 82

83 Quellen Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms Saake, Sattler: Algorithmen und Datenstrukturen Seminarvortrag Flüsse, Schnitte, bipartite Abbildungen 2007, Thomas Fersch Seminarvortrag Flüsse, Schnitte, bipartite Abbildungen 2006, Adrian Merkel Topcoder Tutorials:

84 Noch Fragen? 84

Flüsse in Netzwerken. Seminar über Algorithmen SoSe 2005. Mike Rohland & Julia Schenk

Flüsse in Netzwerken. Seminar über Algorithmen SoSe 2005. Mike Rohland & Julia Schenk Flüsse in Netzwerken Seminar über Algorithmen SoSe 2005 Mike Rohland & Julia Schenk Inhalt Einführung Definition Maximale Flüsse Schnitte Restgraphen Zunehmende Wege Max-Fluss Min-Schnitt Theorem Ford-Fulkerson

Mehr

Wiederholung zu Flüssen

Wiederholung zu Flüssen Universität Konstanz Methoden der Netzwerkanalyse Fachbereich Informatik & Informationswissenschaft SS 2008 Prof. Dr. Ulrik Brandes / Melanie Badent Wiederholung zu Flüssen Wir untersuchen Flüsse in Netzwerken:

Mehr

Algorithmen und Datenstrukturen Kapitel 10

Algorithmen und Datenstrukturen Kapitel 10 Algorithmen und Datenstrukturen Kapitel 10 Flüsse Frank Heitmann heitmann@informatik.uni-hamburg.de 6. Januar 2016 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/8 Flüsse Graphen Grundlagen Definition

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung der

Mehr

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin Anwendungen von Netzwerkfluss Wojciech Polcwiartek Institut für Informatik FU Berlin 13. 01. 2009 Gliederung Einführung Netzwerk, Fluss und Schnitt Max-Flow-Min-Cut Theorem Algorithmen zum Bestimmen vom

Mehr

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung Gliederung der Vorlesung. Fallstudie Bipartite Graphen. Grundbegriffe. Elementare Graphalgorithmen und Anwendungen. Minimal spannende Bäume. Kürzeste Pfade. Traveling Salesman Problem. Flüsse in Netzwerken

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt;

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt; Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt Referent Matthias Rost 1 Einleitung Definitionen Maximaler Dynamischer Fluss Algorithmus von Ford-Fulkerson Techniken zur

Mehr

4.7 Der Algorithmus von Dinic für maximalen Fluss

4.7 Der Algorithmus von Dinic für maximalen Fluss 4.7 Der Algorithmus von Dinic für maximalen Fluss Wir kennen bereits den Algorithmus von Ford Fulkerson zur Suche nach einem maximalen Fluss in einem Graphen. Wir lernen nun einen Algorithmus für maximalen

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Sommersemester 204 4. Vorlesung Matchings / Paarungen Kombinatorische Anwendungen des Max-Flow-Min-Cut-Theorems Prof. Dr. Alexander Wolff 2 Paarungen (Matchings) Def. Sei

Mehr

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de Maximaler Fluß und minimaler Schnitt Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de Maximaler Fluß und minimaler Schnitt Wasist das? Maximaler Fluss Minimaler Schnitt Warumtut man das? Logistische

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

6. Flüsse in Netzwerken Berechnung maximaler Flüsse. dann berechnet der Markierungsalgorithmus für beliebige Kapazitätsfunktionen

6. Flüsse in Netzwerken Berechnung maximaler Flüsse. dann berechnet der Markierungsalgorithmus für beliebige Kapazitätsfunktionen 6. Flüsse in Netzwerken Berechnung maximaler Flüsse Satz 6.4. Ersetzt man in Algorithmus 6.1 den Schritt 2 durch 2a. Wähle den Knoten, der zuerst in eingefügt wurde. Setze. dann berechnet der arkierungsalgorithmus

Mehr

Flüsse, Schnitte, Bipartite Graphen II

Flüsse, Schnitte, Bipartite Graphen II Flüsse, Schnitte, Bipartite Graphen II Jonathan Hacker 06.06.2016 Jonathan Hacker Flüsse, Schnitte, Bipartite Graphen II 06.06.2016 1 / 42 Gliederung Einführung Jonathan Hacker Flüsse, Schnitte, Bipartite

Mehr

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein Proseminar Online Algorithmen, Prof. Dr. Rolf Klein Vortrag von Michael Daumen am 13.12.2000 Thema : Minimum Spanning Tree und 2-Approximation der TSP-Tour Inhalt des Vortrags : 1. genaue Vorstellung des

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Gliederung. Kapitel 4. Lokale Suchverfahren. Meta-Heuristiken. Simulated Annealing. Lokale Suchverfahren. Optimierungsalgorithmen

Gliederung. Kapitel 4. Lokale Suchverfahren. Meta-Heuristiken. Simulated Annealing. Lokale Suchverfahren. Optimierungsalgorithmen Kapitel Optimierungsalgorithmen Gunnar Klau Institut für Computergraphik und Algorithmen Gliederung Kombinatorische vs. Ganzzahlige Optimierung Exakte Verfahren Branch-and-Bound Schnittebenenverfahren

Mehr

Flüsse, Schnitte, bipartite Graphen

Flüsse, Schnitte, bipartite Graphen Flüsse, Schnitte, bipartite Graphen Vlad Popa 08.06.2010 Inhaltsverzeihnis 1. Flussnetzwerke und Flüsse 1.1 Ford- Fulkerson 1.2 Edmond Karp 1.3 Dinic 2. Schnitte 3. Maximaler Fluss bei minimalen Kosten

Mehr

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen . Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesungen 5 und 6 Programm

Mehr

Very simple methods for all pairs network flow analysis

Very simple methods for all pairs network flow analysis Very simple methods for all pairs network flow analysis Tobias Ludes 02.07.07 Inhalt Einführung Algorithmen Modifikation der Gomory-Hu Methode Einführung Nach Gomory-Hu nur n-1 Netzwerk-Fluss- Berechnungen

Mehr

Effiziente Algorithmen Übung 2 Lösungen

Effiziente Algorithmen Übung 2 Lösungen TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, M. Sc. Stefan Walzer https://www.tu-ilmenau.de/iti/lehre/lehre-ws-016017/ea/

Mehr

Effiziente Algorithmen I

Effiziente Algorithmen I H 10. Präsenzaufgabenblatt, Wintersemester 2015/16 Übungstunde am 18.01.2015 Aufgabe Q Ein Reiseveranstalter besitzt ein Flugzeug, das maximal p Personen aufnehmen kann. Der Veranstalter bietet einen Flug

Mehr

Graphentheorie. Maximale Flüsse. Maximale Flüsse. Maximale Flüsse. Rainer Schrader. 31. Oktober Gliederung. sei G = (V, A) ein gerichteter Graph

Graphentheorie. Maximale Flüsse. Maximale Flüsse. Maximale Flüsse. Rainer Schrader. 31. Oktober Gliederung. sei G = (V, A) ein gerichteter Graph Graphentheorie Rainer Schrader Zentrum ür Angewandte Inormatik Köln 31. Oktober 2007 1 / 30 2 / 30 Gliederung maximale Flüsse Schnitte Edmonds-Karp-Variante sei G = (V, A) ein gerichteter Graph sei c eine

Mehr

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 8, 4.11.08 Friedhelm Meyer auf der Heide 1 Organisatorisches Am Dienstag, 11.11., fällt die

Mehr

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung Gliederung der Vorlesung 1. Grundbegriffe 2. Elementare Graphalgorithmen und Anwendungen 3. Kürzeste Wege. Minimale spannende Bäume. Färbungen und Cliquen. Traveling Salesman Problem. Flüsse in Netzwerken

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

6. Übung zur Linearen Optimierung SS08

6. Übung zur Linearen Optimierung SS08 6 Übung zur Linearen Optimierung SS08 1 Sei G = (V, E) ein schlichter ungerichteter Graph mit n Ecken und m Kanten Für eine Ecke v V heißt die Zahl der Kanten (u, v) E Grad der Ecke (a) Ist die Anzahl

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des

Mehr

Algorithmentheorie. 13 - Maximale Flüsse

Algorithmentheorie. 13 - Maximale Flüsse Algorithmentheorie 3 - Maximale Flüsse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann . Maximale Flüsse in Netzwerken 5 3 4 7 s 0 5 9 5 9 4 3 4 5 0 3 5 5 t 8 8 Netzwerke und Flüsse N = (V,E,c) gerichtetes Netzwerk

Mehr

Durchschnitt von Matroiden

Durchschnitt von Matroiden Durchschnitt von Matroiden Satz von Edmonds Dany Sattler 18. Januar 2007/ Seminar zur ganzzahligen Optimierung / Wallenfels Definition: Unabhängigkeitssystem Definition: Ein Mengensystem (S, J ) nennt

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 11: Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2010/2011 1/59 Graphische Darstellung von Zusammenhängen schon

Mehr

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09 Felix Brandt, Jan Johannsen Vorlesung im Wintersemester 2008/09 Übersicht Übersicht Definition Ein Matching in G = (V, E) ist eine Menge M E mit e 1 e 2 = für e 1, e 2 M, e 1 e 2 Ein Matching M ist perfekt,

Mehr

Algorithmen zur Berechnung von Matchings

Algorithmen zur Berechnung von Matchings Algorithmen zur Berechnung von Matchings Berthold Vöcking 1 Einleitung Matchingprobleme sind Zuordnungsprobleme. Es geht darum z.b. Studierenden Plätze in Seminaren zuzuordnen, Bewerber auf freie Stellen

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Systems of Distinct Representatives

Systems of Distinct Representatives Rheinisch-Westfälische Technische Hochschule Aachen Lehr- und Forschungsgebiet Theoretische Informatik Prof. Dr. Peter Rossmanith Systems of Distinct Representatives Seminar: Extremal Combinatorics SS

Mehr

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung Kapitel : Minimale spannende Bäume Gliederung der Vorlesung. Grundbegriffe 2. Elementare Graphalgorithmen und Anwendungen. Kürzeste Wege. Minimale spannende Bäume. Färbungen und Cliquen. Traveling Salesman

Mehr

6. Flüsse und Zuordnungen

6. Flüsse und Zuordnungen 6. Flüsse und Zuordnungen In diesem Kapitel werden Bewertungen von Kanten als maximale Kapazitäten interpretiert, die über solch eine Kante pro Zeiteinheit transportiert werden können. Wir können uns einen

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Minimal spannende Bäume

Minimal spannende Bäume http://www.uni-magdeburg.de/harbich/ Minimal spannende Fakultät für Informatik Otto-von-Guericke-Universität 2 Inhalt Definition Wege Untergraphen Kantengewichtete Graphen Minimal spannende Algorithmen

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Algorithmische Mathematik

Algorithmische Mathematik Algorithmische Mathematik Wintersemester 2013 Prof. Dr. Marc Alexander Schweitzer und Dr. Einar Smith Patrick Diehl und Daniel Wissel Übungsblatt 6. Abgabe am 02.12.2013. Aufgabe 1. (Netzwerke und Definitionen)

Mehr

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung Kapitel : Minimal spannende Bäume Gliederung der Vorlesung. Fallstudie Bipartite Graphen 2. Grundbegriffe. Elementare Graphalgorithmen und Anwendungen. Minimal spannende Bäume. Kürzeste Wege. Traveling

Mehr

Kapitel 1: Flussalgorithmen

Kapitel 1: Flussalgorithmen Netzwerke und Flüsse Kapitel 1: Flussalgorithmen Ein Flussnetzwerk ist ein gerichteter Graph G = (V, E, q, s, c) mit zwei ausgewählten Knoten q, s V und einer Kapazitätsfunktion c : E N. Die Quelle q hat

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 15: Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn Ein 5.55-Approximationsalgorithmus für das VPND-Problem Lars Schäfers Inhalt Einführung:

Mehr

3. Musterlösung. Problem 1: Boruvka MST

3. Musterlösung. Problem 1: Boruvka MST Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines

Mehr

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP Kap..1 Heuristiken Kap.. Approximative Algorithmen und Gütegarantien Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP SS 008 14. Juli 009 Überblick

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Netzwerk-Simplex. MinCostFlow als Lineares Programm. 1 of 12 Netzwerksimplex

Netzwerk-Simplex. MinCostFlow als Lineares Programm. 1 of 12 Netzwerksimplex Netzwerk-Simplex MinCostFlow als Lineares Programm of 2 Netzwerksimplex MinCostFlow geg: gerichteter Graph G, Kapazitäten u R R 0 { }, Bedarfe b V R, Pfeilkosten c R R ges: zulässiger b-fluss f mit minimalen

Mehr

Algorithmus zum Graphen-Matching. und. Anwendung zur inhaltsbasierten Bildersuche

Algorithmus zum Graphen-Matching. und. Anwendung zur inhaltsbasierten Bildersuche Algorithmus zum Graphen-Matching und Anwendung zur inhaltsbasierten Bildersuche Gliederung 1. Einführung 2. Algorithmus Beschreibung Beispiel Laufzeit 3. Anwendung des Algorithmus Seite 1 von 18 1. Einführung

Mehr

Ausarbeitung über den Satz von Menger und den Satz von König

Ausarbeitung über den Satz von Menger und den Satz von König Ausarbeitung über den Satz von Menger und den Satz von König Myriam Ezzedine, 0326943 Anton Ksernofontov, 0327064 Jürgen Platzer, 0025360 Nataliya Sokolovska, 0326991 1. Beweis des Satzes von Menger Bevor

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.4. Es sei G = (V,E) ein Graph. Der Abstand d(v,w) zweier Knoten v,w V ist die minimale Länge eines Weges von v nach w. Falls

Mehr

Minimal spannender Baum

Minimal spannender Baum Minimal spannender Baum 16 1 2 21 5 11 19 6 6 3 14 33 10 5 4 18 Die Kreise zeigen die vorgesehenen Standorte neu zu errichtender Filialen einer Bank. Entlang der bestehenden Straßen sollen Telefonleitungen

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 1 Programm des

Mehr

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

MafI I: Logik & Diskrete Mathematik (F. Hoffmann) Lösungen zum 14. und letzten Aufgabenblatt zur Vorlesung MafI I: Logik & Diskrete Mathematik (F. Hoffmann) 1. Ungerichtete Graphen (a) Beschreiben Sie einen Algorithmus, der algorithmisch feststellt, ob

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

f h c 7 a 1 b 1 g 2 2 d

f h c 7 a 1 b 1 g 2 2 d ) Man bestimme mit Hilfe des Dijkstra-Algorithmus einen kürzesten Weg von a nach h: c 7 a b f 5 h 3 4 5 i e 6 g 2 2 d Beim Dijkstra-Algorithmus wird in jedem Schritt von den noch unmarkierten Knoten jener

Mehr

Uninformierte Suche in Java Informierte Suchverfahren

Uninformierte Suche in Java Informierte Suchverfahren Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Suchprobleme bestehen aus Zuständen

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Flüsse in Netzwerken

Flüsse in Netzwerken Skript zum Seminar Flüsse in Netzwerken WS 2008/09 David Meier Inhaltsverzeichnis 1 Einführende Definitionen und Beispiele 3 2 Schnitte in Flussnetzwerken 12 2.1 Maximaler s t Fluss..........................

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 11 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

Mehr

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

Längen-beschränkte Schnitte und Flüsse

Längen-beschränkte Schnitte und Flüsse Seminarausarbeitung über G. Baiers et al. Abhandlung über: Längen-beschränkte Schnitte und Flüsse (oder: Length-bounded Cuts and Flows) Frank Obermüller 06. Dezember 2009 1 Einleitung Sei G = (V, E) ein

Mehr

Algorithmen - Eine Einführung

Algorithmen - Eine Einführung Algorithmen - Eine Einführung von Prof. Dr. Thomas H. Cormen Prof. Dr. Charles E. Leiserson Prof. Dr. Ronald Rivest Prof. Dr. Clifford Stein 2., korrigierte Auflage Oldenbourg Verlag München Wien Inhaltsverzeichnis

Mehr

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965). 5. Graphenprobleme Im folgenden bezeichnen G = (E, K) einen endlichen Graphen mit der Eckenmenge E und der Kantenmenge K. G kann ungerichtet, gerichtet, schlicht oder nicht schlicht sein. 5.1 Spannende

Mehr

Statistik und Graphentheorie

Statistik und Graphentheorie Statistik und Graphentheorie Sommersemester 2012 3. Juli 2012 Teil Graphentheorie Name: Matrikelnummer: 1 (12) 2 (12) 3 (12) 4 (12) 5 (12) (60) Aufgabe 1 (12 Punkte) Gegeben sei das folgende Netzwerk:

Mehr

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme Universität Hamburg Fachbereich Mathematik Seminar: Proseminar Graphentheorie Dozentin: Haibo Ruan Sommersemester 2011 Ausarbeitung zum Modulabschluss Graphentheorie spannende Bäume, bewertete Graphen,

Mehr

Graphen. Leonhard Euler ( )

Graphen. Leonhard Euler ( ) Graphen Leonhard Euler (1707-1783) 2 Graph Ein Graph besteht aus Knoten (nodes, vertices) die durch Kanten (edges) miteinander verbunden sind. 3 Nachbarschaftsbeziehungen Zwei Knoten heissen adjazent (adjacent),

Mehr

Algorithmen und Datenstrukturen 2-2. Seminar -

Algorithmen und Datenstrukturen 2-2. Seminar - Algorithmen und Datenstrukturen 2-2. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 2. Übungsserie: 3 Aufgaben, insgesamt 30 Punkte A4 Flußnetzwerk, Restgraphen

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

Mehr

Matchings (Paarungen) in Graphen. PS Algorithmen auf Graphen SS `06 Steven Birr

Matchings (Paarungen) in Graphen. PS Algorithmen auf Graphen SS `06 Steven Birr Matchings (Paarungen) in Graphen PS Algorithmen auf Graphen SS `06 Steven Birr 1 Gliederung 1) Definitionen und Beispiele 2) Algorithmus des maximalen Matchings 3) Das Personal-Zuteilungsproblem Ungarischer

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

2. Repräsentationen von Graphen in Computern

2. Repräsentationen von Graphen in Computern 2. Repräsentationen von Graphen in Computern Kapitelinhalt 2. Repräsentationen von Graphen in Computern Matrizen- und Listendarstellung von Graphen Berechnung der Anzahl der verschiedenen Kantenzüge zwischen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Paarweises

Mehr

2 Tiefen- und Breitensuche

2 Tiefen- und Breitensuche 2 Tiefen- und Breitensuche Übersicht 2.1 SpannendeBäume... 21 2.2 WiefindetmanspannendeBäume?... 24 2.3 AnwendungenvonBFSundDFS... 29 2.4 Aufgaben... 33 2.1 Spannende Bäume Vor nicht allzu langer Zeit

Mehr

Planare Graphen, Traveling Salesman Problem, Transportnetze. Formale Methoden der Informatik WiSe 2012/2013 teil 4, folie 1 (von 61)

Planare Graphen, Traveling Salesman Problem, Transportnetze. Formale Methoden der Informatik WiSe 2012/2013 teil 4, folie 1 (von 61) Planare Graphen, Traveling Salesman Problem, Transportnetze Formale Methoden der Informatik WiSe 2012/2013 teil 4, folie 1 (von 61) Teil IV: Planare Graphen / Transportnetze 1. Planare Graphen / Traveling

Mehr

Geometrische Algorithmen

Geometrische Algorithmen Geometrische Algorithmen Thomas Röfer Motivation Scan-line-Prinzip Konvexe Hülle Distanzprobleme Voronoi-Diagramm Rückblick Manipulation von Mengen Vorrangwarteschlange Heap HeapSort swap(a, 0, 4) 1 5

Mehr

Single Source Sortest Path Negative Kreise All-Pair Shortest Path Problem Minimum Mean Cycle Zusammenfassung. Shortest Paths

Single Source Sortest Path Negative Kreise All-Pair Shortest Path Problem Minimum Mean Cycle Zusammenfassung. Shortest Paths Shortest Paths Label Correcting Algorithms Florian Reitz Universität Trier Fachbereich IV Fach Informatik Seminar Netzwerkalgorithmen WS 2005/2006 Einleitung: Problemübersicht Eben: Schnelle Algorithmen

Mehr

Graphenalgorithmen I

Graphenalgorithmen I enalgorithmen I Tobias Pröger 21. Dezember 2016 Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch auf Vollständigkeit und Korrektheit. Wir sind froh über

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

2. Übungsblatt zu Algorithmen II im WS 2016/2017

2. Übungsblatt zu Algorithmen II im WS 2016/2017 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Dr. Christian Schulz, Dr. Simon Gog Michael Axtmann. Übungsblatt zu Algorithmen II im WS 016/017 Aufgabe

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr