Graphentheorie Eulersche Graphen Rainer Schrader Zentrum für Angewandte Informatik Köln

14. November 2007

1 / 22

2 / 22

Eulersche Graphen

Eulersche Graphen

Gliederung

Zur Erinnerung:

• eulersche und semi-eulersche Graphen • Charakterisierung eulerscher Graphen • Berechnung eines Euler-Pfads

D

A C

B

• Frage: Ist es möglich, einen Rundgang so zu machen, dass man jede Brücke genau einmal passiert und zum Ausgangspunkt zurückkehrt?

3 / 22

4 / 22

Eulersche Graphen

Eulersche Graphen

• ein zusammenhängender Graph heißt semi-eulersch, wenn ein Pfad

• offensichtlich ist nicht jeder Graph eulersch, auch nicht jeder

v0 , v1 , . . . , vk existiert, der alle Kanten genau einmal durchläuft

semi-eulersche Graph

• der Graph heißt eulersch, wenn ein semi-eulerscher Pfad existiert mit v0 = vk 1

3

• das Königsberger-Brücken-Problem besteht dann darin, für den folgenden Graphen zu entscheiden, ob er eulersch (bzw. semi-eulersch) ist:

2

4

9

10

12

8

9

2 6

5 1

10

11

6

7 7

8

c

D

5

3

4

• das folgende Lemma liefert die Basis für die Charakterisierung A

eulerscher Graphen

C

d

b B

a 5 / 22

6 / 22

Eulersche Graphen

Eulersche Graphen

Gliederung

Lemma 1 Sei G ein Graph mit d (v ) ≥ 2 für alle v ∈ V . Dann enthält G einen Kreis.

• eulersche und semi-eulersche Graphen • Charakterisierung eulerscher Graphen • Berechnung eines Euler-Pfads

Beweis: (i) G enthält eine Schlinge oder Mehrfachkanten



(ii) G ist einfach: konstruiere eine Kantenfolge v0 , v1 , . . . wie folgt: wähle v0 ∈ V beliebig, wähle vi +1 ∈ N (vi ) r vi −1

• da |V | < ∞, muss irgendwann ein Knoten zum zweiten Mal erreicht werden.

7 / 22

8 / 22

Eulersche Graphen

Eulersche Graphen • nach dem vorigen Lemma 1 enthält G einen Kreis C

Satz 2 Ein zusammenhängender Graph ist genau dann eulersch, wenn d (v ) gerade ist für alle v ∈ V .

• falls C schon alle Kanten von G enthält, ist die Behauptung bewiesen

Beweis:

• es ist |E (H )| < |E (G)| und d (v ) gerade für alle v ∈ V (H )

• andernfalls betrachte H = G r C

• sei P ein geschlossener eulerscher Pfad

• damit folgt per Induktion:

• dann wird jeder Knoten genau so oft verlassen wie erreicht und

• jede Komponente von H hat einen geschlossenen eulerschen Pfad,

jedesmal auf verschiedenen Kanten

• zusammen mit C ergeben diese einen geschlossenen eulerschen

• daher ist d (v ) gerade

Pfad von G.

• sei umgkehrt G ein Graph mit d (v ) gerade für alle v ∈ V • wir führen eine Induktion über |E | durch • da G zusammenhängend ist, folgt d (v ) ≥ 2 für alle v ∈ V • nach dem vorigen Lemma 1 enthält G einen Kreis C 9 / 22

10 / 22

Eulersche Graphen

Eulersche Graphen

Als Folgerung aus dem letzten Satz ergibt sich:

• damit enthält er entweder keine Knoten mit ungeradem Grad oder zwei

Korollar 3

• umgekehrt ist der Graph nach Satz Satz 2 entweder eulersch (und

Ein zusammenhängender Graph ist genau dann eulersch, wenn er Vereinigung von kantendisjunkten Kreisen ist.

damit semi-eulersch)

• oder er wird eulersch, wenn wir einen neuen Knoten a hinzufügen, den wir mit den beiden ungeraden Knoten verbinden

Korollar 4

• im letzten Fall sind die ungeraden Knoten in jedem geschlossenen

Ein zusammenhängender Graph ist semi-eulersch genau dann, wenn die Anzahl der Knoten mit ungeraden Grad 0 oder 2 ist.

Euler-Pfad direkte Nachbarn von a

• wenn wir a und die beiden neuen Kanten entfernen, erhalten wir den gesuchten Euler-Pfad.

Beweis:

• ein semi-eulerscher Graph besitzt entweder einen geschlossenen eulerschen Pfad (d.h. er ist eulersch) oder einen normalen eulerschen Pfad

11 / 22

12 / 22

Eulersche Graphen

Eulersche Graphen Gliederung

Mit der gleichen Technik folgt:

• eulersche und semi-eulersche Graphen • Charakterisierung eulerscher Graphen

Korollar 5 Sei G ein zusammenhängender Graph und 2k die Anzahl der ungeraden Knoten. Dann lässt sich E in k kantendisjunkte Wege zerlegen.

• Berechnung eines Euler-Pfads

Beweis:

• seien die ungeraden Knoten x1 , . . . , xk , y1 , . . . , yk • füge zu G neue Knoten a1 , . . . , ak mit Kanten (ai , xi ) und (ai , yi ) für 1 ≤ i ≤ k hinzu

• der so entstandene Graph ist eulersch • wie vorher, kommen in jedem eulerschen Pfad die Kanten (ai , xi ), (ai , yi ) direkt nacheinander vor

• entfernen wir diese Kanten, so erhalten wir die gewünschte Zerlegung. 13 / 22

14 / 22

Eulersche Graphen

Eulersche Graphen Beispiel:

• der Beweis von Satz 2 liefert einen Algorithmus zur Bestimmung eines eulerschen Pfades

• betrachte den folgenden Eulerschen Graphen

• die einzige Schwierigkeit, die es zu beachten gibt, ist die folgende:

v

• sei Gk der Teilgraph der Kanten, die wir nach k Schritten noch nicht durchlaufen haben u

w

• sei x der aktuelle Knoten

• die Konstruktion beginne in Knoten u • und wählt die Kanten (u, v ) und (v , w ) x

v

• wir müssen vermeiden, eine Schnittkante zu wählen, da wir sonst nicht

w

u

mehr in die Zusammenhangskomponente zurückkommen

• es sei denn, dGk (x ) = 1.

• danach darf nicht die Kante (w , u) gewählt werden 15 / 22

16 / 22

Bestimmung eines Euler-Pfades

Bestimmung eines Euler-Pfades

Bestimmung eines Euler-Pfads (Fleury) (1) (2) (3) (5) (4) (5) (4) (6) (7)

Satz 6 Der von dem obigen Algorithmus erzeugte Pfad ist eulersch.

wähle eine beliebigen Startknoten a folge einem Kantenzug, der keine Kante zweimal benutzt sei x der im Schritt k erreichte Knoten sei Gk der von den unbenutzten Kanten induzierte Teilgraph falls x 6= a und dGk (x ) > 1 : verlasse x niemals auf einer Schnittkante von Gk falls x = a: verlasse a auf einer unbenutzten Kante, falls keine solche existiert, Stop.

Beweis: (1) die Regeln können eingehalten werden:

• sei x 6= a der erreichte Knoten • da dG (x ) gerade, ist dGk (x ) ungerade • somit existiert immer eine Kante in Gk , die mit x inzidiert • ist dGk (x ) = 1, so kann x auf dieser Kante verlassen werden • ist dGk (x ) > 1, so existiert mindestens eine Kante, die nicht Schnittkante in Gk ist:

17 / 22

18 / 22

Bestimmung eines Euler-Pfades

Bestimmung eines Euler-Pfades

• andernfalls existieren zwei Schnittkanten in Gk , die x mit zwei

(2) der in den ersten k Schritten erzeugte Graph ist der Anfang eines eulerschen Pfades:

Komponenten C und D verbinden:

• denn nach Erzeugen eines Knotens x 6= a existieren genau zwei Knoten (x und a) in Gk , die ungeraden Grad haben

C

• nach Korollar 4 existiert dann noch ein Pfad in Gk , der semi-eulersch ist.

x D

Der Algorithmus kann so implementiert werden, dass er eine lineare Laufzeit von O(|V | + |E |) hat.

• dGk (x ) ist ungerade, die Anzahl der ungeraden Knoten in C aber gerade

Wir beschreiben im folgenden eine rekursive Version zur Berechnung von

• damit muss C noch einen weiteren ungeraden Knoten enthalten

Euler-Touren:

• entsprechend D • da Gk aber genau zwei Knoten mit ungeradem Grad hat (den Startknoten a und den Knoten x ), liefert dies einen Widerspruch. 19 / 22

20 / 22

Bestimmung eines Euler-Pfades

Bestimmung eines Euler-Pfades

rekursiver Algorithmus zur Bestimmung eines Euler-Kreiese

• für das Chinese-Postman-Problem und andere Fragestellungen wird es

(1) wähle ein v1 ∈ V beliebig (2) W = Euler(G, v1 )

(1) (2) (3) (4)

von Interesse sein, einen Graphen G = (V , E ) durch Hinzufügen von Kanten eulersch zu machen

Euler(G, v ) setze W = v und x = v falls δ(x ) = ∅ gehe zu (5) andernfalls wähle e = (x , y ) ∈ δ(x ) setze W = W , e, y und x = y

• dazu benötigen wir noch einige andere Hilfsmittel, die wir in einem späteren Kapitel behandeln werden.

setze E = E r e gehe zu (2) (5) sei W = v1 , e1 , v2 , e2 , . . . , vk , ek , vk +1 (6) für i = 1 bis k do (7) sei Wi = Euler(G, vi ) end do (8) setze W = W1 , e1 , W2 , e2 , . . . , Wk , ek , vk +1 (9) return

21 / 22

22 / 22