Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche...

37
Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann [email protected] 2. Dezember 2015 Frank Heitmann [email protected] 1/145 Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Einf¨ uhrung und Definitionen Darstellung Einf¨ uhrung Graphen sind eine grundlegende Datenstruktur, die in vielen Bereichen der Informatik (und auch in anderen Bereichen) Anwendung findet. Man kann ohne Einschr¨ ankung zwei Elemente einer Mengen (den Knoten) in Beziehung setzen (durch eine Kante). Anmerkung Erlaubt man verschiedene Kanten-’Typen’, so kann man sogar ver- schiedene Beziehungen ausdr¨ ucken. Frank Heitmann [email protected] 2/145 Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Einf¨ uhrung und Definitionen Darstellung Definitionen Definition Ein Graph ist ein Tupel G =(V , E ) bestehend aus einer Menge V (auch V (G )) von Knoten oder Ecken und einer Menge E (auch E (G )) von Kanten. Ist G ein ungerichteter Graph, so ist E ⊆ {{v 1 , v 2 }| v 1 , v 2 V , v 1 6= v 2 }, ist G ein gerichteter Graph, so ist E V 2 . Ist |E | viel kleiner als |V | 2 , so nennt man den Graphen unn besetzt. Ist |E | nahe an |V | 2 , so spricht man von dicht besetzten Graphen. Frank Heitmann [email protected] 3/145 Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Einf¨ uhrung und Definitionen Darstellung Gewichteter Graph Definition Bei einem gewichteten Graphen ist neben dem Graph G =(V , E ) (gerichtete oder ungerichtet) noch eine Gewichtsfunktion w : E R + gegeben, die jeder Kante e E ihre Kosten w (e ) zuweist. Anmerkung Diese Definition ist in der Datenstruktur-Vorlesung nicht explizit auf den Folien gewesen, ist aber sehr wichtig. (Die meisten Graphen haben Gewichte (oder Buchstaben o.¨ a.) an den Kanten.) Frank Heitmann [email protected] 4/145

Transcript of Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche...

Page 1: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Algorithmen und DatenstrukturenKapitel 8

Graphen

Frank [email protected]

2. Dezember 2015

Frank Heitmann [email protected] 1/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Einfuhrung

Graphen sind eine grundlegende Datenstruktur, die in vielenBereichen der Informatik (und auch in anderen Bereichen)Anwendung findet. Man kann ohne Einschrankung zwei Elementeeiner Mengen (den Knoten) in Beziehung setzen (durch eineKante).

Anmerkung

Erlaubt man verschiedene Kanten-’Typen’, so kann man sogar ver-schiedene Beziehungen ausdrucken.

Frank Heitmann [email protected] 2/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Definitionen

Definition

Ein Graph ist ein Tupel G = (V ,E ) bestehend aus einer Menge V(auch V (G )) von Knoten oder Ecken und einer Menge E (auchE (G )) von Kanten.Ist G ein ungerichteter Graph, so ist

E ⊆ {{v1, v2} | v1, v2 ∈ V , v1 6= v2},

ist G ein gerichteter Graph, so ist

E ⊆ V 2.

Ist |E | viel kleiner als |V |2, so nennt man den Graphen dunnbesetzt. Ist |E | nahe an |V |2, so spricht man von dicht besetztenGraphen.

Frank Heitmann [email protected] 3/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Gewichteter Graph

Definition

Bei einem gewichteten Graphen ist neben dem Graph G = (V ,E )(gerichtete oder ungerichtet) noch eine Gewichtsfunktionw : E → R+ gegeben, die jeder Kante e ∈ E ihre Kosten w(e)zuweist.

Anmerkung

Diese Definition ist in der Datenstruktur-Vorlesung nicht explizitauf den Folien gewesen, ist aber sehr wichtig. (Die meisten Graphenhaben Gewichte (oder Buchstaben o.a.) an den Kanten.)

Frank Heitmann [email protected] 4/145

Page 2: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Definitionen

Definition

Sind je zwei Knoten von G mit einer Kante verbunden, so istG ein vollstandiger Graph. Bei n Knoten: Kn.

Eine Menge paarweise nicht benachbarter Knoten nennt manunabhangig.

Der Grad d(v) eines Knotens v ist die Anzahl mit v inzidenterKanten.

Die Menge der Nachbarn eines Knotens v bezeichnet man mitN(v) (hier gilt d(v) = |N(v)|).

δ(G ) ist der Minimalgrad von G , ∆(G ) der Maximalgrad.

Frank Heitmann [email protected] 5/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Definitionen

Definition

Ein Weg ist ein nicht leerer Graph P = (V ,E ) mitV = {x0, x1, . . . , xk}, E = {x0x1, x1x2, . . . , xk−1xk}, wobei diexi paarweise verschieden sind. x0 und xk sind die Enden vonP, sie sind durch P verbunden. Die Anzahl der Kanten einesWeges ist seine Lange.

Ist P wie oben ein Weg, so ist P + xkx0 ein Kreis (der Langek + 1).

Der Abstand zweier Knoten x und y voneinander wird mitd(x , y) bezeichnet und ist die geringste Lange einesx-y -Weges.

Frank Heitmann [email protected] 6/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Definitionen

Definition

Seien G = (V ,E ) und G ′ = (V ′,E ′) Graphen. Gilt V ′ ⊆ Vund E ′ ⊆ E , so nennt man G ′ einen Teilgraphen von G .

Ist G = (V ,E ) ein Graph und V ′ ⊆ V , so nennt man denGraphen G ′ = (V ′,E ′) mit E ′ = {{v1, v2} ∈ E | v1, v2 ∈ V ′}den von V ′ induzierten Graphen.

Frank Heitmann [email protected] 7/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen

Ein Graph G = (V ,E ) wird dargestellt indem man seine Knotenals Punkte und die Tupel oder Mengen aus E als (gerichtete)Kanten zwischen die Knoten einzeichnet.

Im Computer speichert man einen Graphen meist mittels einerAdjazenzmatrix oder einer Adjazenzliste. (Man kann die Mengen Vund E aber auch direkt speichern.)

Anmerkung

Bei Graphen schreibt man (und wir) oft O(V + E ) etc., wennO(|V |+ |E |) gemeint ist. Man beacht zudem, dass dies dieKomplexitat bzgl. der Kenngroßen V und E ausdruckt und nichtumbedingt die Große der Eingabe wiederspiegelt!

Frank Heitmann [email protected] 8/145

Page 3: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzmatrix

x

wv

y

vv

w

w

x

x

y

y

V = {v ,w , x , y}E = {{v ,w}, {v , x}, {v , y}, {w , x}, {x , y}}

Frank Heitmann [email protected] 9/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzmatrix

0

x0

wv

y 00

vv

w

w

x

x

y

y

V = {v ,w , x , y}E = {{v ,w}, {v , x}, {v , y}, {w , x}, {x , y}}

Frank Heitmann [email protected] 10/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzmatrix

0 1 1 1

x1 0

wv

y 1 01 0

vv

w

w

x

x

y

y

V = {v ,w , x , y}E = {{v ,w}, {v , x}, {v , y}, {w , x}, {x , y}}

Frank Heitmann [email protected] 11/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzmatrix

0 1 1 1

x1 0 1 0

wv

y 1 1 0 11 0 1 0

vv

w

w

x

x

y

y

V = {v ,w , x , y}E = {{v ,w}, {v , x}, {v , y}, {w , x}, {x , y}}

Frank Heitmann [email protected] 12/145

Page 4: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzmatrix

0 1 1 1

x1 0 1 0

wv

y 1 1 0 11 0 1 0

vv

w

w

x

x

y

y

Bei einer Adjazenzmatrix hat man eine n × n-Matrix, bei der ander Stelle (i , j) genau dann eine 1 steht, wenn vi und vj verbundensind.

Der Speicherplatzbedarf ist in Θ(V 2) (unabhangig von derKantenzahl).

Frank Heitmann [email protected] 13/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

Frank Heitmann [email protected] 14/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

w x y

Frank Heitmann [email protected] 15/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

w x y

v x

Frank Heitmann [email protected] 16/145

Page 5: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

w x y

x v

y v w

v x

Frank Heitmann [email protected] 17/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

w x y

x v

y v w

v x

Bei der Adjazenzlistendarstellung haben wir ein Array von |V |Listen, fur jeden Knoten eine. Die Adjazenzliste Adj [v ] zu einemKnoten v enthalt alle Knoten, die mit v adjazent sind.

Bei einem gerichteten Graphen ist die Summe aller Adjazenzlisten|E |, bei einem ungerichteten Graphen |2E |. DerSpeicherplatzbedarf ist folglich Θ(V + E ).

Frank Heitmann [email protected] 18/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Einfuhrung und DefinitionenDarstellung

Darstellung von Graphen - Zusammenfassung

Adjazenzmatrix: |V | × |V |-Matrix A = (aij) mit aij = 1 falls(i , j) ∈ E und 0 sonst. Große in Θ(V 2).

Adjazenzliste: Liste Adj [v ] fur jeden Knoten v ∈ V in der dieKnoten, die mit v adjazent sind gespeichert sind. Große inΘ(V + E ).

Bei einer Adjazenzmatrix kann man schnell herausfinden, obzwei Knoten benachbart sind oder nicht. Dafur ist eslangsamer alle Knoten zu bestimmen, die mit einem Knotenbenachbart sind. (Bei Adjazenzlisten genau andersherum.)

Beide Darstellungen sind ineinander transformierbar.

Beide Darstellungen sind leicht auf den Fall eines gewichtetenGraphen anpassbar.

Frank Heitmann [email protected] 19/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Die Struktur eines Graphen

Wir wollen nun etwas grundlegendes uber die Struktur einesgegebenen Graphen erfahren. Hierzu ist es zunachst praktischAlgorithmen zu haben, die den Graphen durchwandern, d.h. insystematischer Weise die Kanten entlangwandern und die Knotenbesuchen. Oft ist es auch nutzlich einen Spannbaum zu ermitteln.

Definition

Ein Spannbaum ist ein Teilgraph T eines Graphen G , wobei T einBaum ist und alle Knoten von G enthalt.

Frank Heitmann [email protected] 20/145

Page 6: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breiten- und Tiefensuche

Die Breiten- und Tiefensuche in einem Graphen erreichen (imPrinzip) beide Ziele! Es wird zwar i.A. nicht der minimaleSpannbaum ermittelt, doch dazu spater mehr.

Breiten- und Tiefensuche sind oft ’Urtypen’ fur weitereGraphalgorithmen entweder

als wichtige Subroutine oder

als ’Ideengeber’

Frank Heitmann [email protected] 21/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Die Idee

Gegeben ein Graph G und ein Startknoten s ’entdeckt’ dieBreitensuche alle Knoten, die von s aus erreichbar sind. Zudemwird der Abstand (in Kanten) von s aus berechnet (tatsachlichwird sogar der kurzeste Abstand ermittelt).

Man kann auch zusatzlich einen ’Breitensuchbaum’ (mit Wurzel s)und damit die kurzesten Pfade von s zu den anderen Knotenermitteln.

Der Algorithmus entdeckt zunachst die Knoten mit Entfernung kund dann die mit Entfernung k + 1, daher der Name. Er geht erstin die Breite...

Frank Heitmann [email protected] 22/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Die Idee

Starte mit Knoten s in einer Queue Q.

Wiederhole solange Q nicht leer...

Nimm vordersten Knoten v aus Q.(Bearbeite diesen und Farbe diesen so, dass er nicht wiederbesucht wird.)Tue alle Nachbarn von v , die bisher nicht besucht wurden indie Queue.

Anmerkung

Durch die Queue wird sichergestellt, dass die Knoten ’in der Breite’besucht werden, d.h. zunachst werden die Knoten mit Entfernungk von s entdeckt und erst danach jene mit Entfernung k + 1.

Frank Heitmann [email protected] 23/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Im nachfolgenden Beispiel ist fur einen Knoten v jeweils sein linkesKind der erste Knoten in v ’s Adjazenzliste, sein rechtes Kind derzweite Knoten in der Adjazenzliste. (Dies ist wichtig, um zuverstehen in welcher Reihenfolge die Knoten in der Queuegespeichert werden.)Fur das Beispiel ist es ferner unerheblich, ob die Kanten gerichtetoder ungerichtet sind. Bei ungerichteten Kanten ware auch stetsnoch der Vater in der Adjazenzliste eines Knotens. Dieser warejedoch bereits gefarbt und wurde nicht wieder in der Queuegespeichert werden.

Frank Heitmann [email protected] 24/145

Page 7: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

Q:

A:Frank Heitmann [email protected] 25/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

10

16

Q:

A:Frank Heitmann [email protected] 26/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

Q:

A:Frank Heitmann [email protected] 27/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

6 14

16

Q:

A:Frank Heitmann [email protected] 28/145

Page 8: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

6 14

16

10

Q:

A:Frank Heitmann [email protected] 29/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14

16

10

Q:

A:Frank Heitmann [email protected] 30/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14 3 8

16

10

Q:

A:Frank Heitmann [email protected] 31/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14 3 8

16

10 6

Q:

A:Frank Heitmann [email protected] 32/145

Page 9: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 8

16

10 6

Q:

A:Frank Heitmann [email protected] 33/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 8 12 15

16

10 6

Q:

A:Frank Heitmann [email protected] 34/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 8 12 15

16

10 6 14

Q:

A:Frank Heitmann [email protected] 35/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

8 12 15

16

10 6 14

Q:

A:Frank Heitmann [email protected] 36/145

Page 10: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

8 12 15 2 5

16

10 6 14

Q:

A:Frank Heitmann [email protected] 37/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

8 12 15 2 5

16

10 6 14 3

Q:

A:Frank Heitmann [email protected] 38/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

12 15 2 5

16

10 6 14 3

Q:

A:Frank Heitmann [email protected] 39/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

12 15 2 5 7 9

16

10 6 14 3

Q:

A:Frank Heitmann [email protected] 40/145

Page 11: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

12 15 2 5 7 9

16

10 6 14 3 8

Q:

A:Frank Heitmann [email protected] 41/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

2 5 7 9 13 16

16

10 6 14 3 8 12 15

Q:

A:Frank Heitmann [email protected] 42/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

5 7 9 13 16

16

10 6 14 3 8 12 15

Q:

A:Frank Heitmann [email protected] 43/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

5 7 9 13 16

16

10 6 14 3 8 12 15 2

Q:

A:Frank Heitmann [email protected] 44/145

Page 12: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

10 6 14 3 8 12 15 2 5 7 9 13 16

Q:

A:Frank Heitmann [email protected] 45/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Kernidee als Algorithmus

Algorithmus 1 BFS(G , s)

1: farbe[s] = pink2: Q = ∅, enqueue(Q, s)3: while Q 6= ∅ do4: u = dequeue(Q)5: for each v ∈ Adj [u] do6: if farbe[v ] == weiss then7: farbe[v ] = pink8: enqueue(Q, v)9: end if

10: end for11: farbe[u] = schwarz12: end while

Frank Heitmann [email protected] 46/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Wir verzichten fur das nachste Beispiel auf die Angabe dereinzelnen Adjazenzlisten. Man kann sie aus dem Beispiel ablesen.Man beachte noch, dass je nachdem wie die Knoten in derAdjazenzliste angeordnet sind, der Algorithmus verschiedeneErgebnisse liefern kann. Waren die Knoten 7 und 9 bspw. in derAdjazenzliste der 8 in umgekehrter Reihenfolge, so wurde zuerstdie 9 abgearbeitet werden, bevor man bei 7 und 5 weiter im Baumhinabsteigt. (Bei der Tiefensuche spater ist dieser Unterschiednoch merklicher.)

Frank Heitmann [email protected] 47/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

A:

s

Q:Frank Heitmann [email protected] 48/145

Page 13: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6A:

s

2 3 8Q:Frank Heitmann [email protected] 49/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6A:

s

3 8Q:Frank Heitmann [email protected] 50/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6 2A:

s

3 8 10Q:Frank Heitmann [email protected] 51/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6 2 3A:

s

8 10Q:Frank Heitmann [email protected] 52/145

Page 14: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6 2 3 8 10A:

s

7 9Q:Frank Heitmann [email protected] 53/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6 2 3 8 10 7A:

s

9 5Q:Frank Heitmann [email protected] 54/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - im Graphen

3

102

5

6

87

9

6 2 3 8 10 7 9 5A:

s

Q:Frank Heitmann [email protected] 55/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - mehr Informationen

Reichern wir die Breitensuche etwas an, so konnen wir mehrInformationen gewinnen, z.B. den Abstand der einzelnen Knotenvon s und den Breitensuchbaum.

Der folgende Algorithmus ist wie im [Cormen].

Frank Heitmann [email protected] 56/145

Page 15: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Initialisierung

Algorithmus 2 BFS(G , s) - Teil 1, Initphase

1: for each u ∈ V (G ) \ {s} do2: farbe[u] = weiss, d [u] =∞, π[u] = nil

3: end for4: farbe[s] = grau5: d [s] = 0, π[s] = nil

6: Q = ∅, enqueue(Q, s)

Anmerkung

Farben: weiss heißt ’noch nicht besucht’, grau ’besucht, aber nochunbesuchte Nachbarn’, schwarz ’besucht, alle Nachbarn entdeckt’.d [u] ist die Anzahl der Schritt von s zu u, π[u] der Vorganger vonu auf diesem Pfad.

Frank Heitmann [email protected] 57/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Hauptschleife

Algorithmus 3 BFS(G , s) - Teil 2, Hauptteil

1: while Q 6= ∅ do2: u = dequeue(Q)3: for each v ∈ Adj [u] do4: if farbe[v ] == weiss then5: farbe[v ] = grau6: d [v ] = d [u] + 1, π[v ] = u7: enqueue(Q, v)8: end if9: end for

10: farbe[u] = schwarz11: end while

Frank Heitmann [email protected] 58/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Fur das nachfolgende Beispiel verzichten wir erneut auf die Angabeder Adjazenzlisten.Die Zahl in einem Knoten v ist nun nicht mehr der Schlussel o.a.,sondern der Wert von d [v ]. Die Farbe ’grun’ in den Bildernentspricht der Farbe ’schwarz’ im Quellcode (d.h. ein grunerKnoten ist vollstandig abgearbeitet und alle seine Kinder sind’entdeckt’ (also mindestens ’grau’)).Die dicken Kanten stellen die Baumkanten dar, die mittels der πFunktion gewonnen werden konnen, die jeden Knoten auf seinenVorganger im Baum abbildet.

Frank Heitmann [email protected] 59/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

Q:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 60/145

Page 16: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

0

sQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 61/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

1

a cQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 62/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

12

c b eQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 63/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

1

2

2

b e fQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 64/145

Page 17: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

1

2

2

e fQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 65/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

31

2

2

f dQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 66/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

31

2

2

3

d gQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 67/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

31

2

2

3

gQ:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 68/145

Page 18: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Beispiel

01

2

31

2

2

3

Q:

sa

b

c

fe

g

d

Frank Heitmann [email protected] 69/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Analyse (Laufzeit)

Zu Anfang ist jeder Knoten weiß. Der Test in der Schleifestellt daher sicher, dass jeder Knoten nur einmal in die Queueeingefugt und aus ihr entnommen wird.Fur die Warteschlangenoperationen brauchen wir also O(V ).Die Adjazenzliste jedes Knotens wird nur einmal gepruft(wenn der Knoten aus der Queue entnommen wird).Die Summe aller Adjazenzlisten ist in Θ(E ), folglich benotigtdas Prufen der Adjazenzlisten O(E ).Initialisierung geht auch in O(V ).Insgesamt ergibt sich so: O(V + E ), was linear in der Großeder Adjazenzliste ist.

Anmerkung

Diese Laufzeitanalyse stimmt nur, wenn der Graph durchAdjazenzlisten gegeben ist!

Frank Heitmann [email protected] 70/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Analyse (Korrektheit)

Die Korrektheit kann man mittels einer Schleifeninvarianten zeigen,die besagt, dass die Queue aus der Menge der grauen Knotenbesteht.

Alternativ kann man mit mehreren Lemmata zeigen, dass dieermittelten Abstande tatsachlich die kurzesten sind und ein Baumentsteht. Man erhalt so (siehe [Cormen], dort ca. 3 Seiten):

Satz

Gegeben G = (V ,E ) (gerichtet oder ungerichtet) und s ∈ V . BFSermittelt jeden von s aus erreichbaren Knoten v. Bei Terminierunggilt d [v ] = δ(s, v) fur alle v . Zudem ist fur jeden von s auserreichbaren Knoten v (v 6= s) einer der kurzesten Pfade von snach v ein kurzester Pfad von s nach π[v ] gefolgt von der Kante(π[v ], v).

Frank Heitmann [email protected] 71/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breitensuche - Ergebnis

Zur Betonung:

Satz

In einem ungewichteten Graphen (bzw. einem Graph in dem jedeKante das Gewicht 1 hat) ermittelt der BFS-Algorithmus fur jedenKnoten v den kurzesten Abstand zu s sowie einen kurzesten Pfadvon s zu v (den man erhalt indem man den π[v ] ruckwarts folgt).Der Algorithmus lauft in O(V + E ), wenn der Graph alsAdjazenzliste gegeben ist.

Wichtige Anmerkung

Beweis umbedingt mal im [Cormen] nachlesen!

Frank Heitmann [email protected] 72/145

Page 19: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Die Idee

Bei der Tiefensuche geht man einfach immer weiter nochungeprufte Kanten entlang, so lange dies moglich ist. Man folgtalso ’einem Pfad’ so lange es moglich ist. Erst wenn man einenKnoten erreicht von dem aus man nur bereits besuchte Knotenerreichen kann, geht man einen Schritt zuruck.

Bleiben unentdeckte Knoten ubrig wahlt man diese als neueStartknoten. So kann sich (bei einem unzusammenhangendenGraphen) ein Tiefensuchwald ergeben. (Die Breitensuche kann manauch so anpassen, aber typischerweise werden die Algorithmen sobenutzt.)

Frank Heitmann [email protected] 73/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Die Idee

Starte mit Knoten s in einem Stack S .

Wiederhole solange S nicht leer...

Nimm obersten Knoten v aus S .(Bearbeite diesen und Farbe diesen so, dass er nicht wiederbesucht wird.)Tue alle Nachbarn von v , die bisher nicht besucht wurden aufden Stack.

Anmerkung

Durch den Stack wird sichergestellt, dass die Knoten ’in der Tiefe’besucht werden, d.h. dass man zunachst von einem Knoten ausimmer weiter ’in die Tiefe’ geht, bevor man zuruck geht und eineandere ’Abzweigung’ nimmt.

Frank Heitmann [email protected] 74/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Wie bei der Breitensuche ist im nachfolgenden Beispiel fur einenKnoten v jeweils sein linkes Kind der erste Knoten in v ’sAdjazenzliste, sein rechtes Kind der zweite Knoten in derAdjazenzliste. Mit einer Ausnahme: Beim Knoten 10 ist diesgenau umgekehrt. Darum ist der Stack im vierten Bild mit 6, 14gefullt.Fur das Beispiel ist es wieder unerheblich, ob die Kanten gerichtetoder ungerichtet sind. Bei ungerichteten Kanten ware auch stetsnoch der Vater in der Adjazenzliste eines Knotens. Dieser warejedoch bereits gefarbt und wurde nicht wieder im Stackgespeichert werden.

Frank Heitmann [email protected] 75/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

S:

A:Frank Heitmann [email protected] 76/145

Page 20: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

10

16

S:

A:Frank Heitmann [email protected] 77/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

S:

A:Frank Heitmann [email protected] 78/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

6 14

16

S:

A:Frank Heitmann [email protected] 79/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

6 14

16

10

S:

A:Frank Heitmann [email protected] 80/145

Page 21: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14

16

10

S:

A:Frank Heitmann [email protected] 81/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

8 3 14

16

10

S:

A:Frank Heitmann [email protected] 82/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

8 3 14

16

10 6

S:

A:Frank Heitmann [email protected] 83/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 14

16

10 6

S:

A:Frank Heitmann [email protected] 84/145

Page 22: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

9 7 3 14

16

10 6

S:

A:Frank Heitmann [email protected] 85/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

9 7 3 14

16

10 6 8

S:

A:Frank Heitmann [email protected] 86/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

7 3 14

16

10 6 8

S:

A:Frank Heitmann [email protected] 87/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

7 3 14

16

10 6 8 9

S:

A:Frank Heitmann [email protected] 88/145

Page 23: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 14

16

10 6 8 9

S:

A:Frank Heitmann [email protected] 89/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

3 14

16

10 6 8 9 7

S:

A:Frank Heitmann [email protected] 90/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14

16

10 6 8 9 7

S:

A:Frank Heitmann [email protected] 91/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

5 2 14

16

10 6 8 9 7

S:

A:Frank Heitmann [email protected] 92/145

Page 24: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

5 2 14

16

10 6 8 9 7 3

S:

A:Frank Heitmann [email protected] 93/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

14

16

10 6 8 9 7 3 5 2

S:

A:Frank Heitmann [email protected] 94/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

10 6 8 9 7 3 5 2

S:

A:Frank Heitmann [email protected] 95/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

15 12

16

10 6 8 9 7 3 5 2

S:

A:Frank Heitmann [email protected] 96/145

Page 25: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13

15 12

16

10 6 8 9 7 3 5 2 14

S:

A:Frank Heitmann [email protected] 97/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Baum

3

10

2 5

6 14

8

7 9

1512

13 16

10 6 8 9 7 3 5 2 14 15 16 12 13

S:

A:Frank Heitmann [email protected] 98/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Idee

Algorithmus 4 DFS(G , s)

1: farbe[s] = pink2: S = ∅, push(S , s)3: while S 6= ∅ do4: u = pop(S)5: for each v ∈ Adj [u] do6: if farbe[v ] == weiss then7: farbe[v ] = pink8: push(S , v)9: end if

10: end for11: farbe[u] = schwarz12: end while

Frank Heitmann [email protected] 99/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefen- vs. Breitensuche

Beobachtung

Der einzige Unterschied zur Breitensuche ist die Benutzung einesStacks statt einer Queue!

Frank Heitmann [email protected] 100/145

Page 26: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Wie bei der Breitensuche verzichten wir auch im nachfolgendenBeispiel auf die Angabe der Adjazenzlisten.

Frank Heitmann [email protected] 101/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

A:

s

S:Frank Heitmann [email protected] 102/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6A:

s

3 2S:Frank Heitmann [email protected] 103/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6 8A:

s

9 7 3 2S:Frank Heitmann [email protected] 104/145

Page 27: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6 8 9A:

s

3 2S:Frank Heitmann [email protected] 105/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6 8 9 7 5A:

s

3 2S:Frank Heitmann [email protected] 106/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6 8 9 7 5A:

s

2S:Frank Heitmann [email protected] 107/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - im Graphen

3

102

5

6

87

9

6 8 9 7 5 3 10 2A:

s

S:Frank Heitmann [email protected] 108/145

Page 28: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - mehr Informationen

Reichern wir nun die Tiefensuche etwas an, so konnen wir mehrInformationen gewinnen, was insb. spater nutzlich wird. (Derfolgende Algorithmus ist wieder wie im [Cormen].)

Anmerkung

Farben: weiss heißt ’noch nicht besucht’, grau ’besucht, abernoch unbesuchte Nachbarn’, schwarz ’besucht, alle Nachbarnverarbeitet’.

d [u] ist ’discovery’ Zeit, f [u] ist ’finished’ Zeit. (Beachte:Immer wenn d [u] oder f [u] gesetzt werden, wird vorher dieZeit erhoht!)

π[u] ist der Vorganger von u in diesem Tiefensuchbaum.

Frank Heitmann [email protected] 109/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefenensuche - Initialisierung

Algorithmus 5 DFS(G ) - Initphase und Aufruf

1: for each u ∈ V (G ) do2: farbe[u] = weiss, π[u] = nil

3: end for4: zeit = 05: for each u ∈ V (G ) do6: if farbe[u] == weiss then7: DFS VISIT(u)8: end if9: end for

Frank Heitmann [email protected] 110/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Hauptroutine

Algorithmus 6 DFS VISIT(u) - Teil 2, Hauptteil

1: farbe[u] = grau2: zeit = zeit + 13: d [u] = zeit4: for each v ∈ Adj [u] do5: if farbe[v ] == weiss then6: π[v ] = u7: DFS VISIT(v)8: end if9: end for

10: farbe[u] = schwarz11: zeit = zeit + 112: f [u] = zeit

Frank Heitmann [email protected] 111/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Zur Nachbereitung

Anmerkung (zur Nachbereitung)

Fur das nachfolgende Beispiel verzichten wir erneut auf die Angabeder Adjazenzlisten.Die Zahlen x/y in einem Knoten v sind die Werte d [v ](= x) undf [v ](= y). Die Farbe ’grun’ in den Bildern entspricht wieder derFarbe ’schwarz’ im Quellcode, dicke Kanten stellen wiederBaumkanten dar. Die gestrichelten Kanten, sind entdecke Kanten,die als Ruckwartskanten (B) oder Querkanten (C) klassifiziertworden. Ferner gibt es Vorwartskanten, die im Beispiel aber nichtauftreten. Eine Kante von s zu b ware bei ansonsten gleichenAblauf (d.h. wenn zuerst die Kante (s, a) gewahlt wird) eineVorwartskante.

Frank Heitmann [email protected] 112/145

Page 29: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

sa

b

c

ed

Frank Heitmann [email protected] 113/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/sa

b

c

ed

Frank Heitmann [email protected] 114/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/sa

b

c

ed

Frank Heitmann [email protected] 115/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/

3/

sa

b

c

ed

Frank Heitmann [email protected] 116/145

Page 30: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/

3/

sa

b

c

ed

B

Frank Heitmann [email protected] 117/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/

3/4

sa

b

c

ed

B

Frank Heitmann [email protected] 118/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/5

3/4

sa

b

c

ed

B

Frank Heitmann [email protected] 119/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/5

3/4

6/sa

b

c

ed

B

Frank Heitmann [email protected] 120/145

Page 31: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/5

3/4

6/sa

b

c

ed

B C

Frank Heitmann [email protected] 121/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/2/5

3/4

6/7sa

b

c

ed

B C

Frank Heitmann [email protected] 122/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

6/7sa

b

c

ed

B C

Frank Heitmann [email protected] 123/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

6/7

9/

sa

b

c

ed

B C

Frank Heitmann [email protected] 124/145

Page 32: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

10/

6/7

9/

sa

b

c

ed

B C

Frank Heitmann [email protected] 125/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

10/11

6/7

9/

sa

b

c

ed

B C

Frank Heitmann [email protected] 126/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

10/11

6/7

9/

sa

b

c

ed

B C

C

Frank Heitmann [email protected] 127/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Beispiel

1/82/5

3/4

10/11

6/7

9/12

sa

b

c

ed

B C

C

Frank Heitmann [email protected] 128/145

Page 33: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Besondere Kanten

Man kann bei der Tiefensuche die Kanten klassifizieren jenachdem, welche Farbe der Knoten v bei einer Kanten (u, v) hat(u ist der Knoten der gerade bearbeitet wird, v ist in Adj [u]):

farbe[v ] = weiss: Baumkante.

farbe[v ] = grau: Ruckwartskante.

farbe[v ] = schwarz: Vorwarts- oder Querkante.

Vorwartskante, falls d [u] < d [v ].Querkante, falls d [u] > d [v ].

Anmerkung (zur Nachbereitung)

Im Beispiel eben ist dies bereits geschehen!

Frank Heitmann [email protected] 129/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Tiefensuche - Besondere Kanten

Dabei ist

Baumkante. Kanten, die zum Baum gehoren. v wurde bei derSondierung der Kante (u, v) entdeckt (erstmalig besucht).Ruckwartskante. Kante (u, v), die u mit einem Vorfahren vim Tiefensuchbaum verbindet.Vorwartskante. (Nicht-Baum-)Kante (u, v), die u mit einemNachfahre in v im Tiefensuchbaum verbindet.Querkanten. Die ubrigen Kanten. Im gleichenTiefensuchbaum, wenn der eine Knoten nicht Vorfahre desanderen ist oder zwischen zwei Knoten verschiedenerTiefensuchbaume (im Wald).

Anmerkung

Bei einem ungerichteten Graphen gibt es nur Baum- undRuckwartskanten.

Frank Heitmann [email protected] 130/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Analyse

Satz

Die Tiefensuche ist korrekt und ihre Laufzeit ist wieder inO(V + E ).

Frank Heitmann [email protected] 131/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

BreitensucheTiefensucheZusammenfassung

Breiten- und Tiefensuche - Zusammenfassung

Zusammenfassung

Breitensuche nutzt eine Queue, Tiefensuche einen Stack. (DieTiefensuche wie im [Cormen] kommt ohne Stack aus, arbeitetdafur aber rekursiv und mit Zeitstempeln.)

Beide Operationen laufen in Θ(V + E ), wenn der Graphmittels Adjazenzlisten gegeben ist.

Die Breitensuche hat (meist) nur einen Startknoten. Sie wirdoft verwendet, um kurzeste Abstande und denVorgangerteilgraphen zu ermitteln.

Die Tiefensuche ermittelt einen Tiefensuchwald (mehrereStartknoten). Sie wird oft als Unterroutine in anderenAlgorithmen verwendet.

Frank Heitmann [email protected] 132/145

Page 34: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Problemstellung

Die Tiefensuche wird z.B. beim topologischen Sortieren benutzt...

Frank Heitmann [email protected] 133/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Problemstellung

... oder beim Ermitteln der Zusammenhangskomponenten einesGraphen.

Frank Heitmann [email protected] 134/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Problemstellung

Zu beidem gleich mehr...

Frank Heitmann [email protected] 135/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Darstellung von Graphen - Zusammenfassung

Adjazenzmatrix: |V | × |V |-Matrix A = (aij) mit aij = 1 falls(i , j) ∈ E und 0 sonst. Große in Θ(V 2).

Adjazenzliste: Liste Adj [v ] fur jeden Knoten v ∈ V in der dieKnoten, die mit v adjazent sind gespeichert sind. Große inΘ(V + E ).

Bei einer Adjazenzmatrix kann man schnell herausfinden, obzwei Knoten benachbart sind oder nicht. Dafur ist eslangsamer alle Knoten zu bestimmen, die mit einem Knotenbenachbart sind. (Bei Adjazenzlisten genau andersherum.)

Beide Darstellungen sind ineinander transformierbar.

Beide Darstellungen sind leicht auf den Fall eines gewichtetenGraphen anpassbar.

Frank Heitmann [email protected] 136/145

Page 35: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Darstellung von Graphen - Adjazenzmatrix

0 1 1 1

x1 0 1 0

wv

y 1 1 0 11 0 1 0

vv

w

w

x

x

y

y

Bei einer Adjazenzmatrix hat man eine n × n-Matrix, bei der ander Stelle (i , j) genau dann eine 1 steht, wenn vi und vj verbundensind.

Der Speicherplatzbedarf ist in Θ(V 2) (unabhangig von derKantenzahl).

Frank Heitmann [email protected] 137/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Darstellung von Graphen - Adjazenzlisten

x

wv

y

v

w

x

y

w x y

x v

y v w

v x

Bei der Adjazenzlistendarstellung haben wir ein Array von |V |Listen, fur jeden Knoten eine. Die Adjazenzliste Adj [v ] zu einemKnoten v enthalt alle Knoten, die mit v adjazent sind.

Bei einem gerichteten Graphen ist die Summe aller Adjazenzlisten|E |, bei einem ungerichteten Graphen |2E |. DerSpeicherplatzbedarf ist folglich Θ(V + E ).

Frank Heitmann [email protected] 138/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Breitensuche - Die Idee

Gegeben ein Graph G und ein Startknoten s ’entdeckt’ dieBreitensuche alle Knoten, die von s aus erreichbar sind. Zudemwird der Abstand (in Kanten) von s aus berechnet (tatsachlichwird sogar der kurzeste Abstand ermittelt).

Man kann auch zusatzlich einen ’Breitensuchbaum’ (mit Wurzel s)und damit die kurzesten Pfade von s zu den anderen Knotenermitteln.

Der Algorithmus entdeckt zunachst die Knoten mit Entfernung kund dann die mit Entfernung k + 1, daher der Name. Er geht erstin die Breite...

Frank Heitmann [email protected] 139/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Breitensuche - Die Idee

Starte mit Knoten s in einer Queue Q.

Wiederhole solange Q nicht leer...

Nimm vordersten Knoten v aus Q.(Bearbeite diesen und Farbe diesen so, dass er nicht wiederbesucht wird.)Tue alle Nachbarn von v , die bisher nicht besucht wurden indie Queue.

Anmerkung

Durch die Queue wird sichergestellt, dass die Knoten ’in der Breite’besucht werden.

Frank Heitmann [email protected] 140/145

Page 36: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Tiefensuche - Die Idee

Bei der Tiefensuche geht man einfach immer weiter nochungeprufte Kanten entlang, so lange dies moglich ist. Mein folgtalso ’einem Pfad’ so lange es moglich ist. Erst wenn man einenKonten erreicht von dem aus man nur bereits besuchte Knotenerreichen kann, geht man einen Schritt zuruck.

Bleiben unentdeckte Knoten ubrig wahlt man diese als neueStartknoten. So kann sich (bei einem unzusammenhangendenGraphen) ein Tiefensuchwald ergeben. (Die Breitensuche kann manauch so anpassen, aber typischerweise werden die Algorithmen sobenutzt.)

Frank Heitmann [email protected] 141/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Tiefensuche - Die Idee

Starte mit Knoten s in einem Stack S .

Wiederhole solange S nicht leer...

Nimm obersten Knoten v aus S .(Bearbeite diesen und Farbe diesen so, dass er nicht wiederbesucht wird.)Tue alle Nachbarn von v , die bisher nicht besucht wurden aufden Stack.

Anmerkung

Durch den Stack wird sichergestellt, dass die Knoten ’in der Tiefe’besucht werden.

Frank Heitmann [email protected] 142/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Breiten- und Tiefensuche - Erweiterungen

Die Breitensuche kann mit ’distance’-Stempeln angereichertwerden, um so die kurzesten Abstande von s zu ermitteln.

Die Tiefensuche kann mit ’discovery’ und ’finished’ Zeitangereichert werden. So konnen die Kanten klassifiziertwerden und man kann z.B. Kreise finden und noch andereDinge tun. Wie oben kann man mit dem Vorganger einenTiefensuchbaum konstruieren.

Frank Heitmann [email protected] 143/145

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Breiten- und Tiefensuche - Zusammenfassung

Zusammenfassung

Breitensuche nutzt eine Queue, Tiefensuche einen Stack. (DieTiefensuche wie im [Cormen] kommt ohne Stack aus, arbeitetdafur aber rekursiv und mit Zeitstempeln.)

Beide Operationen laufen in Θ(V + E ), wenn der Graphmittels Adjazenzlisten gegeben ist.

Die Breitensuche hat (meist) nur einen Startknoten. Sie wirdoft verwendet, um kurzeste Abstande und denVorgangerteilgraphen zu ermitteln.

Die Tiefensuche ermittelt einen Tiefensuchwald (mehrereStartknoten). Sie wird oft als Unterroutine in anderenAlgorithmen verwendet.

Frank Heitmann [email protected] 144/145

Page 37: Algorithmen und Datenstrukturen Kapitel 8 0.2cm Graphen...Grundlagen Breiten- und Tiefensuche Anwendung der Tiefensuche Algorithmen und Datenstrukturen Kapitel 8 Graphen Frank Heitmann

GrundlagenBreiten- und Tiefensuche

Anwendung der Tiefensuche

Topologisches SortierenZusammenhangskomponentenWiederholung

Auf einen Blick...

Graphen

Grundlagen, Adjazenzmatrix, AdjazenzlisteBreiten- & TiefensucheAusblick: Anwendung der TiefensucheAusblick: Minimale Spannbaume

Frank Heitmann [email protected] 145/145