14.07.2013 Aufrufe

Kapitel 6 Graphentheorie

Kapitel 6 Graphentheorie

Kapitel 6 Graphentheorie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Graphentheorie</strong><br />

Graphen: Allgemeines<br />

Eulersche Graphen<br />

Hamiltonsche Graphen<br />

<strong>Kapitel</strong> 6<br />

Graph- und Subgraphisomorphismus<br />

Planare Graphen<br />

Färben von Graphen<br />

Matchings von Graphen<br />

Bäume und Wälder<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 1/56


Graphen: Allgemeines (1)<br />

Graphen gehen auf den Mathematiker Leonhard Euler zurück, der im 18.<br />

Jahrhundert versuchte, das Königsberger Brückenproblem zu lösen.<br />

Gibt es in der Stadt Königsberg einen Rundweg, bei dem man alle<br />

sieben Brücken der Stadt über den Pregel genau einmal überquert<br />

und wieder zum Ausgangspunkt gelangt?<br />

Euler bewies, dass es keinen solchen Rundweg geben kann.<br />

Kein klassisches geometrisches Problem, sondern ein topologisches Problem,<br />

da es nicht auf die genaue Lage der Brücken ankommt, sondern nur darauf,<br />

welche Brücke welche Inseln miteinander verbindet.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 2/56


Graphen: Allgemeines (2)<br />

Definition: Ein (ungerichteter) Graph G ist ein Tupel (V, E), wobei V eine<br />

endliche nichtleere Menge von Knoten ist. Die Menge E = {(x, y) | x, y ∈ V }<br />

spezifiziert die Kanten zwischen Knoten. Es gilt: (x, y) := (y, x).<br />

Beispiel: Repräsentation eines Strassennetzes<br />

Die Knoten entsprechen den Ortschaften. Zwei Orte sind durch eine Kante<br />

verbunden, wenn es eine Strasse gibt, die diese beiden Orte auf direktem<br />

Wege verbindet.<br />

Wichtiges Problem: den kürzesten Weg zwischen zwei Orten A und B<br />

bestimmen.<br />

Beispiel: Modellierung von Bekanntschaften<br />

Die Knoten entsprechen den Personen. Zwei Personen sind durch eine Kante<br />

verbunden, wenn sie sich kennen. Hier wird angenommen, dass die Relation<br />

“kennen” symmetrisch ist.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 3/56


Graphen: Allgemeines (3)<br />

Definition: Der Grad deg(v) eines Knotens v ∈ V ist die Anzahl von Knoten,<br />

die durch eine Kante mit v verbunden sind.<br />

Beispiel: Ein vollständiger Graph Kn besteht aus n Knoten, die alle paarweise<br />

miteinander verbunden sind.<br />

In Kn haben alle Knoten v den Grad deg(v) = n − 1.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 4/56


Graphen: Allgemeines (4)<br />

Theorem: Für jeden Graphen gibt es mindestens zwei Knoten mit demselben<br />

Grad.<br />

Beweis: Siehe Beispiel auf Folie 3 dieses <strong>Kapitel</strong>s und Folie 13, <strong>Kapitel</strong><br />

“Kombinatorik”<br />

Theorem: Für jeden Graphen G = (V, E) gilt:<br />

<br />

v∈V<br />

deg(v) = 2|E|<br />

Beweis: In der Summe links wird jede Kante genau zweimal gezählt, zwar bei<br />

den beiden durch diese Kante verbundenen Knoten.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 5/56


Graphen: Allgemeines (5)<br />

Theorem: Für jeden Graphen G = (V, E) gilt: Die Anzahl der Knoten mit<br />

ungeradem Grad ist gerade.<br />

Beweis: Wir partitionieren die Knotenmenge V in Vg (Knoten mit geradem<br />

Grad) und Vu (Knoten mit ungeradem Grad). Es gilt:<br />

und somit<br />

2|E| = <br />

v∈V<br />

Vg ∪ Vu = V, Vg ∩ Vu = ∅<br />

deg(v) = <br />

v∈Vg<br />

deg(v) + <br />

<br />

gerade<br />

v∈Vu<br />

deg(v)<br />

Die zweite Summe müsste auch gerade sein. Also ist |Vu| gerade.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 6/56


Graphen: Allgemeines (6)<br />

Definition: Ein Graph G = (V, E) heisst zusammenhängend, wenn jeder<br />

Knoten u mit jedem Knoten v über eine Kette von Kanten miteinander<br />

verbunden ist.<br />

Nicht zusammenhängede Graphen enthalten zumindest zusammenhängende Teile.<br />

Definition: Sei k<br />

i=1 Vi die (eindeutig bestimmte) Partition von V , so dass<br />

zwei Knoten u und v genau dann durch einen Pfad verbunden sind, wenn sie<br />

im selben Teil der Partition liegen. Dann heissen die Teile Vi samt Kanten die<br />

(Zusammenhangs-)Komponenten.<br />

Beispiel: Der Graph besteht aus genau zwei Komponenten<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 7/56


Graphen: Allgemeines (7)<br />

Intuitiv: Ein Graph mit wenigen Kanten muss viele Komponenten enthalten.<br />

Theorem: Jeder Graph V = (V, E) enthält mindestens |V | − |E| Komponenten.<br />

Beweis: Induktion über m = |E|.<br />

m = 0. Jeder Knoten bildet seine eigene Komponente. Der Graph<br />

enthält somit genau |V | Komponenten.<br />

Induktionsschnitt: Graph G = (V, E) mit |E| = m + 1<br />

Sei e ∈ E eine beliebige Kante und E ′ = E \ {e}. Dann gilt |E ′ | = m<br />

und der Graph G ′ = (V, E ′ ) enthält nach Induktionsannahme<br />

mindestens |V | − m Komponenten. Durch die Hinzunahme von e:<br />

ändert sich entweder die Anzahl der Komponenten überhaupt nicht<br />

(wenn die beiden Endknoten der Kanten e in G ′ in derselben<br />

Komponente liegen) oder<br />

sie verringert sich um genau eins (wenn die beiden Endknoten der<br />

Kante e in G ′ in verschiedenen Komponenten sind)<br />

In jedem Fall folgt, dass der Graph G mindestens |V | − (m + 1)<br />

Komponenten enthält.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 8/56


Graphen: Allgemeines (8)<br />

Korollar: Für jeden zusammenhängenden Graphen G = (V, E) gilt:<br />

|E| ≥ |V | − 1<br />

Beweis: Da ein zusammenhängender Graph aus genau einer Komponente<br />

besteht, folgt aus dem letzten Satz, dass |V | − |E| ≤ 1 gelten muss.<br />

Bemerkung: Die Umkehrung der Aussage gilt i.A. nicht. Es gibt durchaus<br />

Graphen G = (V, E) mit |E| ≥ |V | − 1, die nicht zusammenhängend sind.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 9/56


Eulersche Graphen (1)<br />

Definition: Eine Eulertour in einem Graphen G = (V, E) ist ein Weg, der jede<br />

Kante genau einmal enthält und dessen Anfangs- und Endknoten identisch<br />

sind. Enthält ein Graph eine Eulertour, so nennt man ihn eulersch.<br />

Ist G eulersch, so ist der Grad deg(v) aller Knoten v ∈ V gerade, denn aus<br />

jedem Knoten geht man genauso oft “hinein” und “hinaus”. Es gilt sogar die<br />

Umkehrung.<br />

Theorem: (Euler) Ein zusammenhängender Graph G = (V, E) ist genau dann<br />

eulersch, wenn der Grad aller Knoten gerade ist.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 10/56


Eulersche Graphen (2)<br />

Beweis: Die eine Richtung ist bereits gegeben. Für die andere skizzieren wir<br />

einen algorithmischen Beweis. Man wählt einen Knoten v1 beliebig.<br />

Ausgehend von v1 durchläuft man Kanten in beliebiger Reihenfolge – mit der<br />

Einschränkung, dass man keine Kante mehr als einmal benutzt. Zu jedem<br />

Knoten = v1, den wir auf unserem Weg betreten, gibt es mindestens eine<br />

bisher unbenutzte Kante, über die wir ihn wieder verlassen können. Der so<br />

konstruierte Weg W1 muss daher irgendwann wieder in v1 enden. Es könnte<br />

allerdings sein, dass wir dann noch nicht alle Knoten durchlaufen haben. Da<br />

der Graph zusammenhängend ist, muss es in diesem Fall aber mindestens<br />

einen Knoten v2 in W1 geben, von dem eine noch nicht benutzte Kante<br />

ausgeht. In diesem Knoten starten wir den obigen Prozess erneut. Wir finden<br />

dann einen anderen Weg W2, der in v2 beginnt und endet. Die beiden Wege<br />

W1 und W2 können wir jetzt zu einem neuen Weg verschmelzen, indem wir<br />

erst in W1 das Teilstück von v1 zu v2 durchlaufen, dann nach W2<br />

überschwenken, diesen Weg komplett durchlaufen, und nach Rückkehr zu v2<br />

das verbliebene Teilstück von W1 durchlaufen. Enthält der so gefundene Weg<br />

noch immer nicht alle Knoten, wählen wir analog zu v2 einen Knoten v3 und<br />

wiederholen obiges Verfahren solange, bis der Weg alle Knoten enthält.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 11/56


Eulersche Graphen (3)<br />

Beispiel:<br />

a<br />

b<br />

f<br />

Wählen wir v1 = a, so könnte man als Weg W1 beispielsweise<br />

W1 = (a, b, e, f, a) finden. Der erste Knoten dieses Wegs, von dem eine Kante<br />

ausgeht, die sich nicht auf W1 befindet, ist b = v2. Als Weg W2 kann man<br />

dann W2 = (b, c, f, b) wählen. Die Verschmelzung von W1 und W2 führt zu<br />

dem Weg (a, b, c, f, b, e, f, a). Dieser enthält noch immer nicht alle Kanten.<br />

Wählt man v3 = c und W3 = (c, d, e, c), so erhält man die Eulertour<br />

(a, b, c, d, e, c, f, b, e, f, a).<br />

c<br />

e<br />

d<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 12/56


Eulersche Graphen (4)<br />

Beispiel: Das Königsberger Brückenproblem hat keine Lösung<br />

Achtung: Hier sind Multikanten zwischen zwei Knoten zugelassen<br />

Quiz: Wie viele Brücken müssten mindestens nachgebaut werden (und wo),<br />

damit eine Eulertour möglich ist?<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 13/56


Eulersche Graphen (5)<br />

Definition: Eine offene Eulertour oder Eulerweg ist dann gegeben, wenn die<br />

Identität von Start- und Endknoten nicht verlangt wird, d.h. statt eines Zyklus<br />

wird lediglich ein Weg verlangt, der jede Kante des Graphen genau einmal<br />

enthält.<br />

Theorem: (Euler) Ein zusammenhängender Graph G = (V, E) hat genau<br />

dann eine offene Eulertour, wenn der Grad aller Knoten bis auf zwei gerade<br />

ist. Die beiden Knoten mit ungeradem Grad dienen als Start- und Endknoten<br />

der offenen Eulertour.<br />

Beispiel: Das Königsberger Brückenproblem hat auch keine offene Eulertour.<br />

Beispiel: “Haus vom Nikolaus”<br />

Kann man diese Figur zeichnen, ohne den Stift abzusetzen und ohne eine<br />

Linie doppelt zu ziehen?<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 14/56


Hamiltonsche Graphen (1)<br />

Definition: Ein Hamiltonkreis in einem Graphen G = (V, E) ist ein Kreis<br />

(Startknoten = Endknoten), der alle Knoten von V genau einmal durchläuft.<br />

Enthält ein Graph einen Hamiltonkreis, so nennt man ihn hamiltonsch.<br />

Sir William Rowan Hamilton<br />

(1805–1865)<br />

Hamilton was ein irisches Universalgenie: In seiner Jugend entwickelte er den<br />

Ehrgeiz, genaue soviele Sprachen zu sprechen wie er Jahre alt war (dies hat er<br />

angeblich bis zu seinem 17ten Lebensjahr durchgehalten). Schon vor<br />

Beendigung seines Studiums wurde er zum Königlichen Irischen Astronomen<br />

ernannt. Die nach ihm benannten Kreise untersuchte er im Zusammenhang<br />

mit einem von ihm entwickelten Geschicklichkeitsspiel.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 15/56


Hamiltonsche Graphen (2)<br />

Hamiltonsche Graphen werden zur Modellierung vieler praktischer Probleme<br />

verwendet<br />

Beispiel: Problem des Handlungsreisenden<br />

Ein Handlungsreisender möchte eine Reihe von Städten besuchen, die<br />

untereinander durch Strassen verbunden sind. Es gibt genau dann eine<br />

Rundreise, bei der keine Stadt mehrfach besucht wird, wenn das Strassennetz<br />

hamiltonsch ist.<br />

Realistischere Variante: Man versieht die Kanten des Graphen mit Kosten<br />

(Entfernung, Fahrtkosten, etc.) und sucht nach einem Hamiltonkreis, der die<br />

Gesamtkosten minimiert.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 16/56


Hamiltonsche Graphen (3)<br />

Beispiel: Alle vollständigen Graphen Kn sind hamiltonsch<br />

Beispiel: Der Petersen-Graph enthält keinen Hamiltonkreis<br />

Theorem: (R. Karp, 1972) Das Entscheidungsproblem “Gegeben ein Graph<br />

G = (V, E), enthält G einen Hamiltonkreis?” ist N P-vollständig.<br />

Man kann wohl keinen Algorithmus finden, der entscheidet, ob ein Graph<br />

hamiltontsch ist und dessen Laufzeit polynomiell in der Grösse des Graphen<br />

(also in der Anzahl Knoten und Kanten) ist.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 17/56


Hamiltonsche Graphen (4)<br />

Intuitiv: Die Existenz eines Hamiltonkreises ist umso wahrscheinlicher, je mehr<br />

Kanten pro Knoten der Graph hat. Extremes Beispiel: Kn.<br />

Definition: Bei einem schlingenfreien Graphen gibt es keinen Knoten, der<br />

durch eine Kante mit sich selbst verbunden ist.<br />

Theorem: Erfüllt ein schlingenfreier Graph G = (V, E) die Bedingung<br />

deg(x) + deg(y) ≥ |V |, für alle x, y ∈ V mit x = y und (x, y) ∈ E<br />

so ist G hamiltonsch.<br />

Korollar: Ein schlingenfreier Graph G = (V, E) mit deg(v) ≥<br />

Knoten v ∈ V ist hamiltonsch.<br />

Korollar: Ein schlingenfreier Graph G = (V, E) mit |E| ≥ |V |−1<br />

2<br />

hamiltonsch.<br />

|V |<br />

2 für alle<br />

+ 2 ist<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 18/56


Hamiltonsche Graphen (5)<br />

Gray-Code: (nach Frank Gray) Folge von 2 n Binärcodewörtern mit n Bits, so dass<br />

sich zwei hintereinander folgende Codewörter lediglich in einem einzigen Bit<br />

unterscheiden.<br />

4-Bit Gray-Code (n = 4)<br />

Zahl Binärcode Gray-Code Zahl Binärcode Gray-Code<br />

0 0000 0000 8 1000 1100<br />

1 0001 0001 9 1001 1101<br />

2 0010 0011 10 1010 1111<br />

3 0011 0010 11 1011 1110<br />

4 0100 0110 12 1100 1010<br />

5 0101 0111 13 1101 1011<br />

6 0110 0101 14 1110 1001<br />

7 0111 0100 15 1111 1000<br />

Der natürliche Binärcode erfüllt die gewünschte Eigenschaft nicht<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 19/56


Hamiltonsche Graphen (6)<br />

Der n-bit Gray-Code entspricht einem Hamiltonkreis auf einem<br />

n-dimensionalen Hyperwürfel<br />

Beispiel: n = 3<br />

000 → 001 → 011 → 010 → 110 → 111 → 101 → 100<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 20/56


Hamiltonsche Graphen (7)<br />

Theorem: Der Gray-Code existiert für beliebiges n.<br />

Beweis: Wir geben ein konstruktives Verfahren an.<br />

n = 1: 0, 1<br />

Sei Gn der Gary-Code mit n Bits. Dann ergibt sich der Graycode Gn+1<br />

mit n + 1 Bits aus Gn mit vorangestelltem Bit 0 und Gn in<br />

umgekehrter Reihenfolge mit vorangestelltem Bit 1.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 21/56


Hamiltonsche Graphen (8)<br />

Direkte Umwandlung:<br />

Binärcode bm−1bm−2 . . .b1b0 −→ Gray-Code gm−1gm−2 . . .g1g0<br />

(⊕: exclusive OR Operation)<br />

gm−1 = bm−1<br />

gk = bk ⊕ bk+1, 0 ≤ k ≤ m − 2<br />

bm−1 bm−2 bm−3 · · · b2 b1 b0<br />

❄<br />

❥ ⊕<br />

❄<br />

❥ ⊕<br />

❄<br />

❥ ⊕<br />

gm−1 gm−2 gm−3 · · · g2 g1 g0<br />

❄<br />

❥ ⊕<br />

❄<br />

❥ ⊕<br />

❄<br />

❥ ⊕<br />

❄<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 22/56


Hamiltonsche Graphen (9)<br />

Beispiel: Zwei verschiedene Darstellungen derselben Matrix mit Bitebenen<br />

⎡ ⎤<br />

8 8 7 8<br />

⎢<br />

⎢8<br />

7 8 7<br />

⎥<br />

⎢ ⎥<br />

⎣7<br />

7 8 7⎦<br />

7 8 7 7<br />

⎡<br />

1 1 0<br />

⎢<br />

⎢1<br />

0 1<br />

⎢<br />

⎣0<br />

0 1<br />

⎤⎡<br />

1 0 0<br />

0<br />

⎥⎢<br />

⎥⎢0<br />

1<br />

⎥⎢<br />

0⎦⎣1<br />

1<br />

⎤⎡<br />

1 0 0<br />

0 1<br />

⎥⎢<br />

⎥⎢0<br />

⎥⎢<br />

0 1⎦⎣1<br />

⎤ ⎡<br />

0 1 0 0<br />

1 0 1<br />

⎥ ⎢<br />

⎥ ⎢0<br />

⎥ ⎢<br />

1 0 1⎦<br />

⎣1<br />

⎤<br />

0 1 0<br />

1 0 1<br />

⎥<br />

1 0 1⎦<br />

0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1<br />

b3 b2 b1 b0<br />

⎡<br />

1 1 0<br />

⎢<br />

⎢1<br />

0 1<br />

⎢<br />

⎣0<br />

0 1<br />

⎤⎡<br />

1 1 1<br />

0<br />

⎥⎢<br />

⎥⎢1<br />

1<br />

⎥⎢<br />

0⎦⎣1<br />

1<br />

⎤⎡<br />

1 1 0<br />

1 1<br />

⎥⎢<br />

⎥⎢0<br />

⎥⎢<br />

1 1⎦⎣0<br />

⎤ ⎡<br />

0 0 0 0<br />

0 0 0<br />

⎥ ⎢<br />

⎥ ⎢0<br />

⎥ ⎢<br />

0 0 0⎦<br />

⎣0<br />

⎤<br />

0 0 0<br />

0 0 0<br />

⎥<br />

0 0 0⎦<br />

0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0<br />

g3 g2 g1 g0<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 23/56


Hamiltonsche Graphen (10)<br />

Beispiel: Bitebenen Binärcode vs. Gray-Code. Der Gray-Code ermöglicht eine<br />

wirkungsvollere Kompression.<br />

b7: Bildebene 7 b6: Bildebene 6 b5: Bildebene 5 b4: Bildebene 4<br />

g7: Bildebene 7 (≡ b7) g6: Bildebene 6 g5: Bildebene 5 g4: Bildebene 4<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 24/56


Hamiltonsche Graphen (11)<br />

b3: Bildebene 3 b2: Bildebene 2 b1: Bildebene 1 b0: Bildebene 0<br />

g3: Bildebene 3 g2: Bildebene 2 g1: Bildebene 1 g0: Bildebene 0<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 25/56


Graph- und Subgraphisomorphismus (1)<br />

Definition: Zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) sind isomorph,<br />

wenn es eine bijektive Abbildung f : V1 → V2 gibt, so dass<br />

(a, c) ∈ E1 ⇔ (f(a), f(b)) ∈ E2. Dann ist f ein Isomorphismus zwischen G1<br />

und G2.<br />

Intuitiv: Zwei Graphen mit der gleichen Knotenzahl, die gleichartig verbunden<br />

sind, sind isomorph.<br />

Beispiel: Erkennung von Isomorphismen ist nicht immer einfach<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 26/56


Graph- und Subgraphisomorphismus (2)<br />

Definition: Ein Graph G1 = (V1, E1) heisst Teilgraph (Subgraph) von<br />

G = (V, E), falls V1 ⊆ V und E1 ⊆ E.<br />

G1, G2 und G3 sind Subgraphen von G. G3 ist Subgraph von G2.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 27/56


Graph- und Subgraphisomorphismus (3)<br />

Definition: Ein Subgraphisomorphismus von Graph G1 = (V1, E1) nach<br />

G2 = (V2, E2) ist ein Isomorphismus zwischen G1 und einem Teilgraphen von<br />

G2.<br />

Beispiel: Erkennung von Subgraphisomorphismen ist noch schwieriger<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 28/56


Graph- und Subgraphisomorphismus (4)<br />

Komplexität:<br />

Subgraphisomorphismus: N P-vollständig<br />

Graphisomorphismus: höchstwahrscheinlich nicht N P-vollständig;<br />

Es existiert jedoch kein Algorithmus in polynomieller Zeit (ausser für<br />

Spezialklassen von Graphen).<br />

Anwendungen: Vergleich von strukturellen Beschreibungen<br />

Vergleich von Molekülen<br />

Anwendungen im Bildverstehen (Vergleich zwischen Modell- und<br />

Szenenbeschreibung)<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 29/56


Planare Graphen (1)<br />

Formal ist ein Graph durch (V, E) vollständig beschrieben. Anschaulich erst<br />

dann, wenn ein Graph gezeichnet wird. Übersichtliche Zeichnung: Anzahl der<br />

Schnittpunkte von Kanten möglichst gering halten. Besonders übersichtlich<br />

wird die Zechnung, wenn solche Überkreuzungen total vermieden werden.<br />

Definition: Ein Graph heisst planar, wenn man ihn so zeichnen (man sagt<br />

auch: in die Ebene einbetten) kann, dass sich keine Kanten kreuzen. Ein<br />

ebener Graph ist ein planarer Graph zusammen mit seiner Darstellung in der<br />

Ebene.<br />

Beispiel: Ein planarer Graph (links) mit seiner Einbettung (rechts)<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 30/56


Planare Graphen (2)<br />

Beispiel: Vollständiger Graph K4 (links) ist planar. K5 (rechts) nicht planar:<br />

Sämtliche Versuche, ihn planar darzustellen, schlagen spätestens an der<br />

letzten Kante fehl.<br />

Quiz: Ist Kn eulersch?<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 31/56


Planare Graphen (3)<br />

Definition: Ein Graph G = (V, E) ist bipartit, wenn die Knotenmenge V in<br />

zwei Mengen A und B partitioniert werden kann, so dass alle Kanten einen<br />

Knoten aus A mit einem Knoten aus B verbinden.<br />

Definition: Ein vollständiger bipartiter Graph Km,n besteht aus zwei Mengen<br />

A und B mit m bzw. n Knoten, wobei jeder Knoten aus A mit jedem Knoten<br />

aus B durch eine Kante verbunden ist.<br />

Beispiel: K2,n, n beliebig, ist planar (links K2,3). K3,3 (rechts) nicht planar.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 32/56


Planare Graphen (4)<br />

Ebene Darstellungen planarer Graphen sind i.A. nicht eindeutig. Allerdings gelten gewisse<br />

Invarianzen. Beispielsweise ist in jeder beliebigen ebenen Darstellung die Anzahl der Gebiete<br />

(das äussere Gebiet zählt man mit) konstant.<br />

Theorem: (Eulersche Polyederformel) Sei G = (V, E) ein zusammenhängender Graph.<br />

Dann gilt:<br />

#Gebiete = |E| − |V | + 2<br />

Beweis: Durch Induktion über Anzahl der Knoten. Der Fall mit einem Knoten ist trivial. Für<br />

einen Graphen Gn = (Vn, En) mit n Knoten wählen wir einen beliebigen Knoten vn aus Vn:<br />

Gn = (Vn, En) = (Vn−1 ∪ {vn}, En−1 ∪ E ∗ )<br />

wobei Vn−1 = Vn\{vn}, E ∗ die von vn ausgehenden Kanten und En−1 die restlichen<br />

Kanten enthält. Jede beliebige ebene Darstellung von Gn beinhaltet eine ebene Darstellung<br />

von Gn−1 plus vn und E ∗ , wobei das Letztere deg(vn) − 1 zusätzliche Gebiete<br />

hervorbringt. Somit gilt:<br />

#Gebiete(Gn) = #Gebiete(Gn−1) + deg(vn) − 1<br />

= (|En−1| − |Vn−1| + 2) + |E ∗ | − 1<br />

= |En| − |Vn| + 2<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 33/56


Planare Graphen (5)<br />

Theorem: Für jeden planaren Graphen G = (V, E) mit |V | ≥ 3 Knoten gilt:<br />

|E| ≤ 3|V | − 6<br />

Beweis: Seien R die durch die Einbettung von G entstehenden Gebiete. Jedes<br />

Gebiet wird on mindestens 3 Kanten begrenzt und jede Kante begrenzt<br />

höchstens zwei Gebiete. Daraus folgt, dass 3|R| ≤ 2|E|. Und zusammen mit<br />

der eulerschen Formel erhalten wir:<br />

woaus das gewünschte Resultat folgt.<br />

2<br />

|E| ≥ |R| = |E| − |V | + 2<br />

3<br />

Beispiel: K5 ist nicht planar (|V | = 5, |E| = 5<br />

2 = 10)<br />

Beispiel: Mit dem obigen Satz können wir nicht zeigen, dass K3,3 (|V | = 6,<br />

|E| = 9) nicht planar ist. Dafür wird eine strengere Schranke für die Anzahl<br />

Kanten eines planaren Graphen benötigt.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 34/56


Planare Graphen (6)<br />

Definition: Ein Graph G1 wird Minor des Graphen G2 genannt, falls G1<br />

isomorph zu einem durch Knotenverschmelzung entstandenen Untergraphen<br />

von G2 ist. Knotenverschmelzung bedeutet hier, dass zwei benachbarte<br />

Knoten v1 und v2 unter Entfernung einer diese beiden Knoten verbindenden<br />

Kante zu einem Knoten v12 verschmolzen werden, wobei alle restlichen<br />

Kanten beibehalten werden.<br />

Beispiel: Der rechte Graph ist jeweils ein Minor des linken Graphen<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 35/56


Planare Graphen (7)<br />

Theorem: (Kuratowski) Ein Graph G ist genau dann planar, wenn G keinen<br />

Teilgraphen G ′ enthält, so dass K5 oder K3,3 ein Minor von G ′ ist.<br />

Beispiel: Der Petersen-Graph ist nicht planar.<br />

Der Petersen-Graph steht im Titelblatt von Journal of Graph Theory, Discrete<br />

Mathematics, und dem Buch “Graph Theory” von Harary.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 36/56


Planare Graphen (8)<br />

Bei Anwendungen planarer Graphen (z.B. Visualisierung von Strukturen oder<br />

Objekten) steht der algorithmische Aspekt im Vordergrund. Es exisitieren<br />

Verfahren, die in O(|V | + |E|) Zeit testen, ob ein Graph G = (V, E) planar<br />

ist, und falls ja, diesen auch in die Ebene einzubetten.<br />

Will man zusätzlich ästhetische Aspekte berücksichtigen, stösst man auf ein<br />

Forschungsgebiet mit zahlreichen ungelösten Problemen. Ein Grund liegt in<br />

der Schwierigkeit, überhaupt zu beschreiben, was man gerne hätte. Bsp. vier<br />

verschiedene Einbettungen desselben Graphen:<br />

Welches hiervon die richtige, schönste oder anschaulichste ist, hängt vom<br />

Kontext und nicht zuletzt auch vom Geschmack des Betrachters ab.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 37/56


Färben von Graphen (1)<br />

Definition: Eine Knotenfärbung eines Graphen G = (V, E) mit k Farben ist<br />

eine Abbildung c : V → [k], so dass gilt:<br />

c(u) = c(v) für alle Kanten (u, v) ∈ E<br />

Die chromatische Zahl χ(G) ist die minimale Anzahl Farben, die für eine<br />

Knotenfärbung von G benötigt wird.<br />

Beispiel: Der vollständige Graph Kn hat chromatische Zahl n. Kreise Cn<br />

gerader Länge n haben chromatische Zahl 2, Kreise Cn ungerader Länge n<br />

haben chromatische Zahl 3.<br />

2<br />

1<br />

3 4<br />

K5<br />

5<br />

2<br />

1 2<br />

1 2<br />

C6<br />

1<br />

2<br />

1<br />

1 2<br />

C5<br />

3<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 38/56


Färben von Graphen (2)<br />

Theorem: Ein Graph ist genau dann bipartit, wenn die chromatische Zahl 2<br />

ist.<br />

Bipartiter Graph mit Knotenteilmengen A und B schreibt man mit (A ⊎B, E).<br />

Theorem: Ein zusammenhängender Graph G = (V, E) ist genau dann<br />

bipartit, wenn er keinen Kreis ungerader Länge als Teilgraphen enthält.<br />

Beweis: Die eine Richtung folgt daraus, dass ungerade Kreise chromatische<br />

Zahl 3 haben, sie können daher in einem bipartiten Graphen nicht enthalten<br />

sein. Um die andere Richtung zu zeigen wählen wir einen beliebigen Knoten v<br />

aus. Alle Knoten, die einen geraden Abstand mit v haben (einschliesslich v<br />

selbst mit Abstand 0), werden mit 1 und alle anderen Knoten mit 2 gefärbt.<br />

Da keine Kreise ungerader Länge existieren, ist diese Färbung zulässig.<br />

Definition: Der Abstand zwischen zwei Knoten u und v ist die minimale<br />

Anzahl von aufeinander folgenden Kanten, um von u aus v zu erreichen.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 39/56


Färben von Graphen (3)<br />

Anwendungen von Knotenfärbung:<br />

Färben von politischen Landschaften: benachbarte Länder bekommen<br />

unterschiedliche Farben<br />

Visualisierung von Segmentierungsergebnissen in der Bildverarbeitung<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 40/56


Färben von Graphen (4)<br />

Theorem: (Vierfarbensatz) Für jeden planaren Graphen G gilt χ(G) ≤ 4.<br />

Ken Appel und Wolfgang Haken fanden 1977 einen Beweis mit Hilfe des<br />

Computers. Der Beweis reduzierte die Anzahl der problematischen Fälle<br />

von Unendlich auf 1.936 (eine spätere Version sogar 1.476), die durch<br />

einen Computer einzeln geprüft wurden.<br />

1996 konnten Neil Robertson, Daniel Sanders, Paul Seymour und Robin<br />

Thomas einen modifizierten Beweis finden, der die Fälle auf 633<br />

reduzierte. Auch diese mussten per Computer geprüft werden.<br />

Der Vierfarbensatz war das erste grosse mathematische Problem, das mit Hilfe<br />

von Computern gelöst wurde. Deshalb wurde der Beweis von einigen<br />

Mathematikern nicht anerkannt, da er nicht direkt durch einen Menschen<br />

nachvollzogen werden kann. Schliesslich muss man sich auf die Korrektheit<br />

des Compilers und der Hardware verlassen. Auch die mathematische Eleganz<br />

des Beweises wurde kritisiert (“Ein guter Beweis liest sich wie ein Gedicht –<br />

dieser sieht aus wie ein Telefonbuch!”).<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 41/56


Färben von Graphen (5)<br />

Es existiert ein einfacher Beweis für:<br />

Theorem: (Fünffarbensatz) Für jeden planaren Graphen G gilt χ(G) ≤ 5.<br />

Es existiert ein Algorithmus mit Laufzeit O(|V | 2 ), der einen planaren Graphen<br />

mit höchstens vier Farben färbt.<br />

I.A. ist das Färben von Graphen ein schwieriges Problem. Schon die scheinbar<br />

einfache Frage “Gegeben ein Graph G = (V, E), gilt χ(G) ≤ 3?” ist<br />

N P-vollständig.<br />

Greedy-Algorithmus: Wir besuchen die Knoten des Graphen in einer beliebigen<br />

Reihenfolge v1, v2, . . .,vn und ordnen dem aktuellen Knoten jeweils die<br />

kleinste Farbe zu, die noch nicht für einen benachbarten, bereits besuchten<br />

Knoten verwendet wird.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 42/56


Färben von Graphen (6)<br />

Definition: Eine Kantenfärbung eines Graphen G = (V, E) mit k Farben ist<br />

eine Abbildung c : E → [k], so dass gilt:<br />

c(e1) = c(e2) für zwei beliebige benachbarte Kanten e1 und e2<br />

Der chromatische Index χ ′ (G) ist die minimale Anzahl Farben, die für eine<br />

Kantenfärbung von G benötigt wird.<br />

Beispiel: Desargues-Graph: 3-regulärer Graph (alle Knoten mit Grad 3) mit<br />

20 Knoten und 30 Kanten<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 43/56


Färben von Graphen (7)<br />

Theorem: (Vizing) Sei ∆(G) der maximale Grad aller Knoten eines Graphen<br />

G. Es gibt einen Algorithmus, der die Kanten eines Graphen G = (V, E) in<br />

Zeit O(|V | · |E|) so färbt, dass gilt:<br />

∆(G) ≤ χ ′ (G) ≤ ∆(G) + 1<br />

Beispiel: Petersen-Graph. χ = 3 und χ ′ = 4.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 44/56


Matchings von Graphen (1)<br />

Definition: Eine Kantenmenge M ⊆ E eines Graphen G = (V, E) heisst<br />

Matching (Paarung), wenn je zwei beliebige verschiedene Kanten aus M<br />

disjunkt sind, d.h. sie besitzen keine gemeinsamen Knoten. Ist ein Knoten in<br />

einer Kante einer Paarung enthalten, so nennt man ihn von der Paarung<br />

überdeckt. Eine Paarung M nennt man maximal oder nicht erweiterbar, wenn<br />

man keine weitere Kante e aus E zu M hinzufügen kann, so dass M ∪ {e} eine<br />

Paarung ist. Gibt es in G keine Paarung, die mehr Elemente als M enthält, so<br />

nennt man M grösste Paarung. Ist jeder Knoten von V Element einer Kante<br />

von M (also von M überdeckt), so nennt man M eine perfekte Paarung.<br />

Beispiel: M = {e} für jede Kanten e ∈ E ist ein Matching<br />

Beispiel: Matching (links), perfektes Matching (Mitte)<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 45/56


Matchings von Graphen (2)<br />

Beispiel: Nicht jeder Graph enthält ein perfektes Matching; insb. bei Graphen<br />

mit ungerader Anzahl von Knoten. Es gibt sogar Graphen mit beliebig vielen<br />

Knoten, deren grösstes Matching aus einer einzigen Kante besteht. Dies sind<br />

z.B. die sog. Sterngraphen Sn.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 46/56


Matchings von Graphen (3)<br />

Beispiel: Heiratsproblem<br />

Es gibt sieben heiratswillige Frauen und auch sieben Männer, die als<br />

Ehepartner in Erwägung kommen. Jede Frau stellte eine Liste von potentiellen<br />

Ehepartnern zusammen und man stellte sich die Frage, ob alle Frauen<br />

verheiraten können, ohne Bigamie zu betreiben. Die potentiellen Ehepartner<br />

sind in Tabellenform angegeben. Rechts: Der Graph für dieses Problem mit<br />

der rot markierten Lösung.<br />

F1<br />

F2<br />

M2, M3<br />

M2, M3<br />

F3 M1, M3, M4, M5, M6<br />

F4<br />

F5<br />

F6<br />

F7<br />

M2, M3, M4, M7<br />

M4, M6<br />

M5, M7<br />

M2, M3, M7<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 47/56


Matchings von Graphen (4)<br />

Beispiel: Stellenvermittlung beim Arbeitsamt<br />

Dem Arbeitsamt liegen vier Stellenangebote und ebenso viele Stellengesuche<br />

vor. Bipartiter Graph (links): Jeder Knoten in der linken Teilmenge steht für<br />

einen Arbeitssuchenden und jeder in der rechten für eine offene Stelle. Eine<br />

Kante zwischen einem Arbeitssuchenden und einem Stellenangebot bedeutet,<br />

dass er für den entsprechenden Beruf qualifiziert ist.<br />

Mitte: Matching. Rechts: Grösstes Matching.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 48/56


Matchings von Graphen (5)<br />

Nachbarschaft eines Knotens v ∈ V :<br />

Γ(v) = { u ∈ V | (u, v) ∈ E }<br />

Nachbarschaft einer Knotenmenge X ⊆ V :<br />

Γ(X) = ∪v∈X Γ(v)<br />

Theorem: (Hall) Für einen bipartiten Graphen G = (A ⊎ B, E) gibt es genau<br />

dann ein Matching M der Kardinalität |M| = |A|, wenn gilt:<br />

|Γ(X)| ≥ |X| für alle X ⊆ A<br />

Korollar: Erfüllt ein bipartiter Graph G = (V, E) die Bedingungen des Satzes<br />

von Hall, so kann man ein Matching M der Kardinalität |M| = |A| in Zeit<br />

O(|V | · |E|) bestimmen.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 49/56


Bäume und Wälder (1)<br />

Definition: Ein Baum ist ein zusammenhängender, kreisfreier Graph. Ein<br />

Wald ist Graph, dessen Komponenten Bäume sind. Ein Knoten v eines<br />

Baumes mit Grad deg(v) = 1 heisst Blatt.<br />

Lema: Jeder Baum T = (V, E) mit |V | ≥ 2 Knoten enthält mindestens zwei<br />

Blätter.<br />

Lema: Ist T = (V, E) ein Baum mit |V | ≥ 2 Knoten und u ∈ V ein Blatt, so<br />

bleibt der Graph nach Entfernung von u und von u ausgehenden Kanten ein<br />

Baum.<br />

Theorem: Ist T = (V, E) ein Baum, dann gilt:<br />

|E| = |V | − 1<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 50/56


Bäume und Wälder (2)<br />

Lema: Sei T = (V, E) ein Baum und v ∈ V ein beliebiger Knoten. Nach<br />

Entfernung von v und von v ausgehenden Kanten entstehen k = deg(v)<br />

Bäume.<br />

Lema: Nach Entfernung einer Kante in einem Baum entstehen genau zwei<br />

Bäume.<br />

Das folgende Lemma zeigt, dass der Grund für das Zerfallen des Baumes die<br />

Kreisfreiheit ist. Wenn ein Graph einen Kreis enthält, kann man eine Kante<br />

aus dem Kreis entfernen, ohne dass der Zusammenhang verloren geht.<br />

Lema: Sei G = (V, E) ein zusammenhängender Graph und C ein Kreis in G.<br />

Dann gilt für alle im Kreis C enthaltenen Kanten e:<br />

Ge = (V, E\{e}) ist zusammenhängend<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 51/56


Bäume und Wälder (3)<br />

Wieviele Bäume mit 3 Knoten gibt es?<br />

2<br />

1 3<br />

2<br />

1 3<br />

2<br />

1 3<br />

Diese drei Bäume haben dieselbe Form, unterscheiden sich nur in den Namen; sie sind also<br />

isomorph zueinander. Bei der Untersuchung der Anzahl Bäume mit n Knoten muss man<br />

sich unterscheiden:<br />

Die Namen der Knoten sollen berücksichtigt werden (markierte Bäume)<br />

Nur die verschiedenen Formen zählen, also die Anzahl nicht-isomorpher Bäume<br />

Anzahl Bäume n = 2 n = 3 n = 4 n = 5 n = 6 n = 7 n = 8<br />

markiert 1 3 16 125 1296 16807 262144<br />

nicht-isomorph 1 1 2 3 6 11 23<br />

Obwohl es wesentlich mehr markierte Bäume gibt, ist es viel einfacher, ihre Anzahl zu<br />

bestimmen, als die der nicht-isomorphen Bäume.<br />

Theorem: (Cayley) Für n ≥ 2 Knoten gibt es genau n n−2 markierte Bäume.<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 52/56


Bäume und Wälder (4)<br />

Definition: Ein Binärbaum hat eine eindeutig bestimmte Wurzel und jeder<br />

Knoten hat höchstens zwei Kindknoten, wobei wir zwischen linkem und<br />

rechtem Kind unterscheiden.<br />

Wieviele Binärbäume mit n Knoten gibt es?<br />

n = 0: Ein leerer Binärbaum<br />

n = 1: Ein Binärbaum aus einem einzigen Knoten<br />

n = 4:<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 53/56


Bäume und Wälder (5)<br />

Theorem: Mit Bn, n ∈ N0 bezeichnen wir die Anzahl Binärbäume mit n<br />

Knoten. Es gilt:<br />

B0 = 0 und für n ≥ 1, Bn =<br />

n−1 <br />

k=0<br />

BkBn−k−1<br />

Beweis: Jeder Binärbaum mit n Knoten hat eine Wurzel, einen linken und<br />

einen rechten Unterbaum. Der linke und rechte Unterbaum enthält k<br />

(0 ≤ k ≤ n − 1) bzw. n − k − 1 Knoten. Es gibt somit Bk bzw. Bn−k−1<br />

Möglichkeiten für den linken und rechten Unterbaum.<br />

Die Zahlen Cn heissen Catalanzahlen, benannt nach dem belgischen<br />

Mathematiker Eugène Catalan. Es gilt:<br />

Bn = Cn =<br />

1<br />

n + 1<br />

<br />

2n<br />

n<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 54/56


Bäume und Wälder (6)<br />

Klammerausdrücke: Wieviele syntaktisch korrekte Klammerausdrücke mit n<br />

Klammerpaaren gibt es? Ein syntaktisch korrekter Ausdruck hat gleich viele<br />

öffnende wie schliessende Klammern, und an jeder Stelle ist die Anzahl der bis<br />

zu dieser Stelle vorkommenden öffenden Klammern grösser oder gleich der<br />

Anzahl der bis zu dieser Stelle vorkommenden schliessenden Klammern.<br />

n = 0: der leere Klammerausdruck<br />

n = 1: ()<br />

n = 2: ()(), (())<br />

n = 3: ()()(), ()(()), (())(), (()()), ((()))<br />

Die Anzahl syntaktisch korrekter Klammerausdrücke mit n Klammerpaaren lautet:<br />

Cn =<br />

1<br />

n + 1<br />

<br />

2n<br />

n<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 55/56


Bäume und Wälder (7)<br />

Triangulierungen eines n-Ecks: Wieviele Triangulierungen eines konvexen<br />

n-Ecks gibt es? Eine Triangulierung ist eine Partition des n-Ecks in Dreiecke<br />

durch sich gegenseitig nicht schneidende Diagonalen.<br />

Mit Tn, n ≥ 3, bezeichnen wir die Anzahl Triangulierungen eines konvexen n-Ecks.<br />

Es gilt:<br />

Tn = Cn−2 =<br />

<br />

1 2n − 4<br />

n − 1 n − 2<br />

<strong>Kapitel</strong> 6 “<strong>Graphentheorie</strong>” – p. 56/56

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!