• Keine Ergebnisse gefunden

3.5 Gerichteter Pfad Definition 292

N/A
N/A
Protected

Academic year: 2021

Aktie "3.5 Gerichteter Pfad Definition 292"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

3.5 Gerichteter Pfad Definition 292

Eine Folge (u

0

, u

1

, . . . , u

n

) mit u

i

∈ V f¨ ur i = 0, . . . , n heißt gerichteter Pfad, wenn

∀i ∈ {0, . . . , n − 1} h

(u

i

, u

i+1

) ∈ A i .

Ein gerichteter Pfad heißt einfach, falls alle u

i

paarweise verschieden sind.

Diskrete Strukturen 3.5 Gerichteter Pfad 475/571

c

Ernst W. Mayr

(2)

3.6 Gerichteter Kreis Definition 293

Ein gerichteter Pfad (u

0

, u

1

, . . . , u

n

) heißt gerichteter Kreis, wenn u

0

= u

n

.

Der gerichtete Kreis heißt einfach, falls u

0

, u

1

, . . . , u

n−1

alle paarweise verschieden sind.

(3)

3.7 dag

Definition 294

Ein Digraph, der keinen gerichteten Kreis enth¨ alt, heißt d irected acyclic g raph, kurz dag.

In einem dag heißen Knoten mit In-Grad 0 Quellen, Knoten mit Aus-Grad 0 Senken.

Eine Nummerierung i : V → {1, . . . , |V |} der Knoten eines dags heißt topologisch, falls f¨ ur jede Kante (u, v) ∈ A gilt:

i(u) < i(v).

Diskrete Strukturen 3.7 dag 477/571

c

Ernst W. Mayr

(4)

Beispiel 295

1

2

3

4

5

6 7

8

9

10

11

(5)

Algorithmus zur topologischen Nummerierung:

while V 6 =6 0 do

nummeriere eine Quelle mit der n¨ achsten Nummer streiche diese Quelle aus V

od

Diskrete Strukturen 3.7 dag 479/571

c

Ernst W. Mayr

(6)

3.8 Zusammenhang

Definition 296

Ein Digraph heißt zusammenh¨ angend, wenn der zugrundeliegende ungerichtete Graph zusammenh¨ angend ist.

3.9 Starke Zusammenhangskomponenten

Definition 297

Sei G = (V, A) ein Digraph. Man definiert eine ¨ Aquivalenzrelation R ⊆ V × V wie folgt:

uRv ⇐⇒

es gibt in G einen gerichteten Pfad von u nach v und einen gerichteten Pfad von v nach u.

Die von den ¨ Aquivalenzklassen dieser Relation induzierten

Teilgraphen heißen die starken Zusammenhangskomponenten von G.

(7)

Beispiel 298

Diskrete Strukturen 3.9 Starke Zusammenhangskomponenten 481/571

c

Ernst W. Mayr

(8)

4. Durchsuchen von Graphen

Gesucht sind Prozeduren, die alle Knoten (eventuell auch alle Kanten) mindestens einmal besuchen und m¨ oglichst effizient sind.

4.1 Tiefensuche, Depth-First-Search

Sei G = (V, E) ein ungerichteter Graph, gegeben als Adjazenzliste.

(9)

Algorithmus Tiefensuche (DFS):

while ∃ unvisited v do

r := pick (random) unvisited node push r onto stack

while stack 6= ∅ do v := pop top element if v unvisited then

mark v visited

push all neighbours of v onto stack perform operations DFS Ops(v) fi

od od

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 483/571

c

Ernst W. Mayr

(10)

Beispiel 299

A A

A

A @

@

@

@

A

A A

A @

@

@

@

A A

A A

U -

6

@

@

@

@ I

? * 1 g

2 g

3 g

4 g 5 g 6 g

7 g

8 g

9 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t B

B B

B B

B Q

Q Q

Q Q

Q B

B B

B B

B Q

Q Q

Q Q

Q

H

H H

H

(11)

Beobachtung: Die markierten Kanten bilden einen Spannbaum:

A A

A

A @

@

@

@

A A

A

A @

@

@

@

A A

A A

U -

6

@

@

@

@ I

? * 1 g

2 g

3 g

4 g 5 g 6 g

7 g

8 g

9 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t B

B B

B B

B Q

Q Q

Q Q

Q B

B B

B B

B Q

Q Q

Q Q

Q H H H H

R¨ uckw¨ artskante

9 g 8 g 6 g 7 g

5 g 4 g 3 g 2 g

1 g

@

@

s s

s s

s s s s s

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 485/571

c

Ernst W. Mayr

(12)

Folge der Stackzust¨ ande

1 2

8 7

3 9 8 1 8 7

4 9 2 9 8 1 8 7

5 3 9 2 9 8 1 8 7

9 8 6 4 3 9 2 9 8 1 8 7

2 3 5 8 6 4 3 9 2 9 8 pp ppppp 1

7 6 5 2 1 6 4 3 9 2 9 pp ppppp 8

6 8 1 6 5 2 1 6 4 3 9 pp ppppp 2

7 8 5 8 1 6 5 2 1 6 4 pp ppppp 3 h h

h

h h h h h h h h h h h h 6 6

h

? ? ? ? ? ? ? ? ? visited visited

Stack:

: oberstes Stackelement : schon besuchte Knoten

: Nachbarn Zustand:

a) b) c) d) e) f)

g)

h) i)

j)

(13)

Wir betrachten den Stackzustand:

Im Zustand g) sind die Elemente 2, 3 und 5 als visited markiert (siehe Zust¨ ande b), c) und e)). Deswegen werden sie aus dem Stack entfernt, und das Element 8 wird zum obersten Stackelement. Im Zustand j) sind alle Elemente markiert, so dass eins nach dem anderen aus dem Stack entfernt wird.

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 487/571

c

Ernst W. Mayr

(14)

algorithm advanced DFS

void proc DFSvisit(node v ) visited[v ] := true

pre[v ] := ++precount

for all u ∈ adjacency list[v ] do if not visited[u ] then

type[(v ,u )] := ’Baumkante’

parent[u ] := v

DFSlevel[u ] := DFSlevel[v ]+1 DFSvisit(u )

elsif u 6= parent[v ] then

type[(v ,u )] := ’R¨ uckw¨ artskante’

fi

od

(15)

Fortsetzung

co Initialisierung: oc for all v ∈ V do

visited[v ] := false pre[v ] := post[v ] := 0 od

precount := postcount := 0 for all v ∈ V do

if not visited[v ] then DFSlevel[v ] := 0 parent[v ] := null DFSvisit(v )

fi od end

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 489/571

c

Ernst W. Mayr

(16)

Beispiel 300 (gestrichelt sind R¨ uckw¨ artskanten)

DFS-Level:

Pr¨ aorder-Nummer:

(17)

Beispiel (Fortsetzung) Postorder-Nummer:

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 491/571

c

Ernst W. Mayr

(18)

Beobachtung: Die Tiefensuche konstruiert einen Spannwald des Graphen. Die Anzahl der B¨ aume entspricht der Anzahl der Zusammenhangskomponenten von G.

Satz 301

Der Zeitbedarf f¨ ur die Tiefensuche ist (bei Verwendung von Adjazenzlisten) O |V | + |E|

.

Beweis:

Aus Algorithmus ersichtlich.

(19)

Tiefensuche im Digraphen: F¨ ur gerichtete Graphen verwendet man obigen Algorithmus, wobei man die Zeilen

elsif u 6= parent[v ] then

type[(v ,u )] := ’R¨ uckw¨ artskante’

fi ersetzt durch

elsif pre[u ] > pre[v ] then

type[(v ,u )] := ’Vorw¨ artskante’

elsif post[u ] 6 = 0 then

type[(v ,u )] := ’Querkante’

else

type[(v ,u )] := ’R¨ uckw¨ artskante’

fi

Diskrete Strukturen 4.1 Tiefensuche, Depth-First-Search 493/571

c

Ernst W. Mayr

(20)

Beispiel 302 (Pr¨ aorder-Nummer)

11

13

14 12

15 1

2

3

4 5 7

6

8 10

9

Querkante Vorwärtskante Rückwärtskante Baumkante

(21)

4.2 Breitensuche, Breadth-First-Search

Sei G = (V, E) ein ungerichteter Graph, gegeben mittels Adjazenzlisten.

BFS-Algorithmus:

while ∃ unvisited v do

r := pick (random) unvisited node push r into (end of) queue

while queue 6= ∅ do

v := remove front element of queue if v unvisited then

mark v visited

append all neighbours of v to end of queue perform operations BFS Ops(v)

fi od od

Diskrete Strukturen 4.2 Breitensuche, Breadth-First-Search 495/571

c

Ernst W. Mayr

(22)

Beispiel 303

B B

B B

B B A

A A

A

B B

B B

B B Q

Q Q

Q Q

Q

H H H H

B B

B B

B B A

A A

A

B B

B B

B B Q

Q Q

Q Q

Q

H H H H

B B

B B

B B N A

A A

A

U ?

B B

B B

B B N Q

Q Q

Q Q

Q s H H

H H j 1 g

2 g

6 g

9 g g

8 5 g

3 g

4 g

7 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t Q

Q Q

Q Q

Q

@

@

@

@

(23)

Beobachtung: Die markierten Kanten bilden einen Spannbaum:

B B

B B

B B A

A A

A

B B

B B

B B Q

Q Q

Q Q

Q

H H H H

B B

B B

B B A

A A

A

B B

B B

B B Q

Q Q

Q Q

Q

H H H H

B B

B B

B B N A

A A

A

U ?

B B

B B

B B N Q

Q Q

Q Q

Q s H

H H H j 1 g

2 g

6 g

9 g g

8 5 g

3 g

4 g

7 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t Q

Q Q

Q Q

Q

@

@

@

@

pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ppppppppppppppppppppppppppppppppppp

pppppp pppppp pppppp pppppp pppppppppppppppppppppppp pppp pppp pppp H H

Y

Querkanten 1 g

2 g 3 g 4 g

5 g 6 g

7 g 8 g

9 g

B B

B H

H H H H

H

J J

J J

J J

J J

J s

s s s

s

s s s

s

Diskrete Strukturen 4.2 Breitensuche, Breadth-First-Search 497/571

c

Ernst W. Mayr

(24)

Folge der Queuezust¨ ande

1 2 8 7 8 7 1 8 9 3 7 1 8 9 3 1 2 6 7 5 1 8 9 3 1 2 6 7 5 1 8 6 3 1 2 6 7 5 1 8 6 5 3 2 1 2 6 7 5 1 8 6 5 3 2 4 9 2 7 5 1 8 6 5 3 2 4 9 2 7 8 5 1 8 6 5 3 2 4 9 2 7 8 5 6 8 9 4

j j

j j j

j j j j j j visited

visited visited visited

Zustand:

Queue:

(a (b (c (d (e (f (g (h (i

(25)

Wir betrachten die Folge der Queuezust¨ ande. Wiederum bedeutet die Notation:

i

: vorderstes Queue-Element : schon besuchte Knoten

: Nachbarn

Im Zustand e) sind die Elemente 1 und 8 als visited markiert (siehe Zust¨ ande a) und c)). Deswegen werden sie aus der Queue entfernt, und so wird das Element 9 das vorderste Queueelement. Das gleiche passiert in den Zust¨ anden g), h) und i). Im Zustand j) sind alle Elemente markiert, so dass sie eins nach dem anderen aus der Queue entfernt werden.

Diskrete Strukturen 4.2 Breitensuche, Breadth-First-Search 499/571

c

Ernst W. Mayr

(26)

algorithm advanced BFS for all v ∈ V do

touched[v ] := false bfsNum[v ] := 0 od

count := 0 queue := 6 0 for all v ∈ V do

if not touched[v] then bfsLevel[v ] := 0 parent[v ] := null queue .append(v ) touched[v ] := true

while not empty(queue ) do

(27)

Fortsetzung

for all w ∈ adjacency list[u ] do if not touched[w ] then

type[(u ,w )] := ’Baumkante’

parent[w ] := u

bfsLevel[w] := bfsLevel[u]+1 queue .append(w )

touched[w] := true

elsif not w = parent[u] then type[(u ,w )] := ’Querkante’

fi od od fi od end

Diskrete Strukturen 4.2 Breitensuche, Breadth-First-Search 501/571

c

Ernst W. Mayr

(28)

Beobachtungen:

1

Die Breitensuche konstruiert einen Spannwald.

2

Der Spannwald besteht genau aus den Baumkanten im Algorithmus.

3

(u, v) ist Querkante ⇒

bfsLevel(u) − bfsLevel(v)

≤ 1

(29)

Satz 304

Der Zeitbedarf f¨ ur die Breitensuche ist (bei Verwendung von Adjazenzlisten) O |V | + |E|

.

Beweis:

Aus Algorithmus ersichtlich.

Diskrete Strukturen 4.2 Breitensuche, Breadth-First-Search 503/571

c

Ernst W. Mayr

(30)

4.3 Matroide

Definition 305

Sei S eine endliche Menge, U ⊆ 2

S

eine Teilmenge der Potenzmenge von S. Dann heißt M = (S, U ) ein Matroid und jedes A ∈ U heißt unabh¨ angige Menge, falls gilt:

1

∅ ∈ U

2

A ∈ U, B ⊆ A = ⇒ B ∈ U

3

A, B ∈ U, |B| = |A| + 1

= ⇒ (∃x ∈ B \ A) h

A ∪ {x}

∈ U i

Jede bez¨ uglich ⊆ maximale Menge in U heißt Basis.

Nach 3. haben je zwei Basen gleiche Kardinalit¨ at. Diese heißt der Rang r(M ) des

(31)

Beispiel 306

Linear unabh¨ angige Vektoren in einem Vektorraum.

Beispiel 307

G sei folgender Graph:

S = Menge der Kanten von G

U = Menge der kreisfreien Teilmengen von S

Diskrete Strukturen 4.3 Matroide 505/571

c

Ernst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

Sei G = (V, E) ein ungerichteter Graph, gegeben als Adjazenzliste... Deswegen werden sie aus dem Stack entfernt, und das Element 8 wird zum obersten Stackelement. Im Zustand j)

Vertauscht man auf diesem Pfad gematchte und ungematchte Kanten, erh¨ alt man dadurch ein Matching M 0 mit |M 0 | = |M | + 1, was wiederum einen Widerspruch darstellt:... Von

Daher muss es eine Zusammenhangskomponente in (V, A) geben, deren Knoten nicht in (V, B) auftauchen, was einen Widerspruch..

Aufgabe 3: Barycenter-Heuristik im OGDF (Bearbeitungszeit: 2 Wochen, 10 Punkte) Schreiben Sie ein Programm innerhalb des OGDF, das die Barycenter-Heuristik zur Kreuzungsminimierung

Wenn wir die Kante e jetzt wieder einf¨ ugen, kann sie h¨ ochstens zwei Knoten mit Grad 1 verbinden, es verbleiben also mindestens zwei weitere.. (2) Entweder G 1 oder G 2 enth¨ alt

To prove the general case, assume (without loss of generality) that C is the shortest cycle satisfying the hypotheses of the statement.. Try arguing

Sie m¨ ussen diese dabei nicht vollst¨ andig definieren, sondern es gen¨ ugt, die Idee

Sie m¨ ussen diese dabei nicht vollst¨ andig definieren, sondern es gen¨ ugt, die Idee anzugeben.. Zeigen Sie die Aussage auf