datenstrukturen, algorithmen und programmierung 2 (dap2)
DESCRIPTION
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2). Datenstrukturen. 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). 3. 2. 6. 5. 4. 1. 1. 11. 3. 2. 7. 10. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/1.jpg)
LS 2 / Informatik
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
![Page 2: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/2.jpg)
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
11 7 10 3 2 4
11
7 10
3 2
1
2 3
4 5
1 2 3 4 5 6
4
6
![Page 3: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/3.jpg)
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
11 7 10 3 2 4
11
7 10
3 2
1
2 3
4 5
1 2 3 4 5 6
4
6
![Page 4: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/4.jpg)
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
11 7 10 3 2 4
11
7 10
3 2
1
2 3
4 5
1 2 3 4 5 6
4
6
i
![Page 5: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/5.jpg)
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
4 7 10 3 2 11
4
7 10
3 2
1
2 3
4 5
1 2 3 4 5 6
11
6
i
![Page 6: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/6.jpg)
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
4 7 10 3 2 11
4
7 10
3 2
1
2 3
4 5
1 2 3 4 5 6
i
![Page 7: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/7.jpg)
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
10 7 4 3 2 11
10
7 4
3 2
1
2 3
4 5
1 2 3 4 5 6
i
![Page 8: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/8.jpg)
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
10 7 4 3 2 11
10
7 4
3 2
1
2 3
4 5
1 2 3 4 5 6
i
![Page 9: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/9.jpg)
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
2 7 4 3 10 11
2
7 4
3 10
1
2 3
4 5
1 2 3 4 5 6
i
![Page 10: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/10.jpg)
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
2 7 4 3 10 11
2
7 4
3
1
2 3
4
1 2 3 4 5 6
i
![Page 11: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/11.jpg)
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
7 3 4 2 10 11
7
3 4
2
1
2 3
4
1 2 3 4 5 6
i
![Page 12: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/12.jpg)
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
7 3 4 2 10 11
7
3 4
2
1
2 3
4
1 2 3 4 5 6
i
![Page 13: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/13.jpg)
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
2 3 4 7 10 11
2
3 4
7
1
2 3
4
1 2 3 4 5 6
i
![Page 14: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/14.jpg)
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
2 3 4 7 10 11
2
3 4
1
2 3
1 2 3 4 5 6
i
![Page 15: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/15.jpg)
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
4 3 2 7 10 11
4
3 2
1
2 3
1 2 3 4 5 6
i
![Page 16: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/16.jpg)
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
4 3 2 7 10 11
4
3 2
1
2 3
1 2 3 4 5 6
i
![Page 17: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/17.jpg)
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
2 3 4 7 10 11
2
3 4
1
2 3
1 2 3 4 5 6
i
![Page 18: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/18.jpg)
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
2 3 4 7 10 11
2
3
1
2
1 2 3 4 5 6
i
![Page 19: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/19.jpg)
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
3 2 4 7 10 11
3
2
1
2
1 2 3 4 5 6
i
![Page 20: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/20.jpg)
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
3 2 4 7 10 11
3
2
1
2
1 2 3 4 5 6
i
![Page 21: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/21.jpg)
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
2 3 4 7 10 11
2
3
1
2
1 2 3 4 5 6
i
![Page 22: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/22.jpg)
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
2 3 4 7 10 11
2
1
1 2 3 4 5 6
i
![Page 23: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/23.jpg)
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
2 3 4 7 10 11
2
1
1 2 3 4 5 6
i
![Page 24: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/24.jpg)
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
2 3 4 7 10 11
1 2 3 4 5 6
![Page 25: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/25.jpg)
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
2 3 4 7 10 11
1 2 3 4 5 6
![Page 26: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/26.jpg)
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
![Page 27: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/27.jpg)
LS 2 / Informatik
27
Definition Ein Graph G ist ein Paar (V,E). V heißt Knotenmenge und EVV 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
![Page 28: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/28.jpg)
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
![Page 29: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/29.jpg)
LS 2 / Informatik
29
Beispiel
Graphalgorithmen
1
5 4
3
20 1 0 0 1
1 0 1 1 1
0 1 0 1 0
0 1 1 0 1
1 1 0 1 0
1
1
2
2
3
3
4
4
5
5
![Page 30: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/30.jpg)
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: vAdj[u] uAdj[v]
Gewichtete Graphen Kanten haben Gewicht gegeben durch Funktion w: ER Gewicht w(u,v) von Kante (u,v) wird mit Knoten v in u‘s Adjazenzliste gespeichert
Graphalgorithmen
![Page 31: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/31.jpg)
LS 2 / Informatik
31
Beispiel
Graphalgorithmen
1
5 4
3
2
/
/
/
/
1
2
3
4
5
1
1
2 /5
2
5
5
3
3
2
24
4
4
![Page 32: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/32.jpg)
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 12
241
4
8
35
10
64 5
2
u
![Page 33: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/33.jpg)
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 12
241
4
8
35
10
64 5
2
u
![Page 34: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/34.jpg)
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
![Page 35: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/35.jpg)
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
![Page 36: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/36.jpg)
LS 2 / Informatik
36
Beispiel (mögl. Zustand bei einer Breitensuche)
Graphalgorithmen
s
![Page 37: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/37.jpg)
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
us
![Page 38: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/38.jpg)
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 entdeckts
![Page 39: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/39.jpg)
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
![Page 40: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/40.jpg)
LS 2 / Informatik
40
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
![Page 41: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/41.jpg)
LS 2 / Informatik
41
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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)
![Page 42: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/42.jpg)
LS 2 / Informatik
42
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
GraphalgorithmenFür jeden Knoten u:• color[u] = weiß• d[u] = • [u] = nil
Für jeden Knoten u:• color[u] = weiß• d[u] = • [u] = nil
![Page 43: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/43.jpg)
LS 2 / Informatik
43
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
GraphalgorithmenFü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
![Page 44: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/44.jpg)
LS 2 / Informatik
44
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
b
a
![Page 45: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/45.jpg)
LS 2 / Informatik
45
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
b
a
u
![Page 46: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/46.jpg)
LS 2 / Informatik
46
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
bu
v=a
![Page 47: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/47.jpg)
LS 2 / Informatik
47
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
bu
v=a
![Page 48: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/48.jpg)
LS 2 / Informatik
48
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
bu
v=a
![Page 49: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/49.jpg)
LS 2 / Informatik
49
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s
0
i
h
g
f
ed
c
bu
v=a
1
![Page 50: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/50.jpg)
LS 2 / Informatik
50
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a
0
i
h
g
f
ed
c
bu
v=a
1
![Page 51: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/51.jpg)
LS 2 / Informatik
51
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a
0
i
h
g
f
ed
c
v=bu
a
1
![Page 52: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/52.jpg)
LS 2 / Informatik
52
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a
0
i
h
g
f
ed
c
v=bu
a
1
![Page 53: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/53.jpg)
LS 2 / Informatik
53
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a
0
i
h
g
f
ed
c
v=bu
a
1
![Page 54: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/54.jpg)
LS 2 / Informatik
54
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a
0
i
h
g
f
ed
c
v=bu
a
1
1
![Page 55: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/55.jpg)
LS 2 / Informatik
55
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: s, a, b
0
i
h
g
f
ed
c
v=bu
a
1
1
![Page 56: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/56.jpg)
LS 2 / Informatik
56
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: a, b
0
i
h
g
f
ed
c
bu
a
1
1
![Page 57: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/57.jpg)
LS 2 / Informatik
57
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: a, b
0
i
h
g
f
ed
c
bu
a
1
1
![Page 58: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/58.jpg)
LS 2 / Informatik
58
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: a, b
0
i
h
g
f
ed
c
bu
u=a
1
1
![Page 59: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/59.jpg)
LS 2 / Informatik
59
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: a, b
0
i
h
g
f
ed
v=c
bu
u=a
1
1
![Page 60: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/60.jpg)
LS 2 / Informatik
60
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: a, b, c
0
i
h
g
f
ed
v=c
bu
u=a
1
1
2
![Page 61: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/61.jpg)
LS 2 / Informatik
61
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
u=a
1
1
2
![Page 62: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/62.jpg)
LS 2 / Informatik
62
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
u=a
1
1
2
2
![Page 63: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/63.jpg)
LS 2 / Informatik
63
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
u=a
1
1
2
2
![Page 64: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/64.jpg)
LS 2 / Informatik
64
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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=bu
a
1
1
2
2
![Page 65: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/65.jpg)
LS 2 / Informatik
65
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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=bu
a
1
1
2
2
![Page 66: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/66.jpg)
LS 2 / Informatik
66
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: c, d
0
i
h
g
f
e
d
c
bu
a
1
1
2
2
![Page 67: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/67.jpg)
LS 2 / Informatik
67
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: c, d
0
i
h
g
f
e
d
u=c
bu
a
1
1
2
2
![Page 68: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/68.jpg)
LS 2 / Informatik
68
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
![Page 69: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/69.jpg)
LS 2 / Informatik
69
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: d, f
0
i
h
g
f
e
d
c
bu
a
1
1
2
2
3
![Page 70: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/70.jpg)
LS 2 / Informatik
70
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: d, f
0
i
h
g
f
e
u=d
c
bu
a
1
1
2
2
3
![Page 71: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/71.jpg)
LS 2 / Informatik
71
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
![Page 72: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/72.jpg)
LS 2 / Informatik
72
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: f, e
0
i
h
g
f
e
u=d
c
bu
a
1
1
2
2
3
3
![Page 73: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/73.jpg)
LS 2 / Informatik
73
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
![Page 74: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/74.jpg)
LS 2 / Informatik
74
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
4
4
![Page 75: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/75.jpg)
LS 2 / Informatik
75
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
4
4
![Page 76: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/76.jpg)
LS 2 / Informatik
76
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
4
4
![Page 77: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/77.jpg)
LS 2 / Informatik
77
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. 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
bu
a
1
1
2
2
3
3
4
4
5
![Page 78: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/78.jpg)
LS 2 / Informatik
78
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q: h
0
u=i
h
g
f
e
u=d
c
bu
a
1
1
2
2
3
3
4
4
5
![Page 79: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/79.jpg)
LS 2 / Informatik
79
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s
Q:
0
i
u=h
g
f
e
u=d
c
bu
a
1
1
2
2
3
3
4
4
5
![Page 80: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/80.jpg)
LS 2 / Informatik
80
BFS(G,s)1. „initialisiere BFS“2. while Q do 3. u head[Q]4. for each vAdj[u] do 5. if color[v]=weiß then 6. color[v] grau7. d[v] d[u]+1; [v] u8. enqueue(Q,v)9. dequeue(Q)10. color[u] schwarz
Graphalgorithmen
s 0
i
h
g
f
e
u=d
c
bu
a
1
1
2
2
3
3
4
4
5
![Page 81: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/81.jpg)
LS 2 / Informatik
81
Satz 47Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|).
Graphalgorithmen
![Page 82: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/82.jpg)
LS 2 / Informatik
82
Satz 47Sei G=(V,E) ein Graph. Die Laufzeit des Algorithmus BFS beträgt O(|V|+|E|).
Beweis• Laufzeit Initialisierung: O(|V|)
Graphalgorithmen
![Page 83: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/83.jpg)
LS 2 / Informatik
83
Satz 47Sei 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
![Page 84: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/84.jpg)
LS 2 / Informatik
84
Satz 47Sei 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
![Page 85: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/85.jpg)
LS 2 / Informatik
85
Satz 47Sei 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
![Page 86: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/86.jpg)
LS 2 / Informatik
86
Satz 47Sei 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
![Page 87: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/87.jpg)
LS 2 / Informatik
87
Satz 47Sei 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
![Page 88: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/88.jpg)
LS 2 / Informatik
88
Satz 47Sei 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
![Page 89: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/89.jpg)
LS 2 / Informatik
89
Satz 47Sei 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
![Page 90: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/90.jpg)
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
![Page 91: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/91.jpg)
LS 2 / Informatik
91
Lemma 48Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV ein beliebiger
Knoten. Dann gilt für jede Kante (u,v)E:
(s,v) (s,u)+1
Graphalgorithmen
![Page 92: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/92.jpg)
LS 2 / Informatik
92
Lemma 48Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV 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
![Page 93: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/93.jpg)
LS 2 / Informatik
93
Lemma 48Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV 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
![Page 94: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/94.jpg)
LS 2 / Informatik
94
Lemma 48Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV 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
![Page 95: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/95.jpg)
LS 2 / Informatik
95
Lemma 48Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV 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
![Page 96: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/96.jpg)
LS 2 / Informatik
96
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von
einem Startknoten sV. 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
![Page 97: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/97.jpg)
LS 2 / Informatik
97
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem
Startknoten sV. 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 vV-{s}
Graphalgorithmen
![Page 98: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/98.jpg)
LS 2 / Informatik
98
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem
Startknoten sV. 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 vV-{s}• (I.V.) Aussage gilt nach m Einfügeoperationen
Graphalgorithmen
![Page 99: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/99.jpg)
LS 2 / Informatik
99
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten sV.
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 vV-{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
![Page 100: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/100.jpg)
LS 2 / Informatik
100
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten sV. 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 vV-{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
![Page 101: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/101.jpg)
LS 2 / Informatik
101
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten sV. 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 vV-{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
![Page 102: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/102.jpg)
LS 2 / Informatik
102
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem Startknoten sV. 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 vV-{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
![Page 103: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/103.jpg)
LS 2 / Informatik
103
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von
einem Startknoten sV. 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
![Page 104: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/104.jpg)
LS 2 / Informatik
104
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem
Startknoten sV. 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
![Page 105: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/105.jpg)
LS 2 / Informatik
105
Lemma 49Sei G=(V,E) ein gerichteter oder ungerichteter Graph und es laufe die Breitensuche von einem
Startknoten sV. 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
![Page 106: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/106.jpg)
LS 2 / Informatik
106
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
![Page 107: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/107.jpg)
LS 2 / Informatik
107
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
![Page 108: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/108.jpg)
LS 2 / Informatik
108
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
![Page 109: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/109.jpg)
LS 2 / Informatik
109
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
![Page 110: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/110.jpg)
LS 2 / Informatik
110
Lemma 50Sei <v ,…, v > 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 entwedereine enqueue oder dequeue Operation
Graphalgorithmen
1 r
1 r
1r i i+1
![Page 111: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/111.jpg)
LS 2 / Informatik
111
Lemma 50Sei <v ,…, v > 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 entwedereine enqueue oder dequeue Operation
Graphalgorithmen
1 r
1 r
1r i i+1
![Page 112: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/112.jpg)
LS 2 / Informatik
112
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
1 2
![Page 113: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/113.jpg)
LS 2 / Informatik
113
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
1
1
2
2r
![Page 114: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/114.jpg)
LS 2 / Informatik
114
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
1
1
2
2r
![Page 115: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/115.jpg)
LS 2 / Informatik
115
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
1
1
2
2r
![Page 116: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/116.jpg)
LS 2 / Informatik
116
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
r+1 1
![Page 117: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/117.jpg)
LS 2 / Informatik
117
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
r+1 1
r+1 1
![Page 118: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/118.jpg)
LS 2 / Informatik
118
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
r+1 1
r 1
r+1 1
r+1
![Page 119: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/119.jpg)
LS 2 / Informatik
119
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
r+1 1
r 1
r+1 1
r+1
![Page 120: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/120.jpg)
LS 2 / Informatik
120
Lemma 50Sei <v ,…, v > 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
1 r
1r i i+1
r+1 1
r 1
r+1 1
r+1
![Page 121: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/121.jpg)
LS 2 / Informatik
121
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der
Breitensuche. Dann entdeckt die Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, dass ein kürzester Weg von s nach [v] gefolgt von der Kante ([v],v) ein kürzester s-v-Weg ist.
Graphalgorithmen
![Page 122: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/122.jpg)
LS 2 / Informatik
122
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der Breitensuche. Dann
entdeckt die Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, 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
![Page 123: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/123.jpg)
LS 2 / Informatik
123
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der Breitensuche. Dann
entdeckt die Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, 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
![Page 124: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/124.jpg)
LS 2 / Informatik
124
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der Breitensuche. Dann entdeckt
die Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, 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
![Page 125: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/125.jpg)
LS 2 / Informatik
125
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der Breitensuche. Dann entdeckt die
Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, 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
![Page 126: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/126.jpg)
LS 2 / Informatik
126
Satz 51Sei G=(V,E) ein gerichteter oder ungerichteter Graph und sei sV Startknoten der Breitensuche. Dann entdeckt die
Breitensuche alle Knoten vV, die von s aus erreichbar sind und nach Terminierung gilt d[v]=(s,v) für alle vV. Außerdem gilt für jeden von s erreichbaren Knoten vs, 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
![Page 127: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/127.jpg)
LS 2 / Informatik
127
Beweis• Fall 2 (v erreichbar von s):
Graphalgorithmen
![Page 128: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/128.jpg)
LS 2 / Informatik
128
Beweis• Fall 2 (v erreichbar von s):
• Sei V = {vV : (s,v) = k}
Graphalgorithmen
k
![Page 129: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/129.jpg)
LS 2 / Informatik
129
Beweis• Fall 2 (v erreichbar von s):• Sei V = {vV : (s,v) = k}• Wir zeigen per Induktion über k:• Es gibt genau einen Zeitpunkt, zu dem jeder Knoten vV
(a) grau gefärbt wird(b) d[v]=k gesetzt wird(c) wenn vs, dann [v] auf u gesetzt wird für ein uV(d) v in Schlange Q eingefügt wird
Graphalgorithmen
k
k
k-1
![Page 130: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/130.jpg)
LS 2 / Informatik
130
Beweis• Fall 2 (v erreichbar von s):• Sei V = {vV : (s,v) = k}• Wir zeigen per Induktion über k:• Es gibt genau einen Zeitpunkt, zu dem jeder Knoten vV
(a) grau gefärbt wird(b) d[v]=k gesetzt wird(c) wenn vs, dann [v] auf u gesetzt wird für ein uV(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
![Page 131: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/131.jpg)
LS 2 / Informatik
131
Beweis• Fall 2 (v erreichbar von s):• Sei V = {vV : (s,v) = k}• Wir zeigen per Induktion über k:• Es gibt genau einen Zeitpunkt, zu dem jeder Knoten vV
(a) grau gefärbt wird(b) d[v]=k gesetzt wird(c) wenn vs, dann [v] auf u gesetzt wird für ein uV(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
![Page 132: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/132.jpg)
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
![Page 133: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/133.jpg)
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
![Page 134: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/134.jpg)
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
![Page 135: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/135.jpg)
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
![Page 136: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/136.jpg)
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
![Page 137: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/137.jpg)
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 vV , 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
k-1
![Page 138: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/138.jpg)
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 vV , 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
k-1
![Page 139: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/139.jpg)
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 uV
Graphalgorithmen
k-1v
u
![Page 140: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/140.jpg)
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 uV ObdA. Sei u der erste solche Knoten, der grau gefärbt wird
(existiert wegen I.V.)
Graphalgorithmen
k-1v
u
![Page 141: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/141.jpg)
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 uV 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 Schlangeauftauchen
Graphalgorithmen
k-1v
u
![Page 142: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/142.jpg)
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 uV 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 Schlangeauftauchen
Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufenund v in Zeile 4 entdeckt
Graphalgorithmen
k-1v
u
![Page 143: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/143.jpg)
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 uV 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 Schlangeauftauchen
Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufenund 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-1v
u
![Page 144: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/144.jpg)
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 uV 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 Schlangeauftauchen
Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufenund 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-1v
u
![Page 145: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/145.jpg)
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 uV 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 Schlangeauftauchen
Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufenund 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-1v
u
k
![Page 146: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/146.jpg)
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 uV 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 Schlangeauftauchen
Ist u Kopf der Schlange, so wird seine Adjazenzliste durchlaufenund 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-1v
u
k
![Page 147: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/147.jpg)
LS 2 / Informatik
147
Beweis Abschließend beobachten wir, dass wenn vV ist, dann ist [v] in V
Graphalgorithmen
k-1k
![Page 148: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/148.jpg)
LS 2 / Informatik
148
Beweis Abschließend beobachten wir, dass wenn vV 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-1k
![Page 149: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/149.jpg)
LS 2 / Informatik
149
Beweis Abschließend beobachten wir, dass wenn vV 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-1k
![Page 150: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader031.vdokument.com/reader031/viewer/2022012919/56814f29550346895dbcb58d/html5/thumbnails/150.jpg)
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|)