Kapitel 1: Grundbegriffe Gliederung der Vorlesung 1. 2. 3. 4. 5. 6. 7. 8. 1/1, Folie 1 Grundbegriffe Elementare Graphalgorithmen und Anwendungen Kürzeste Wege Netzplantechnik Minimale spannende Bäume Traveling Salesman Problem Flüsse in Netzwerken und Anwendungen Bipartite Graphen © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Gliederung des Kapitels a) b) c) 1/1, Folie 2 Graphen Gerichtete Graphen O-Notation © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Beispiel für einen Graphen a b 1 2 e c d 4 3 • • • 1/1, Folie 3 f 5 Knotenmenge • V = { 1,2,3,4,5 } Kantenmenge • E = { a,b,c,d,e,f } Inzidenzabbildung • γ = { (a,{1}),(b,{1,2}),(c,{1,3}),(d,{2,3}),(e,{2,5}),(f,{2,5}) } © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriffe: Graph ... • ein Graph G = (V,E,γ) ist ein Triple bestehend aus: • • • einer nicht leeren Menge V von Knoten einer Menge E von Kanten einer Inzidenzabbildung γ, die jeder Kante e ∈ E eine Teilmenge X ⊆ V mit 1 ≤ |X| ≤ 2 zuordnet • zwei Knoten a,b ∈ V heißen adjazent, wenn es eine Kante e ∈ E mit γ(e) = { a,b} gibt • ein Knoten a ∈ V und eine Kante e heißen inzident, wenn a ∈ γ(e) gilt ... wir betrachten nur endliche Graphen, d.h. die Mengen V und E sind endlich !!! 1/1, Folie 4 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Inzidenz-Matrizen • Idee: • • 1/1, Folie 5 verwende eine Tabelle mit einer Zeile pro Kante und einer Spalte pro Knoten in eine Zelle wird eine 1 eingetragen, wenn die zugehörige Kante und der zugehörige Knoten inzident sind; andernfalls, eine 0 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Inzidenz-Matrizen (Beispiel) a b 1 e c d 3 1/1, Folie 6 2 f 5 4 © 2013 Prof. Steffen Lange - HDa/FbI - 1 2 3 4 5 a 1 0 0 0 0 b 1 1 0 0 0 c 1 0 1 0 0 d 0 1 1 0 0 e 0 1 0 0 1 f 0 1 0 0 1 Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriffe: Schleifen und parallele Kanten • es sei G = (V,E,γ) ein Graph • eine Kante e ∈ E heißt Schleife, falls die Menge X = γ(e) genau einen Knoten enthält • zwei Kanten e, e‘ ∈ E mit e ≠ e‘ heißen parallel, falls die Mengen X = γ(e) und X‘ = γ(e‘) identisch sind a b 1 2 e c d 3 1/1, Folie 7 © 2013 Prof. Steffen Lange • • f die Kante a ist ein Schleife die Kanten e und f sind parallel 5 4 - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Schlichte Graphen • ein Graph G = (V,E,γ) heißt schlichter Graph, wenn G keine Schleifen und keine parallelen Kanten enthält • einen schlichten Graphen G = (V,E,γ) kann man einfacher beschreiben, und zwar mit einem Paar (V‘,E‘), wobei gilt • • V‘ enthält alle Knoten von G, d.h. V‘ = V E‘ = { γ(e) | e ∈ E }; d.h. für jede Kante e ∈ E enthält E‘ die Menge {a,b} mit a ∈ γ(e) und b ∈ γ(e) b 1 2 c d 3 1/1, Folie 8 • • e © 2013 Prof. Steffen Lange V‘ = { 1,2,3,4,5 } E‘ = { {1,2},{1,3},{2,3},{2,5} } 5 4 - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Anmerkungen • • in der Vorlesung werden wir uns hauptsächlich mit schlichten (endlichen) Graphen beschäftigen aus Gründen der Lesbarkeit werden wir in der Regel nur den Begriff Graph verwenden ... ... später untersuchen wir auch gerichtete Graphen 1/1, Folie 9 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Adjazenz-Matrizen • Idee: • • verwende eine Tabelle mit einer Zeile und einer Spalte pro Knoten in eine Zelle wird eine 1 eingetragen, falls die zugehörigen Knoten adjazent sind; andernfalls, eine 0 ... jede Kante wird zweimal „repräsentiert“ ... will man Graphen repräsentieren, die keine schlichten Graphen sind, muss man anders vorgehen 1/1, Folie 10 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Adjazenz-Matrizen (Beispiel) b 1 e c d 3 1/1, Folie 11 2 5 4 © 2013 Prof. Steffen Lange - HDa/FbI - 1 2 3 4 5 1 0 1 1 0 0 2 1 0 1 0 1 3 1 1 0 0 0 4 0 0 0 0 0 5 0 1 0 0 0 Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Adjanzenz-Listen • Idee: • • verwende ein Array mit einer Zelle pro Knoten in eine Zelle wird ein Zeiger auf eine einfach verkettete Liste eingetragen, die alle Knoten enthält, die zum zugehörigen Knoten adjazent sind ... jede Kante wird zweimal „repräsentiert“ ... will man Graphen repräsentieren, die keine schlichten Graphen sind, muss man anders vorgehen 1/1, Folie 12 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Repräsentation von Graphen mit Adjazenz-Listen (Beispiel) b 1 2 e c d 3 5 4 1 2 3 2 1 3 3 1 2 4 5 1/1, Folie 13 © 2013 Prof. Steffen Lange - HDa/FbI - 2 Graphen und Optimierung 5 Kapitel 1: Grundbegriffe Graphen u Anmerkungen • • 1/1, Folie 14 wenn wir uns Algorithmen für graphentheoretische Probleme anschauen, ist jeweils festzulegen, auf welche Art der gegebene Graph repräsentiert wird die verwendete Repräsentation hat Einfluss auf die Laufzeit der Algorithmen (das sehen wir später) © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Grad eines Knotens • es sei G = (V,E) ein Graph • der Grad deg(v) eines Knotens v ∈ V entspricht der Anzahl der Kanten, die mit dem Knoten v inzident sind; mit anderen Worten gilt: • 1/1, Folie 15 deg(v) = | { e ∈ E | v ∈ e } | © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Grad eines Knotens (Beispiel) b 1 2 e c d 3 5 4 • • • • • 1/1, Folie 16 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung deg(1) = 2 deg(2) = 3 deg(3) = 2 deg(4) = 0 deg(5) = 1 Kapitel 1: Grundbegriffe Graphen u Eine einfache Beobachtung (Handschlaglemma) • es sei G = (V,E) ein Graph • es sei deg(G) = Σ deg(v) v∈V Dann gilt: deg(G) = 2|E|. ... die Summe der Knotengrade der Knoten von G ist genau doppelt so groß wie die Anzahl der Kanten von G 1/1, Folie 17 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Eine unmittelbare Folgerung • es sei G = (V,E) ein Graph Dann gilt: Die Anzahl der Knoten in G mit ungeradem Grad ist gerade. ... diesen Zusammenhang haben wir benutzt, als wir uns mit der Korrektheit des Algorithmus zur Lösung des Postbotenproblems beschäftigt haben 1/1, Folie 18 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begründung (Beweisidee) • es sei G = (V,E) ein Graph • • es sei Vg = { v ∈ V | deg(v) gerade } es sei Vu = { v ∈ V | deg(v) ungerade } • offenbar gilt: deg(G) = 2|E| = a + b mit • a= • b= Σ deg(v) v ∈ Vg Σ deg(v) v ∈ Vu 1/1, Folie 19 • offenbar ist a gerade und, da deg(G) gerade ist, muss deshalb auch b gerade sein • da für jedes v ∈ Vu gilt, dass deg(v) ungerade ist, und b gerade ist, muss |Vu| gerade sein © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Hintergrund • es seien z1,...,zk beliebige ungerade Zahlen • es sei b = Σ 1≤i≤k • mit vollständiger Induktion kann man ganz einfach die folgenden Aussagen beweisen: (1) (2) 1/1, Folie 20 zi Wenn k gerade ist, so ist b gerade. Wenn k ungerade ist, so ist b ungerade. © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u eine andere einfache Beobachtung • es sei G = (V,E) ein Graph mit |V| ≥ 2 Dann gilt: In G gibt es mindestens zwei Knoten mit demselben Knotengrad. ... das ist keine spektakuläre Erkenntnis, aber man kann diesen Zusammenhang recht einfach unter Verwendung des so genannten Schubfachprinzips beweisen (diese Beweismethode ist sehr anschaulich und recht hilfreich) 1/1, Folie 21 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begründung (Beweisidee) • es sei G = (V,E) ein Graph mit n = |V| und n ≥ 2 • da G ein schlichter Graph ist, ist der maximale Knotengrad n-1 • wir zerlegen die Knotenmenge V in n-1 disjunkte Mengen • • • • 1/1, Folie 22 V0 = { v ∈ V | deg(v) = 0 } V1 = { v ∈ V | deg(v) = 1 } ... Vn-1 = { v ∈ V | deg(v) = n-1 } • damit haben wir n Schubfächer für n Knoten • wir unterscheiden 2 Fälle (V0 = ∅ bzw. V0 ≠ ∅) © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begründung (Beweisidee) • Fall 1: V0 = ∅ • • • Fall 2: V0 ≠ ∅ • • • 1/1, Folie 23 also sind n Knoten auf höchstens n-1 viele Schubfächer (die Mengen V1,...,Vn-1) zu verteilen folglich muss ein Schubfach 2 Knoten enthalten dann muss die Menge Vn-1 leer sein also sind n Knoten auf höchstens n-1 viele Schubfächer (die Mengen V0,...,Vn-2) zu verteilen folglich muss ein Schubfach 2 Knoten enthalten © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriffe: Pfad und Weg • es sei G = (V,E) ein Graph • ein Pfad in G ist eine Knotenfolge (v0,v1,...,vk) von Knoten aus G, so dass gilt: • • ein Pfad (v0,v1,...,vk) in G heißt Weg, wenn alle benutzen Kanten paarweise verschieden sind, d.h. es gilt: • 1/1, Folie 24 { vi-1,vi } ∈ E für alle i = 1,...,k { vi-1,vi } ≠ { vj-1,vj } für alle i,j = 1,...,k mit i ≠ j © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriffe: Pfad und Weg (Beispiel) 1 1/1, Folie 25 2 3 4 5 © 2013 Prof. Steffen Lange • • • - HDa/FbI - (1,2,3,4,2,3) ist ein Pfad in G (1,2,3,4,2,3) ist kein Weg in G (1,2,4,3) ist ein Weg in G Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriffe: Pfad und Weg (cont.) 1/1, Folie 26 • • es sei G = (V,E) ein Graph es sei (v0,v1,...,vk) ein Pfad bzw. ein Weg in G • • v0 heißt Startknoten und vk Endknoten von (v0,v1,...,vk) (v0,v1,...,vk) heißt Pfad bzw. Weg vom Knoten v0 zum Knoten vk, und zwar Pfad bzw. Weg der Länge k • Anmerkung: ein Pfad bzw. Weg kann auch nur einen Knoten enthalten (und hat dann natürlich die Länge 0) © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u zwei einfache Beobachtungen • • es sei G = (V,E) ein Graph es seien u,v ∈ V Dann gilt: Wenn es in G einen Pfad vom Knoten u zum Knoten v gibt, so gibt es in G auch einen Weg vom Knoten u zum Knoten v. ... überlegen Sie sich selbst eine Begründung (ÜA) Dann gilt: Wenn es in G einen Pfad vom Knoten u zum Knoten v gibt, so gibt es in G auch einen Weg vom Knoten u zum Knoten v, in dem jeder Knoten nur einmal vorkommt (mögliche Ausnahme: der Startund der Endknoten können gleich sein) . ... solche Wege heißen in Literatur einfache Wege 1/1, Folie 27 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Kreis 1/1, Folie 28 • • es sei G = (V,E) ein Graph es sei (v0,v1,...,vk) ein Weg in G • (v0,v1,...,vk) ist ein Kreis in G, wenn v0 = vk gilt • Anmerkung: in schlichten Graphen gibt es keine Kreise der Länge 1 und der Länge 2 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Kreis (Beispiel) 1 1/1, Folie 29 2 3 4 5 © 2013 Prof. Steffen Lange • • - HDa/FbI - (1,2,3,4,2,3) ist kein Kreis in G (1,2,4,5,3,1) ist ein Kreis in G, und zwar einer der Länge 5 Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Erreichbarkeitsrelation • es sei G = (V,E) ein Graph • wir definieren die Erreichbarkeitsrelation Rerr ⊆ V × V wie folgt: • für zwei Knoten u,v ∈ V gilt (u,v) ∈ Rerr, wenn es in G einen Pfad vom Knoten u zum Knoten v gibt ... äquivalent könnte man auch definieren: es gilt (u,v) ∈ Rerr, wenn es einen Weg vom Knoten u zum Knoten v gibt 1/1, Folie 30 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Erreichbarkeitsrelation (Beispiel) 1 2 4 1/1, Folie 31 © 2013 Prof. Steffen Lange 3 • { (1,1),(2,2),(3,3),(4,4),(5,5) } ⊆ Rerr (/* mit Hilfe von Wegen der Länge 0 */) • { (1,2),(2,1),(2,4),(3,5),(4,2),(5,3) } ⊆ Rerr (/* mit Hilfe von Wegen der Länge 1 */) • { (1,4),(4,1) } ⊆ Rerr (/* mit Hilfe von Wegen der Länge 2 */) 5 - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Erreichbarkeitsrelation (alternative Definition) • es sei G = (V,E) ein Graph, wobei n = |V| gilt • für jedes i = 0,1,...,n-1 definieren wir die Relation Rerr,i ⊆ V × V wie folgt: • für zwei Knoten u,v ∈ V gilt (u,v) ∈ Rerr,i, wenn es in G einen Weg vom Knoten u zum Knoten v der Länge i gibt Dann gilt: Rerr = Rerr,0 ∪ Rerr,1 ∪ ... ∪ Rerr,n-1. ... diesen Zusammenhang kann man ausnutzen, um alle Paare (u,v) in der Erreichbarkeitsrelation zu berechnen 1/1, Folie 32 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u einige einfache Beobachtungen • es sei G = (V,E) ein Graph • die Erreichbarkeitsrelation Rerr ⊆ V × V hat folgende Eigenschaften: • Rerr ist eine reflexive Relation, d.h. für alle v ∈ V gilt: (v,v) ∈ Rerr • Rerr ist eine symmetrische Relation, d.h. für alle u,v ∈ V gilt: wenn (u,v) ∈ Rerr, so ist auch (v,u) ∈ Rerr • Rerr ist eine transitive Relation, d.h. für alle u,v,w ∈ V gilt: wenn (u,v) ∈ Rerr und (v,w) ∈ Rerr so ist auch (u,w) ∈ Rerr ... mit anderen Worten: die Erreichbarkeitsrelation Rerr ⊆ V × V ist eine Äquivalenzrelation über der Knotenmenge V 1/1, Folie 33 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u einige einfache Folgerung • • es sei G = (V,E) ein Graph es sei Rerr ⊆ V × V hat folgende Eigenschaften: Dann gilt: Die Äquivalenzrelation Rerr definiert eine Klasseneinteilung über der Knotenmenge V, d.h. V wird in k nicht leere, paarweise disjunkte Mengen C1, ...,Ck aufgeteilt, wobei gilt: • zwei Knoten u,v ∈ V gehören genau dann zu ein und derselben Menge Ci, wenn (u,v) ∈ Rerr gilt. ... k kann Werte zwischen 1 und |V| annehmen ... wie groß k aktuell ist, hängt vom Graphen G ab 1/1, Folie 34 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Beispiel 1 3 2 5 4 6 • die Knotenmenge wird in drei Mengen aufgeteilt: • • • 1/1, Folie 35 © 2013 Prof. Steffen Lange - HDa/FbI - C1 = { 1,2,3 } C2 = { 4 } C3 = { 5,6 } Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: Zusammenhangskomponente • es sei G = (V,E) ein Graph • eine nicht leere Teilmenge C ⊆ V heißt Zusammenhangskomponente des Graphen G, falls für alle v ∈ C und alle u ∈ V gilt: • • wenn (v,u) ∈ Rerr gilt, so gilt auch u ∈ C wenn u ∈ C gilt, so gilt auch (v,u) ∈ Rerr ... mit anderen Worten: C enthält genau die Knoten, die von jedem Knoten v ∈ C erreichbar sind ... jede Menge in der durch die Erreichbarkeitsrelation definierten Klasseneinteilung bildet eine Zusammenhangskomponente 1/1, Folie 36 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: zusammenhängender Graph • es sei G = (V,E) ein Graph • G heißt zusammenhängender Graph, wenn die Knotenmenge V eine Zusammenhangskomponente in G ist ... mit anderen Worten: Rerr = V × V ... mit anderen Worten: für alle u,v ∈ V gilt, dass es in G einen Weg von u nach v gibt 1/1, Folie 37 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Anmerkungen • • einige Algorithmen zum Lösen von graphentheoretischen Problemen sind speziell für zusammenhängende Graphen konzipiert falls ein gegebener Graph nicht zusammenhängend ist, so • • bestimmt man zunächst die Zusammenhangskomponenten und die von diesen induzierten Teilgraphen anschließend wird der jeweilige Algorithmus auf jeden dieser Teilgraphen separat angewendet ... deshalb ist es wichtig, die Zusammenhangskomponenten eines Graphen möglichst effizient bestimmen zu können 1/1, Folie 38 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: von einer Zusammenhangskomponente induzierter Teilgraph • • es sei G = (V,E) ein Graph es sei C eine Zusammenhangskomponente • der durch eine Zusammenhangskomponente C induzierte Teilgraph G‘ hat: • • 1/1, Folie 39 die Knotenmenge C die Kantenmenge EC = { {u,v} ∈ E | u,v ∈ C } © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Begriff: von einer Zusammenhangskomponente induzierter Teilgraph (Beispiel) 1 2 5 4 6 3 • der durch C = { 1,2,3 } induzierte Teilgraph hat • • die Knotenmenge C die Kantenmenge EC = { {1,2},{1,3},{2,3} } 1 2 3 1/1, Folie 40 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Anmerkung • • es sei G = (V,E) ein Graph es sei C1, ..., Ck die Zusammenhangskomponenten von G Dann gilt: Jede Kante aus E kommt genau in der Kantenmengen eines durch die von den Zusammenhangskomponenten C1, ..., Ck induzierten Teilgraphen vor. 1 2 5 4 6 3 1/1, Folie 41 © 2013 Prof. Steffen Lange - 1 2 3 HDa/FbI - Graphen und Optimierung 4 5 6 Kapitel 1: Grundbegriffe Graphen u Eine einfache algorithmische Fragestellung • gegeben: • • ein Graph G = (V,E) gesucht: • alle Zusammenhangskomponenten von G ... der Graph G habe genau n Knoten (/* der Einfachheit halber sei V = { 1,...,n } */) und m Kanten 1/1, Folie 42 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Algorithmische Idee 1) 2) starte bei einem Knoten u und markiere alle von diesem Knoten aus erreichbaren Knoten (/* u und alle diese Knoten bilden eine Zusammenhangskomponente */) falls noch ein unmarkierter Knoten u‘ existiert, so gehe zu 1) (/* wobei die nächste Zusammenhangskomponente gebildet wird ... */) u Zugrunde liegende Datenstrukturen • • • 1/1, Folie 43 die zu G gehörende Adjazenzliste A[1..n] ein Array B[1..n] (/* in dem sich die Zugehörigkeit zu den einzelnen Zusammenhangskomponenten „gemerkt“ wird */) eine Liste L (/* zur Steuerung der Verarbeitung */) © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen u Realisierung • • 1/1, Folie 44 setze b = 0 und B[j] = 0 für alle j = 1,...,n for j = 1,...,n do if B[j] == 0 then setze b = b+1, B[j] = b, L = { j } while L nicht leer ist do entferne das erste Element s aus L for all v ∈ A[s] do if B[v] = 0 then setze B[v] = b und füge v ans Ende von L ein © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Graphen 1 u Beispiel 3 • j=1 • • • • • 1/1, Folie 45 © 2013 Prof. Steffen Lange - HDa/FbI b = 1, B[1] = 1 L = ( 1 ), s = 1 • v = 2, B[2] = 1, L = ( 2 ) • v = 3, B[3] = 1, L = ( 2,3 ) L = ( 2,3 ), s = 2 • v=1 • v=3 L = ( 3 ), s = 3 • v=1 • v=2 L=() - Graphen und Optimierung 2 5 4 6 Kapitel 1: Grundbegriffe Grundbegriffe 1 u Beispiel 3 1/1, Folie 46 • j=2 • j=3 • j=4 © 2013 Prof. Steffen Lange • • • - HDa/FbI b = 2, B[4] = 2 L = ( 4 ), s = 4 L=() - Graphen und Optimierung 2 5 4 6 Kapitel 1: Grundbegriffe Grundbegriffe 1 u Beispiel 3 • j=5 • • • • 1/1, Folie 47 © 2013 Prof. Steffen Lange - HDa/FbI b = 3, B[5] = 3 L = ( 5 ), s = 5 • v = 6, B[6] = 3, L = ( 6 ) L = ( 6 ), s = 6 • v=5 L=() - Graphen und Optimierung 2 5 4 6 Kapitel 1: Grundbegriffe Grundbegriffe 1 u Beispiel 2 3 • 1/1, Folie 48 j=6 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung 4 5 6 Kapitel 1: Grundbegriffe Grundbegriffe u Abschätzung der Laufzeit des Algorithmus • die Initialisierung benötigt n+1 viele Rechenschritte • die Ausführung der „for-Schleife“ für einen Knoten j benötigt: • • • konstant viele Rechenschritte um j zu initialisieren und den Test „B[j] == 0“ durchzuführen (/* immer */) keine weiteren Rechenschritte (/* falls B[j] ≠ 0 gilt */) konstant viele Rechenschritte für die Initialisierung vor Ausführung der „while-Schleife“ und so viele weitere Rechenschritte, wie zum Neubestimmen der Zusammenhangskomponente, deren „erster besuchter“ Knoten j ist, erforderlich sind (/* falls B[j] = 0 gilt */) ... da jeder Knoten nur einmal markiert wird, reicht es, die Rechenzeiten zum Neubestimmen der einzelnen Zusammenhangskomponenten abzuschätzen und aufzuaddieren 1/1, Folie 49 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Grundbegriffe u Abschätzung der Laufzeit des Algorithmus • beim Neubestimmen einer Zusammenhangskomponente C • wird jede Kante, die die Knoten in C verbindet, genau zweimal „angefasst“ dabei werden je Kante benötigt: • • • • konstant viele Schritte, um für die „andere“ Ecke v dieser Kante den Test „B[v] == 0“ durchzuführen (/* immer */) keine weiteren Rechenschritte (/* falls B[v] ≠ 0 gilt */) konstant viele Rechenschritte (/* falls B[v] = 0 gilt */) ... da jede Kante nur beim Neubestimmen einer einzigen Zusammenhangskomponente „angefasst“ wird, genügen maximal c‘*m viele Rechenschritte, für die Neubestimmung aller (!!!) Zusammenhangskomponenten ... insgesamt werden maximal c*(n + m) viele Rechenschritte benötigt, um alle Zusammenhangskomponenten zu bestimmen 1/1, Folie 50 © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Grundbegriffe Grundbegriffe u Zusammenfassung • • 1/1, Folie 51 man kann die Zusammenhangskomponenten eines Graphen G sehr effizient bestimmen; später werden wir sagen, dass hierfür O(n+m) viele Rechenschritte genügen man kann folglich auch sehr effizient herausfinden, ob ein Graph G zusammenhängend ist © 2013 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung