26
4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches Programmieren Greedy-Algorithmen 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte Datenstrukturen 7. Algorithmische Geometrie 8. Umgang mit algorithmisch schwierigen Problemen

5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

Embed Size (px)

Citation preview

Page 1: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Gliederung

• Divide and Conquer• Dynamisches Programmieren• Greedy-Algorithmen

1. Grundlagen2. Analyse der Laufzeit von Algorithmen3. Untere Schranken für algorithmische Probleme4. Sortier- und Selektionsverfahren5. Paradigmen des Algorithmenentwurfs6. Ausgewählte Datenstrukturen7. Algorithmische Geometrie8. Umgang mit algorithmisch schwierigen Problemen

Page 2: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 2 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

• 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

... weiteres Vorgehen

Gliederung

... wir wählen einen anderen Blick auf diesen bekannten Standard-Algorithmus (/* Ziel: zeigen, dass dieser Algorithmus das leistet, was er leisten soll */)

Page 3: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 3 © 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:

• 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

Page 4: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 4 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Beispiel – Minimal spannende Bäume

Grundbegriffe (cont.)

• 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

Page 5: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 5 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Beispiel – Minimal spannende Bäume

zentraler Begriff

• 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

Page 6: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 6 © 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:

... wenn G‘ weniger Kanten hat, kann G nicht zusammenhängend sein, und wenn G‘ mehr Kanten hat, kann G nicht kreisfrei sein

G‘ hat genau eine Kante weniger als es Knoten in G gibt, d.h. |E‘| = |V| - 1

Page 7: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 7 © 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:

... das zeigt man am besten induktiv über die Anzahl der Knoten in G

Es gibt einen spannenden Baum G‘ = (V‘,E‘) in G.

Page 8: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 8 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Beispiel – Minimal spannende Bäume

noch ein zentraler Begriff (cont.)

• es seien G = (V,E) ein ungerichteter Graph und w(.) eine Gewichts-funktion, 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

Page 9: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 9 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

interessierendes Optimierungsproblem (/* Minimierungsproblem */)

• ungerichteter zusammenhängender Graph G = (E,V)

• Gewichtsfunktion w(.)

• einen minimal spannenden Baum G‘ in G

zulässige Eingaben:

Zulässige Ausgaben:

Beispiel – Minimal spannende Bäume

Page 10: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 10 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Algorithmus von Kruskal zur Bestimmung minimal spannender Bäume

• klassischer Greedy-Algorithmus (/* aber für ein Minimierungsproblem */)

• bevor wir den Algorithmus beschreiben und analysieren, brauchen wir noch eine Hilfsbegriff und ein „kleines“ Resultat

Beispiel – Minimal spannende Bäume

Page 11: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 11 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Hilfsbegriff

• 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

Beispiel – Minimal spannende Bäume

Page 12: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 12 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

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.

Beispiel – Minimal spannende Bäume

... das zeigt man am besten induktiv über die Anzahl der Knoten in G

Page 13: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 13 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

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 ):

1. teste, ob der von E‘‘ = E‘ { ei } induzierte Teilgraph G‘‘= (V(E‘‘),E) kreisfrei ist

2. falls ja, setze E‘ = E‘‘

3. setze i = i +1

4. gib den durch E‘ induzierten Teilgraphen G‘ = (V‘,E‘) aus

Beispiel – Minimal spannende Bäume

Page 14: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 14 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

2

1

3

3

23

Beispiel

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume

Page 15: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 15 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

2

1

3

3

23

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel (cont.)

E‘ = { {A,C} }

Beispiel – Minimal spannende Bäume

Page 16: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 16 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

1

3

3

23

Beispiel (cont.)

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

E‘ = { {A,C},{B,C} }

Beispiel – Minimal spannende Bäume

Page 17: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 17 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

1

3

3

23

Beispiel (cont.)

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

E‘ = { {A,C},{B,C} }

Minimal aufspannende Bäume

Page 18: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 18 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

2

1

3

3

23

Beispiel (cont.)

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

E‘ = { {A,C},{B,C},{A,E} }

Beispiel – Minimal spannende Bäume

Page 19: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 19 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

2

1

3

3

23

Beispiel (cont.)

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

E‘ = { {A,C},{B,C},{A,E},{B,D} }

Beispiel – Minimal spannende Bäume

Page 20: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 20 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

CA

D

B

E

1

2

2

2

2

1

3

3

23

Beispiel (cont.)

{A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

E‘ = { {A,C},{B,C},{A,E},{B,D} }

Beispiel – Minimal spannende Bäume

Page 21: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 21 © 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

Page 22: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 22 © 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:

• der durch E‘ induzierte Teilgraph G‘ = (V(E‘),E‘) ist kreisfrei

Page 23: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 23 © 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

Page 24: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 24 © 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:

• Klasse 1: alle Kanten in G2, deren Ecken Knoten einer Zusammenhangskomponente in G1 verbinden

• Klasse 2: alle anderen Kanten in G2

Page 25: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 25 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Beispiel – Minimal spannende Bäume

Nachweis der Austauscheigenschaft (cont.)

• 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 Zusammenhangs-komponenten 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

Page 26: 5/4, Folie 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 5: Paradigmen des Algorithmenentwurfs Gliederung Divide and Conquer Dynamisches

5/4, Folie 26 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik

Kapitel 5: Paradigmen des Algorithmenentwurfs

Beispiel – Minimal spannende Bäume

Zusammenfassung

• 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 Austauscheigen-schaft 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