LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Berechne den optimalen (kürzesten, schnellsten) Weg
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Minimum Spanning Tree: MST
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
Kapitel 6: Klassifizierung von Sortiertechniken
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Seminar parallele Programmierung SS 2003
Algorithmen und Komplexität
Christian Schindelhauer
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Effiziente Algorithmen
Chromatische Zahl.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Informatik III Christian Schindelhauer Wintersemester 2006/07
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Konvexe Hüllen (Convex Hulls)
Gliederung der Vorlesung
Binärbäume.
Das Problem des Handlungsreisenden
Laufzeitverhalten beim Sortieren
Wiederholung TexPoint fonts used in EMF.
Christian Scheideler WS 2008
 Präsentation transkript:

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik 2 Graphalgorithmen Idee des Algorithmus von Prim  Verwende generischen Algorithmus  Nimm immer eine Kante mit minimalem Gewicht, die einen Knoten in Baum A mit einem Knoten verbindet, der nicht in Baum A ist und füge diese zu A hinzu  Die Kante ist eine leichte Kante, die Baum A mit einem weiteren Knoten verbindet  Damit ist sie sicher für A

LS 2 / Informatik 3 Graphalgorithmen Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A

LS 2 / Informatik 4 Graphalgorithmen Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A

LS 2 / Informatik 5 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 6 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 7 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 8 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 9 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 10 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 11 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 12 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 13 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 14 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 15 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 16 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 17 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 18 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 19 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 20 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 21 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 22 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 23 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 24 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 25 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 26 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 27 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 28 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 29 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 30 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 31 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 32 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 33 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 34 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 35 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen

LS 2 / Informatik 36 Graphalgorithmen Prioritätenschlange  Alle Knoten, die noch nicht zum Baum gehören, werden in Prioritätenschlange Q abgespeichert  key[v]: minimales Gewicht einer Kante, die v mit Baum verbindet  parent[v]: Vorgänger von v im Baum  Menge A implizit gegeben durch A = {(v,parent[v]) | v ∈ V –{r} –Q}

LS 2 / Informatik 37 Graphalgorithmen Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u

LS 2 / Informatik 38 Graphalgorithmen Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Zu Beginn ist jeder Knoten in der Schlange Q

LS 2 / Informatik 39 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen r bildet die Wurzel des Spannbaums

LS 2 / Informatik 40 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen u ist inzident zu leichter Kante, die Schnitt (Q,V-Q) kreuzt

LS 2 / Informatik 41 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen Gehört v noch nicht zum Baum und könnte über u billiger erreicht werden als bisher bekannt?

LS 2 / Informatik 42 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen Wenn ja, dann ist u neuer Vorgänger von v und key[v] gibt die neuen Kosten für v an

LS 2 / Informatik 43 Graphalgorithmen Implementierung  Q als binäre Halde Laufzeit  Initialisierung von Q: O(|V|)  Ausführung der while-Schleife: O(|V|)-mal  Extract-Min: O(log |V|)  Länge aller Adjazenzlisten: O(|E|)  Test v ∈ Q: O(1)  Änderung eines Schlüsselwertes: O(log |V|)  Gesamtlaufzeit: O(|V| log |V| + |E| log |V|) = O(|E| log |V|)

LS 2 / Informatik 44 Graphalgorithmen Satz 76 Der Algorithmus von Prim berechnet einen minimalen Spannbaum eines gewichteten, zusammenhängenden, ungerichteten Graphen in O(|E| log |V|) Zeit. Beweis Die Laufzeit haben wir bereits analysiert. Die Korrektheit folgt aus der Tatsache, dass wir nur sichere Kanten verwenden und dass der Algorithmus einen Baum berechnet

LS 2 / Informatik 45 Graphalgorithmen Graphtraversierung  Breitensuche, Tiefensuche Kürzeste Wege  Breitensuche, Algorithmus von Dijkstra, Algorithmus von Floyd-Warshall Minimale Spannbäume  Algorithmen von Kruskal und Prim

LS 2 / Informatik 46 Weiterführende Fragestellungen Grundlegende Fragestellungen  Kann man zeigen, dass ein Problem nicht effizient(er) gelöst werden kann?  Wie geht man mit Problemen um, die man nicht effizient lösen kann?

LS 2 / Informatik 47 Untere Schranken Vergleichsbasiertes Sortieren  Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er  (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge  berechnet, so dass a <… < a gilt und  (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt 1 n  (1)  (n)

LS 2 / Informatik 48 Untere Schranken Vergleichsbasiertes Sortieren  Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er  (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge  berechnet, so dass a <… < a gilt und  (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt Erste Beobachtung  MergeSort und Heapsort sind vergleichsbasiert (die Algorithmen führen zwar ≤ Operationen durch, wenn die Eingabe jedoch aus unterschiedlichen Zahlen besteht, kann man diese durch ersetzen) 1 n  (1)  (n)

LS 2 / Informatik 49 Untere Schranken Vergleichsbasiertes Sortieren  Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er  (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge  berechnet, so dass a <… < a gilt und  (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt Zweite Beobachtung  Jeder Vergleich benötigt  (1) Zeit.  Benötigt ein Algorithmus f(n) Vergleiche, so ist seine Laufzeit  (f(n))  Ziel: Zeige, dass jeder vergleichsbasierte Sortierer  (n log n) Vergleiche benötigt 1 n  (1)  (n)

LS 2 / Informatik 50 Untere Schranken Baumdarstellung eines vergleichsbasierten Sortierers  Wir geben Ablauf der Vergleiche an, die der Algorithmus bei Eingabe der Länge n ausführt  Der Algorithmus führt einen eindeutigen ersten Vergleich aus, dieser wird Wurzel des Baum  Je nach Ausgang des Vergleichs wird der Algorithmus auf unterschiedliche Weise fortgesetzt  Das linke Kind eines Knotens entspricht dem Vergleichsausgang a a  Jedes Blatt wird mit einer Reihenfolge  bezeichnet a < a ? ij j i i j a < a i j a > a i j

LS 2 / Informatik 51 Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3) InsertionSort(Array A) 1.for j  2 to length[A] do 2. key  A[j] 3. i  j-1 4. while i>0 and A[i]>key do 5. A[i+1]  A[i] 6. i  i-1 7. A[i+1]  key Untere Schranken

LS 2 / Informatik 52 Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3) InsertionSort(Array A) 1.for j  2 to length[A] do 2. key  A[j] 3. i  j-1 4. while i>0 and A[i]>key do 5. A[i+1]  A[i] 6. i  i-1 7. A[i+1]  key Untere Schranken a > a 1,2,3 nein ja a > a ja nein 1,3,2 … 3,1,

LS 2 / Informatik 53 Untere Schranken Beobachtungen  Die Tiefe eines Sortierbaums ist eine untere Schranke für die Worst-Case Laufzeit bei Eingabegröße n  Jeder Sortierbaum ist ein Binärbaum  Der Sortierbaum hat für jede Ausgabereihenfolge mindestens ein Blatt  Es gibt n! Ausgabereihenfolgen

LS 2 / Informatik 54 Untere Schranken Beobachtungen  Die Tiefe eines Sortierbaums ist eine untere Schranke für die Worst-Case Laufzeit bei Eingabegröße n  Jeder Sortierbaum ist ein Binärbaum  Der Sortierbaum hat für jede Ausgabereihenfolge mindestens ein Blatt  Es gibt n! Ausgabereihenfolgen Überlegung  Wie tief ist ein Binärbaum mit n! Blättern mindestens?  Ein Binärbaum der Tiefe k hat höchstens 2 Blätter (vollständiger Binärbaum)  Umgekehrt: Ein Binärbaum mit n! Blättern hat mindestens Tiefe log (n!) k

LS 2 / Informatik 55 Untere Schranken Stirling Formel  Für alle natürlichen Zahlen n gilt:

LS 2 / Informatik 56 Untere Schranken Stirling Formel  Für alle natürlichen Zahlen n gilt: Satz 78  Ein Binärbaum mit n! Blättern hat Tiefe  (n log n).

LS 2 / Informatik 57 Untere Schranken Korollar 79  Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von  (n log n). Beweis  Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe  (n log n).

LS 2 / Informatik 58 Untere Schranken Korollar 79  Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von  (n log n). Beweis  Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe  (n log n).  Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt.

LS 2 / Informatik 59 Untere Schranken Korollar 79  Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von  (n log n). Beweis  Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe  (n log n).  Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt.  Somit folgt das Korollar.

LS 2 / Informatik 60 Untere Schranken Korollar 79  Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von  (n log n). Beweis  Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe  (n log n).  Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt.  Somit folgt das Korollar.

LS 2 / Informatik 61 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen?  Will zeigen, dass jeder Algorithmus für Problem A Laufzeit  (f(n)) hat  Ich weiss, dass jeder Algorithmus für Problem B Laufzeit  (f(n)) hat Generelle Beweisidee  Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt

LS 2 / Informatik 62 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen?  Will zeigen, dass jeder Algorithmus für Problem A Laufzeit  (f(n)) hat  Ich weiss, dass jeder Algorithmus für Problem B Laufzeit  (f(n)) hat Generelle Beweisidee  Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt  Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A

LS 2 / Informatik 63 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen?  Will zeigen, dass jeder Algorithmus für Problem A Laufzeit  (f(n)) hat  Ich weiss, dass jeder Algorithmus für Problem B Laufzeit  (f(n)) hat Generelle Beweisidee  Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt  Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A  Dann hat jeder Algorithmus für Problem A eine Laufzeit von  (f(n))

LS 2 / Informatik 64 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen?  Will zeigen, dass jeder Algorithmus für Problem A Laufzeit  (f(n)) hat  Ich weiss, dass jeder Algorithmus für Problem B Laufzeit  (f(n)) hat Generelle Beweisidee  Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt  Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A  Dann hat jeder Algorithmus für Problem A eine Laufzeit von  (f(n))  (Wäre dies nicht so, dann gäbe es einen Algorithmus mit Laufzeit o(f(n)) für Problem A. Somit Kann ich Problem B mit Algorithmus C in o(f(n)) Zeit lösen. Widerspruch, da die Laufzeit für Problem B  (f(n)) ist)

LS 2 / Informatik 65 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen?  Will zeigen, dass jeder Algorithmus für Problem A Laufzeit  (f(n)) hat  Ich weiss, dass jeder Algorithmus für Problem B Laufzeit  (f(n)) hat Generelle Beweisidee  Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt  Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A  Dann hat jeder Algorithmus für Problem A eine Laufzeit von  (f(n))  (Wäre dies nicht so, dann gäbe es einen Algorithmus mit Laufzeit o(f(n)) für Problem A. Somit Kann ich Problem B mit Algorithmus C in o(f(n)) Zeit lösen. Widerspruch, da die Laufzeit für Problem B  (f(n)) ist)

LS 2 / Informatik 66 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt  (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen

LS 2 / Informatik 67 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt  (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut

LS 2 / Informatik 68 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt  (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert

LS 2 / Informatik 69 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt  (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert Dies ist aufgrund unserer unteren Schranke nicht möglich (streng genommen gilt dies natürlich nur für vergleichsbasierte Algorithmen; wir schummeln also hier ein wenig)

LS 2 / Informatik 70 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt  (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert Dies ist aufgrund unserer unteren Schranke nicht möglich (streng genommen gilt dies natürlich nur für vergleichsbasierte Algorithmen; wir schummeln also hier ein wenig)

LS 2 / Informatik 71 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten

LS 2 / Informatik 72 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten

LS 2 / Informatik 73 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten

LS 2 / Informatik 74 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten

LS 2 / Informatik 75 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Alle Punkte liegen auf der konvexen Hülle!

LS 2 / Informatik 76 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n)

LS 2 / Informatik 77 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit

LS 2 / Informatik 78 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit Da wir wissen, dass jeder (vergleichsbasierte) Sortieralgorithmus Laufzeit  (n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit  (n log n).

LS 2 / Informatik 79 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i  1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit Da wir wissen, dass jeder (vergleichsbasierte) Sortieralgorithmus Laufzeit  (n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit  (n log n).

LS 2 / Informatik 80 Untere Schranken 3SUM  Sei S eine Menge von n Integers. Gibt es 3 unterschiedliche Zahlen in S, die sich zu 0 aufsummieren? Vermutung  3SUM kann nicht in o(n²) Laufzeit gelöst werden Kommentar  Die Laufzeit hängt immer auch vom genauen Rechenmodell ab  In bestimmten Rechenmodellen gibt es Algorithmus, deren Laufzeit etwas besser ist als O(n²)

LS 2 / Informatik 81 Untere Schranken Kolinearitätsproblem  Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie liegen?

LS 2 / Informatik 82 Untere Schranken Kolinearitätsproblem  Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie liegen?

LS 2 / Informatik 83 Untere Schranken Wie testet man Kolinearität von 3 Punkten?

LS 2 / Informatik 84 Untere Schranken Wie testet man Kolinearität von 3 Punkten?  Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren.  Dann gibt  die Fläche des von den beiden Vektoren aufgespannten Parallelograms an x y x+y

LS 2 / Informatik 85 Untere Schranken Wie testet man Kolinearität von 3 Punkten?  Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren.  Dann gibt  die Fläche des von den beiden Vektoren aufgespannten Parallelograms an  Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0 x y x+y

LS 2 / Informatik 86 Untere Schranken Wie testet man Kolinearität von 3 Punkten?  Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren.  Dann gibt  die Fläche des von den beiden Vektoren aufgespannten Parallelograms an  Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0  Hat man nun drei Punkte a,b,c, so kann man Kolinerität testen, indem man testet, ob b-a und c-a linear abhängig sind x y x+y

LS 2 / Informatik 87 Untere Schranken Wie testet man Kolinearität von 3 Punkten?  Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren.  Dann gibt  die Fläche des von den beiden Vektoren aufgespannten Parallelograms an  Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0  Hat man nun drei Punkte a,b,c, so kann man Kolinerität testen, indem man testet, ob b-a und c-a linear abhängig sind x y x+y

LS 2 / Informatik 88 Untere Schranken Satz 81  Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von  (f(n)).

LS 2 / Informatik 89 Untere Schranken Satz 81  Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von  (f(n)). Beweis  Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n).

LS 2 / Informatik 90 Untere Schranken Satz 81  Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von  (f(n)). Beweis  Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n).  Wir entwerfen zunächst einen Algorithmus 3SUM-Fast für 3SUM mit Laufzeit g(n)+O(n), der Algorithmus Kolinear benutzt.

LS 2 / Informatik 91 Untere Schranken Satz 81  Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von  (f(n)). Beweis  Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n).  Wir entwerfen zunächst einen Algorithmus 3SUM-Fast für 3SUM mit Laufzeit g(n)+O(n), der Algorithmus Kolinear benutzt.

LS 2 / Informatik 92 3SUM-Fast(S) 1. P  2. Für jede Zahl x  S füge Punkt (x,x³) zu Punktmenge P hinzu 3. return Kolinear(P) Untere Schranken a=-1 c=0.75 b=0.25 h(x)=x³

LS 2 / Informatik 93 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n).

LS 2 / Informatik 94 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird.

LS 2 / Informatik 95 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird.  Wir müssen zeigen, dass die Punkte (a,a³), (b,b³) und (c,c³) genau dann kollinear sind, wenn a+b+c=0 ist (d.h. 3SUM erfüllt ist). Dabei sind a,b,c unterschiedliche Zahlen aus S

LS 2 / Informatik 96 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird.  Wir müssen zeigen, dass die Punkte (a,a³), (b,b³) und (c,c³) genau dann kollinear sind, wenn a+b+c=0 ist (d.h. 3SUM erfüllt ist). Dabei sind a,b,c unterschiedliche Zahlen aus S

LS 2 / Informatik 97 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus

LS 2 / Informatik 98 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus

LS 2 / Informatik 99 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus  Da a,b und c unterschiedliche Zahlen sind, wird dieses Polynom genau dann 0, wenn a+b+c=0 ist.

LS 2 / Informatik 100 Untere Schranken Behauptung  3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis  Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus  Da a,b und c unterschiedliche Zahlen sind, wird dieses Polynom genau dann 0, wenn a+b+c=0 ist.

LS 2 / Informatik 101 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss

LS 2 / Informatik 102 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)

LS 2 / Informatik 103 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)  Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))

LS 2 / Informatik 104 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)  Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))  Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)).

LS 2 / Informatik 105 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)  Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))  Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)).  Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist.

LS 2 / Informatik 106 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)  Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))  Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)).  Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist.  Also hat jeder Algorithmus für das Kolinearitätsproblem Laufzeit  (f(n))

LS 2 / Informatik 107 Untere Schranken Beweis von Satz 81 (fortgesetzt)  Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss  Sei also f(n)=  (n)  Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))  Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)).  Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist.  Also hat jeder Algorithmus für das Kolinearitätsproblem Laufzeit  (f(n))

LS 2 / Informatik 108 Untere Schranken Die $ Frage  Zeigen Sie, dass es keine Konstante c gibt, so dass das Rucksackproblem in O(n ) Zeit gelöst werden kann  Dabei dürfen die Eingabezahlen exponentiell in n groß sein! c

LS 2 / Informatik 109 Untere Schranken Zusammenfassung  Für einige (sehr wenige) Probleme können wir untere Schranken beweisen  Die Schranken können vom gewählten Modell abhängen  Will man zeigen, dass ein Problem A schwer ist und hat man bereits eine untere Schranke für ein anderes Problem B, so kann man einen Algorithmus entwickeln, der Problem A mit Hilfe von Problem B löst und so die Schwierigkeit der Probleme zueinander in Relation setzen  Es ist i.a. sehr schwer untere Schranken zu zeigen