LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Slides:



Advertisements
Ähnliche Präsentationen
Freie Universität Berlin Institut für Informatik
Advertisements

Berechne den optimalen (kürzesten, schnellsten) Weg
Datenstrukturen und Algorithmen
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Single-Source Shortest Paths: SSSP
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Minimum Spanning Tree: MST
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
Verifizieren versus Berechnen
Standortfaktoren INTERN - Ausdrucksstark präsentieren.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Effiziente Algorithmen
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Christian Scheideler Institut für Informatik Universität Paderborn
Auslegung eines Vorschubantriebes
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Folie Einzelauswertung der Gemeindedaten
Analyse der Laufzeit von Algorithmen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Heap Operationen Folien bitte als Vollbild-Bildschirmpräsentation (Taste F5) betrachten! Vorlesung Algorithmen und Datenstrukturen, WS10/11, C. Eckert.
 Präsentation transkript:

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik 2 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen

LS 2 / Informatik 3 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen

LS 2 / Informatik 4 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 5 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 6 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 7 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 8 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 9 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 10 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 11 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 12 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 13 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 14 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 15 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 16 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 17 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 18 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 19 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 20 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 21 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 22 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 23 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen i

LS 2 / Informatik 24 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Datenstrukturen

LS 2 / Informatik 25 Heapsort(A) 1. Build-Heap(A) 2. for i length[A] downto 2 do 3. A[1] A[i] 4. heap-size[A] heap-size[A]-1 5. Heapify(A,1) Laufzeit O(n log n) Datenstrukturen

LS 2 / Informatik 26 Zusammenfassung (Halden) Einfügen, Löschen, Maximum extrahieren in O(log n) Zeit Sortieren mit Hilfe von Halden in O(n log n) Heapsort braucht keinen zusätzlichen Speicherplatz Einfache Implementierung Datenstrukturen

LS 2 / Informatik 27 Definition Ein Graph G ist ein Paar (V,E). V heißt Knotenmenge und E V V Kantenmenge des Graphen. Darstellung von Graphen Adjazenzlisten (dünne Graphen, |E|<<|V|²) Adjazenzmatrix (dichte Graphen, |E| nah an |V|²) Arten von Graphen Ungerichtet, gerichtet Ungewichtet, gewichtet Graphalgorithmen

LS 2 / Informatik 28 Adjazenzmatrixdarstellung Knoten sind nummeriert von 1 bis |V| |V| |V| Matrix A = (a ) mit Bei ungerichteten Graphen gilt A = A Graphalgorithmen ij a = ij 1, if (i,j) E 0, sonst T

LS 2 / Informatik 29 Beispiel Graphalgorithmen

LS 2 / Informatik 30 Adjazenzlistendarstellung Feld Adj mit |V| Listen (eine pro Knoten) Für Knoten v enthält Adj[v] eine Liste aller Knoten u mit (v,u) E Die Knoten in Adj[u] heißen zu u adjazent Ist G ungerichtet, so gilt: v Adj[u] u Adj[v] Gewichtete Graphen Kanten haben Gewicht gegeben durch Funktion w: E R Gewicht w(u,v) von Kante (u,v) wird mit Knoten v in us Adjazenzliste gespeichert Graphalgorithmen

LS 2 / Informatik 31 Beispiel Graphalgorithmen / / / / /

LS 2 / Informatik 32 Kürzeste Wege in Graphen Gegeben (möglicherweise gewichteter) Graph G=(V,E) Frage: Was ist der kürzeste Weg Knoten v nach Knoten u? Länge des Weges: Summe der Kantengewichte (bzw. Anzahl Kanten, wenn ungewichtet) Graphalgorithmen v u

LS 2 / Informatik 33 Kürzeste Wege in Graphen Gegeben (möglicherweise gewichteter) Graph G=(V,E) Frage: Was ist der kürzeste Weg Knoten v nach Knoten u? Länge des Weges: Summe der Kantengewichte (bzw. Anzahl Kanten, wenn ungewichtet) Graphalgorithmen v u

LS 2 / Informatik 34 Single Source Shortest Path (SSSP) Startknoten s Aufgabe: Berechne kürzeste Wege von s zu allen anderen Knoten All Pairs Shortest Path (APSP) Aufgabe: Berechne kürzeste Wege zwischen allen Knotenpaaren SSSP in ungerichteten Graphen (Breitensuche) Graph in Adjazenzlistendarstellung Startknoten s Nutze Kanten von G, um alle Knoten zu finden, die von s aus erreichbar sind Finde kürzeste Distanz (Anzahl Kanten) zu jedem anderen Knoten Graphalgorithmen

LS 2 / Informatik 35 Invariante (Breitensuche) Knoten haben 3 Farben: weiß, grau und schwarz Zu Beginn: Alle Knoten sind weiß Ein nicht-weißer Knoten heißt entdeckt Unterscheidung grau-schwarz dient zur Steuerung des Algorithmus Wenn (u,v) E ist und u ist schwarz, dann sind seine adjazenten Knoten grau oder schwarz Graue Knoten können adjazente weiße Knoten haben Graphalgorithmen

LS 2 / Informatik 36 Beispiel (mögl. Zustand bei einer Breitensuche) Graphalgorithmen s

LS 2 / Informatik 37 Breitensuche Baut Breitensuche Baum (BFS Baum) Zu Beginn enthält der Baum nur die Wurzel, nämlich s Wenn weißer Knoten beim Durchsuchen der Adjazenzliste eines entdeckten Knotens entdeckt wird, dann werden v und (u,v) dem Baum hinzugefügt u ist dann Vaterknoten von v Graphalgorithmen u s

LS 2 / Informatik 38 Breitensuche Baut Breitensuche Baum (BFS Baum) Zu Beginn enthält der Baum nur die Wurzel, nämlich s Wenn weißer Knoten beim Durchsuchen der Adjazenzliste eines entdeckten Knotens entdeckt wird, dann werden v und (u,v) dem Baum hinzugefügt u ist dann Vaterknoten von v Graphalgorithmen u v Knoten v wird von Knoten u aus entdeckt s

LS 2 / Informatik 39 Datenstruktur Schlange Operationen: head, enqueue, dequeue head: Gibt Referenz auf das erste in der Schlange gespeicherte Element zurück enqueue: Fügt neues Element ans Ende der Schlage dequeue: Entfernt Kopf der Schlange Wir verwenden Doppelt verkettete Liste Zusätzlich halten wir Zeiger auf das letzte Element aufrecht Alle Operationen in O(1) Zeit Graphalgorithmen

LS 2 / Informatik 40 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen

LS 2 / Informatik 41 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen d[u]: Abstand zu s (zu Beginn ) [u]: Vaterknoten von u (zu Beginn nil) d[u]: Abstand zu s (zu Beginn ) [u]: Vaterknoten von u (zu Beginn nil)

LS 2 / Informatik 42 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen Für jeden Knoten u: color[u] = weiß d[u] = [u] = nil Für jeden Knoten u: color[u] = weiß d[u] = [u] = nil

LS 2 / Informatik 43 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen Für jeden Knoten u: color[u] = weiß d[u] = [u] = nil Für jeden Knoten u: color[u] = weiß d[u] = [u] = nil Für Knoten s: color[s] = grau d[s]=0 [s]=nil s wird in Schlange Q eingefügt Für Knoten s: color[s] = grau d[s]=0 [s]=nil s wird in Schlange Q eingefügt

LS 2 / Informatik 44 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b a

LS 2 / Informatik 45 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b a u

LS 2 / Informatik 46 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b u v=a

LS 2 / Informatik 47 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b u v=a

LS 2 / Informatik 48 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b u v=a

LS 2 / Informatik 49 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s 0 i h g f e d c b u v=a 1

LS 2 / Informatik 50 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a 0 i h g f e d c b u v=a 1

LS 2 / Informatik 51 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a 0 i h g f e d c v=b u a 1

LS 2 / Informatik 52 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a 0 i h g f e d c v=b u a 1

LS 2 / Informatik 53 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a 0 i h g f e d c v=b u a 1

LS 2 / Informatik 54 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a 0 i h g f e d c v=b u a 1 1

LS 2 / Informatik 55 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:s, a, b 0 i h g f e d c v=b u a 1 1

LS 2 / Informatik 56 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b 0 i h g f e d c b u a 1 1

LS 2 / Informatik 57 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b 0 i h g f e d c b u a 1 1

LS 2 / Informatik 58 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b 0 i h g f e d c b u u=a 1 1

LS 2 / Informatik 59 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b 0 i h g f e d v=c b u u=a 1 1

LS 2 / Informatik 60 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b, c 0 i h g f e d v=c b u u=a 1 1 2

LS 2 / Informatik 61 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b, c 0 i h g f e v=d c b u u=a 1 1 2

LS 2 / Informatik 62 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:a, b, c, d 0 i h g f e v=d c b u u=a

LS 2 / Informatik 63 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:b, c, d 0 i h g f e v=d c b u u=a

LS 2 / Informatik 64 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:b, c, d 0 i h g f e d c u=b u a

LS 2 / Informatik 65 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:b, c, d 0 i h g f e d c u=b u a

LS 2 / Informatik 66 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:c, d 0 i h g f e d c b u a

LS 2 / Informatik 67 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:c, d 0 i h g f e d u=c b u a

LS 2 / Informatik 68 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:c, d, f 0 i h g f e d u=c b u a

LS 2 / Informatik 69 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:d, f 0 i h g f e d c b u a

LS 2 / Informatik 70 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:d, f 0 i h g f e u=d c b u a

LS 2 / Informatik 71 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:d, f, e 0 i h g f e u=d c b u a

LS 2 / Informatik 72 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:f, e 0 i h g f e u=d c b u a

LS 2 / Informatik 73 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:f, e 0 i h g u=f e u=d c b u a

LS 2 / Informatik 74 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:f, e, g, i 0 i h g u=f e u=d c b u a

LS 2 / Informatik 75 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:e, g, i 0 i h g u=f e u=d c b u a

LS 2 / Informatik 76 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:g, i 0 i h g f u=e u=d c b u a

LS 2 / Informatik 77 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:i, h 0 i h u=g f e u=d c b u a

LS 2 / Informatik 78 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q:h 0 u=i h g f e u=d c b u a

LS 2 / Informatik 79 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s Q: 0 i u=h g f e u=d c b u a

LS 2 / Informatik 80 BFS(G,s) 1. initialisiere BFS 2. while Q do 3. u head[Q] 4. for each v Adj[u] do 5. if color[v]=weiß then 6. color[v] grau 7. d[v] d[u]+1; [v] u 8. enqueue(Q,v) 9. dequeue(Q) 10. color[u] schwarz Graphalgorithmen s 0 i h g f e u=d c b u a

LS 2 / Informatik 81 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Graphalgorithmen

LS 2 / Informatik 82 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Graphalgorithmen

LS 2 / Informatik 83 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Graphalgorithmen

LS 2 / Informatik 84 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Graphalgorithmen

LS 2 / Informatik 85 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Zeit für Schlangenoperationen ist O(|V|) Graphalgorithmen

LS 2 / Informatik 86 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Zeit für Schlangenoperationen ist O(|V|) Adjazenzliste jedes Knotens wird nur durchlaufen, wenn er aus der Schlange entfernt wird Graphalgorithmen

LS 2 / Informatik 87 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Zeit für Schlangenoperationen ist O(|V|) Adjazenzliste jedes Knotens wird nur durchlaufen, wenn er aus der Schlange entfernt wird Damit wird jede Adjazenzliste maximal einmal durchlaufen (d.h. jede Kante maximal zweimal) Laufzeit für Liste: O(|E|) Graphalgorithmen

LS 2 / Informatik 88 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Zeit für Schlangenoperationen ist O(|V|) Adjazenzliste jedes Knotens wird nur durchlaufen, wenn er aus der Schlange entfernt wird Damit wird jede Adjazenzliste maximal einmal durchlaufen (d.h. jede Kante maximal zweimal) Laufzeit für Liste: O(|E|) Gesamtlaufzeit: O(|V|+|E|) Graphalgorithmen

LS 2 / Informatik 89 Satz 47 Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|). Beweis Laufzeit Initialisierung: O(|V|) Nach der Initialisierung wird kein Knoten weiß gefärbt Daher ist jeder Knoten nur einmal in der Schlange Zeit für Schlangenoperationen ist O(|V|) Adjazenzliste jedes Knotens wird nur durchlaufen, wenn er aus der Schlange entfernt wird Damit wird jede Adjazenzliste maximal einmal durchlaufen (d.h. jede Kante maximal zweimal) Laufzeit für Liste: O(|E|) Gesamtlaufzeit: O(|V|+|E|) Graphalgorithmen

LS 2 / Informatik 90 Kürzeste Wege in ungewichteten Graphen Sei (s,t) die minimale Anzahl Kanten in einem s-t-Weg Ein s-t-Weg der Länge (s,t) heißt kürzester Weg Wollen zeigen, dass BFS korrekt kürzeste Wege berechnet Graphalgorithmen

LS 2 / Informatik 91 Lemma 48 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V ein beliebiger Knoten. Dann gilt für jede Kante (u,v) E: (s,v) (s,u)+1 Graphalgorithmen

LS 2 / Informatik 92 Lemma 48 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V ein beliebiger Knoten. Dann gilt für jede Kante (u,v) E: (s,v) (s,u)+1 Beweis Ist u erreichbar von s, dann ist es auch v Graphalgorithmen

LS 2 / Informatik 93 Lemma 48 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V ein beliebiger Knoten. Dann gilt für jede Kante (u,v) E: (s,v) (s,u)+1 Beweis Ist u erreichbar von s, dann ist es auch v Der kürzeste Weg von s nach v kann nicht länger sein, als der kürzeste Weg von s nach u gefolgt von der Kante (u,v). Damit gilt die Ungleichung. Graphalgorithmen

LS 2 / Informatik 94 Lemma 48 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V ein beliebiger Knoten. Dann gilt für jede Kante (u,v) E: (s,v) (s,u)+1 Beweis Ist u erreichbar von s, dann ist es auch v Der kürzeste Weg von s nach v kann nicht länger sein, als der kürzeste Weg von s nach u gefolgt von der Kante (u,v). Damit gilt die Ungleichung. Ist u nicht erreichbar von s, dann ist (s,u)= und die Ungleichung gilt. Graphalgorithmen

LS 2 / Informatik 95 Lemma 48 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V ein beliebiger Knoten. Dann gilt für jede Kante (u,v) E: (s,v) (s,u)+1 Beweis Ist u erreichbar von s, dann ist es auch v Der kürzeste Weg von s nach v kann nicht länger sein, als der kürzeste Weg von s nach u gefolgt von der Kante (u,v). Damit gilt die Ungleichung. Ist u nicht erreichbar von s, dann ist (s,u)= und die Ungleichung gilt. Graphalgorithmen

LS 2 / Informatik 96 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird Graphalgorithmen

LS 2 / Informatik 97 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} Graphalgorithmen

LS 2 / Informatik 98 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} (I.V.) Aussage gilt nach m Einfügeoperationen Graphalgorithmen

LS 2 / Informatik 99 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} (I.V.) Aussage gilt nach m Einfügeoperationen (I.S.) Betrachte nach m Einfügeoperationen einen weißen Knoten v, der während einer Suche von u entdeckt wird. Nach (I.V.) gilt d[u] (s,u). Graphalgorithmen

LS 2 / Informatik 100 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} (I.V.) Aussage gilt nach m Einfügeoperationen (I.S.) Betrachte nach m Einfügeoperationen einen weißen Knoten v, der während einer Suche von u entdeckt wird. Nach (I.V.) gilt d[u] (s,u). Zeile 7: d[v] wird auf d[u]+1 gesetzt Graphalgorithmen

LS 2 / Informatik 101 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} (I.V.) Aussage gilt nach m Einfügeoperationen (I.S.) Betrachte nach m Einfügeoperationen einen weißen Knoten v, der während einer Suche von u entdeckt wird. Nach (I.V.) gilt d[u] (s,u). Zeile 7: d[v] wird auf d[u]+1 gesetzt Es gilt: d[v] = d[u]+1 (s,u)+1 (s,v) nach Lemma 48 Graphalgorithmen

LS 2 / Informatik 102 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Induktion über Anzahl von Zeitpunkten, an denen ein Knoten in Q eingefügt wird (I.A.) Nach Initialisierung gilt d[s]=0= (s,s) und d[v]= (s,v) für alle v V-{s} (I.V.) Aussage gilt nach m Einfügeoperationen (I.S.) Betrachte nach m Einfügeoperationen einen weißen Knoten v, der während einer Suche von u entdeckt wird. Nach (I.V.) gilt d[u] (s,u). Zeile 7: d[v] wird auf d[u]+1 gesetzt Es gilt: d[v] = d[u]+1 (s,u)+1 (s,v) nach Lemma 48 Graphalgorithmen

LS 2 / Informatik 103 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Knoten v wird dann in die Schlange eingefügt und grau gefärbt Graphalgorithmen

LS 2 / Informatik 104 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Knoten v wird dann in die Schlange eingefügt und grau gefärbt Damit ändert sich d[v] im Laufe des Algorithmus nicht mehr und die Aussage des Lemmas bleibt erhalten Graphalgorithmen

LS 2 / Informatik 105 Lemma 49 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten s V. Nach Abschluss der Breitensuche gilt für jeden Knoten v, dass d[v] (s,v) ist. Beweis Knoten v wird dann in die Schlange eingefügt und grau gefärbt Damit ändert sich d[v] im Laufe des Algorithmus nicht mehr und die Aussage des Lemmas bleibt erhalten Graphalgorithmen

LS 2 / Informatik 106 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 107 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Induktion über die Anzahl Schlangenoperationen Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 108 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Induktion über die Anzahl Schlangenoperationen (I.A.) Die Schlange enthält nur s, damit gilt das Lemma Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 109 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Induktion über die Anzahl Schlangenoperationen (I.A.) Die Schlange enthält nur s, damit gilt das Lemma (I.V.) Das Lemma gilt nach m Schlangenoperationen Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 110 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Induktion über die Anzahl Schlangenoperationen (I.A.) Die Schlange enthält nur s, damit gilt das Lemma (I.V.) Das Lemma gilt nach m Schlangenoperationen (I.S.) Wir müssen zeigen, dass das Lemma immer noch nach m+1 Schlangenoperationen gilt. Die (m+1)ste Schlangenoperation ist entweder eine enqueue oder dequeue Operation Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 111 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Induktion über die Anzahl Schlangenoperationen (I.A.) Die Schlange enthält nur s, damit gilt das Lemma (I.V.) Das Lemma gilt nach m Schlangenoperationen (I.S.) Wir müssen zeigen, dass das Lemma immer noch nach m+1 Schlangenoperationen gilt. Die (m+1)ste Schlangenoperation ist entweder eine enqueue oder dequeue Operation Graphalgorithmen 1 r 1r 1 r ii+1

LS 2 / Informatik 112 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Dequeue: Wird v aus der Schlange entfernt, so wird v der neue Kopf Graphalgorithmen 1 r 1r 1 r ii+1 1 2

LS 2 / Informatik 113 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Dequeue: Wird v aus der Schlange entfernt, so wird v der neue Kopf Dann gilt aber sicherlich d[v ] d[v ]+1 d[v ]+1 Graphalgorithmen 1 r 1r 1 r ii r

LS 2 / Informatik 114 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Dequeue: Wird v aus der Schlange entfernt, so wird v der neue Kopf Dann gilt aber sicherlich d[v ] d[v ]+1 d[v ]+1 Alle anderen Ungleichungen sind nicht betroffen, also gilt das Lemma Graphalgorithmen 1 r 1r 1 r ii r

LS 2 / Informatik 115 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Dequeue: Wird v aus der Schlange entfernt, so wird v der neue Kopf Dann gilt aber sicherlich d[v ] d[v ]+1 d[v ]+1 Alle anderen Ungleichungen sind nicht betroffen, also gilt das Lemma Graphalgorithmen 1 r 1r 1 r ii r

LS 2 / Informatik 116 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Enqueue: Wird in Zeile 8 ein Knoten v eingefügt (und damit zu v ), so ist v der Knoten u, von dem aus v entdeckt wurde Graphalgorithmen 1 r 1r 1 r ii+1 r+1 1

LS 2 / Informatik 117 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Enqueue: Wird in Zeile 8 ein Knoten v eingefügt (und damit zu v ), so ist v der Knoten u, von dem aus v entdeckt wurde Es gilt: d[v ] = d[v] = d[u]+1 = d[v ]+1 Graphalgorithmen 1 r 1r 1 r ii+1 r+1 1 1

LS 2 / Informatik 118 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Enqueue: Wird in Zeile 8 ein Knoten v eingefügt (und damit zu v ), so ist v der Knoten u, von dem aus v entdeckt wurde Es gilt: d[v ] = d[v] = d[u]+1 = d[v ]+1 Außerdem: d[v ] d[v ]+1 = d[u]+1 = d[v] = d[v ] Graphalgorithmen 1 r 1r 1 r ii+1 r+1 1 r1 1

LS 2 / Informatik 119 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Enqueue: Wird in Zeile 8 ein Knoten v eingefügt (und damit zu v ), so ist v der Knoten u, von dem aus v entdeckt wurde Es gilt: d[v ] = d[v] = d[u]+1 = d[v ]+1 Außerdem: d[v ] d[v ]+1 = d[u]+1 = d[v] = d[v ] Die anderen Ungleichungen bleiben erhalten; Also gilt das Lemma Graphalgorithmen 1 r 1r 1 r ii+1 r+1 1 r1 1

LS 2 / Informatik 120 Lemma 50 Sei der Inhalt der Schlange Q während eines Durchlaufs der Breitensuche auf einem Graph G=(V,E), wobei v Kopf und v Ende der Schlange ist. Dann gilt d[v ] d[v ]+1 und d[v ] d[v ] für i=1,2,…,r-1. Beweis Enqueue: Wird in Zeile 8 ein Knoten v eingefügt (und damit zu v ), so ist v der Knoten u, von dem aus v entdeckt wurde Es gilt: d[v ] = d[v] = d[u]+1 = d[v ]+1 Außerdem: d[v ] d[v ]+1 = d[u]+1 = d[v] = d[v ] Die anderen Ungleichungen bleiben erhalten; Also gilt das Lemma Graphalgorithmen 1 r 1r 1 r ii+1 r+1 1 r1 1

LS 2 / Informatik 121 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Graphalgorithmen

LS 2 / Informatik 122 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Beweis Fall 1 (v nicht erreichbar von s): Graphalgorithmen

LS 2 / Informatik 123 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Beweis Fall 1 (v nicht erreichbar von s): Nach Lemma 49 gilt d[v] (s,v) = Graphalgorithmen

LS 2 / Informatik 124 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Beweis Fall 1 (v nicht erreichbar von s): Nach Lemma 49 gilt d[v] (s,v) = Es kann keinen ersten Knoten geben, dessen d-Wert in Zeile 7 auf gesetzt wird Graphalgorithmen

LS 2 / Informatik 125 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Beweis Fall 1 (v nicht erreichbar von s): Nach Lemma 49 gilt d[v] (s,v) = Es kann keinen ersten Knoten geben, dessen d-Wert in Zeile 7 auf gesetzt wird Somit wird v nie entdeckt Graphalgorithmen

LS 2 / Informatik 126 Satz 51 Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei s V Startknoten der Breitensuche. Dann entdeckt die Breitensuche alle Knoten v V, die von s aus erreichbar sind und nach Terminierung gilt d[v]= (s,v) für alle v V. Außerdem gilt für jeden von s erreichbaren Knoten v s, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ( [v],v) ein kürzester s-v-Weg ist. Beweis Fall 1 (v nicht erreichbar von s): Nach Lemma 49 gilt d[v] (s,v) = Es kann keinen ersten Knoten geben, dessen d-Wert in Zeile 7 auf gesetzt wird Somit wird v nie entdeckt Graphalgorithmen

LS 2 / Informatik 127 Beweis Fall 2 (v erreichbar von s): Graphalgorithmen

LS 2 / Informatik 128 Beweis Fall 2 (v erreichbar von s): Sei V = {v V : (s,v) = k} Graphalgorithmen k

LS 2 / Informatik 129 Beweis Fall 2 (v erreichbar von s): Sei V = {v V : (s,v) = k} Wir zeigen per Induktion über k: Es gibt genau einen Zeitpunkt, zu dem jeder Knoten v V (a) grau gefärbt wird (b) d[v]=k gesetzt wird (c) wenn v s, dann [v] auf u gesetzt wird für ein u V (d) v in Schlange Q eingefügt wird Graphalgorithmen k k k-1

LS 2 / Informatik 130 Beweis Fall 2 (v erreichbar von s): Sei V = {v V : (s,v) = k} Wir zeigen per Induktion über k: Es gibt genau einen Zeitpunkt, zu dem jeder Knoten v V (a) grau gefärbt wird (b) d[v]=k gesetzt wird (c) wenn v s, dann [v] auf u gesetzt wird für ein u V (d) v in Schlange Q eingefügt wird Da nur zur Initialisierung Knoten weiß gefärbt werden, gibt es maximal einen solchen Zeitpunkt Graphalgorithmen k k k-1

LS 2 / Informatik 131 Beweis Fall 2 (v erreichbar von s): Sei V = {v V : (s,v) = k} Wir zeigen per Induktion über k: Es gibt genau einen Zeitpunkt, zu dem jeder Knoten v V (a) grau gefärbt wird (b) d[v]=k gesetzt wird (c) wenn v s, dann [v] auf u gesetzt wird für ein u V (d) v in Schlange Q eingefügt wird Da nur zur Initialisierung Knoten weiß gefärbt werden, gibt es maximal einen solchen Zeitpunkt Graphalgorithmen k k k-1

LS 2 / Informatik 132 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. Graphalgorithmen 0

LS 2 / Informatik 133 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V Graphalgorithmen 0 k-1

LS 2 / Informatik 134 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V (I.S.) Q ist nie leer bis Algorithmus terminiert. Graphalgorithmen 0 k-1

LS 2 / Informatik 135 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V (I.S.) Q ist nie leer bis Algorithmus terminiert. Nachdem v in Q eingefügt wurde, ändern sich d[v] und [v] nicht mehr Graphalgorithmen 0 k-1

LS 2 / Informatik 136 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V (I.S.) Q ist nie leer bis Algorithmus terminiert. Nachdem v in Q eingefügt wurde, ändern sich d[v] und [v] nicht mehr Nach Lemma 50 sind die d-Werte monoton steigend, wenn Knoten in die Schlage eingefügt werden Graphalgorithmen 0 k-1

LS 2 / Informatik 137 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V (I.S.) Q ist nie leer bis Algorithmus terminiert. Nachdem v in Q eingefügt wurde, ändern sich d[v] und [v] nicht mehr Nach Lemma 50 sind die d-Werte monoton steigend, wenn Knoten in die Schlage eingefügt werden Betrachte nun v V, k>0. Monotonie mit d[v]k (Lemma 49) und (I.V.): wenn v entdeckt wird, dann erst nachdem alle Knoten aus V in die Schlange eingefügt wurden Graphalgorithmen 0 k-1 k

LS 2 / Informatik 138 Beweis (I.A.) V ={s}. Während der Initialisierung wird s grau gefärbt, d[s] auf 0 gesetzt, und s in Q eingefügt. Somit gilt die Aussage. (I.V.) Aussage gilt für alle Knoten aus V (I.S.) Q ist nie leer bis Algorithmus terminiert. Nachdem v in Q eingefügt wurde, ändern sich d[v] und [v] nicht mehr Nach Lemma 50 sind die d-Werte monoton steigend, wenn Knoten in die Schlage eingefügt werden Betrachte nun v V, k>0. Monotonie mit d[v]k (Lemma 49) und (I.V.): wenn v entdeckt wird, dann erst nachdem alle Knoten aus V in die Schlange eingefügt wurden Graphalgorithmen 0 k-1 k

LS 2 / Informatik 139 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V Graphalgorithmen k-1 v u

LS 2 / Informatik 140 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Graphalgorithmen k-1 v u

LS 2 / Informatik 141 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Graphalgorithmen k-1 v u

LS 2 / Informatik 142 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufen und v in Zeile 4 entdeckt Graphalgorithmen k-1 v u

LS 2 / Informatik 143 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufen und v in Zeile 4 entdeckt Dann wird v in Zeile 6 grau gefärbt und Zeile 7 setzt d[v]=k und [v]=u. Graphalgorithmen k-1 v u

LS 2 / Informatik 144 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufen und v in Zeile 4 entdeckt Dann wird v in Zeile 6 grau gefärbt und Zeile 7 setzt d[v]=k und [v]=u. Zeile 8 fügt v in die Schlange ein Graphalgorithmen k-1 v u

LS 2 / Informatik 145 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufen und v in Zeile 4 entdeckt Dann wird v in Zeile 6 grau gefärbt und Zeile 7 setzt d[v]=k und [v]=u. Zeile 8 fügt v in die Schlange ein Damit folgt unsere Aussage per Induktion für alle V Graphalgorithmen k-1 v u k

LS 2 / Informatik 146 Beweis Da (s,v)=k gibt es Pfad mit k Kanten von s nach v und Knoten u mit (u,v) E und u V ObdA. Sei u der erste solche Knoten, der grau gefärbt wird (existiert wegen I.V.) Wird Knoten grau gefärbt, so wird er auch in Schlange eingefügt und muss irgendwann als Kopf der Schlange auftauchen Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufen und v in Zeile 4 entdeckt Dann wird v in Zeile 6 grau gefärbt und Zeile 7 setzt d[v]=k und [v]=u. Zeile 8 fügt v in die Schlange ein Damit folgt unsere Aussage per Induktion für alle V Graphalgorithmen k-1 v u k

LS 2 / Informatik 147 Beweis Abschließend beobachten wir, dass wenn v V ist, dann ist [v] in V Graphalgorithmen k-1 k

LS 2 / Informatik 148 Beweis Abschließend beobachten wir, dass wenn v V ist, dann ist [v] in V Damit können wir einen kürzesten Weg von s nach v bekommen, indem wir einen kürzesten Weg von s nach [v] nehmen und der Kante ( [v],v) folgen Graphalgorithmen k-1 k

LS 2 / Informatik 149 Beweis Abschließend beobachten wir, dass wenn v V ist, dann ist [v] in V Damit können wir einen kürzesten Weg von s nach v bekommen, indem wir einen kürzesten Weg von s nach [v] nehmen und der Kante ( [v],v) folgen Graphalgorithmen k-1 k

LS 2 / Informatik 150 Graphalgorithmen Zusammenfassung (Breitensuche) Die Breitensuche kann dazu genutzt werden, um das SSSP Problem in ungewichteten Graphen zu lösen Die Laufzeit der Breitensuche ist O(|V|+|E|)