• Keine Ergebnisse gefunden

Graphen und Algorithmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Graphen und Algorithmen"

Copied!
37
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Graphen und Algorithmen

Vorlesung #2: Minimale aufspannende Bäume

Dr. Armin Fügenschuh

(2)

Übersicht

Definition und Eigenschaften von Bäumen Abzählen von Bäumen

Aufspannende Bäume

Minimale Spannbäume und maximale Wälder Anwendungen von Spannbäumen

Optimalitätsbedingungen für Spannbäume Algorithmus von Kruskal

Algorithmus von Jarnik (Prim)

(3)

Definition 1:

Ein Baum ist ein zusammenhängender Graph, der keine Kreise enthält.

Beispiele:

Satz 2 (Charakterisierung von Bäumen):

Sei ein Graph. Die folgenden Aussagen sind äquivalent für : (i) ist ein Baum.

(ii) Pfade in sind eindeutig, d.h. für je zwei Knoten gibt es genau einen Pfad von nach .

(iii) ist ein minimaler zusammenhängender Graph, d.h. ist zusammenhängend, aber die Löschung einer beliebigen Kante führt zu einem unzusammenhängenden Graphen.

Bäume

G = (V, E) G G

G x, y ∈ V

x y

G G

G1 G2 G3

(4)

Ein Lemma für den Beweis von Satz 2

Definition 3:

Ein Knoten mit Grad 1 in einem Graphen heißt Endknoten oder Blatt von . Beispiel:

Lemma 4 (Endknotenlemma):

Ein Baum mit mindestens 2 Knoten enthält mindestens 2 Endknoten.

Beweis:

Sei ein Pfad maximaler Länge in . Die Länge von ist mindestens 1, also ist .

Behauptung: sind beides Endknoten.

Sei o.B.d.A. kein Endknoten.

Dann gibt es eine Kante , die enthält und von verschieden ist.

Dann ist entweder ein Knoten im Pfad , d.h. , und zusammen mit diesem Teil des Pfades ist ein Kreis. Widerspruch.

Oder , dann kann Pfad durch Hinzufügen von verlängert werden.

Ebenfalls ein Widerspruch.

Bemerkung: Lemma 4 gilt nicht in unendlichen Graphen.

G G

1 1

4

2

4

2

T = (V, E)

P = (v0, e1, v1, . . . , et, vt) T

P v0 != vt

v0, vt

v0

e = {v0, v} v0 e1 = {v0, v1}

v P v = vi, i ≥ 2 e

v /∈ {v0, . . . , vt} P e

...

(5)

Ein weiteres Lemma für den Beweis von Satz 2

Definition 5:

Sei ein Graph und ein Knoten von . Mit bezeichnen wir den Graphen, der entsteht, wenn man von Knoten und alle dazugehörigen Kanten entfernt.

Beispiel:

Lemma 6 (Baumwachstumslemma):

Sei ein Graph, der einen Endknoten enthält. Dann sind folgende Aussagen äquivalent:

(i) ist ein Baum.

(ii) ist ein Baum.

Beweis:

(i) (ii): Betrachte zwei Knoten in .

Da zusammenhängt, sind durch einen Pfad verbunden.

Dieser Pfad enthält keinen Knoten mit Grad 1 (außer evtl. ). Also enthält er nicht . Also ist der Pfad vollständig in , und ist somit zusammenhängend.

Da keinen Kreis enthält, kann auch keinen Kreis enthalten.

Damit ist ein Baum.

G v G G − v

G v

G v

G

G − v

⇒ x, y G − v

G x, y

x, y v

G − v G − v G − v

G

G − v

G − v G

v

(6)

Beweis von Satz 2

Satz 2 (Charakterisierung von Bäumen):

Sei ein Graph. Die folgenden Aussagen sind äquivalent für : (i) ist ein Baum.

(ii) Pfade in sind eindeutig, d.h. für je zwei Knoten gibt es genau einen Pfad von nach .

(iii) ist ein minimaler zusammenhängender Graph, d.h. ist zusammenhängend, aber die Löschung einer beliebigen Kante führt zu einem unzusammenhängenden Graphen.

(iv) ist ein maximaler Graph ohne Kreise, d.h. enthält keinen Kreis, und jeder Graph, der aus durch Hinzufügen einer weiteren Kante entsteht, enthält einen Kreis.

(v) ist zusammenhängend und es gilt Eulers Formel: . Strategie: zeige Äquivalenz von (ii), (iii), (iv), (v) zu (i).

Induktionsbeweis über die Knotenanzahl mittels Baumwachstumslemma.

Induktionsanfang: bemerke, dass alle Äquivalenzen für Graphen mit 1 Knoten wahr sind.

Sei ein Baum mit mind. 2 Knoten.

hat mind. 2 Endknoten (Endknotenlemma); sei einer davon, und sei sein Nachbar.

Induktionsannahme: Aussage ist wahr für .

Die Aussagen (i) (ii), (iii), (iv), (v) sind dann offensichtlich wahr.

Anmerkung: Für die Aussage (i) (iv) brauchen wir die Induktionsannahme für nicht.

ist zusammenhängend, d.h. je zwei Knoten sind mit einem Pfad verbunden.

Falls , so ist die Kante zusammen mit diesem Pfad ein Kreis.

v v!

G G

G − v

⇒ G − v

G x, y ∈ V

{x, y} ∈/ E {x, y}

G = (V, E) G G

G x, y ∈ V

x y

G G

G G

G G

|V | = |E| + 1

(7)

Beweis von Satz 2 (Fortsetzung)

Satz 2 (Charakterisierung von Bäumen):

Sei ein Graph. Die folgenden Aussagen sind äquivalent für : (i) ist ein Baum.

(ii) Pfade in sind eindeutig, d.h. für je zwei Knoten gibt es genau einen Pfad von nach .

(iii) ist ein minimaler zusammenhängender Graph, d.h. ist zusammenhängend, aber die Löschung einer beliebigen Kante führt zu einem unzusammenhängenden Graphen.

(iv) ist ein maximaler Graph ohne Kreise, d.h. enthält keinen Kreis, und jeder Graph, der aus durch Hinzufügen einer weiteren Kante entsteht, enthält einen Kreis.

(v) ist zusammenhängend und es gilt Eulers Formel: .

(ii) (i): Graph ist zusammenhängend (es existiert ein Weg zwischen allen Knotenpaaren).

Graph enthält keinen Kreis, da es sonst Knoten mit zwei verschiedenen Wegen gäbe.

(iii) (i): Graph ist zusammenhängend (wird in (iii) bereits so gefordert).

Graph kreisfrei, da es sonst eine Kante gibt, ohne die der Graph immer noch zusammenhängend wäre.

(iv) (i): Graph ist kreisfrei (wird in (iv) bereits so gefordert).

Graph zusammenhängend, da für alle der Graph mit einen Kreis enthält. Löscht man diese Kante, bleibt ein Pfad von nach .

x, y

{x, y}

{x, y} ∈/ E G {x, y}

x y

G = (V, E) G G

G x, y ∈ V

x y

G G

G G

G G

|V | = |E| + 1

(8)

Beweis von Satz 2 (Schluss)

Satz 2 (Charakterisierung von Bäumen):

Sei ein Graph. Die folgenden Aussagen sind äquivalent für : (i) ist ein Baum.

(ii) Pfade in sind eindeutig, d.h. für je zwei Knoten gibt es genau einen Pfad von nach .

(iii) ist ein minimaler zusammenhängender Graph, d.h. ist zusammenhängend, aber die Löschung einer beliebigen Kante führt zu einem unzusammenhängenden Graphen.

(iv) ist ein maximaler Graph ohne Kreise, d.h. enthält keinen Kreis, und jeder Graph, der aus durch Hinzufügen einer weiteren Kante entsteht, enthält einen Kreis.

(v) ist zusammenhängend und es gilt Eulers Formel: . (v) (i): Induktion über Knotenanzahl.

Sei zusammenhängend mit .

Die Summe aller Knotengrade ist dann . (Warum?) Also kann nicht jeder Knoten Grad 2 haben.

Der Grad jedes Knotens ist aber mindestens 1.

Somit gibt es einen Knoten , dessen Grad genau 1 ist, d.h. ist ein Endknoten.

Der Graph ist auch zusammenhängend, und erfüllt . Nach Induktionsannahme ist daher ein Baum.

Folglich ist auch ein Baum (Baumwachstumslemma).

G = (V, E) G G

G x, y ∈ V

x y

G G

G G

G G

|V | = |E| + 1

G |V | = |E| + 1 ≥ 2 2|V | − 2

v v

G! := G − v |V (G!)| = |E(G!)| + 1 G!

G

(9)

Wieviele verschiedene Bäume auf n Knoten gibt es?

Wann bezeichnen wir zwei Bäume als gleich? Beispiel:

Möglichkeit A: Zwei Bäume sind gleich, wenn in beiden die gleichen Knoten benachbart sind.

Möglichkeit B: Zwei Bäume sind gleich, wenn man eine eineindeutige (bijektive) Abbildung zwischen den Knoten definieren kann, so dass zwei Urbildknoten genau dann benachbart sind, wenn die entsprechenden Bildknoten auch benachbart sind.

Bei Möglichkeit A sprechen wir von „markierten (indizierten) Bäumen“, bei B von

„unmarkierten (unindizierten) Bäumen“

Satz 7 (Satz von Cayley, 1889):

Für Knoten gibt es genau markierte Bäume.

Im Falle von unmarkierten Bäumen ist keine exakte Formel bekannt, lediglich Abschätzungen.

Für den Satz von Cayley gibt es verschiedene Beweise.

Im Folgenden stellen wir einen Beweis von Prüfer (1916) vor.

Essenziell in seinem Beweis ist es, einen Baum geschickt „abzuspeichern“, zu kodieren.

Man spricht daher auch von der „Prüfer-Kodierung“ eines Baumes.

1 2 3

5 4

1 2 3

5 4

n nn−2

(10)

Wie speichert man einen Baum ab (z.B. im Rechner)?

Beispiel: Baum mit Knoten

Definition 8:

Eine Adjazenzmatrix eines Graphen mit Knoten ist eine Matrix

mit Einträgen , wobei genau dann, wenn Kante zu gehört.

Beispiel: Die Adjazenzmatrix zu obigem Baum ist gegeben durch

Speicherbedarf:

Bits für volle Matrix.

Es genügen Bits (da Matrix symmetrisch, und 0 auf Diagonale).

G n

G n n × n A = (aij)1≤i,j≤n aij ∈ {0,1} aij = 1 {i, j} G

0 2 1

4 5

3

7 9 8

6

n2

(n2 − n)/2 A :=

0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0

(11)

Abspeichern von Bäumen als Kantenliste

Beispiel: Baum mit Knoten

Die Spalten einer Matrix mit Einträgen in entsprechen den Kanten:

Speicherbedarf:

Je Eintrag Bits.

Insgesamt also Bits.

Für große ist . Diese Form der Speicherung ist nicht eindeutig:

Reihenfolge der Kanten in der Liste.

Reihenfolge der Knoten je Spalte.

Nächstes Ziel: Modifiziere Speicherung so, dass...

...sie eindeutig ist und

...außerdem Speicherplatz spart.

G n

{0, 1, . . . , n − 1}

0 2 1

4 5

3

7 9 8

6

! 7 8 9 6 3 0 2 6 6

9 9 2 2 0 2 4 1 5

"

!log2 n"

2(n − 1)"log2 n#

2(n − 1)"log2 n# $ (n2 − n)/2 n

2 × (n − 1)

(12)

Knoten 0 wird ausgezeichnet als „Wurzelknoten“.

Für jede Kante wird der Knoten zuerst genommen, der weiter von der Wurzel weg ist.

Daher auch der Name „Stammbaum“-Kodierung: unten stehen die „Eltern“, oben das „Kind“.

Die Kanten werden der Größe des ersten Knotens nach aufsteigend sortiert.

Beispiel: Baum mit Knoten und ausgezeichnetem Wurzelknoten 0

Die Einträge in der ersten Zeile der Matrix sind kein Zufall, denn:

Knoten 0 kommt nicht dort vor, da es nicht Kind eines anderen Knoten ist.

Jede andere Zahl kommt vor, da jedes Kind (oben) Eltern (unten) hat.

Keine Zahl kommt mehrfach vor, da jedes Kind von genau einem Elternknoten abstammt.

Speicherbedarf:

Erste Zeile enthält die Zahlen von 1 bis in dieser Reihenfolge. Speicherung nicht nötig.

Speicherplatz für zweite Zeile = Speicherbedarf insgesamt = . Aber auch die Stammbaum-Kodierung ist noch nicht optimal.

Nicht jeder Kode ergibt auch einen (Stamm-) Baum!

Wir können die Stammbaum-Kodierung aber noch etwas verfeinern...

Die „Stammbaum“-Kodierung

G n

0 2 1

4 5

3

7 9 8

6

! 1 2 3 4 5 6 7 8 9

6 0 0 2 6 2 9 9 2

"

1 0 2

4

5 3

7

9 8

6

n

(n − 1)"log2 n#

(13)

Zunächst die erweiterte Prüfer-Kodierung:

Knoten 0 wird ausgezeichnet als „Wurzelknoten“.

Für jede Kante wird der Knoten zuerst genommen, der weiter von der Wurzel weg ist.

Sortierung der Kanten:

Suche Knoten mit Grad 1 (Endknoten) und kleinster Knotennummer (verschieden Wurzel).

Lösche diesen Knoten und die zugehörige Kante.

Wiederhole diese Schritte, bis alle Knoten weg sind.

Beispiel: Baum mit Knoten und ausgezeichnetem Wurzelknoten 0

Bemerke, dass der rechte, untere Eintrag immer die Wurzel (Knoten 0) ist:

Wurzel wurde bei der Sortierung der Kanten in jeder Runde ausgelassen.

Letzte Kante muss also mit Wurzel inzident sein.

Vorteil der erweiterten Prüfer-Kodierung: brauche rechten, unteren Eintrag nicht speichern.

Aber: erste Zeile nicht mehr sortiert!

War der Preis zu hoch?

Die Prüfer-Kodierung

G n

1 2

4

5 3

7

9 8

6 0

! "

1 6

3 0

4 2

5 6

6 2

7 9

8 9

9 2

2 0

(14)

Prüfers Lemma

Lemma 9 (Baumrekonstruktionslemma):

Die zweite Zeile einer erweiterten Prüfer-Kodierung bestimmt eindeutig die erste.

Beispiel: was ist der Baum zu (2,4,0,3,3,1,0) ? Klar: Baum hat 8 Knoten.

Wer ist das Kind von Knoten 2?

1? Nein, denn dann wäre Knoten 1 gelöscht und käme nicht mehr als Vater vor.

2? Schleifen sind verboten!

3? Nein, siehe 1.

4? Nein, siehe 1.

5? Ja, denn Knoten 5 ist der kleinste, der später (rechts) nicht mehr vorkommt.

Nächster Eintrag: wer ist das Kind von Knoten 4, nachdem 5 gelöscht wurde?

1? Nein, siehe oben.

2? Ja, denn jetzt ist Knoten 2 der kleinste, der später nicht mehr vorkommt.

usw.

1 2

4

5 3

7

6

0

! "

5 2

2 4

4 0

6 3

7 3

3 1

1 0

(15)

Beweis von Prüfers Lemma

Lemma 9 (Baumrekonstruktionslemma):

Die zweite Zeile einer erweiterten Prüfer-Kodierung bestimmt eindeutig die erste.

Beweis:

Beobachtung aus vorherigem Beispiel:

Eintrag in erster Zeile der erweiterten Prüfer-Kodierung ist der kleinste Knoten, der ... nicht schon vorher in der ersten Zeile vorkam,

... und auch nicht in der zweiten Zeile an gleicher Stelle oder danach vorkommt.

Begründung:

Wenn dieser Eintrag (nennen wir ihn ) in der ersten Zeile aufgezeichnet wird, dann sind alle vorherigen Knoten in der ersten Zeile gelöscht,

ebenso wie die dazugehörigen Kanten der ersten Spalten.

Die verbleibenden Einträge der zweiten Zeile sind zu diesem Zeitpunkt Elternknoten, also insbesondere (noch nicht) Endknoten.

Damit haben wir also einen Algorithmus („finde den kleinsten Knoten, der...“), der aus jeder beliebigen zweiten Zeile stets in eindeutiger Weise eine erste Zeile konstruiert.

Wir können also Bäume mit nur noch Bits speichern.

Das entscheidende an dieser Sache kommt aber erst noch...

k

k − 1

(n − 2)"log2 n#

(16)

Optimalität der Prüfer-Kodierung

Satz 10 (Prüfers Optimalitätssatz):

Jede Folge von Zahlen zwischen 0 und der Länge ist eine Prüfer-Kodierung eines Baumes mit Knoten.

Beweis: Der Beweis erfolgt in zwei Schritten.

Schritt 1:

Erweitere die Folge zunächst um die (abgeschnittene) 0 am Ende.

Diese erweitere Folge nehmen wir als zweite Zeile der Prüfer-Matrix.

Rekonstruiere dann die fehlende erste Zeile (analog Baumrekonstruktionslemma):

Schreibe von links nach rechts diejenige Zahl in die erste Zeile, die ... nicht schon vorher in der ersten Zeile vorkam,

... und auch nicht in der zweiten Zeile an gleicher Stelle oder danach vorkommt.

Eine solche Zahl gibt es (insbesondere beim ersten Mal!), da in der Voraussetzung des Satzes höchstens von Zahlen („zwischen 0 und “) vorkommen können.

Schritt 2: Diese Matrix ist nun die erweiterte Prüfer-Kodierung eines Baumes mit Knoten.

Zusammenhang: von jedem Knoten kommen wir zur Wurzel. Denn:

Knoten ist nach Konstruktion irgendwo Kindknoten (also oben).

Sein Elternknoten (unten) wird nach Konstruktion irgendwo rechts wiederum als Kind vorkommen.

... und so weiter.

Spätestens ganz rechts, unten (Elternknoten) stoßen wir auf die Wurzel.

Baumeingenschaft folgt damit aus Eulers Formel, da wir Kanten und Knoten haben.

n − 1 n − 2 n

n n − 1 n

n − 1 n

v

n − 1

v

(17)

Folgerungen aus Prüfers Optimalitätsatz

Beweis für den Satz von Cayley:

Es gibt Prüfer-Kodierungen. Also gibt es genau so viele markierte Bäume.

Jeder markierte Baum auf Knoten kann eineindeutig einer Zahl zwischen 0 und zugeordent werden.

Damit kann ein Baum mit Bits kodiert werden.

Einfaches Verfahren, um einen zufälligen Baum zu generieren, so dass alle Bäume die gleiche Wahrscheinlichkeit haben:

Generiere Zufallszahlen zwischen 0 und .

„Dekodiere“ diese Folge wie beschrieben als Baum.

nn−2

n nn−2 − 1

!(n − 2) log2 n#

n − 2 n − 1

(18)

Aufspannende Bäume

Definition 11:

Sei ein Graph. Ein beliebiger Baum der Form mit wird aufspannender Baum (Spannbaum, Gerüst) des Graphen genannt.

Ein aufspannender Baum ist ein Untergraph von , der ein Baum ist und alle Knoten von enthält.

Bemerkung: Ein vollständiger Graph hat aufspannende Bäume. (Satz von Cayley) Beispiel: und seine unterschiedlichen aufspannenden Bäume.

Naheliegende Fragen:

Hat jeder Graph einen aufspannenden Baum?

Wie findet man einen solchen Baum, so es ihn gibt?

G = (V, E) (V, E!) E! ⊆ E

G G

Kn nn−2 K4 44−2 = 16

G

(19)

Welche Graphen haben Spannbäume?

Satz 12:

Ein Graph enthält genau dann einen Spannbaum, wenn er zusammenhängend ist.

Beweis:

Enthält einen Spannbaum , sind je zwei Knoten durch einen Weg in verbunden.

Da alle Kanten von auch in existieren, ist dieser Weg auch in . Also ist zusammenhängend.

Umgekehrt sei nun zusammenhängend. Wir unterscheiden drei Fälle.

1. Fall, . Dann ist der gesuchte Spannbaum selbst (vgl. Satz 2).

2. Fall, . Dann kann nicht zusammenhängend sein, Widerspruch.

3. Fall, . Dann ist kein Baum (nach Satz 2), und muss Kreis(e) enthalten.

Entferne eine beliebige Kante des Kreises.

Der übriggebliebene Graph mit ist auch zusammenhängend.

Entweder gilt nun und ist der gesuchte Spannbaum.

Oder wir wiederholen diese Reduktion (möglich, da weiterhin zusammenhängend).

G

G T T

T G G

G

|V | = |E| + 1 G

G = (V, E)

|V | < |E| + 1

|V | > |E| + 1 G G

e

G! = (V, E!) E! := E\{e}

|V | = |E!| + 1 G!

G!

(20)

Minimale aufspannende Bäume

Definition 13:

Ein bewerteter Graph (auch: gewichteter Graph) ist ein Graph , in dem jeder Kante eine reelle Zahl zugeordnet wird, die als Bewertung, Gewicht oder Länge von bezeichnet wird. Wir schreiben auch kurz: .

Ist ein Untergraph eines bewerteten Graphen, so ist die Bewertung die Summe der Bewertungen , wobei die Menge der Kanten von ist.

Definition 14:

Sei ein bewerteter Graph mit Gewichten . Die Aufgabe, einen

Spannbaum von mit minimalem (maximalem) Gewicht zu finden, oder zu entscheiden, dass keinen Spannbaum hat, wird als minimales (maximales) Spannbaumproblem bezeichnet.

Beispiel:

G = (V, E)

e w(e)

e

H w(H)

w(e1) + . . . + w(ek) {e1, . . . , ek} H

G = (V, E) w : E → R

G G

G = (V, E, w)

3 1

−2 1 2

4 3 2 6 1

6 7 3 8

0 9 3 6

4 2 4 8

(21)

Wälder und maximale Wälder

Definition 16:

Ein Wald ist ein kreisfreier Graph.

Bemerkung: Ein Baum kann somit als zusammenhängender Wald gesehen werden.

Beispiel:

Definition 15:

Sei ein bewerteter Graph mit Gewichten . Die Aufgabe, einen Wald in mit maximalem Gewicht zu finden, wird als maximales gewichtetes Waldproblem bezeichnet.

G w G

G

(22)

Et was Komplexitätstheorie

Definition 17:

Seien und Probleme. Problem kann linear auf Problem reduziert werden, falls es Funktionen und gibt, die in linearer Zeit ausgerechnet werden können, so dass aus einer Instanz von eine Instanz von macht, und aus einer Lösung von eine Lösung von macht.

Wenn linear auf und linear auf reduziert werden kann, dann heißen die beiden Probleme äquivalent.

P Q P Q

f g f

P

x f(x) Q g f(x)

x

P Q Q P

P Q

x f(x)

f

g

L(f(x)) L(x)

Problem:

Instanz:

Lösung:

P Q

x

L(x) f!

f!(x)

g! L(f!(x))

(Algorithmus):

(23)

Satz 16:

Maximales gewichtetes Waldproblem und minimales Spannbaumproblem sind äquivalent.

Beweis ( ):

Sei eine Instanz des max. gew. Waldprob.

Funktion erzeugt Instanz des min. aufsp. Baumprob.

...entferne aus alle Kanten mit ,

...setze für alle verbleibenden Kanten,

...füge minimale Kantenmenge (Gewicht egal) hinzu, so dass zusammenhängend.

Funktion erzeugt aus Lösung von eine Lösung von

...lasse alle Kanten aus weg ...übernehme alle anderen 1:1

ist Wald, da Untergraph von Baum . Fügt man weitere Kante zu hinzu, so hätte einen Kreis. Widerspruch.

Tauscht man Kante(n) in aus,

so muss man gleiches auch in tun.

Widerspruch zur Optimalität des Baums.

Also: max. gew. Waldproblem kann

Minimale Spannbäume und maximale Wälder

(G, w) f

G e w(e) < 0

-2

-2 -1

-2

0 0

-1

-1 -2 2

1

2

0 2 -1

0

1

(G, w) f (G!, w!)

w!(e) := −w(e)

F

(G!, w!)

G!

-2 -1

-1 -2

(G!, w!) (G, w)

g

1

2 -1

2

1

T K

K

F T

F T

T F

(24)

Satz 16:

Maximales gewichtetes Waldproblem und minimales Spannbaumproblem sind äquivalent.

Beweis ( ):

Sei eine Instanz des min. aufsp. Baumprob.

Funktion erzeugt Instanz des max. gew. Waldprob.

...setze , mit . Dann ist . Funktion erzeugt Lösung von aus Lösung von

...übernehme alle Kanten 1:1.

Entweder ist zusammenhängend.

Dann ist auch zusammenhängend.

Zudem ist kreisfrei (geerbt von ).

Da , enthält alle Knoten von . Somit ist ein Spannbaum.

Tauscht man Kanten in aus, um einen „minimaleren“ Spannbaum zu erhalten, so müsste man dieses auch in tun. Widerspruch zur Maximalität des Waldes.

Oder ist nicht zusammenhängend.

Dann ist nicht zusammenhängend, und es gibt keinen Spannbaum.

Also: max. gew. Waldproblem und

Minimale Spannbäume und maximale Wälder (Fortsetzung)

(G, w) f

G

f F

(G!, w!)

(G!, w!) (G, w)

g T

F T

T T

(G, w)

-1 -2 2

1

2

0 2 -1

0

1 2

1

-2

w!(e) := M − w(e) M := max{−w(e) : e ∈ E} + 1 w!(e) > 0

(G!, w!)

4 5 1

2

1

3 1 4

3

2 1

2

5

4 5 1

2

1

3 1 4

3

2 1

2

5 -1 -2

2 1

2

0 2 -1

0

1 2

1

-2

F

w!(e) > 0 T T

F F

G

(25)

Direkte Anwendungen des Spannbaumproblems

Entwurf physikalischer Netz-Systeme, bei denen Ausfallsicherheit keine Rolle spielt Beispiele:

Straßen Stromnetz

Wasser-, Gas- oder Ölrohrleitungsnetze Entwurf von Mikrochips

Vernetzung von Rechnern

Knoten: Teilnehmer / Erzeuger / Abnehmer

Kanten: Mögliche Verbindung zwischen Knoten Gewichte: Verbindungskosten

(26)

Indirekte Anwendungen des Spannbaumproblems

Optimale Nachrichtenweitergabe

Geheimdienst hat Agenten (Knoten)

Jeder Agent kennt einige andere Agenten (Kanten)

Wenn Agent mit Agent Nachricht tauscht, wird sie mit Wahrscheinlichkeit abgefangen Problem: Wie kann eine Nachricht an alle Agenten übermittelt werden, so dass sie mit

minimaler Wahrscheinlichkeit abgefangen wird?

Modell: Finde Spannbaum , der die Gesamtwahrscheinlichkeit eines Abfangens der Nachricht minimiert:

, äquivalent dazu:

Lösung: Setze Kantengewichte auf , und bestimme maximalen Spannbaum n

i j pi,j

1 −

#

{i,j}∈T

(1 − pi,j)

 → min !

{i,j}∈T

(1 − pi,j) → max ln(1 − pi,j)

pi,j

i j

T

(27)

Cluster-Analyse (Data-Mining)

Einteilen einer großen Zahl von einzelnen Datensätzen in wenige charakteristische Gruppen Berechne minimalen aufspannenden Baum

Weglassen der längsten Kanten liefert Cluster

Indirekte Anwendungen des Spannbaumproblems (Forts.)

k k + 1

(28)

Indirekte Anwendungen des Spannbaumproblems (Forts.)

Effizientes Speichern von großen Datenmengen

Gegeben sei ein zwei-dimensionales Datenfeld (Array)

Annahme: Unterschiede zwischen zwei Zeilen nur an (wenigen) Stellen Modell: Zeilen sind Knoten, Unterschiede sind Kantengewichte

Berechne minimalen Spannbaum

Speichere eine Referenzzeile vollständig, und nur die Unterschiede zwischen den Zeilenpaaren des Spannbaums

i, j ci,j

1 : 0 0 1 1 1 1 0 1 1 0 2 : 0 1 0 1 0 1 1 1 0 1 3 : 1 0 1 0 1 0 1 0 1 1 4 : 1 0 1 1 0 1 1 1 1 0 5 : 0 1 1 1 1 1 1 0 1 1

2

4 3

1

5 5

4 6

8

5 3 6

4 5

4

(29)

Definition 17:

Gegeben sein ein aufspannender Baum eines Graphen .

Löscht man eine Kante des Baums, so zerfällt die Knotenmenge in zwei disjunkte Teilmengen . Die Teilmenge von , die zu je einem Knoten in und inzident sind, wird Fundamentalschnitt von genannt.

Fügt man eine Nicht-Baumkante dem Baum hinzu, so definiert mit dem eindeutigen Pfad zwischen und im Baum einen Kreis, den Fundamentalkreis

von .

Satz 18 (Optimalitätskriterien für aufspannende Bäume):

Für einen aufspannenden Baum eines gewichteten Graphen sind äquivalent:

(i) ist ein minimaler Spannbaum.

(ii) (Schnitt-Optimalitätsbedingung) Für jede Baumkante gilt: ist die „billigste“

Kante im Fundamentalschitt von , d.h. für alle Kanten im Schnitt ist . (iii) (Pfad-Optimalitätsbedingung) Für jede Nicht-Baumkante gilt: ist die

„teuerste“ Kante im Fundamentalkreis von , d.h. für alle Kanten im Kreis ist . Bemerkungen:

Zwei Kriterien für optimale Spannbäume

T G = (V, E)

e V

V1, V2 E V1 V2

e

e

i j

e

i j

T T

e

e e! we ≤ we!

G = (V, E, w)

e

e e! we! ≤ we

T

e V1

V2

T

e = {i, j} e ∈ E\E(T)

e ∈ E\E(T) e ∈ E(T)

(30)

Beweis des Schnitt-Optimalitäts-Kriteriums

( ) Sei ein minimaler aufspannender Baum.

Angenommen, es gibt eine Kante , deren

Fundamentalschnitt eine Kante enthält mit . Dann lösche Kante und füge hinzu.

Dieses führt zu einem neuen Spannbaum mit geringem Gewicht als , im Widerspruch zur Optimalität von . ( ) Sei ein Spannbaum mit Schnittbedingung.

Sei ein minimaler Spannbaum mit . Dann gibt es eine Kante .

Fügt man zu hinzu, erhält man einen Kreis.

Der Kreis enthält eine Kante ,

die zudem im Fundamentalschnitt von in liegt.

Aus der Schnittbedingung in folgt . Da minimal ist, gilt (sonst könnte man durch ersetzen, und würde einen „minimaleren“

Spannbaum erhalten).

Zusammen gilt also .

Ersetze nun durch in , so ist auch minimaler Spannbaum, hat aber eine Kante mehr mit gemein.

Diese Argumentation kann nun so lange wiederholt werden, bis vollständig in umgewandelt wurde.

Also ist auch ein minimaler Spannbaum.

⇒ T

e! we > we!

e e!

T T

T

T! T! != T

e T!

e T

T we ≤ we!

T! we ≥ we! e!

e

we = we!

e! e T! T!

T

T! T

T

e e!

T 2 4

1 3

3

1

2 1

5 4

4

T

T!

e

e e! e! e ∈ E(T)

e ∈ E(T)\E(T!)

e! ∈ E(T!), e "= e!

(31)

Beweis des Pfad-Optimalitäts-Kriteriums

( ) Sei ein minimaler aufspannender Baum.

Angenommen, es gibt eine Kante , deren

Fundamentalkreis eine Kante enthält mit . Dann lösche Kante und füge hinzu.

Dieses führt zu einem neuen Spannbaum mit geringem Gewicht als , im Widerspruch zur Optimalität von . ( ) Sei ein Spannbaum mit Pfadbedingung.

Sei .

Wähle irgendeine Kante im Fundamentalschnitt von .

In gibt es einen eindeutigen Pfad zwischen und . Kante gehört zu diesem Pfad, da nur sowohl zum Fundamentalschnitt als auch zum Baum gehört.

Aus der Pfadbedingung folgt .

Da dieses für jede Kante im Fundamentalschnitt von gilt, erfüllt somit auch die Schnittbedingung.

Also ist ein minimaler Spannbaum.

⇒ T

e e!

T 2 4

1 3

3

1

2 1

5 4

4

we > we!

e e!

T T

T

e ∈ E(T)

e ∈ E(T)

e! ∈/ E(T)

e

e! = {i, j}

T i j

e e

T we ≤ we!

e! e

T T

T

e e! i

j

(32)

Folgerung aus der Schnittbedingung

Lemma 19:

Sei ein gewichteter Graph. Sei Untergraphen eines minimalen Spannbaums von . Sei eine Kante mit für alle mit . Dann gibt es einen minimalen Spannbaum von , der und enthält.

Beweis:

Betrachte eine Kante mit und . 1. Fall, .

Dann ist nichts zu zeigen (bzw. setze ).

2. Fall, .

Da ein aufspannender Baum ist, enthält einen Kreis.

Dieser Kreis enthält eine weitere Kante mit . Nach Voraussetzung ist einerseits .

Wegen Schnittbedingung ist billigste Kante im Fundamentalschnitt, d.h. . Zusammen also .

Somit ist auch mit ein minimaler Spannbaum.

e = {u, v} ∈ E e ∈ T

e

e !∈ T

T E(T) ∪ {e}

e! = {u!, v!}

e! we ≥ we!

we = we!

E(T!) := (E(T)\{e}) ∪ {e!} T!

T!

G = (V, E, w) U T

G e = {u, v} ∈ E, u ∈ U, v /∈ U we ≤ we! e! = {u!, v!}

u! ∈ U, v! ∈/ U G U

u ∈ U, v /∈ U we ≤ we! T! := T

e! != e, u! ∈ U, v! ∈/ U we ≤ we!

(33)

Der Algorithmus von Jarnik (Prim)

Eingabe: gewichteter, zusammenhängender Graph Ausgabe: minimaler Spannbaum von

(1) algorithm prim (2) wähle Knoten (3)

(4)

(5) while do (6) wähle Kante

für alle (7)

(8)

(9) end while (10) end algorithm

Beispiel:

G = (V, E, w) T G

e! = {u!, v!} ∈ E, u! ∈ V (T), v! ∈/ V (T)

e = {u, v} ∈ E, u ∈ V (T), v /∈ V (T), we ≤ we! v ∈ V

V (T) := {v} E(T) := ∅

|V (T)| < |V |

V (T) := V (T) ∪ {v} E(T) := E(T) ∪ {e}

16 18

5 8

10

30 2 3

a

b c

v = g

(34)

Jarniks Korrektheit und Laufzeit

Satz 20:

Der Algorithmus von Jarnik bestimmt einen minimalen aufspannenden Baum mit Komplexität .

Beweis:

In jedem Schritt wird eine Kante geringsten Gewichts gewählt wird, die eine Teilmenge der Knoten mit dem übrigen Knoten verbindet.

Nach Lemma 19 wird daher ein minimaler Spannbaum bestimmt (Induktionsargument).

Um auf Laufzeitkomplexität zu kommen, erzeugen wir eine Liste, in der zu jedem Knoten die „billigste“ Kante hinterlegt wird.

Die Erzeugung der Liste hat Komplexität.

Die Suche nach der „billigsten“ Kante der Liste hat Komplexität.

Diese Liste ist nach jeder Runde (while...end while) im Algorithmus zu aktualisieren.

Für diese Aktualisierung werden alle Kanten geprüft, die mit dem neu hinzugefügten Knoten von inzidieren. Die billigste Kante wird wiederum gespeichert.

Dieses hat Komplexität und wird insgesamt wiederholt (while-Schleife).

Komplexität des Algorithmus damit . O(|V |2)

O(|V |2)

u ∈ V e = {u, v} ∈ E O(|E|)

O(|V |)

T

O(|V |)

O(|E| + |V | · (|V | − 1) + |V | · (|V | − 1)) = O(|V |2)

|V | − 1

(35)

Eingabe: gewichteter, zusammenhängender Graph Ausgabe: minimaler Spannbaum von

(1) algorithm kruskal

(2) sortiere Kanten in nach Gewicht (3)

(4) while do

(5) wähle mit kleinstem Gewicht (6) if kreisfrei then

(7)

(8) end if (9)

(10) end while (11) end algorithm

Beispiel:

Der Algorithmus von Kruskal

G = (V, E, w) T G

E E(T) := ∅

e ∈ E E(T) ∪ {e}

E(T) := E(T) ∪ {e}

E := E\{e}

16 18

5 8

10

30 2 3

|E(T)| < |V | − 1

(36)

Kruskals Korrektheit und Laufzeit

Satz 21:

Der Algorithmus von Kruskal bestimmt einen minimalen aufspannenden Baum mit Komplexität .

Beweis:

In jedem Schritt wird eine Kante geringsten Gewichts gewählt wird, die mit den vorhandenen keinen Kreis bildet.

Also erfüllt die so konstruierte Kantenmenge die Pfadbedingung, und ist daher ein minimaler Spannbaum.

Die Sortierung der Kanten nach Gewicht ist in .

Mittels Tiefen- oder Breitensuche kann ein Kreis in einem Graphen mit höchstens Kanten in gefunden werden.

Dieses wird höchstens mal wiederholt.

Also ist die Komplexität . O(|V | · |E|)

O(|E| log |E|)

O(|E|log |E| + |V | · |E|) = O(|V | · |E|)

|E|

|V | O(|V |)

(37)

Literaturquellen

R.K. Ahuja, T.L. Magnanti, J.B. Orlin, Network Flows - Theory, Algorithms, and Applications, Prentice Hall, Upper Saddle River, 1993. (Kapitel 13, Seite 510-542)

J. Clark, D.A. Holton, Graphentheorie, Spektrum Akademischer Verlag, Heidelberg, 1994.

(Kapitel 2, Seite 51-92)

W.J. Cook, W.H. Cunningham, W.R. Pulleyblank, A. Schrijver, Combinatorial Optimization, Wiley Interscience, New York, 1998. (Kapitel 2, Seite 9-18)

T.H. Cormen, C.E. Leiserson, Introduction to Algorithms, 2nd Edition, McGraw-Hill Book Company, Boston, 2001. (Kapitel 23, Seite 561-579)

J. Erickson, Algorithms, Lecture Notes, University of Illinois at Urbana-Champaign, 2007.

(Kapitel 12)

D. Jungnickel: Graphen, Netzwerke und Algorithmen, BI Wissenschaftsverlag, Mannheim, 1994. (Kapitel 4, Seite 133-168)

B. Korte, J. Vygen: Combinatorial Optimization - Theory and Algorithms, 2nd Edition, Springer Verlag, Berlin, 2001. (Kapitel 6, Seite 117-137)

L. Lovasz, J. Pelikan, K. Vesztergombi, Discrete Mathematics - Elementary and Beyond, Springer Verlag, New York, 2003. (Kapitel 8&9, Seite 141-164)

J. Matousek, J. Nesetril, Invitation to Discrete Mathematics, Clarendon Press, Oxford, 1999.

(Kapitel 4, Seite 138-166)

Referenzen

ÄHNLICHE DOKUMENTE

Ein Knoten eines Graphen heißt verbindbar mit einem Knoten , wenn es einen Weg im Graphen gibt, der als Endknoten hat.. Ein Graph ist zusammenhängend, wenn je zwei

Die Aufgabe, einen Weg von nach mit minimaler Länge zu finden, wird als Problem des kürzesten

Umgekehrt: ersetzt man in jede Kante durch die Kanten eines kürzesten - -Weges in , so erhält man einen Steinerbaum gleichen Gewichts für. Kantendopplungen und

Wir haben gezeigt (Satz 11), dass eine Abbildung genau dann ein maximaler - -Fluss im Flussnetz ist, wenn sie die folgenden Eigenschaften erfüllt:. es gibt keinen

Ein schlichter Graph ist genau dann -fach zusammenhängend, wenn für jedes Knotenpaar von , , mindestens paarweise innerlich disjunkte - -Wege

Bemerkung: Da in einem Weg die Kanten per Definition paarweise verschieden sind, enthält ein Eulerscher Weg damit jede Kante genau einmal.. G = (V, E)

Bemerkung: Da abgesehen vom Endknoten kein Knoten wiederholt wird, enthält auch ein Hamiltonscher Zyklus jeden Knoten von genau einmal.. Hamiltonsche Graphen sind benannt nach

Ist ein Knoten des Graphen ein Endknoten einer Kante im Matching , dann wird als -gesättigt bezeichnet...