• Keine Ergebnisse gefunden

Datenstrukturen und Algorithmen Vorlesung 16: Minimale Spannbäume (K23) Joost-Pieter Katoen

N/A
N/A
Protected

Academic year: 2022

Aktie "Datenstrukturen und Algorithmen Vorlesung 16: Minimale Spannbäume (K23) Joost-Pieter Katoen"

Copied!
144
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Minimale Spannbäume

Datenstrukturen und Algorithmen

Vorlesung 16: Minimale Spannbäume (K23)

Joost-Pieter Katoen

Lehrstuhl für Informatik 2 Software Modeling and Verification Group

https://moves.rwth-aachen.de/teaching/ss-18/dsal/

22. Juni 2018

(2)

Minimale Spannbäume

Übersicht

1 Spannbäume

2 Minimale Spannbäume

3 Greedy Algorithmen

4 Die Algorithmen von Kruskal und Prim

5 Implementierung und Komplexität

(3)

Minimale Spannbäume Spannbäume

Übersicht

1 Spannbäume

2 Minimale Spannbäume

3 Greedy Algorithmen

4 Die Algorithmen von Kruskal und Prim

5 Implementierung und Komplexität

(4)

Minimale Spannbäume Spannbäume

Spannbaum Probleme

Spannbaum

Ein Spannbaumeines ungerichteten, zusammenhängenden Graphen G ist einTeilgraph von G, der ein ungerichteter Baum ist und alle Knoten von G enthält.

Beispiel (Spannbaum Probleme)

I Verbinde alle Kunden durch Glasfaberkabeln

I Computernetzwerke verkabeln

I Verdrahtung von Schaltungen beim Chipdesign

I Erneuere die Straßenbeläge zwischen alle Flughafenterminals

I . . . .

(5)

Minimale Spannbäume Spannbäume

Spannbaum Probleme

Spannbaum

Ein Spannbaumeines ungerichteten, zusammenhängenden Graphen G ist einTeilgraph von G, der ein ungerichteter Baum ist und alle Knoten von G enthält.

Beispiel (Spannbaum Probleme)

I Verbinde alle Kunden durch Glasfaberkabeln

I Computernetzwerke verkabeln

I Verdrahtung von Schaltungen beim Chipdesign

I Erneuere die Straßenbeläge zwischen alle Flughafenterminals

(6)

Minimale Spannbäume Spannbäume

Glasfabernetz

I Müssen alle Leitungen erneuert werden?

I Wie wählt man die zu erneuernden Abschnitte aus?

I Gibt es eine eindeutige Lösung?

so daß

I Alle Kunden profitieren

I Jeder kann mit jedem über Glasfaber kommunizieren

I Sparsamkeit: keine doppelte Verbindungen

(7)

Minimale Spannbäume Spannbäume

Glasfabernetz

I Müssen alle Leitungen erneuert werden?

I Wie wählt man die zu erneuernden Abschnitte aus?

I Gibt es eine eindeutige Lösung?

so daß

I Alle Kunden profitieren

I Jeder kann mit jedem über Glasfaber kommunizieren

I Sparsamkeit: keine doppelte Verbindungen

(8)

Minimale Spannbäume Spannbäume

Glasfabernetz

I Müssen alle Leitungen erneuert werden?

I Wie wählt man die zu erneuernden Abschnitte aus?

I Gibt es eine eindeutige Lösung?

so daß

I Alle Kunden profitieren

I Jeder kann mit jedem über Glasfaber kommunizieren

I Sparsamkeit: keine doppelte Verbindungen

(9)

Minimale Spannbäume Spannbäume

Telefonleitungsnetz

(10)

Minimale Spannbäume Spannbäume

Zwei Abdeckungen

Alle Kunden sind angeschlossen

. . . und sind miteinander verbunden

(11)

Minimale Spannbäume Spannbäume

Zwei Abdeckungen

Alle Kunden sind angeschlossen . . . und sind miteinander verbunden

(12)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

In einem Baum sind je zwei Knoten durch genau einen Weg verbunden.

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Fügt man eine Kante in einem Baum hinzu, entsteht ein Kreis. Löscht man eine Kante, erhält man zwei Zusammenhangskomponenten.

(13)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

In einem Baum sind je zwei Knoten durch genau einen Weg verbunden.

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Fügt man eine Kante in einem Baum hinzu, entsteht ein Kreis. Löscht man eine Kante, erhält man zwei Zusammenhangskomponenten.

(14)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

In einem Baum sind je zwei Knoten durch genau einen Weg verbunden.

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Fügt man eine Kante in einem Baum hinzu, entsteht ein Kreis.

(15)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Beweis.

In jedem Baum sind je 2 Knoten durch einen eindeutigen Weg verbunden.

Löscht man eine Kante, wird mindestens einer dieser Wege unterbrochen. Damit ist der Restgraph nicht zusammenhängend. Fügt man eine Kante (u,v) hinzu, dann bekommt man zusätzlich zu den eindeutigen Weg im Baum zwischen uundv einen weiteren Weg zwischen uundv. Das ergibt ein Kreis.

1. Jeder Baum (mit mindestens 2 Knoten) besitzt mindestens 2 Blätter 2. Ein Baum mit n Knoten hat n−1 Kanten.

Beweis.

Hausaufgabe. Hinweis für 2: plücken Sie Blatt um Blatt ab.

(16)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Beweis.

In jedem Baum sind je 2 Knoten durch einen eindeutigen Weg verbunden. Löscht man eine Kante, wird mindestens einer dieser Wege unterbrochen.

Damit ist der Restgraph nicht zusammenhängend. Fügt man eine Kante (u,v) hinzu, dann bekommt man zusätzlich zu den eindeutigen Weg im Baum zwischen uundv einen weiteren Weg zwischen uundv. Das ergibt ein Kreis.

1. Jeder Baum (mit mindestens 2 Knoten) besitzt mindestens 2 Blätter 2. Ein Baum mit n Knoten hat n−1 Kanten.

Beweis.

Hausaufgabe. Hinweis für 2: plücken Sie Blatt um Blatt ab.

(17)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Beweis.

In jedem Baum sind je 2 Knoten durch einen eindeutigen Weg verbunden. Löscht man eine Kante, wird mindestens einer dieser Wege unterbrochen. Damit ist der Restgraph nicht zusammenhängend.

Fügt man eine Kante (u,v) hinzu, dann bekommt man zusätzlich zu den eindeutigen Weg im Baum zwischen uundv einen weiteren Weg zwischen uundv. Das ergibt ein Kreis.

1. Jeder Baum (mit mindestens 2 Knoten) besitzt mindestens 2 Blätter 2. Ein Baum mit n Knoten hat n−1 Kanten.

Beweis.

Hausaufgabe. Hinweis für 2: plücken Sie Blatt um Blatt ab.

(18)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Beweis.

In jedem Baum sind je 2 Knoten durch einen eindeutigen Weg verbunden. Löscht man eine Kante, wird mindestens einer dieser Wege unterbrochen. Damit ist der Restgraph nicht zusammenhängend. Fügt man eine Kante (u,v) hinzu, dann bekommt man zusätzlich zu den eindeutigen Weg im Baum zwischenu undv einen weiteren Weg zwischen uundv. Das ergibt ein Kreis.

1. Jeder Baum (mit mindestens 2 Knoten) besitzt mindestens 2 Blätter 2. Ein Baum mit n Knoten hat n−1 Kanten.

Beweis.

Hausaufgabe. Hinweis für 2: plücken Sie Blatt um Blatt ab.

(19)

Minimale Spannbäume Spannbäume

Einige Fakten bzgl. Bäume

Satz

Ein Baum ist minimal zusammenhängend und maximal kreisfrei.

Beweis.

In jedem Baum sind je 2 Knoten durch einen eindeutigen Weg verbunden. Löscht man eine Kante, wird mindestens einer dieser Wege unterbrochen. Damit ist der Restgraph nicht zusammenhängend. Fügt man eine Kante (u,v) hinzu, dann bekommt man zusätzlich zu den eindeutigen Weg im Baum zwischenu undv einen weiteren Weg zwischen uundv. Das ergibt ein Kreis.

1. Jeder Baum (mit mindestens 2 Knoten) besitzt mindestens 2 Blätter 2. Ein Baum mit n Knoten hatn−1 Kanten.

(20)

Minimale Spannbäume Spannbäume

Anzahl der Spannbäume

Spannbaum

Ein Spannbaumeines ungerichteten, zusammenhängenden Graphen G ist einTeilgraph von G, der ein Baum ist und alle Knoten vonG enthält.

Die Cayley Formel

Den vollständigen Graphen mit n Knoten hat nn−2 Spannbäume.

3 Spannbäume fürn=3 Knoten

(21)

Minimale Spannbäume Spannbäume

Anzahl der Spannbäume

Spannbaum

Ein Spannbaumeines ungerichteten, zusammenhängenden Graphen G ist einTeilgraph von G, der ein Baum ist und alle Knoten vonG enthält.

Die Cayley Formel

Den vollständigen Graphen mit n Knoten hat nn−2 Spannbäume.

(22)

Minimale Spannbäume Spannbäume

Anzahl der Spannbäume

Die Cayley Formel

Den vollständigen Graphen mit n Knoten hat nn−2 Spannbäume.

Beweis.

In der Vorlesung.

(23)

Minimale Spannbäume Minimale Spannbäume

Übersicht

1 Spannbäume

2 Minimale Spannbäume

3 Greedy Algorithmen

4 Die Algorithmen von Kruskal und Prim

5 Implementierung und Komplexität

(24)

Minimale Spannbäume Minimale Spannbäume

Kosten

Beispiel

I Finde den kostengünstigstenWeg, um eine Menge von Flughafenterminals, Städten, . . . zu verbinden

I Verdrahtung von Schaltungen mit geringstemEnergieverbrauch

I Verbinde alle Kunden kostengünstigdurch Glasfaberkabeln

I Computernetzwerke verkabeln

Das ist die Begründung für (kosten-) minimale Spannbäume!

(25)

Minimale Spannbäume Minimale Spannbäume

Kosten

Beispiel

I Finde denkostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten, . . . zu verbinden

I Verdrahtung von Schaltungen mit geringstemEnergieverbrauch

I Verbinde alle Kunden kostengünstigdurch Glasfaberkabeln

I Computernetzwerke verkabeln

Das ist die Begründung für (kosten-) minimale Spannbäume!

(26)

Minimale Spannbäume Minimale Spannbäume

Kosten

Beispiel

I Finde denkostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten, . . . zu verbinden

I Verdrahtung von Schaltungen mit geringstemEnergieverbrauch

I Verbinde alle Kunden kostengünstigdurch Glasfaberkabeln

I Computernetzwerke verkabeln

Das ist die Begründung für (kosten-) minimale Spannbäume!

(27)

Minimale Spannbäume Minimale Spannbäume

Kosten

Beispiel

I Finde denkostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten, . . . zu verbinden

I Verdrahtung von Schaltungen mit geringstemEnergieverbrauch

I Verbinde alle Kunden kostengünstigdurch Glasfaberkabeln

I Computernetzwerke verkabeln

Das ist die Begründung für (kosten-) minimale Spannbäume!

(28)

Minimale Spannbäume Minimale Spannbäume

Leitungskosten

Unterschiedliche Umgebungen verursachen unterschiedliche Kosten für die Verlegung von Kabeln.

(29)

Minimale Spannbäume Minimale Spannbäume

Was ist ein minimaler Spannbaum?

Kantengewichteter ungerichteter Graph

Ein (kanten-)gewichteter GraphG ist ein Tripel (V,E,W), wobei:

I (V,E) ein ungerichteter Graph ist, und

I W :E −→IR Gewichtsfunktion.W(e) ist dasGewicht der Kantee.

Gewicht eines Graphen

Das GewichtW(G0) des Teilgraphen G0 = (V0,E0) vom gewichteten Graph G ist:W(G0) = X

e∈E0

W(e).

Minimaler Spannbaum

Ein Spannbaum vom (ungerichteter, gewichteter, zusammenhängen) Graphen G mit minimalem Gewicht heißtMinimaler Spannbaum (minimum spanning tree, MST) vonG.

(30)

Minimale Spannbäume Minimale Spannbäume

Was ist ein minimaler Spannbaum?

Kantengewichteter ungerichteter Graph

Ein (kanten-)gewichteter GraphG ist ein Tripel (V,E,W), wobei:

I (V,E) ein ungerichteter Graph ist, und

I W :E −→IR Gewichtsfunktion.W(e) ist dasGewicht der Kantee.

Gewicht eines Graphen

Das GewichtW(G0) des Teilgraphen G0 = (V0,E0) vom gewichteten Graph G ist:W(G0) = X

e∈E0

W(e).

Minimaler Spannbaum

Ein Spannbaum vom (ungerichteter, gewichteter, zusammenhängen) Graphen G mit minimalem Gewicht heißtMinimaler Spannbaum (minimum spanning tree, MST) vonG.

(31)

Minimale Spannbäume Minimale Spannbäume

Was ist ein minimaler Spannbaum?

Kantengewichteter ungerichteter Graph

Ein (kanten-)gewichteter GraphG ist ein Tripel (V,E,W), wobei:

I (V,E) ein ungerichteter Graph ist, und

I W :E −→IR Gewichtsfunktion.W(e) ist dasGewicht der Kantee.

Gewicht eines Graphen

Das GewichtW(G0) des Teilgraphen G0 = (V0,E0) vom gewichteten Graph G ist:W(G0) = X

e∈E0

W(e).

Minimaler Spannbaum

(32)

Minimale Spannbäume Minimale Spannbäume

Minimaler Spannbaum – Beispiel

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2

15 15 9 9

Was ist ein minimaler Spannbaum?

(33)

Minimale Spannbäume Minimale Spannbäume

Minimaler Spannbaum – Beispiel

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2

15 15 9 9

(34)

Minimale Spannbäume Minimale Spannbäume

Minimaler Spannbaum – Beispiel

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2

15 15 9 9

Dasist einminimaler Spannbaum (mit Gesamtgewicht 46).

In diesem Fall ist es auch der einzige.

(35)

Minimale Spannbäume Minimale Spannbäume

Minimaler Spannbaum – Beispiel

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2

15 15 9 9

(36)

Minimale Spannbäume Minimale Spannbäume

Tiefen- oder Breitensuche?

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2 15 15 9 9

Tiefensuchbaum (von A gestartet) Gesamtgewicht: 55

A

B

C

D

E

F G

H 14

6

10 5 5

3 3

4 4

8 8

2 15 15 9 9

Breitensuchbaum (von A gestartet) Gesamtgewicht: 67

Der Tiefensuchbaum und der Breitensuchbaum sind zwar Spannbäume, aber nicht notwendigerweise minimale Spannbäume.

(37)

Minimale Spannbäume Greedy Algorithmen

Übersicht

1 Spannbäume

2 Minimale Spannbäume

3 Greedy Algorithmen

4 Die Algorithmen von Kruskal und Prim

5 Implementierung und Komplexität

(38)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(39)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(40)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(41)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(42)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(43)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung gefunden.

(44)

Minimale Spannbäume Greedy Algorithmen

Greedy Algorithmen

Wir werden zwei Greedy-Algorithmen für MST präsentieren.

Greedy-Algorithmen („ gierig“)

I Treffe in jedem Schritt eine Entscheidung, die bezüglich eines

„kurzfristigen“ Kriteriums optimal ist.

I Dieses Kriterium sollte günstig(→ Komplexität) auswertbar sein.

I Nachdem eine Wahl getroffen wurde, kann sienicht mehr rückgängig gemacht werden.

Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

I immer das lokale Optimum zu nehmen, führt nicht automatisch auch zum globalen Optimum.

I In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immerdie optimale Lösung

(45)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen Greedy kann gutsein:

I Bin Packing (62x Optimum) Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem. Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(46)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen

Greedy kann gutsein:

I Bin Packing (62x Optimum) Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem. Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(47)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen Greedy kann gutsein:

I Bin Packing (62x Optimum)

Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem. Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(48)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen Greedy kann gutsein:

I Bin Packing (62x Optimum) Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem.

Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(49)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen Greedy kann gutsein:

I Bin Packing (62x Optimum) Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem.

Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(50)

Minimale Spannbäume Greedy Algorithmen

Greedy?

Beispiel

Greedy kann beliebig schlecht werden:

I Knotenfärbungsproblem für Graphen Greedy kann gutsein:

I Bin Packing (62x Optimum) Greedy kann optimal sein:

I Minimaler Spannbaum, Kürzester-Weg-Problem.

Wann ist eine greedy Lösungsstrategie optimal?

I Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen

I Unabhängigkeit von anderen Teillösungen

(51)

Minimale Spannbäume Greedy Algorithmen

Das Inselreich der Stamm der Algolaner

(52)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Übersicht

1 Spannbäume

2 Minimale Spannbäume

3 Greedy Algorithmen

4 Die Algorithmen von Kruskal und Prim

5 Implementierung und Komplexität

(53)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Zwei Greedy minimaler Spannbaumalgorithmen

Eingabe: ein gewichteter zusammenhängender Graph G mitn Knoten Ausgabe: ein minimaler Spannbaum vonG

Prim’s Strategie

1. Wähle einen Startknoten.

2. Markiere die “billigste” vom bereits konstruierten Baum ausgehende Kante, falls sie keinen Kreis schließt

3. Wiederhole Schritt 2., so lange noch keine n−1 Kanten markiert sind. Kruskal’s Strategie

So lange noch keinen−1 Kanten markiert (d.h. selektiert) sind: 1. Wähle eine “billigste” noch unmarkierte Kante

2. Markiere sie, falls sie keinen Kreis mit anderen markierten Kanten schließt

(54)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Zwei Greedy minimaler Spannbaumalgorithmen

Eingabe: ein gewichteter zusammenhängender Graph G mitn Knoten Ausgabe: ein minimaler Spannbaum vonG

Prim’s Strategie

1. Wähle einen Startknoten.

2. Markiere die “billigste” vom bereits konstruierten Baum ausgehende Kante, falls sie keinen Kreis schließt

3. Wiederhole Schritt 2., so lange noch keine n−1 Kanten markiert sind.

Kruskal’s Strategie

So lange noch keinen−1 Kanten markiert (d.h. selektiert) sind: 1. Wähle eine “billigste” noch unmarkierte Kante

2. Markiere sie, falls sie keinen Kreis mit anderen markierten Kanten schließt

(55)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Zwei Greedy minimaler Spannbaumalgorithmen

Eingabe: ein gewichteter zusammenhängender Graph G mitn Knoten Ausgabe: ein minimaler Spannbaum vonG

Prim’s Strategie

1. Wähle einen Startknoten.

2. Markiere die “billigste” vom bereits konstruierten Baum ausgehende Kante, falls sie keinen Kreis schließt

3. Wiederhole Schritt 2., so lange noch keine n−1 Kanten markiert sind.

Kruskal’s Strategie

So lange noch keinen−1 Kanten markiert (d.h. selektiert) sind:

1. Wähle eine “billigste” noch unmarkierte Kante

(56)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Beispiel Prim’s und Kruskal’s Strategie

Das Inselreich der Algolaner. . . .

(57)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Die Beweisidee beruht auf den Kantentausch für Kreise: man kann aus einem Spannbaum B einen anderen SpannbaumB0 konstruieren, indem man eine neue Kante hinzufügt, die—daB ein Baum ist—einen Kreis schließt, und anschließend eine andere Kante aus diesem Kreis löscht.

(58)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Die Beweisidee beruht auf den Kantentausch für Kreise: man kann aus einem Spannbaum B einen anderen Spannbaum B0 konstruieren, indem man eine neue Kante hinzufügt, die—daB ein Baum ist—einen Kreis schließt, und anschließend eine andere Kante aus diesem Kreis löscht.

(59)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB.

Zu beweisen:B ist minimal. Mit Induktion. Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(60)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal.

Mit Induktion. Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(61)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(62)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen.

Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(63)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.

Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(64)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht.

Sie kann zu einem MST ergänzt werden. Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(65)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden.

Induktionsschritt: seiBk eine MST von G, die die erstek gewählte Kanten

{e1,. . .,ek} enthält. Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(66)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden.

Induktionsschritt: seiBk eine MST vonG, die die erstek gewählte Kanten {e1,. . .,ek}enthält.

Betrachte die (k+1). Kante ek+1. Falls ek+1Bk, folgt die Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(67)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden.

Induktionsschritt: seiBk eine MST vonG, die die erstek gewählte Kanten

{e1,. . .,ek}enthält. Betrachte die (k+1). Kanteek+1.

Fallsek+1Bk, folgt die Behauptung. Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(68)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden.

Induktionsschritt: seiBk eine MST vonG, die die erstek gewählte Kanten

{e1,. . .,ek}enthält. Betrachte die (k+1). Kanteek+1. Falls ek+1Bk, folgt die

Behauptung.

Seiek+16∈Bk. Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

(69)

Minimale Spannbäume Die Algorithmen von Kruskal und Prim

Korrektheit des Algorithmus von Kruskal

Der Algorithmus von Kruskal bestimmt einen minimalen Spannbaum.

Beweis.

Der Algorithmus liefert ein BaumB. Zu beweisen:B ist minimal. Mit Induktion.

Idee: die Mengen von Kanten die nachk Iterationen vorliegt, ist zu einem MST vonG zu ergänzen. Am Ende gilt dann die Behauptung.Basis: die erste markierte Kante hat ein minimales Gewicht. Sie kann zu einem MST ergänzt werden.

Induktionsschritt: seiBk eine MST vonG, die die erstek gewählte Kanten

{e1,. . .,ek}enthält. Betrachte die (k+1). Kanteek+1. Falls ek+1Bk, folgt die

Behauptung. Seiek+16∈Bk.

Das Hinzufügen vonek+1zuBk führt zu einem Kreis, daBk ein Baum ist. Der (eindeutige!) Kreis inBk enthält mindestens eine Kante e6∈B, daB ein Baum ist. Die Entfernung vone ausBk liefert wieder ein Baum. Es folgtW(e)>W(ek+1), ja sonst wäree vom Algorithmus vorek+1 gewählt worden. Damit folgt:W(Bk+1)6W(Bk). DaBk minimal ist (I.V.), istBk+1 minimal. Somit istBk+1 ein MST der die Kanten{e1,. . .,ek+1}enthält.

Referenzen

ÄHNLICHE DOKUMENTE

I Element getMin(PriorityQueue pq) gibt das Element mit dem kleinsten Schlüssel zurück; benötigt nicht-leere pq. I void delMin(PriorityQueue pq) entfernt das Element mit dem

I Die Partitionierung hat eine lineare Zeitkomplexität, d. eine Zerlegung im Verhältnis 9:1. alle Elemente im zu sortierenden Array E sind unterschiedlich 3.. Quicksort

Teile-und-Beherrsche Algorithmen (divide and conquer) teilen das Problem in mehrere Teilprobleme auf, die dem Ausgangsproblem ähneln, jedoch von kleinerer Größe

I Ein AVL-Baum ist ein balancierter BST, bei dem für jeden Knoten die Höhe der beiden Teilbäume höchstens um 1 differiert. I Bei AVL-Bäumen wird die Höhe der Teilbäume der

I Färben wir ihn aber rot, dann könnten wir eine Verletzung der Farbbedingungen bekommen (die Wurzel ist schwarz, rote Knoten haben keine roten Kinder).. ⇒ Wir färben den Knoten rot

2 Offene Adressierung Lineares Sondieren Quadratisches Sondieren Doppeltes Hashing.. Effizienz der

Wir werden zeigen, dass ein Fluss in G genau dann maximal ist, wenn sein Restnetzwerk keine augmentierende Pfade enthält. Dazu benutzen

Die Worst-Case-Laufzeit ist abhängig vom Wert eines maximalen Flusses, da der Wert des Flusses im schlimmsten Fall sich jeweils nur um eine Einheit erhöht. Joost-Pieter