finale Version des Vorlesungsskripts - ZIB
finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB
a 4 4 b 4 7 7 6 6 6 d 5 e 5 f 6 g 5 9 8 h 9 2 (a) Beispielgraph. c i a b c d e f g h i (b) Ergebnis von Algorithmus (5.9). 5.2 Optimale Bäume und Wälder a d b e g h i (c) Ergebnis von Algorithmus (5.14). Abbildung 5.1: Ein Beispielgraph und die MSTs, die sich als Ergebnis der Algorithmen (5.9) und (5.14) ergeben. IF connected THEN IF dist[1]>=inf THEN connected := false ELSE weight := weight + dist[1]; {====== Output of minimum spanning tree ======} writeln(outp); IF NOT connected THEN writeln(outp,’The graph is disconnected.’) ELSE BEGIN writeln(outp,’Minimum spanning tree:’); writeln(outp,’======================’); writeln(outp); FOR i:=n-1 DOWNTO 1 DO writeln(outp, in_t[i]:5, ’ - ’, out_t[i]:3, ’ (’, dist[i]:1,’)’); writeln(outp); writeln(outp,’Weight: ’, weight:6); writeln(outp); END; END. Wir wollen nun noch ein Beispiel angeben, das die Vorgehensweise der Algorithmen (5.9), (5.11) und (5.14) verdeutlicht. (5.16) Beispiel. Wir betrachten den in Abbildung 5.1(a) dargestellten Graphen. Wir wenden Algorithmus (5.9) an. Zunächst sortieren wir die Kanten in nicht absteigender Reihenfolge hi, bc, ab, ac, de, ef, eg, be, bf, cf, dg, ad, ae, hf, he, hg. In Schritt 3 von (5.9) werden die in der Abbildung 5.1(b) gezeichneten Kanten ausgewählt. Den Prim- Algorithmus (5.14) starten wir mit dem Knoten w = a. Es ergibt sich der in Abbildung 5.1(c) gezeichnete minimale aufspannende Baum. △ c f 89
5 Bäume und Wege Wie Beispiel (5.16) zeigt, muss ein minimaler Baum nicht eindeutig bestimmt sein. Überlegen Sie sich bitte, wie man feststellen kann, ob ein minimaler aufspannender Baum eindeutig ist. Weitergehende Informationen über Branchings und Aboreszenzen (sowie Wälder und Bäume) finden sich im Buch Schrijver (2003) in Part V. Im Internet finden sich viele „Graph Libraries“ oder „Algorithm Repositories“, in denen fertig implementierte Algorithmen angeboten werden, die das „Minimum Spanning Tree“oder „Maximum Weighted Branching“-Problem lösen. Einige der Algorithmensammlungen sind kommerziell (und kosten Geld), einige sind frei verfügbar, einige interaktiv abrufbar und viele haben Visualisierungskomponenten. Die Halbwertzeit der Webseiten ist häufig nicht besonders hoch. Es folgen einige Webseiten, die Baum-, Branching- und viele andere Graphenalgorithmen anbieten: • COIN-OR::LEMON 1.1: http://lemon.cs.elte.hu • QuickGraph: http://quickgraph.codeplex.com • The Stony Brook Algorithm Repository: http://www.cs.sunysb.edu/~algorith/ • LEDA: http://www.algorithmic-solutions.com/leda/index.htm 5.3 Kürzeste Wege Wir wollen uns nun mit der Aufgabe beschäftigen, in einem Digraphen mit Bogengewichten kürzeste gerichtete Wege zu finden. Wir werden Algorithmen vorstellen, die kürzeste Wege von einem Knoten zu einem anderen oder zu allen anderen oder kürzeste Wege zwischen zwei Knoten finden. Wir beschränken uns auf Digraphen, da derartige Probleme in ungerichteten Graphen auf einfache Weise auf gerichtete Probleme reduziert werden können. Denn ist ein Graph G = (V, E) mit Kantenlängen c(e) ≥ 0 für alle e ∈ E gegeben, so ordnen wir diesem Graphen den Digraphen D = (V, A) mit A = {(i, j), (j, i) | ij ∈ E} und c((i, j)) := c((j, i)) := c(ij) zu. Den (ungerichteten) [u, v]-Wegen in G entsprechen dann die gerichteten (u, v)-Wege bzw. (v, u)-Wege in D und umgekehrt. Einander entsprechende Wege in G und D haben nach Definition gleiche Längen. Also liefert uns ein kürzester (u, v)-Weg (oder ein kürzester (v, u)-Weg) in D einen kürzesten [u, v]-Weg in G. Kürzeste-Wege-Probleme spielen in der kombinatorischen Optimierung eine große Rolle. Es ist daher nicht überraschend, dass es zu diesem Problemkreis eine außerordentlich umfangreiche Literatur und sehr viele Lösungsvorschläge gibt. Wenn man dann noch Variationen hinzunimmt wie: Berechnung längster Wege oder zuverlässiger Wege, von Wegen maximaler Kapazität, der k kürzesten Wege, von Wegen mit gerader oder ungerader Bogenzahl etc., so liefert das den Stoff einer gesamten Vorlesung. Wir wollen in dieser Vorlesung lediglich drei Algorithmen (für unterschiedliche Spezialfälle) behandeln. Der Leser, der sich für umfassendere Darstellungen interessiert, sei auf die Bücher Ahuja et al. (1993), Krumke and Noltemeier (2005), Lawler (1976), Mehlhorn (1984), Domschke (1972), Schrijver (2003), Syslo et al. (1983) verwiesen. Es werden derzeit immer noch 90
- Seite 44 und 45: 3.2 Klassische Fragestellungen der
- Seite 46 und 47: (a) (b) 3.2 Klassische Fragestellun
- Seite 48 und 49: 3.3 Graphentheoretische Optimierung
- Seite 50 und 51: 3.3 Graphentheoretische Optimierung
- Seite 52 und 53: 3.3 Graphentheoretische Optimierung
- Seite 54 und 55: 3.3 Graphentheoretische Optimierung
- Seite 56 und 57: • Schaltkreisentwurf • Standort
- Seite 58 und 59: 3.3 Graphentheoretische Optimierung
- Seite 60 und 61: 3.3 Graphentheoretische Optimierung
- Seite 62 und 63: Literaturverzeichnis T. L. Gertzen
- Seite 64 und 65: 4 Komplexitätstheorie und Speicher
- Seite 66 und 67: 4.1 Probleme, Komplexitätsmaße, L
- Seite 68 und 69: 4.2 Die Klassen P und N P, N P-Voll
- Seite 70 und 71: 4.2 Die Klassen P und N P, N P-Voll
- Seite 72 und 73: 4.2 Die Klassen P und N P, N P-Voll
- Seite 74 und 75: 4 4.3 Datenstrukturen zur Speicheru
- Seite 76 und 77: 4.3 Datenstrukturen zur Speicherung
- Seite 78 und 79: 4.3 Datenstrukturen zur Speicherung
- Seite 80: R. E. Tarjan. Data structures and n
- Seite 83 und 84: 5 Bäume und Wege Der Beweis ist et
- Seite 85 und 86: 5 Bäume und Wege (2) =⇒ (3) Ist
- Seite 87 und 88: 5 Bäume und Wege Haben wir einen A
- Seite 89 und 90: 5 Bäume und Wege Falls T \ {ei} zu
- Seite 91 und 92: 5 Bäume und Wege /****************
- Seite 93: 5 Bäume und Wege THEN w[dope[i]+j]
- Seite 97 und 98: 5 Bäume und Wege (a) F. Schiller.
- Seite 99 und 100: 5 Bäume und Wege DISTk(u) die Län
- Seite 101 und 102: 5 Bäume und Wege VOR(3) = 2. Wir s
- Seite 103 und 104: 5 Bäume und Wege 4. DO u = 1 TO v
- Seite 105 und 106: 5 Bäume und Wege Sei nun P ein kü
- Seite 107 und 108: 5 Bäume und Wege (b) D enthält ge
- Seite 109 und 110: 5 Bäume und Wege C2 C1 s 4 C3 C4 2
- Seite 111 und 112: 5 Bäume und Wege ders vorgehen: z.
- Seite 113 und 114: 5 Bäume und Wege ist ein System vo
- Seite 115 und 116: 5 Bäume und Wege heißt (allgemein
- Seite 117 und 118: 5 Bäume und Wege Um lästige Trivi
- Seite 119 und 120: Literaturverzeichnis A. Goldberg. P
- Seite 121 und 122: 6 Maximale Flüsse in Netzwerken Al
- Seite 123 und 124: 6 Maximale Flüsse in Netzwerken de
- Seite 125 und 126: 6 Maximale Flüsse in Netzwerken s
- Seite 127 und 128: 6 Maximale Flüsse in Netzwerken W
- Seite 129 und 130: 6 Maximale Flüsse in Netzwerken Da
- Seite 131 und 132: 6 Maximale Flüsse in Netzwerken s
- Seite 133 und 134: Literaturverzeichnis L. R. Ford, Jr
- Seite 135 und 136: 7 Flüsse mit minimalen Kosten Ein
- Seite 137 und 138: 7 Flüsse mit minimalen Kosten Dami
- Seite 139 und 140: 7 Flüsse mit minimalen Kosten Dami
- Seite 141 und 142: 7 Flüsse mit minimalen Kosten 2. K
- Seite 143 und 144: 7 Flüsse mit minimalen Kosten schr
5 Bäume und Wege<br />
Wie Beispiel (5.16) zeigt, muss ein minimaler Baum nicht eindeutig bestimmt sein.<br />
Überlegen Sie sich bitte, wie man feststellen kann, ob ein minimaler aufspannender Baum<br />
eindeutig ist.<br />
Weitergehende Informationen über Branchings und Aboreszenzen (sowie Wälder und<br />
Bäume) finden sich im Buch Schrijver (2003) in Part V.<br />
Im Internet finden sich viele „Graph Libraries“ oder „Algorithm Repositories“, in denen<br />
fertig implementierte Algorithmen angeboten werden, die das „Minimum Spanning Tree“oder<br />
„Maximum Weighted Branching“-Problem lösen. Einige der Algorithmensammlungen<br />
sind kommerziell (und kosten Geld), einige sind frei verfügbar, einige interaktiv<br />
abrufbar und viele haben Visualisierungskomponenten. Die Halbwertzeit der Webseiten<br />
ist häufig nicht besonders hoch. Es folgen einige Webseiten, die Baum-, Branching- und<br />
viele andere Graphenalgorithmen anbieten:<br />
• COIN-OR::LEMON 1.1: http://lemon.cs.elte.hu<br />
• QuickGraph: http://quickgraph.codeplex.com<br />
• The Stony Brook Algorithm Repository: http://www.cs.sunysb.edu/~algorith/<br />
• LEDA: http://www.algorithmic-solutions.com/leda/index.htm<br />
5.3 Kürzeste Wege<br />
Wir wollen uns nun mit der Aufgabe beschäftigen, in einem Digraphen mit Bogengewichten<br />
kürzeste gerichtete Wege zu finden. Wir werden Algorithmen vorstellen, die kürzeste<br />
Wege von einem Knoten zu einem anderen oder zu allen anderen oder kürzeste Wege zwischen<br />
zwei Knoten finden. Wir beschränken uns auf Digraphen, da derartige Probleme in<br />
ungerichteten Graphen auf einfache Weise auf gerichtete Probleme reduziert werden können.<br />
Denn ist ein Graph G = (V, E) mit Kantenlängen c(e) ≥ 0 für alle e ∈ E gegeben,<br />
so ordnen wir diesem Graphen den Digraphen D = (V, A) mit A = {(i, j), (j, i) | ij ∈ E}<br />
und c((i, j)) := c((j, i)) := c(ij) zu. Den (ungerichteten) [u, v]-Wegen in G entsprechen<br />
dann die gerichteten (u, v)-Wege bzw. (v, u)-Wege in D und umgekehrt. Einander entsprechende<br />
Wege in G und D haben nach Definition gleiche Längen. Also liefert uns ein<br />
kürzester (u, v)-Weg (oder ein kürzester (v, u)-Weg) in D einen kürzesten [u, v]-Weg in<br />
G.<br />
Kürzeste-Wege-Probleme spielen in der kombinatorischen Optimierung eine große Rolle.<br />
Es ist daher nicht überraschend, dass es zu diesem Problemkreis eine außerordentlich<br />
umfangreiche Literatur und sehr viele Lösungsvorschläge gibt. Wenn man dann noch<br />
Variationen hinzunimmt wie: Berechnung längster Wege oder zuverlässiger Wege, von<br />
Wegen maximaler Kapazität, der k kürzesten Wege, von Wegen mit gerader oder ungerader<br />
Bogenzahl etc., so liefert das den Stoff einer gesamten Vorlesung. Wir wollen in<br />
dieser Vorlesung lediglich drei Algorithmen (für unterschiedliche Spezialfälle) behandeln.<br />
Der Leser, der sich für umfassendere Darstellungen interessiert, sei auf die Bücher Ahuja<br />
et al. (1993), Krumke and Noltemeier (2005), Lawler (1976), Mehlhorn (1984), Domschke<br />
(1972), Schrijver (2003), Syslo et al. (1983) verwiesen. Es werden derzeit immer noch<br />
90