Kapitel 5: Paradigmen des Algorithmenentwurfs

Werbung
Kapitel 5: Paradigmen des Algorithmenentwurfs
Gliederung
1.
2.
3.
4.
5.
6.
7.
8.
Grundlagen
Analyse der Laufzeit von Algorithmen
Untere Schranken für algorithmische Probleme
Sortier- und Selektionsverfahren
Paradigmen des Algorithmenentwurfs
Ausgewählte Datenstrukturen
Algorithmische Geometrie
Umgang mit algorithmisch schwierigen Problemen
•
•
•
5/4, Folie 1
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Divide and Conquer
Dynamisches Programmieren
Greedy-Algorithmen
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Gliederung
 ... weiteres Vorgehen
•
wir schauen uns ein Beispiel für einen Greedy-Algorithmen in der
Graphentheorie genauer an
•
Algorithmus von Kruskal zum Bestimmen minimal spannender
Bäume in ungerichteten kantengewichteten Graphen
... wir wählen einen anderen Blick auf diesen bekannten StandardAlgorithmus (/* Ziel: zeigen, dass dieser Algorithmus das leistet,
was er leisten soll */)
5/4, Folie 2
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Grundbegriffe
•
ungerichteter kantengewichteter Graph G = (V,E,w(.)), wobei gilt:
•
•
•
•
5/4, Folie 3
V ist die Menge der Knoten von G
E  { { u,v } | u,v  V }
w(.) ist eine Funktion, die jeder Kante in e  E ihr Gewicht, d.h. eine
Zahl w(e) zuordnet
das Gewicht w(G) eines ungerichteten kantengewichteten G entspricht
der Summe der Gewichte der Kanten von G
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Grundbegriffe (cont.)
5/4, Folie 4
•
ein ungerichteter Graph G ist zusammenhängend, wenn für jedes
Knotenpaar (u,v) gilt, dass es in G einen Pfad gibt, der vom Knoten u
zum Knoten v geht
•
ein ungerichteter Graph G ist kreisfrei, wenn es für keinen Knoten u
in G ein Pfad mit einer Länge größer 2 gibt, der vom Knoten u zum
Knoten u geht
•
ein ungerichteter Graph G ist ein Baum, wenn G zusammenhängend
und kreisfrei ist
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 zentraler Begriff
5/4, Folie 5
•
•
es sei G = (V,E) ein ungerichteter Graph
es sei G‘ = (V‘,E‘) mit V‘  V und E‘  E ein Baum
•
G‘ ist ein spannender Baum in G, falls V‘ = V gilt
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 grundlegende Eigenschaft spannender Bäume
•
•
es sei G = (V,E) ein ungerichteter Graph
es sei G‘ = (V‘,E‘) ein spannender Baum in G
•
dann gilt:
G‘ hat genau eine Kante weniger als es Knoten in G gibt, d.h. |E‘| = |V| - 1
... wenn G‘ weniger Kanten hat, kann G nicht zusammenhängend
sein, und wenn G‘ mehr Kanten hat, kann G nicht kreisfrei sein
5/4, Folie 6
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 grundlegende Eigenschaft zusammenhängender Graphen
•
es sei G = (V,E) ein ungerichteter zusammenhängender Graph
•
dann gilt:
Es gibt einen spannenden Baum G‘ = (V‘,E‘) in G.
... das zeigt man am besten induktiv über die Anzahl der Knoten in G
5/4, Folie 7
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 noch ein zentraler Begriff (cont.)
5/4, Folie 8
•
es seien G = (V,E) ein ungerichteter Graph und w(.) eine Gewichtsfunktion, d.h. (V,E,w(.)) ist ein ungerichteter Graph
•
es sei G‘ = (V‘,E‘) ein spannender Baum für G
•
G‘ ist ein minimal spannender Baum für G, falls es keinen spannenden
Baum G‘‘ = (V‘‘,E‘‘) für G gibt, so dass w(G‘‘) < w(G‘) gilt
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 interessierendes Optimierungsproblem (/* Minimierungsproblem */)
zulässige Eingaben:
Zulässige Ausgaben:
5/4, Folie 9
© 2014 Prof. Steffen Lange
-
•
ungerichteter zusammenhängender Graph
G = (E,V)
•
Gewichtsfunktion w(.)
•
einen minimal spannenden Baum G‘ in G
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Algorithmus von Kruskal zur Bestimmung minimal spannender Bäume
5/4, Folie 10
•
klassischer Greedy-Algorithmus (/* aber für ein Minimierungsproblem */)
•
bevor wir den Algorithmus beschreiben und analysieren, brauchen wir
noch eine Hilfsbegriff und ein „kleines“ Resultat
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Hilfsbegriff
5/4, Folie 11
•
•
es sei G = (V,E) ein ungerichteter Graph
es sei E‘  E
•
dann bezeichnen wir mit V(E‘) die Menge der Knoten, die Ecken von
Kanten in E‘ sind
•
den ungerichteten Graphen G‘ = (V(E‘)‘,E‘) nennen wir den durch E‘
induzierten Teilgraphen von G
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 ein „kleines“ Resultat
•
•
es sei G = (V,E) ein ungerichteter Graph
es sei E‘  E
•
dann gilt:
Wenn E‘ genau eine Kante weniger enthält, als es Knoten in G gibt,
und der durch E‘ induzierte Teilgraph G‘ = (V(E‘),E) kreisfrei ist, so ist
G‘ auch zusammenhängend, d.h. G‘ ist dann auch ein spannender
Baum in G.
... das zeigt man am besten induktiv über die Anzahl der Knoten in G
5/4, Folie 12
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Algorithmus von Kruskal (/* Details */)
•
•
es sei G = (V,E) ein ungerichteter Graph
es sei w(.) eine Gewichtsfunktion, die jeder Kante e  V ein Gewicht
w(e) zuordnet
1.
sortiere die Kanten in G aufsteigend nach ihrem Gewicht
(/* Ergebnis: e1,e2,...,en mit w(e1) ≤ w(e2) ≤ ... ≤ w(en) */)
2.
setze E‘ =  und i = 1
3.
while ( |E‘| < |V| - 1 ):
4.
5/4, Folie 13
•
teste, ob der von E‘‘ = E‘  { ei } induzierte Teilgraph
G‘‘= (V(E‘‘),E) kreisfrei ist
•
falls ja, setze E‘ = E‘‘
•
setze i = i +1
gib den durch E‘ induzierten Teilgraphen G‘ = (V‘,E‘) aus
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel
B
1
2
1
A
C
2
3
3
2
2
3
D
E
2
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 14
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C} }
1
A
C
2
3
3
2
2
3
D
E
2
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 15
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C},{B,C} }
1
A
C
2
3
3
2
2
3
D
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 16
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
E
Kapitel 5: Paradigmen des Algorithmenentwurfs
Minimal aufspannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C},{B,C} }
1
A
C
2
3
3
2
2
3
D
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 17
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
E
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C},{B,C},{A,E} }
1
A
C
2
3
3
2
2
3
D
E
2
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 18
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C},{B,C},{A,E},{B,D} }
1
A
C
2
3
3
2
2
3
D
E
2
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 19
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Beispiel (cont.)
B
1
2
E‘ = { {A,C},{B,C},{A,E},{B,D} }
1
A
C
2
3
3
2
2
3
D
E
2
{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}
5/4, Folie 20
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Analyse und Diskussion
•
der Algorithmus von Kruskal benötigt O(|E|*log(|E|)) + |E|*O(|V|) viele
Rechenschritte, um als Ergebnis einen kreisfreien Teilgraphen von G
mit höchstens |V| - 1 Kanten zu bestimmen
•
•
O(|E|*log(|E|)) viele Rechenschritte, um die Kanten von G nach
ihrem Gewicht zu sortieren
jeweils O(|V|) viele Rechenschritte, um zu überprüfen, ob der
durch E‘‘ induzierte Teilgraph G‘‘ = (V(E‘‘),E‘‘) kreisfrei ist (/* wir
wissen, dass |V(E‘‘)| ≤ |V| und |E‘‘| ≤ |V| -1 gilt und dass man mit
Hilfe der Tiefensuche in der Zeit O(|V‘‘|+|E‘‘|) überprüfen kann,
ob G‘‘ kreisfrei ist */)
... zu zeigen bleibt, dass der Algorithmus von Kruskal einen minimal
spannenden Baum in G bestimmt
5/4, Folie 21
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 das zugehörige Teilmengensystem
•
es sei G = (V,E) ein ungerichteter Graph
•
wir betrachten folgendes Teilmengensystem (E,U):
•
•
die verwendete endliche Menge E ist genau die Menge der
Kanten von G
U enthält alle Teilmengen E‘  E für die gilt:
•
5/4, Folie 22
der durch E‘ induzierte Teilgraph G‘ = (V(E‘),E‘) ist kreisfrei
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Anmerkungen
•
man kann sich leicht davon überzeugen, dass das Teilmengensysstem
(E,U) wirklich ein Teilmengensystem ist
•
wir wissen, dass es in U nur Teilmengen E‘ mit |E‘| ≤ |V| - 1 gibt
•
da G = (V,E) ein zusammenhängender Graph ist, wissen wir auch,
dass es in U eine bzgl.  maximale Teilmenge E‘ mit |E‘| = |V| - 1 gibt
... zu zeigen bleibt, dass das Teilmengensystem (E,U) die
Austauscheigenschaft hat
5/4, Folie 23
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Nachweis der Austauscheigenschaft
•
es seien E1 und E2 zwei Teilmengen aus U mit |E1| < |E2|
•
es seien G1 = (V(E1),E1) und G2 = (V(E2),E2) die von E1 und E2
induzierten kreisfreien Teilgraphen von G
•
wir interessieren uns für die Zusammenhangskomponenten des
Teilgraphen G1
•
man kann die Kanten des Teilgraphen G2 in zwei Klassen zerlegen:
•
•
5/4, Folie 24
Klasse 1: alle Kanten in G2, deren Ecken Knoten einer
Zusammenhangskomponente in G1 verbinden
Klasse 2: alle anderen Kanten in G2
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Nachweis der Austauscheigenschaft (cont.)
5/4, Folie 25
•
Beobachtung: in der Klasse 1 können nur so viele Kanten enthalten
sein, wie es Kanten in G1 gibt (/* andernfalls wäre G2 nicht kreisfrei */)
•
da G2 mehr Kanten als G1 hat, gibt es mindestens eine Kante e in G2,
die zur Klasse 2 gehört
•
wir setzen nun E‘ = E1  { e }
•
da die Ecken der Kante e zu unterschiedlichen Zusammenhangskomponenten des durch E1 induzierten Teilgraphen G1 gehören, muss
der von E‘ induzierte Teilgraph G‘ = (V(E‘),E‘) kreisfrei sein
•
also gehört die Teilmenge E‘ zu U
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 5: Paradigmen des Algorithmenentwurfs
Beispiel – Minimal spannende Bäume
 Zusammenfassung
5/4, Folie 26
•
der kanonischen Greedy-Algorithmus für das Teilmengensystem (E,U)
arbeitet offenbar genauso, wie der Algorithmus von Kruskal, bei
Eingabe eines zusammenhängenden ungerichteten Graphen G = (V,E)
und einer Gewichtsfunktion w(.)
•
da das zu G gehörende Teilmengensystem (E,U) die Austauscheigenschaft hat, bestimmt der kanonische Greedy-Algorithmus eine bzgl.
w(.) gewichtsminimale Teilmenge E‘ in U
•
also ist der vom Algorithmus von Kruskal bestimmte Teilgraph
G‘ = (V(E‘),E‘) ein minimal spannender Baum in G
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Herunterladen