Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten:...

27
Einf¨ uhrung in die Informatik 2 – Graphenexploration – Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universit¨ at Konstanz E 202 | [email protected] | Sprechstunde: nach Vereinbarung Sommersemester 2010 Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 1 / 14

Transcript of Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten:...

Page 1: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Einfuhrung in die Informatik 2

– Graphenexploration –

Sven Kosub

AG Algorithmik/Theorie komplexer SystemeUniversitat Konstanz

E 202 | [email protected] | Sprechstunde: nach Vereinbarung

Sommersemester 2010

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 1 / 14

Page 2: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Suche im Labyrinth

Aufgabe: Durchsuche ein Labyrinth

Prazisierung der Aufgabenstellung:

Jede Kreuzung und Sackgasse soll irgendwann besucht werden

Gehen von Kreisen soll verhindert werden

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 2 / 14

Page 3: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Suche im Labyrinth

Losung:

Verwende Markierungen anKreuzungen

wenn Sackgasse, dann Umdrehen

wenn Kreuzung, dann beim BetretenMarke setzen und wie folgt verfahren:

keine Kreise: hat Gang, durch denman gekommen ist, gerade erstMarke bekommen und sind weitereMarken vorhanden, dann zweiteMarke in Gang und umkehrensonst neue Gange: wenn Gange ohneMarken vorhanden, den linkestenGang nehmen und Marke setzenZuruckgehen: umkehren und denGang mit nur einer Marke nehmen Start

Ziel

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 3 / 14

Page 4: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Graphenexploration

Graphenexploration als Sammlung von Techniken zur

”Erforschung“ unbekannter Graphen und Netzen hinsichtlich

bestimmter Fragestellungen

. . . mittels Graphtraversierung (in der Vorlesung)

Graphtraversierung ist das Ablaufen aller Kanten eines Graphen

Suche im Labyrinth ist Beispiel fur Graphtraversierung

Traversierungsarten:

Tiefensuche (engl. depth-first search, Abk. dfs)

Breitensuche (engl. breadth-first search, Abk. bfs)

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 4 / 14

Page 5: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

Idee bei der Tiefensuche:

starte in einem Knoten

gehe solange wie moglich zu einem benachbarten Knoten, der nochnicht besucht wurde

falls im aktuellen Knoten alle Nachbarn bereits besucht, dann kehreauf dem gegangenen Weg zuruck zum letzten Knoten, der einen nochnicht besuchten Nachbarn hat (backtracking)

Tiefensuche produziert zwei Arten von Kanten:

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 5 / 14

Page 6: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

Algorithmus: DFS(G , v)

Eingabe: (ungerichteter) Graph G , Knoten v in GAusgabe: Markierung der Kanten als

”Baumkante“ oder

”Ruckwartskante“

Markiere Knoten v als”besucht“

for jede mit v inzidente Kante e = {u, v}if Gegenknoten u nicht als

”besucht“ markiert

Markiere e als”Baumkante“

Markiere u als”besucht“

DFS(G , u)else Markiere e als

”Ruckwartskante“

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 6 / 14

Page 7: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 8: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 9: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 10: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 11: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 12: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 13: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 14: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 15: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 16: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Ruckwartskanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 7 / 14

Page 17: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

Baumkanten bilden DFS-Baum

falls G zusammenhangend, dann istDFS-Baum ein Spannbaum

Ruckwartskanten schließen Kreise

DFS-Baum andert sich, wenn inzidenteKanten in anderer Reihenfolge behandeltwerden

A

B

E

C F

H

G

D

I

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 8 / 14

Page 18: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Tiefensuche

Laufzeit der Tiefensuche:

mit Ajdazenzlisten: O(n + m) (da jede Kante genau zweimaldurchlaufen wird)

mit Adjazenzmatrix: O(n2) (da jede potenzielle Kante genau zweimalbehandelt wird)

(zusatzlicher) Speicherplatz der Tiefensuche:

proportional zur Hohe des DFS-Baums, d.h. O(n) im schlechtestenFall

Folgende Probleme sind mit Tiefensuche in Zeit O(n + m) losbar:

Test, ob G zusammenhangend ist

Berechnung eines Spannwaldes von G

Berechnung eines Pfades zwischen zwei Knoten von G

Berechnung eines Kreises

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 9 / 14

Page 19: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

Idee bei der Breitensuche:

starte in einem Knoten

unterteile iterativ die Knoten in Levels

ein Level der Ordnung i besteht aus allen Knoten, die Nachbarn imLevel i − 1 haben

Startknoten bildet Level 0

Breitensuche produziert zwei Arten von Kanten:

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 10 / 14

Page 20: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

Algorithmus: BFS(G , v)

Eingabe: (ungerichteter) Graph G , Knoten v in GAusgabe: Markierung der Kanten als

”Baumkante“oder

”Querkante“

i=0Initialisiere Liste L0

Fuge v in L0 einMarkiere v als

”besucht“

while Li nicht leerInitialisiere Liste Li+1

for jeden Knoten v in Li

for jede mit v inzidente Kante e = {u, v}if Gegenknoten u nicht als

”besucht“ markiert

Markiere e als”Baumkante“

Fuge u in Li+1 einMarkiere u als

”besucht“

else Markiere e als”Querkante“

i=i+1

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 11 / 14

Page 21: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 12 / 14

Page 22: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

I

A B C

D E F

HG

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 12 / 14

Page 23: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

I

A B C

D F

HG

E

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 12 / 14

Page 24: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

I

A B C

D F

HG

E

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 12 / 14

Page 25: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

I

A B C

D F

HG

E

inzidente Kante nach alphabetischer Sortierung der Nachbarn

Baumkanten

Querkanten

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 12 / 14

Page 26: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

A

E

CB FD G H

I

Baumkanten bilden BFS-Baum

falls G zusammenhangend, dann ist BFS-Baum ein Spannbaum

Querkanten schließen Kreise

Knotentiefen im BFS-Baum entsprechende kurzesten Pfaden derKnoten zu A

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 13 / 14

Page 27: Einf uhrung in die Informatik 2 - Uni Konstanz · 2017. 12. 1. · Traversierungsarten: Tiefensuche(engl. depth- rst search, Abk. dfs) Breitensuche(engl. breadth- rst search, Abk.

Breitensuche

Laufzeit der Breitensuche:

mit Ajdazenzlisten: O(n + m) (da jede Kante genau zweimaldurchlaufen wird)

mit Adjazenzmatrix: O(n2) (da jede potenzielle Kante genau zweimalbehandelt wird)

(zusatzlicher) Speicherplatz der Breitensuche:

O(n) im schlechtesten Fall

Folgende Probleme sind mit Breitensuche in Zeit O(n + m) losbar:

Test, ob G zusammenhangend ist

Berechnung eines Spannwaldes von G

Berechnung eines kurzesten Pfades zwischen zwei Knoten von G

Berechnung eines Kreises

Sven Kosub (Algorithmik/TKS) EI2: Graphenexploration 14 / 14