Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

150
LS 2 / Informatik 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 Presentation

Transcript of Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Page 1: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Page 2: 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

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

LS 2 / Informatik

36

Beispiel (mögl. Zustand bei einer Breitensuche)

Graphalgorithmen

s

Page 37: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

LS 2 / Informatik

127

Beweis• Fall 2 (v erreichbar von s):

Graphalgorithmen

Page 128: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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|)