Eulersche Graphen

Werbung
Kapitel 4
Eulersche Graphen
4.1
Das Königsberger Brückenproblem
Die zugrundeliegende Fragestellung hat ihren Ursprung im Königsberger Brückenproblem“: im
”
Fluss Pregel, der durch Königsberg fließt, liegen zwei Inseln, die untereinander und mit den Ufern
verbunden sind (vgl. Abb. 4.1.
Abbildung 4.1: Das Königsberger Brückenproblem
Frage: Ist es möglich, einen Rundgang so zu machen, dass man jede Brücke genau einmal
passiert und zum Ausgangspunkt zurückkehrt? Die Frage wurde 1736 von Euler beantwortet.
Eine verwandte Fragestellung ist das Chinese Postman Problem: kann ein Postbote sein
Revier so abgehen, dass er keine Straße doppelt laufen muss?
Wir nennen einen zusammenhängenden Graphen eulersch, wenn ein geschlossener Pfad existiert, der jede Kante genau einmal durchäuft. Er heißt semi-eulersch, wenn ein Pfad existiert,
der alle Kanten durchläuft. Das Königsberger-Brücken-Problem besteht dann darin, für den in
Abb. 4.2 dargestellten Graphen zu entscheiden, ob er eulersch bzw. semi-eulersch ist.
Offensichtlich ist nicht jeder Graph eulersch, auch nicht jeder semi-eulersche Graph (vgl. Abb.
4.2.1). Das folgende Lemma liefert die Basis für die Charakterisierung eulerscher Graphen.
44
45
KAPITEL 4. EULERSCHE GRAPHEN
I1
U
U
1
I
2
2
Abbildung 4.2: Der Graph zum Königsberger Brückenproblem
1
3
2
4
5
1
9
10
12
8
6
9
7
8
2
10
11
6
7
5
3
4
Abbildung 4.3: Ein nicht-eulerscher, semi-eulerscher und ein eulerscher Graph
4.2
Charakterisierung eulerscher Graphen
Lemma 4.1. Sei G ein Graph mit d(v) ≥ 2 für alle v ∈ V. Dann enthält G einen Kreis.
Beweis:
√
i) G enthält eine Schlinge oder Mehrfachkanten
ii) G ist einfach. Konstruiere eine Kantenfolge v 0 , 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.
2
Satz 4.2. Ein zusammenhängender Graph ist genau dann eulersch, wenn d(v) gerade ist für
alle v ∈ V.
Beweis:
i) Ist P ein geschlossener eulerscher Pfad, so wird jeder Knoten genau so oft verlassen wie
erreicht und jedesmal auf verschiedenen Kanten. Daher ist d(v) gerade.
ii) Sei 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
4.1 enthält G einen Kreis C. Falls C schon alle Kanten von G enthält, ist die Behauptung
bewiesen. Andernfalls betrachte H = G r C. Da |E(H)| < |E(G)| und d(v) gerade für alle
v ∈ V (H), folgt per Induktion, dass jede Komponente von H einen geschlossenen eulerschen
Pfad hat, die zusammen mit C einen geschlossenen eulerschen Pfad von G ergeben.
KAPITEL 4. EULERSCHE GRAPHEN
46
2
Als Folgerung aus dem letzten Satz ergibt sich:
Korollar 4.3. Ein zusammenhängender Graph ist genau dann eulersch, wenn er Vereinigung
von kantendisjunkten Kreisen ist.
2
Korollar 4.4. Ein zusammenhängender Graph ist semi-eulersch genau dann, wenn höchstens
zwei Knoten ungeraden Grad haben (d.h. 0 oder 2)
Beweis: Ein semi-eulerscher Graph besitzt entweder einen geschlossenen eulerschen Pfad (d.h. er
ist eulersch) oder einen normalen eulerschen Pfad. Damit enthält er entweder keine Knoten mit
ungeradem Grad oder zwei. Umgekehrt ist der Graph nach Satz 4.2 entweder eulersch (und damit
semi-eulersch) oder er wird eulersch, wenn wir die beiden ungeraden Knoten durch eine zusätzliche
Kante verbinden. Im letzten Fall erhalten wir den gesuchten Euler-Pfad, wenn wir die zusätzlich
eingefügte Kante wieder entfernen.
2
Mit der gleichen Technik folgt:
Korollar 4.5. Sei G ein zusammenhängender Graph und 2k die Anzahl der ungeraden Knoten. Dann lässt sich die Kantenmenge E disjunkt zerlegen in E = P 1 ∪ . . . ∪ Pk , wobei jedes
Pi ein kantendisjunkter Pfad ist.
2
Beweis: Seien die ungeraden Knoten x 1 , . . . , xk , y1 , . . . , yk . Füge zu G zusätzliche Kanten (xi , yi )
für 1 ≤ i ≤ k hinzu. Der so entstandene Graph ist eulersch. Wie vorher erhalten wir die gewünschte
Zerlegung, wenn wir die zusätzlichen Kanten aus dem eulerschen Pfad entfernen.
2
Der Beweis des vorigen Satzes liefert einen Algorithmus zur Bestimmung eines eulerschen
Pfades. Die einzige Schwierigkeit, die es zu beachten gibt, ist die folgende. Sei G k der Teilgraph
der Kanten, die wir nach k Schritten noch nicht durchlaufen haben und x der aktuelle Knoten
(vgl. Abb. 4.4). Wir müssen vermeiden, eine Schnittkante zu wählen, da wir sonst nicht mehr in
die Zusammenhangskomponente zurückkommen. Es sei denn, dGk (x) = 1.
x
Abbildung 4.4: Auftreten einer Schnittkante bei der Konstruktion eines Eulerschen Pfades
4.2.1
Algorithmus zur Bestimmung eines Euler-Pfades
(1) Ausgehend von einem Knoten a, folge einem Kantenzug, der keine Kante zweimal benutzt.
47
KAPITEL 4. EULERSCHE GRAPHEN
(2) Falls im Schritt k ein Knoten x 6= a erreicht wird, verlasse x niemals auf einer Schnittkante
des von den unbenutzten Kanten induzierten Teilgraphen G k , es sei denn dGk (x) = 1.
(3) Falls x = a, verlasse a auf einer unbenutzten Kante, falls keine existiert, Stop.
Satz 4.6. Der von dem obigen Algorithmus erzeugte Pfad ist eulersch.
Beweis: (1) Die Regeln können eingehalten werden. Wenn wir x 6= a erreichen, so existiert immer
eine Kante in Gk , die mit x inzidiert, da dG (x) gerade und somit dGk (x) ungerade. Ist dGk (x) = 1,
so kann x auf dieser Kante verlassen werden. Ist d Gk (x) > 1, so existiert mindestens eine Kante,
die nicht Schnittkante in Gk ist. Andernfalls existieren zwei Schnittkanten in G k , die x mit zwei
Komponenten C und D verbinden (vgl. Abb. 4.2.1).
C
x
D
Da der Grad dGk (x) ungerade ist, die Anzahl der ungeraden Knoten in C aber gerade ist
(Lemma 1.4), muss C noch einen weiteren ungeraden Knoten enthalten. Entsprechend D. Da G k
aber genau zwei Knoten mit ungeradem Grad hat (den Startknoten a und den Knoten x), liefert
dies einen Widerspruch.
(2) Der in den ersten k Schritten erzeugte Graph ist der Anfang eines eulerschen Pfades. Denn
nach Erreichen eines Knotens x 6= a existieren genau zwei Knoten (x und a) in G k , die ungeraden
Grad haben. Nach Korollar 4.4 existiert dann noch ein Pfad in G k , der semi-eulersch ist.
2
Der Algorithmus kann so implementiert werden, dass er eine lineare Laufzeit von O(|V | + |E|)
hat.
Für das Chinese Postman Problem und andere Fragestellungen wird es von Interesse sein,
einen Graphen G = (V, E) durch Hinzufügen von Kanten eulersch zu machen. Dazu benötigen
wir noch einige andere Hilfsmittel, die wir in einem späteren Kapitel behandeln werden.
Herunterladen