SS14 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen
|
|
- Hansl Burgstaller
- vor 5 Jahren
- Abrufe
Transkript
1 SS14 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen Martin Dietzfelbinger Mai 2014 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8
2 Team: Vorlesung: Effiziente Algorithmen Univ.-Prof. Dr. Martin Dietzfelbinger (Sprechstunde: Montag, 16:45 18:00 u. n. Vereinb.) Übungen: Dipl-Inf. Martin Aumüller Praktika (fakultativ): Dipl.-Ing. Christopher Mattern FG Komplexitätstheorie und Effiziente Algorithmen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 1
3 Hörer: Ab Semestermitte: Informatikstudierende im 4. Semester. Material: Eigene Notizen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 2
4 Hörer: Ab Semestermitte: Informatikstudierende im 4. Semester. Material: Eigene Notizen und Folienkopien, Übungsblätter FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 2
5 Hörer: Ab Semestermitte: Informatikstudierende im 4. Semester. Material: Eigene Notizen und Folienkopien, Übungsblätter auf der folgenden Webseite: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 2
6 Hörer: Ab Semestermitte: Informatikstudierende im 4. Semester. Material: Eigene Notizen und Folienkopien, Übungsblätter auf der folgenden Webseite: Ebenso: Aktuelle Mitteilungen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 2
7 Hörer: Ab Semestermitte: Informatikstudierende im 4. Semester. Material: Eigene Notizen und Folienkopien, Übungsblätter auf der folgenden Webseite: Ebenso: Aktuelle Mitteilungen. Zugang auch über die FG-Seite. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 2
8 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Begleitend Bücher ansehen. Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten, Lösungen vortragen. Regelmäßig Übungen nacharbeiten. Semesterbegleitend! Bei Verständnisproblemen frühzeitig fragen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 3
9 Zeitaufwand? Beispielrechnung FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 4
10 Zeitaufwand? Beispielrechnung Leistungspunkte: 4 LP Entspricht 120 Zeitstunden. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 4
11 Zeitaufwand? Beispielrechnung Leistungspunkte: 4 LP Entspricht 120 Zeitstunden. Vorlesungszeit: 12 Vorlesungen, i. w. 2 Vorl. pro Woche Dazu: 6 Übungsdoppelstunden FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 4
12 Zeitaufwand? Beispielrechnung Leistungspunkte: 4 LP Entspricht 120 Zeitstunden. Vorlesungszeit: 12 Vorlesungen, i. w. 2 Vorl. pro Woche Dazu: 6 Übungsdoppelstunden ca. 30 Präsenzstunden + 54 Stunden Vor-/Nachbereitung von Vorlesung/Übung: 12 Stunden pro Woche plus 36 Stunden Prüfungsvorbereitung! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 4
13 Vorlesung Montag 13:00 14:30 Hu-Hs Donnerstag 13:00 14:30 Hu-Hs FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 5
14 Übung Montag 19:00 20:30 Sr HU 011 Dienstag 15:00 16:30 Sr HU 211/212 Mittwoch 13:00 14:30 Sr HU 117 (AuD-Übungen laufen weiter wie bisher!) Der Übungsbetrieb läuft ab KW 23, also ab 2.6. Übungsblätter stehen im Netz. Übung vor- und nachbereiten! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 6
15 Fakultativ! Praktikum Freitag, 13:00 14:30, U-Wochen, Sr K-Hs 2 Live -Programmierung in C++: Implementierung und Zeitmessung (hauptsächlich) zu Algorithmen aus der Vorlesung. Praktikumsanleitungen stehen im Netz. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 7
16 Prüfungsstoff: Vorlesung + Übungsaufgaben. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 8
17 Prüfungsstoff: Vorlesung + Übungsaufgaben. Prüfung: 30 Minuten mündlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 8
18 Prüfungsstoff: Vorlesung + Übungsaufgaben. Prüfung: 30 Minuten mündlich. Bonuspunkte über aktive Beteiligung an Übungen (Vorrechnen). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 8
19 Grundlagen, Voraussetzungen Vorlesung Algorithmen und Datenstrukturen (2V, alt) Wird vorausgesetzt! Prof. M. Kriesell: Grundlagen und Diskrete Strukturen, Vorlesung, WS 2013/14 Wird vorausgesetzt! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 9
20 Literaturvorschläge: T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms, 3rd ed., MIT Press, 2009 (Deutsche Ausgabe bei Oldenbourg) T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, 5. Aufl., Spektrum Akademischer Verlag, 2012 K. Mehlhorn, P. Sanders, Algorithms and Data Structures The Basic Toolbox, Springer-Verlag, 2008 (Deutsche Ausgabe erscheint Ende Mai 2014; Ansage in Vorlesung!) R. Sedgewick and K. Wayne, Algorithms, 4th ed., Addison-Wesley, 2011 (auch C-, C++, Java-Versionen, auch auf deutsch bei Pearson) (Part 5: Graph Algorithms, Addison-Wesley, 2003: separat). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 10
21 Literaturvorschläge (Forts.): R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004 (einführend) K. Weicker, N. Weicker, Algorithmen und Datenstrukturen, Springer Vieweg 2013 (einführend) S. Dasgupta, C. Papadimitriou, U. Vazirani, Algorithms, McGraw-Hill, 2007 J. Kleinberg, E. Tardos, Algorithm Design, Pearson Education, 2005 U. Schöning, Algorithmik, Spektrum Akademischer Verlag, 2001 Vorlesung folgt eigenem Plan, nicht direkt einem Buch. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 11
22 Ziele (des zweiten Teils) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
23 Ziele (des zweiten Teils) Kenntnis grundlegender Entwurfsmuster: Algorithmen-Paradigmen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
24 Ziele (des zweiten Teils) Kenntnis grundlegender Entwurfsmuster: Algorithmen-Paradigmen Kenntnis grundlegender, klassischer Algorithmen (und Datenstrukturen) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
25 Ziele (des zweiten Teils) Kenntnis grundlegender Entwurfsmuster: Algorithmen-Paradigmen Kenntnis grundlegender, klassischer Algorithmen (und Datenstrukturen) Verständnis für die Bedeutung der Effizienz bei Algorithmen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
26 Ziele (des zweiten Teils) Kenntnis grundlegender Entwurfsmuster: Algorithmen-Paradigmen Kenntnis grundlegender, klassischer Algorithmen (und Datenstrukturen) Verständnis für die Bedeutung der Effizienz bei Algorithmen (Mathematisches) Nachdenken über Algorithmen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
27 Ziele (des zweiten Teils) Kenntnis grundlegender Entwurfsmuster: Algorithmen-Paradigmen Kenntnis grundlegender, klassischer Algorithmen (und Datenstrukturen) Verständnis für die Bedeutung der Effizienz bei Algorithmen (Mathematisches) Nachdenken über Algorithmen: Korrektheitsanalyse: Wird das gestellte Problem gelöst? Laufzeitanalyse: Wie lange dauert es? Beherrschen von grundlegenden Techniken für diese beiden Aktivitäten. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 12
28 Themen: 8. Divide-and-Conquer Multiplikation ganzer Zahlen: Algorithmus von Karatsuba Matrixmultiplikation: Algorithmus von Strassen Mergesort, exakte Analyse Rekurrenz(un)gleichungen, insbesondere: Master-Theorem Schneller randomisierter Selection-Algorithmus: Quickselect Selection in Zeit O(n) Algorithmus von BFPRT (Blum, Floyd, Pratt, Rivest, Tarjan) Schnelle Fourier-Transformation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 13
29 9. Durchsuchen und Strukturanalyse von Graphen Breitensuche Erweiterte Tiefensuche (Kantenklassifikation) Kreisfreiheitstest, Finden von Kreisen Topologische Sortierung Starke Zusammenhangskomponenten Tiefensuche in ungerichteten Graphen mit Kreisfreiheitstest FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 14
30 10. Greedy-Strategie allgemein Teilbares Rucksackproblem Schedulingprobleme Kürzeste Wege 1: Algorithmus von Dijkstra Adressierbare Priority-Queues mittels binärer Heaps Huffman-Kodierung Set Cover FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 15
31 11. Minimale Spannbäume: Greedy-Strategien, Hilfsstrukturen Union-Find-Datenstruktur MST: Schnitteigenschaft MST: Algorithmus von Kruskal MST: Algorithmus von Prim Minimale Schnitte FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 16
32 12. Dynamische Programmierung Editierdistanz Matrix-Ketten-Multiplikation Ganzzahliges Rucksackproblem Kürzeste Wege 2: Algorithmus von Floyd-Warshall, Transitive Hülle Kürzeste Wege 3: Algorithmus von Bellman-Ford FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 17
33 Kapitel 8 Divide-and-Conquer (D-a-C) Ein Algorithmenparadigma. Divide-and-Conquer divide et impera teile und herrsche FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 18
34 Kapitel 8 Divide-and-Conquer (D-a-C) Ein Algorithmenparadigma. Divide-and-Conquer divide et impera teile und herrsche Schema eines D-a-C-Algorithmus A für ein Problem P: Gegeben: Instanz/Input/Eingabe x der Größe x = n. Falls n = x n 0 (Größenschranke): löse P auf x direkt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 18
35 Kapitel 8 Divide-and-Conquer (D-a-C) Ein Algorithmenparadigma. Divide-and-Conquer divide et impera teile und herrsche Schema eines D-a-C-Algorithmus A für ein Problem P: Gegeben: Instanz/Input/Eingabe x der Größe x = n. Falls n = x n 0 (Größenschranke): löse P auf x direkt. Sonst: Gewinne aus x Teilinstanzen y 1,..., y a ( teile ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 18
36 Kapitel 8 Divide-and-Conquer (D-a-C) Ein Algorithmenparadigma. Divide-and-Conquer divide et impera teile und herrsche Schema eines D-a-C-Algorithmus A für ein Problem P: Gegeben: Instanz/Input/Eingabe x der Größe x = n. Falls n = x n 0 (Größenschranke): löse P auf x direkt. Sonst: Gewinne aus x Teilinstanzen y 1,..., y a ( teile ). Rufe A rekursiv für y 1,..., y a auf, mit Lösungen r 1,..., r a. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 18
37 Kapitel 8 Divide-and-Conquer (D-a-C) Ein Algorithmenparadigma. Divide-and-Conquer divide et impera teile und herrsche Schema eines D-a-C-Algorithmus A für ein Problem P: Gegeben: Instanz/Input/Eingabe x der Größe x = n. Falls n = x n 0 (Größenschranke): löse P auf x direkt. Sonst: Gewinne aus x Teilinstanzen y 1,..., y a ( teile ). Rufe A rekursiv für y 1,..., y a auf, mit Lösungen r 1,..., r a. Gewinne aus x, y 1,..., y a, r 1,..., r a eine Lösung r des Problems P für Instanz x ( kombiniere ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 18
38 Standardbeispiele für D-a-C-Algorithmen: Mergesort Quicksort Binäre Suche FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 19
39 8.1 Multiplikation ganzer Zahlen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 20
40 8.1 Multiplikation ganzer Zahlen Zahlen in Binärdarstellung. (Methoden funktionieren im Prinzip für jede beliebige Basis.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 20
41 8.1 Multiplikation ganzer Zahlen Zahlen in Binärdarstellung. (Methoden funktionieren im Prinzip für jede beliebige Basis.) Bekannt: d c e s f Volladdierer (5 zweistellige Bitoperationen) liefert zu 3 Bits d, e, f die zwei Bits (c, s) = fulladd(d, e, f) mit c = (d e) (e f) (f d) (Übertragsbit, Carrybit) und s = d e f (Summenbit). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 20
42 Bekannt: Serielle Binäraddition. Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
43 Bekannt: Serielle Binäraddition. Input: Binärzahlen/-strings a n 1... a 0 und b n 1... b 0 Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
44 Bekannt: Serielle Binäraddition. Input: Binärzahlen/-strings a n 1... a 0 und b n 1... b 0 c 0 0; ( Carry, Übertrag ) for i from 0 to n 1 do (c i+1, s i ) fulladd(a i, b i, c i ); s n c n ; Ergebnis: s n... s 0. Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
45 Bekannt: Serielle Binäraddition. Input: Binärzahlen/-strings a n 1... a 0 und b n 1... b 0 c 0 0; ( Carry, Übertrag ) for i from 0 to n 1 do (c i+1, s i ) fulladd(a i, b i, c i ); s n c n ; Ergebnis: s n... s 0. Kosten: Nicht mehr als 5n = O(n) Bitoperationen. Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
46 Bekannt: Serielle Binäraddition. Input: Binärzahlen/-strings a n 1... a 0 und b n 1... b 0 c 0 0; ( Carry, Übertrag ) for i from 0 to n 1 do (c i+1, s i ) fulladd(a i, b i, c i ); s n c n ; Ergebnis: s n... s 0. Kosten: Nicht mehr als 5n = O(n) Bitoperationen. Bekannt: Negative Zahlen, Subtraktion. Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
47 Bekannt: Serielle Binäraddition. Input: Binärzahlen/-strings a n 1... a 0 und b n 1... b 0 c 0 0; ( Carry, Übertrag ) for i from 0 to n 1 do (c i+1, s i ) fulladd(a i, b i, c i ); s n c n ; Ergebnis: s n... s 0. Kosten: Nicht mehr als 5n = O(n) Bitoperationen. Bekannt: Negative Zahlen, Subtraktion. Ganze Zahlen werden als Paar (Vorzeichen, Betrag) dargestellt, z. B. 10, 1001, , Additionen und Subtraktionen solcher Zahlen sind mittels Zweierkomplementdarstellung auf die Addition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 21
48 zurückführbar. Kosten: nicht mehr als 10n Bitoperationen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 22
49 Multiplikation zweier natürlicher Zahlen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 23
50 Multiplikation zweier natürlicher Zahlen Schulmethode FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 23
51 Multiplikation zweier natürlicher Zahlen Schulmethode Faktoren: Produkt: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 23
52 Multiplikation zweier natürlicher Zahlen Schulmethode Faktoren: Produkt: Multiplikation = Addition von n Binärzahlen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 23
53 Allgemein: Input: Binärzahlen/-strings x = a n 1... a 0 und y = b n 1... b 0 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 24
54 Allgemein: Input: Binärzahlen/-strings x = a n 1... a 0 und y = b n 1... b 0 Bilde n Binärzahlen d (0),..., d (n 1) : d (i) = (a n 1 b i )... (a 0 b i ) }{{} i Nullen und addiere alle diese. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 24
55 Allgemein: Input: Binärzahlen/-strings x = a n 1... a 0 und y = b n 1... b 0 Bilde n Binärzahlen d (0),..., d (n 1) : d (i) = (a n 1 b i )... (a 0 b i ) }{{} i Nullen und addiere alle diese. n 1 Additionen von Zahlen mit nicht mehr als 2n Bits: O(n 2 ) Bitoperationen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 24
56 Allgemein: Input: Binärzahlen/-strings x = a n 1... a 0 und y = b n 1... b 0 Bilde n Binärzahlen d (0),..., d (n 1) : d (i) = (a n 1 b i )... (a 0 b i ) }{{} i Nullen und addiere alle diese. n 1 Additionen von Zahlen mit nicht mehr als 2n Bits: O(n 2 ) Bitoperationen. Überlege: Was ändert sich bei Ziffernsatz {0, 1,..., b 1} statt {0, 1}? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 24
57 Allgemein: Input: Binärzahlen/-strings x = a n 1... a 0 und y = b n 1... b 0 Bilde n Binärzahlen d (0),..., d (n 1) : d (i) = (a n 1 b i )... (a 0 b i ) }{{} i Nullen und addiere alle diese. n 1 Additionen von Zahlen mit nicht mehr als 2n Bits: O(n 2 ) Bitoperationen. Überlege: Was ändert sich bei Ziffernsatz {0, 1,..., b 1} statt {0, 1}? Geht es billiger? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 24
58 Multiplikation mit Divide-and-Conquer-Strategie: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
59 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
60 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. Falls n n 0 : Benutze Schulmethode. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
61 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. Falls n n 0 : Benutze Schulmethode. Falls n > n 0 : Setze k = n/2. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
62 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. Falls n n 0 : Benutze Schulmethode. Falls n > n 0 : Setze k = n/2. Schreibe x = a n 1... a k }{{} A und y = a n 1... a k }{{} C a k 1... a 0 }{{} B a k 1... a 0 }{{} D FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
63 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. Falls n n 0 : Benutze Schulmethode. Falls n > n 0 : Setze k = n/2. Schreibe x = a n 1... a k }{{} A und y = a n 1... a k }{{} C a k 1... a 0 }{{} B a k 1... a 0 }{{} D Teile! Dann x = A 2 k + B und y = C 2 k + D. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
64 Multiplikation mit Divide-and-Conquer-Strategie: Eingabe: n-bit-binärzahlen x und y, eventuell Vorzeichen. Falls n n 0 : Benutze Schulmethode. Falls n > n 0 : Setze k = n/2. Schreibe x = a n 1... a k }{{} A und y = a n 1... a k }{{} C a k 1... a 0 }{{} B a k 1... a 0 }{{} D Teile! Dann x = A 2 k + B und y = C 2 k + D. Also x y = (A 2 k +B)(C 2 k +D) = AC 2 2k +(AD+BC) 2 k +BD. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 25
65 Erste Idee: Berechne rekursiv A C, A D, B C, C D, und füge die Produkte durch einige Additionen zum Resultat x y zusammen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 26
66 Erste Idee: Berechne rekursiv A C, A D, B C, C D, und füge die Produkte durch einige Additionen zum Resultat x y zusammen. Kosten für n-bit-zahlen (für eine Konstante c): C(n) { 1 für n = 1 4 C(n/2) + c n für n > 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 26
67 Erste Idee: Berechne rekursiv A C, A D, B C, C D, und füge die Produkte durch einige Additionen zum Resultat x y zusammen. Kosten für n-bit-zahlen (für eine Konstante c): C(n) { 1 für n = 1 4 C(n/2) + c n für n > 1. Man kann zeigen (machen wir später, Master-Theorem ): Die Anzahl der Bitoperationen ist wieder O(n 2 ), nicht besser als Schulmethode. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 26
68 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
69 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
70 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
71 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) Bemerke: E und F haben als Betrag der Differenz von zwei nichtnegativen k-bit-zahlen höchstens k Bits. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
72 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) Bemerke: E und F haben als Betrag der Differenz von zwei nichtnegativen k-bit-zahlen höchstens k Bits. Dann: E F = (A B) (C D) = A C +B D (A D + B C). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
73 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) Bemerke: E und F haben als Betrag der Differenz von zwei nichtnegativen k-bit-zahlen höchstens k Bits. Dann: E F = (A B) (C D) = A C +B D (A D + B C). Also: A D + B C = A C + B D E F. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
74 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) Bemerke: E und F haben als Betrag der Differenz von zwei nichtnegativen k-bit-zahlen höchstens k Bits. Dann: E F = (A B) (C D) = A C +B D (A D + B C). Also: Eingesetzt: A D + B C = A C + B D E F. x y = A C 2 2k + (A C + B D E F ) 2 k + B D. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
75 Wir haben: x y = A C 2 2k + (A D + B C) 2 k + B D. Trick: E := A B und F := C D (sieht sinnlos aus... ) Bemerke: E und F haben als Betrag der Differenz von zwei nichtnegativen k-bit-zahlen höchstens k Bits. Dann: E F = (A B) (C D) = A C +B D (A D + B C). Also: Eingesetzt: A D + B C = A C + B D E F. x y = A C 2 2k + (A C + B D E F ) 2 k + B D. Nur noch 3 Multiplikationen von k-bit-zahlen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 27
76 Algorithmus Ka (Algorithmus von Karatsuba) Eingabe: Zwei n-bit-zahlen x und y. if n n 0 then return SM(x, y) ( Schulmethode ) else k := n/2 ; zerlege x = A 2 k + B und y = C 2 k + D; E := A B und F := C D; ( auf n/2 Bits aufgefüllt ) G := Ka(A, C); ( Rekursion ) H := Ka(B, D); ( Rekursion ) I := Ka( E, F ); ( Rekursion ) return G 2 2k + (G + H sign(e) sign(f ) I) 2 k + H. Dabei ist sign(a) das Vorzeichen von a. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 28
77 Beispiel: Mit Dezimalzahlen, n 0 = 2. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
78 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
79 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) In der Informatik interessante Basiszahlen: 2, 8, 10, 16, 256, 2 16, 2 32,... FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
80 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) In der Informatik interessante Basiszahlen: 2, 8, 10, 16, 256, 2 16, 2 32,... n = 8, x = , y = FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
81 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) In der Informatik interessante Basiszahlen: 2, 8, 10, 16, 256, 2 16, 2 32,... n = 8, x = , y = A = 7649, B = 0358, C = 3502, D = FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
82 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) In der Informatik interessante Basiszahlen: 2, 8, 10, 16, 256, 2 16, 2 32,... n = 8, x = , y = A = 7649, B = 0358, C = 3502, D = E = A B = 7291, F = C D = Jeweils 4 Dezimalziffern. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
83 Beispiel: Mit Dezimalzahlen, n 0 = 2. (Methode funktioniert zu jeder Basis.) In der Informatik interessante Basiszahlen: 2, 8, 10, 16, 256, 2 16, 2 32,... n = 8, x = , y = A = 7649, B = 0358, C = 3502, D = E = A B = 7291, F = C D = Jeweils 4 Dezimalziffern. Rekursion für A C: a = 76, b = 49, c = 35, d = 02. e = a b = 27, f = c d = 33. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 29
84 Weil z.b. n 0 = 2 ist, wird direkt multipliziert: g = = 2660, h = 98, i = = Multiplikationen von 2-Bit-Zahlen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 30
85 Weil z.b. n 0 = 2 ist, wird direkt multipliziert: g = = 2660, h = 98, i = = Multiplikationen von 2-Bit-Zahlen. Ergebnis: G = AC = ( ) = FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 30
86 Weil z.b. n 0 = 2 ist, wird direkt multipliziert: g = = 2660, h = 98, i = = Multiplikationen von 2-Bit-Zahlen. Ergebnis: G = AC = ( ) = Analog, rekursiv: H = BD = , I = E F = Ergebnis: x y = ( ( 1) ) = FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 30
87 Weil z.b. n 0 = 2 ist, wird direkt multipliziert: g = = 2660, h = 98, i = = Multiplikationen von 2-Bit-Zahlen. Ergebnis: G = AC = ( ) = Analog, rekursiv: H = BD = , I = E F = Ergebnis: x y = ( ( 1) ) = Multiplikation mit 10 k : Anhängen von Nullen. Beim Kombinationsschritt gibt es nur Additionen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 30
88 Für Input der Größe n > n 0 müssen wir (rekursiv) a = 3 Teilprobleme lösen, für Parametergröße n/b = n/2, also b = 2: rekursiv A C, B D, E F berechnen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 31
89 Für Input der Größe n > n 0 müssen wir (rekursiv) a = 3 Teilprobleme lösen, für Parametergröße n/b = n/2, also b = 2: rekursiv A C, B D, E F berechnen und müssen einige Additionen und Subtraktionen von Zahlen mit maximal 2n Bits durchführen: Zusätzlich O(n) Bitoperationen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 31
90 Laufzeitanalyse: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 32
91 Laufzeitanalyse: Es sei n 0 = 1 und n sei eine Zweierpotenz: n = 2 l. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 32
92 Laufzeitanalyse: Es sei n 0 = 1 und n sei eine Zweierpotenz: n = 2 l. T Ka (n) = Anzahl der Bit-Operationen, die der Algorithmus von Karatsuba auf einer Eingabe aus zwei n-bit-zahlen macht, mit n 0 = 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 32
93 Laufzeitanalyse: Es sei n 0 = 1 und n sei eine Zweierpotenz: n = 2 l. T Ka (n) = Anzahl der Bit-Operationen, die der Algorithmus von Karatsuba auf einer Eingabe aus zwei n-bit-zahlen macht, mit n 0 = 1. Rekurrenzungleichung: T Ka (n) { wobei c konstant ist. 1 für n = 1, 3 T Ka (n/2) + c n für n > 1, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 32
94 Direkte Rechnung: T Ka (2 l ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
95 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
96 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l 3 (3 T Ka (2 l 2 ) + c 2 l 1 ) + c 2 l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
97 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l 3 (3 T Ka (2 l 2 ) + c 2 l 1 ) + c 2 l = 3 2 T Ka (2 l 2 ) + c 3 2 l 1 + c 2 l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
98 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l 3 (3 T Ka (2 l 2 ) + c 2 l 1 ) + c 2 l = 3 2 T Ka (2 l 2 ) + c 3 2 l 1 + c 2 l 3 3 T Ka (2 l 3 ) + c l 2 + c 3 2 l 1 + c 2 l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
99 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l 3 (3 T Ka (2 l 2 ) + c 2 l 1 ) + c 2 l = 3 2 T Ka (2 l 2 ) + c 3 2 l 1 + c 2 l 3 3 T Ka (2 l 3 ) + c l 2 + c 3 2 l 1 + c 2 l. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
100 Direkte Rechnung: T Ka (2 l ) 3 T Ka (2 l 1 ) + c 2 l 3 (3 T Ka (2 l 2 ) + c 2 l 1 ) + c 2 l = 3 2 T Ka (2 l 2 ) + c 3 2 l 1 + c 2 l 3 3 T Ka (2 l 3 ) + c l 2 + c 3 2 l 1 + c 2 l. 3 l T Ka (2 0 ) + c 3 j 2 l j 0 j<l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 33
101 T Ka (2 l ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
102 T Ka (2 l ) 3 l T Ka (2 0 ) + c 0 j l 1 3 j 2 l j FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
103 T Ka (2 l ) 3 l T Ka (2 0 ) + c 3 l 1 + c 0 j l 1 0 j l 1 3 j 2 l j ( ) l j 2 3 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
104 T Ka (2 l ) 3 l T Ka (2 0 ) + c 0 j l 1 3 j 2 l j ( ) l j 2 3 l 1 + c 3 0 j l 1 ( = 3 l 1 + c ) (2 3 )l = 3 l (1 + 2c). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
105 T Ka (2 l ) 3 l T Ka (2 0 ) + c 0 j l 1 3 j 2 l j ( ) l j 2 3 l 1 + c 3 0 j l 1 ( = 3 l 1 + c ) (2 3 )l = 3 l (1 + 2c). Beachte: 3 l = (2 log 2 3 ) l = (2 l log 2 3 ) = (2 l ) log 2 3 = n log 2 3. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
106 T Ka (2 l ) 3 l T Ka (2 0 ) + c 0 j l 1 3 j 2 l j ( ) l j 2 3 l 1 + c 3 0 j l 1 ( = 3 l 1 + c ) (2 3 )l = 3 l (1 + 2c). Beachte: 3 l = (2 log 2 3 ) l = (2 l log 2 3 ) = (2 l ) log 2 3 = n log 2 3. Dabei: log 2 3 1,58496, also n log 2 3 viel kleiner als n 2! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
107 T Ka (2 l ) 3 l T Ka (2 0 ) + c 0 j l 1 3 j 2 l j ( ) l j 2 3 l 1 + c 3 0 j l 1 ( = 3 l 1 + c ) (2 3 )l = 3 l (1 + 2c). Beachte: 3 l = (2 log 2 3 ) l = (2 l log 2 3 ) = (2 l ) log 2 3 = n log 2 3. Dabei: log 2 3 1,58496, also n log 2 3 viel kleiner als n 2! T Ka (n) (1 + 2c)n log 2 3 = O(n 1,585 ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 34
108 Satz Beim Karatsuba-Multiplikationsalgorithmus beträgt die Anzahl der Bitoperationen und die Rechenzeit O(n log 2 3 ) = O(n 1,585 ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 35
109 Satz Beim Karatsuba-Multiplikationsalgorithmus beträgt die Anzahl der Bitoperationen und die Rechenzeit O(n log 2 3 ) = O(n 1,585 ). In der Praxis (Implementierung in Software): FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 35
110 Satz Beim Karatsuba-Multiplikationsalgorithmus beträgt die Anzahl der Bitoperationen und die Rechenzeit O(n log 2 3 ) = O(n 1,585 ). In der Praxis (Implementierung in Software): Nicht n 0 = 1 wählen, sondern für Zahlen einer Länge bis zur Wortgröße des Rechners (z. B. w = 32) die eingebaute Multiplikations-Hardware benutzen, d. h. mit Basis 2 w rechnen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 35
111 Satz Beim Karatsuba-Multiplikationsalgorithmus beträgt die Anzahl der Bitoperationen und die Rechenzeit O(n log 2 3 ) = O(n 1,585 ). In der Praxis (Implementierung in Software): Nicht n 0 = 1 wählen, sondern für Zahlen einer Länge bis zur Wortgröße des Rechners (z. B. w = 32) die eingebaute Multiplikations-Hardware benutzen, d. h. mit Basis 2 w rechnen. Für Zahlen bis zu einer Länge von n 0 Worten: Schulmethode. Nur für längere Zahlen Karatsuba-Rekursion benutzen. Welches n 0 optimal ist, hängt von der Hardware und eventuell von Programmierdetails ab. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 35
112 Satz Beim Karatsuba-Multiplikationsalgorithmus beträgt die Anzahl der Bitoperationen und die Rechenzeit O(n log 2 3 ) = O(n 1,585 ). In der Praxis (Implementierung in Software): Nicht n 0 = 1 wählen, sondern für Zahlen einer Länge bis zur Wortgröße des Rechners (z. B. w = 32) die eingebaute Multiplikations-Hardware benutzen, d. h. mit Basis 2 w rechnen. Für Zahlen bis zu einer Länge von n 0 Worten: Schulmethode. Nur für längere Zahlen Karatsuba-Rekursion benutzen. Welches n 0 optimal ist, hängt von der Hardware und eventuell von Programmierdetails ab. (Studie hierzu: Buch von Mehlhorn/Sanders.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 35
113 Beispiele: 1024 Binärziffern, gut 300 Dezimalziffern. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 36
114 Beispiele: 1024 Binärziffern, gut 300 Dezimalziffern. Will man mit so riesigen Zahlen rechnen? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 36
115 Beispiele: 1024 Binärziffern, gut 300 Dezimalziffern. Will man mit so riesigen Zahlen rechnen? Ja! Kryptographie! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 36
116 Beispiele: 1024 Binärziffern, gut 300 Dezimalziffern. Will man mit so riesigen Zahlen rechnen? Ja! Kryptographie! Ignoriere Additionen, setze n 0 = 32. M Ka (n) = #(32-Bit-Mult. bei Karatsuba für zwei n-bit-zahlen), mit n 0 = 32. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 36
117 Beispiele: 1024 Binärziffern, gut 300 Dezimalziffern. Will man mit so riesigen Zahlen rechnen? Ja! Kryptographie! Ignoriere Additionen, setze n 0 = 32. M Ka (n) = #(32-Bit-Mult. bei Karatsuba für zwei n-bit-zahlen), mit n 0 = 32. Rekurrenzgleichung: M Ka(n) = { 1 für n n 0, 3 M Ka (n/2) für n > n 0, Daraus: M Ka (2l ) = 3 l 5 M Ka (25 ) = 3 l 5. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 36
118 2 10 = 1024 Binärziffern, l = 10: Karatsuba: 3 5 = 243 Multiplikationen 32 ; Schulmethode: (2 l 5 ) 2 = 1024 Multiplikationen 32. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 37
119 2 10 = 1024 Binärziffern, l = 10: Karatsuba: 3 5 = 243 Multiplikationen 32 ; Schulmethode: (2 l 5 ) 2 = 1024 Multiplikationen = Binärziffern, l = 15, ca Dezimalziffern: Karatsuba: 3 10 = Multiplikationen 32 ; Schulmethode: ( ) 2 = 2 20 Multiplikationen 32, mehr als 1 Million! Ersparnis: Faktor 18. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 37
120 Geht es noch besser? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 38
121 Geht es noch besser? Theoretisch ja, praktisch eigentlich kaum. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 38
122 Geht es noch besser? Theoretisch ja, praktisch eigentlich kaum. Mitteilung: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 38
123 Geht es noch besser? Theoretisch ja, praktisch eigentlich kaum. Mitteilung: Schönhage-Strassen (1971): Multiplikation zweier n-bit- Zahlen mit O(n log n log log n) Gattern. Arnold Schönhage und Volker Strassen: Schnelle Multiplikation großer Zahlen, Computing 7, 1971, Springer Verlag, S FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 38
124 Geht es noch besser? Theoretisch ja, praktisch eigentlich kaum. Mitteilung: Schönhage-Strassen (1971): Multiplikation zweier n-bit- Zahlen mit O(n log n log log n) Gattern. Arnold Schönhage und Volker Strassen: Schnelle Multiplikation großer Zahlen, Computing 7, 1971, Springer Verlag, S Fürer (2007), De et al. (2008): Multiplikation zweier n-bit- Zahlen mit O(n log n 2 log n ) Gattern. Martin Fürer: Faster integer multiplication, STOC 2007, S De/Saha/Kurur/Saptharishi: Fast integer multiplication using modular arithmetic. STOC 2008, S FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 38
125 Dabei ist log n definiert als die kleinste Zahl i mit log log... log n 1. }{{} i mal FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 39
126 Dabei ist log n definiert als die kleinste Zahl i mit log log... log n 1. }{{} i mal Also: log 2 = 1, log 4 = 2, log 16 = 3, log = 4, log ( ) = 5, log ( ) = 6, und ist schon eine sehr große Zahl. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 39
127 8.2 Matrixmultiplikation 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
128 Es sei R irgendein Ring Matrixmultiplikation 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
129 Es sei R irgendein Ring Matrixmultiplikation A = (a ij ) 1 i,j n, B = (b ij ) 1 i,j n seien n n-matrizen über R. 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
130 8.2 Matrixmultiplikation Es sei R irgendein Ring. 1 A = (a ij ) 1 i,j n, B = (b ij ) 1 i,j n seien n n-matrizen über R. Aufgabe: Berechne C = A B, d.h. C = (c ij ) 1 i,j n mit c ij = a ik b kj. 1 k n 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
131 8.2 Matrixmultiplikation Es sei R irgendein Ring. 1 A = (a ij ) 1 i,j n, B = (b ij ) 1 i,j n seien n n-matrizen über R. Aufgabe: Berechne C = A B, d.h. C = (c ij ) 1 i,j n mit c ij = a ik b kj. 1 k n Naive Implementierung gemäß dieser Formel kostet: n 3 Ring-Multiplikationen und n 2 (n 1) Ring-Additionen. 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
132 8.2 Matrixmultiplikation Es sei R irgendein Ring. 1 A = (a ij ) 1 i,j n, B = (b ij ) 1 i,j n seien n n-matrizen über R. Aufgabe: Berechne C = A B, d.h. C = (c ij ) 1 i,j n mit c ij = a ik b kj. 1 k n Naive Implementierung gemäß dieser Formel kostet: n 3 Ring-Multiplikationen und n 2 (n 1) Ring-Additionen. Strassen (1969): Es geht mit weniger Multiplikationen! 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
133 8.2 Matrixmultiplikation Es sei R irgendein Ring. 1 A = (a ij ) 1 i,j n, B = (b ij ) 1 i,j n seien n n-matrizen über R. Aufgabe: Berechne C = A B, d.h. C = (c ij ) 1 i,j n mit c ij = a ik b kj. 1 k n Naive Implementierung gemäß dieser Formel kostet: n 3 Ring-Multiplikationen und n 2 (n 1) Ring-Additionen. Strassen (1969): Es geht mit weniger Multiplikationen! Ansatz: Divide-and-Conquer. 1 Man kann addieren, subtrahieren, multiplizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 40
134 Wir nehmen an: n = 2 l, Zweierpotenz. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
135 Wir nehmen an: n = 2 l, Zweierpotenz. Eingabe: n n-matrizen A, B. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
136 Wir nehmen an: n = 2 l, Zweierpotenz. Eingabe: n n-matrizen A, B. Falls n n 0 : Berechne A B mit der direkten Methode. n 3 0 Multiplikationen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
137 Wir nehmen an: n = 2 l, Zweierpotenz. Eingabe: n n-matrizen A, B. Falls n n 0 : Berechne A B mit der direkten Methode. n 3 0 Multiplikationen. Falls n > n 0 : Zerlege A, B in jeweils 4 quadratische ( n 2 n 2 )-Teilmatrizen: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
138 Wir nehmen an: n = 2 l, Zweierpotenz. Eingabe: n n-matrizen A, B. Falls n n 0 : Berechne A B mit der direkten Methode. n 3 0 Multiplikationen. Falls n > n 0 : Zerlege A, B in jeweils 4 quadratische ( n 2 n 2 )-Teilmatrizen: ( ) ( ) C D G H A =, B =, E F K L FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
139 Wir nehmen an: n = 2 l, Zweierpotenz. Eingabe: n n-matrizen A, B. Falls n n 0 : Berechne A B mit der direkten Methode. n 3 0 Multiplikationen. Falls n > n 0 : Zerlege A, B in jeweils 4 quadratische ( n 2 n 2 )-Teilmatrizen: ( ) ( ) C D G H A =, B =, E F K L Dann (leicht zu sehen): ( C G + D K C H + D L A B = E G + F K E H + F L ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 41
140 Suggeriert rekursiven Ansatz, in dem 8 Multiplikationen von ( n 2 n 2 )-Teilmatrizen durchgeführt werden. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 42
141 Suggeriert rekursiven Ansatz, in dem 8 Multiplikationen von ( n 2 n 2 )-Teilmatrizen durchgeführt werden. Einfache Analyse ergibt: n 3 Multiplikationen in R, kein Gewinn. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 42
142 Suggeriert rekursiven Ansatz, in dem 8 Multiplikationen von ( n 2 n 2 )-Teilmatrizen durchgeführt werden. Einfache Analyse ergibt: n 3 Multiplikationen in R, kein Gewinn. (Unten: Mit Master-Theorem: O(n 3 ).) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 42
143 Strassen-Trick: 7 Multiplikationen genügen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
144 Strassen-Trick: 7 Multiplikationen genügen. P 1 = C (H L) P 5 = (C + F ) (G + L) P 2 = (C + D) L P 6 = (D F ) (K + L) P 3 = (E + F ) G P 7 = (C E) (G + H) P 4 = F (K G) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
145 Strassen-Trick: 7 Multiplikationen genügen. Dann: A B = P 1 = C (H L) P 5 = (C + F ) (G + L) P 2 = (C + D) L P 6 = (D F ) (K + L) P 3 = (E + F ) G P 7 = (C E) (G + H) P 4 = F (K G) ( P5 + P 4 P 2 + P 6 P 1 + P 2 P 3 + P 4 P 1 + P 5 P 3 P 7 ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
146 Strassen-Trick: 7 Multiplikationen genügen. Dann: A B = P 1 = C (H L) P 5 = (C + F ) (G + L) P 2 = (C + D) L P 6 = (D F ) (K + L) P 3 = (E + F ) G P 7 = (C E) (G + H) P 4 = F (K G) ( P5 + P 4 P 2 + P 6 P 1 + P 2 P 3 + P 4 P 1 + P 5 P 3 P 7 ) Von Hand nachzukontrollieren! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
147 Strassen-Trick: 7 Multiplikationen genügen. Dann: A B = P 1 = C (H L) P 5 = (C + F ) (G + L) P 2 = (C + D) L P 6 = (D F ) (K + L) P 3 = (E + F ) G P 7 = (C E) (G + H) P 4 = F (K G) ( P5 + P 4 P 2 + P 6 P 1 + P 2 P 3 + P 4 P 1 + P 5 P 3 P 7 ) Von Hand nachzukontrollieren! 18 Additionen von ( n 2 n 2 )-Matrizen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
148 Strassen-Trick: 7 Multiplikationen genügen. Dann: A B = P 1 = C (H L) P 5 = (C + F ) (G + L) P 2 = (C + D) L P 6 = (D F ) (K + L) P 3 = (E + F ) G P 7 = (C E) (G + H) P 4 = F (K G) ( P5 + P 4 P 2 + P 6 P 1 + P 2 P 3 + P 4 P 1 + P 5 P 3 P 7 ) Von Hand nachzukontrollieren! 18 Additionen von ( n 2 n 2 )-Matrizen. (Alternative Methode, etwas komplizierter: 15 Additionen.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 43
149 Aufwandsanalyse: Rekurrenzungleichung für die Anzahl der Operationen: T Str (n) { 1 für n = 1, 7 T Str (n/2) + c n 2 für n > 1, wobei im Fall n = 1 eine Ringmultiplikation anfällt und im Fall n > 1 neben den rekursiven Aufrufen genau 18 Additionen von ( n 2 n 2 )-Matrizen ausgeführt werden, mit Kosten 18 (n/2)2 = n2. Also ist c = eine geeignete Konstante. Nun: Rechnung für n = 2 l wie bei Karatsuba. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 44
150 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
151 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
152 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 + c 0 j l 1 (2 2 /7) l j FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
153 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 = 7 l + 7 l c + c 0 j l 1 0 j l 1 (2 2 /7) l j (2 2 /7) l j FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
154 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 = 7 l + 7 l c < 7 l + 7 l c c 0 j l 1 0 j l (4/7) (2 2 /7) l j (2 2 /7) l j FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
155 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 = 7 l + 7 l c < 7 l + 7 l c c 0 j l 1 0 j l 1 (2 2 /7) l j (2 2 /7) l j 1 1 (4/7) < (1 + 4c/3) 7l. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
156 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 = 7 l + 7 l c < 7 l + 7 l c c 0 j l 1 0 j l 1 Wie vorher: T Str (n) = T Str (2 l ) = O(7 l ). (2 2 /7) l j (2 2 /7) l j 1 1 (4/7) < (1 + 4c/3) 7l. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
157 T Str (2 l ) 7 T Str (2 l 1 ) + c (2 2 ) l. 7 l 7 2 T Str (2 l 2 ) + c 7 (2 2 ) l 1 + c (2 2 ) l T Str (2 0 ) }{{} = 1 = 7 l + 7 l c < 7 l + 7 l c c 0 j l 1 0 j l 1 (2 2 /7) l j (2 2 /7) l j 1 1 (4/7) < (1 + 4c/3) 7l. Wie vorher: T Str (n) = T Str (2 l ) = O(7 l ). Dabei: 7 l = 2 l log 2 7 = n log 2 7 mit log 2 7 2,81. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 45
158 Satz Beim Divide-and-Conquer-Algorithmus von Strassen für die Matrixmultiplikation beträgt die Anzahl der Ringmultiplikationen etwa n log 2 7 und die Anzahl der Ringadditionen und -subtraktionen O(n log 2 7 ). Dabei ist log 2 7 2,81. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 46
159 8.3 Erinnerung: Mergesort FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 47
160 8.3 Erinnerung: Mergesort (Alte AuD-Vorlesung bzw. hier: Kap. 6.2) Prozedur r MergeSort(a, b): A: a m b Rekur Rekur sion sion A: a m b Aufteilen von A[a... b] in A[a... m] und A[m b]. Rekursives Sortieren der beiden Segmente. Dann: Merge(a, m, b). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 47
161 Rekurrenzgleichung für Vergleichsanzahl C(n): C(1) = 0, C(n) = C( n/2 ) + C( n/2 ) + n 1 für n 1. Gezeigt: C(n) = n log n (2 log n 1). (Mit ad-hoc-beweis.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 48
162 8.4 Das Master-Theorem Wir betrachten Rekurrenzungleichungen der folgenden Form: B(n) { g, falls n = 1 a B(n/b) + f(n), sonst. Dabei: a 1 eine ganze Zahl, b > 1 ist eine Konstante, f(n) ist eine monoton wachsende Funktion. Falls n/b keine ganze Zahl ist, sollte man sich an Stelle von B(n/b) z. B. B( n/b ) denken. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 49
163 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
164 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden a Teilinstanzen der Größe n/b (passend gerundet) gebildet ( teile ), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
165 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden a Teilinstanzen der Größe n/b (passend gerundet) gebildet ( teile ), es erfolgen a rekursive Aufrufe, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
166 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden a Teilinstanzen der Größe n/b (passend gerundet) gebildet ( teile ), es erfolgen a rekursive Aufrufe, und die a Lösungen werden zusammengesetzt ( kombiniere ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
167 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden a Teilinstanzen der Größe n/b (passend gerundet) gebildet ( teile ), es erfolgen a rekursive Aufrufe, und die a Lösungen werden zusammengesetzt ( kombiniere ). Kosten für das Aufspalten und das Kombinieren: f(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
168 Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden a Teilinstanzen der Größe n/b (passend gerundet) gebildet ( teile ), es erfolgen a rekursive Aufrufe, und die a Lösungen werden zusammengesetzt ( kombiniere ). Kosten für das Aufspalten und das Kombinieren: f(n). O.B.d.A.: B(n) monoton wachsend. Sonst definiere: ˆB(n) = max{b(i) 1 i n}. ˆB(n) ist monoton und erfüllt die Rekurrenzungleichung. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 50
169 Vereinfachende Annahmen (nicht wesentlich): n = b l. b > 1 ist ganzzahlig. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 51
170 Vereinfachende Annahmen (nicht wesentlich): n = b l. b > 1 ist ganzzahlig. Level 0: Wurzel, hat Eintrag f(n) und hat a Kinder auf Level 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 51
171 Vereinfachende Annahmen (nicht wesentlich): n = b l. b > 1 ist ganzzahlig. Level 0: Wurzel, hat Eintrag f(n) und hat a Kinder auf Level 1. Knoten v auf Level i < l hat Eintrag f(n/b i ) und hat a Kinder auf Level i + 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 51
172 Vereinfachende Annahmen (nicht wesentlich): n = b l. b > 1 ist ganzzahlig. Level 0: Wurzel, hat Eintrag f(n) und hat a Kinder auf Level 1. Knoten v auf Level i < l hat Eintrag f(n/b i ) und hat a Kinder auf Level i + 1. Knoten auf Level l sind Blätter, sie haben Eintrag g. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 51
173 f(n) f(n) a f(n/b) f(n/b) a f(n/b) a l f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) a 2 f(n/b 2 ) g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g a l g FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 52
174 Lemma Wenn v ein Knoten auf Level i ist, dann gilt: B(n/b i ) Summe der Einträge im Unterbaum unter v. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 53
175 Lemma Wenn v ein Knoten auf Level i ist, dann gilt: B(n/b i ) Summe der Einträge im Unterbaum unter v. (Beweis durch Induktion über l i.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 53
176 Lemma Wenn v ein Knoten auf Level i ist, dann gilt: B(n/b i ) Summe der Einträge im Unterbaum unter v. (Beweis durch Induktion über l i.) Also: B(n) Summe aller Einträge im Baum. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 8 53
SS18 Algorithmen und Datenstrukturen 9. Kapitel Divide-and-Conquer-Algorithmen
SS18 Algorithmen und Datenstrukturen 9. Kapitel Divide-and-Conquer-Algorithmen Martin Dietzfelbinger Juni 2018 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS18 Kapitel 9 Ziele (des zweiten Teils)
MehrEffiziente Algorithmen
Effiziente Algorithmen Vorüberlegungen und Divide-and-Conquer-Algorithmen Vorlesender: Martin Aumüller (nach Folien von Prof. Martin Dietzfelbinger) April 2012 FG KTuEA, TU Ilmenau Effiziente Algorithmen
MehrSS10 Effiziente Algorithmen Vorbemerkungen und 1. Kapitel
SS10 Effiziente Algorithmen Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger April 2010 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS10 Kapitel 0+1 Hörer: Informatikstudierende (Bachelor) im 4. Semester,
MehrSS15 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen
SS15 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen Martin Dietzfelbinger Juni 2015 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS15 Kapitel 8 Ziele (des zweiten Teils)
MehrSS16 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen
SS16 Algorithmen und Datenstrukturen 8. Kapitel Divide-and-Conquer-Algorithmen Martin Dietzfelbinger Juni 2016 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS16 Kapitel 8 Ziele (des zweiten Teils)
MehrSS13 Effiziente Algorithmen Vorbemerkungen und 1. Kapitel
SS13 Effiziente Algorithmen Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger April 2013 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS13 Kapitel 0+1 Hörer: Informatikstudierende (Bachelor) im 4. Semester,
MehrEffiziente Algorithmen
Effiziente Algorithmen Vorüberlegungen und Divide-and-Conquer-Algorithmen Vorlesender: Martin Aumüller (nach Folien von Prof. Martin Dietzfelbinger) April 2012 FG KTuEA, TU Ilmenau Effiziente Algorithmen
Mehr1 Divide-and-Conquer-Algorithmen
1 Divide-and-Conquer-Algorithmen 1.1 Multiplikation ganzer Zahlen Wir multiplizieren zwei ganze Zahlen x und y, die in Binärdarstellung gegeben sind. Der Einfachheit halber nehmen wir an, die beiden Zahlen
Mehr1.3 Erinnerung: Mergesort
Mergesort 1.3 Erinnerung: Mergesort Um n Zahlen/Objekte a 1,..., a n zu sortieren, geht der Mergesort-Algorithmus so vor: Falls n n 0 : Sortiere mit einem naiven Algorithmus (z. B. Insertion Sort). Sonst:
MehrSS14 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel
SS14 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger April 2014 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS14 Kapitel 0+1 Team: Vorlesung: Univ.-Prof. Dr.
MehrAlgorithmen und Datenstrukturen
Rheinisch-Westfälische Technische Hochschule Aachen Lehrstuhl für Informatik VI Algorithmen und Datenstrukturen Vorlesungsmitschrift zur Vorlesung im SS 2004 Prof. Dr.-Ing. H. Ney Letzte Überarbeitung:
MehrDatenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen
MehrAlgorithmen und Datenstrukturen
Martin Dietzfelbinger Kurt Mehlhorn Peter Sanders Algorithmen und Datenstrukturen Die Grundwerkzeuge Springer Vieweg 1 Vorspeise: Arithmetik für ganze Zahlen 1 1.1 Addition 2 1.2 Multiplikation: Die Schulmethode
MehrAlgebraische und arithmetische Algorithmen
Kapitel 1 Algebraische und arithmetische Algorithmen 1.1 Das algebraische Berechnungsmodell Struktur: Körper (oder Ring) mit den Operationen +,,, (/) Eingabe: endliche Folge von Zahlen Ausgabe: endliche
MehrGrundlagen der Algorithmen und Datenstrukturen Kapitel 12
Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus
MehrWS18/19 Algorithmen und Datenstrukturen 1 Vorbemerkungen und 1. Kapitel
WS18/19 Algorithmen und Datenstrukturen 1 Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger Oktober 2018 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen 1 WS18/19 Kapitel 0+1 Team: Vorlesung: Donnerstags,
MehrEffiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra
Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)
MehrAlgebraische und arithmetische Algorithmen
Kapitel 1 Algebraische und arithmetische Algorithmen 1.1 Das algebraische Berechnungsmodell Struktur: Körper (oder Ring) mit den Operationen +,,, (/) Eingabe: endliche Folge von Zahlen Ausgabe: endliche
MehrModul Algorithmik, T-Katalog
Modul Algorithmik, T-Katalog Sommersemester 2017 Steffen Lange 1/1, Folie 1 2017 Prof. Steffen Lange - HDa/FbI - Algorithmik Organisatorisches u Vorlesung Folien im Netz u Übung eine Übung alle 14 Tage
MehrBeispiel-Prüfungsfragen Effiziente Algorithmen M. Dietzfelbinger, Stand 29. Juli 2013.
Beispiel-Prüfungsfragen für Effiziente Algorithmen M. Dietzfelbinger, Stand 29. Juli 2013. Vorbemerkung: Die Liste der Beispielfragen soll bei der Vorbereitung helfen. Sie definiert nicht den Prüfungsstoff
MehrBeispiel-Prüfungsfragen für Effiziente Algorithmen M. Dietzfelbinger, 15. Juli 2011, leicht korrigiert 27. Juli 2011
Beispiel-Prüfungsfragen für Effiziente Algorithmen M. Dietzfelbinger, 15. Juli 2011, leicht korrigiert 27. Juli 2011 Vorbemerkung: Die Liste der Beispielfragen soll bei der Vorbereitung helfen. Sie definiert
MehrWiederholung. Divide & Conquer Strategie
Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in
MehrAlgorithmen und Datenstrukturen 1. Vorlesung
Algorithmen und Datenstrukturen 1. Vorlesung Martin Dietzfelbinger 7. April 2008 FG KTuEA, TU Ilmenau AuD 07.04.2008 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere
MehrGrundlegende Algorithmen
ST 430k HEUH (ä.) Volker Heun Grundlegende Algorithmen Einführung in den Entwurf und die Analyse effizienter Algorithmen 2., verbesserte und erweiterte Auflage >( "4.? Einleitung und Grundlagen 1 1.1 Ziele
MehrG. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:
lausthal Informatik II Divide & onquer. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Algorithmen-Design-Techniken Die wichtigsten Entwurfsverfahren für Algorithmen: 1. Divide and onquer
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine
Mehr4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1
Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau
MehrKonvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510
Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links),
MehrAlgorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315
Algorithmen und Datenstrukturen Christian Komusiewicz Ernst-Abbe-Platz 2, R3315 christian.komusiewicz@uni-jena.de Friedrich-Schiller-Universität Jena Institut für Informatik http://users.fmi.uni-jena.de/
MehrAuswählen nach Rang (Selektion)
Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)
MehrIsomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt
Isomorphismus Definition Gruppen-Isomorphismus Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt 1 f ist bijektiv f (u + v) = f (u) f (v) für alle u, v G, die
MehrDatenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange
Datenstrukturen Sommersemester 2010 Steffen Lange 1/1, Folie 1 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen Organisatorisches Vorlesung wöchentlich; zwei Blöcke Folien im Netz (/* bitte zur Vorlesung
MehrInformatik II Algorithmen & Datenstrukturen
lausthal Informatik II Algorithmen & Datenstrukturen Organisatorisches. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Ziel der Vorlesung 1. Eine (kleine) Anzahl von sehr grundlegenden Algorithmen
Mehr16. All Pairs Shortest Path (ASPS)
. All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e
MehrADS 2: Algorithmen und Datenstrukturen
ADS 2: Algorithmen und Datenstrukturen Teil I Prof. Peter F. Stadler & Sebastian Will Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität Leipzig 9. April
MehrSchnelle Multiplikation
Informationsblatt für die Lehrkraft Schnelle Multiplikation $&*&*& 999 3 x 3 =? 10001110 π/3 7 X 6 14 666 x 987 Informationsblatt für die Lehrkraft Thema: Schultyp: Vorkenntnisse: Bearbeitungsdauer: Schnelle
MehrDatenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Geometrisches Problem: Problem: Nächstes Paar Eingabe: n Punkte in der Ebene Ausgabe: Das Paar q,r mit geringstem Abstand
MehrAlgorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg
Mehr2. Effizienz von Algorithmen
Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
Mehr14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
MehrUwe Schöning. Algorithmik. Spektrum Akademischer Verlag Heidelberg Berlin
Uwe Schöning Algorithmik Spektrum Akademischer Verlag Heidelberg Berlin Inhaltsverzeichnis Überblick 11 1 Grundlegende Konzepte 17 1.1 Elementare Programm-und Datenstrukturen 17 1.2 Einiges zur Algorithmentheorie
MehrCarlos Camino Grundlagen: Algorithmen und Datenstrukturen SS 2015
Themenüberblick Dieses Dokument stellt eine Art Checkliste für eure Klausurvorbereitung dar. Zu jedem Thema im Skript sind hier ein paar Leitfragen aufgelistet. Ab Seite 4 findet ihr alle Zusammenfassungen,
MehrDivide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen
Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick
MehrAlgorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.
Mehr8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrSS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung
SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung Martin Dietzfelbinger Juni/Juli 2011 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 Kapitel 5: Dynamische Programmierung Typische
MehrKarlsruher Institut für Technologie. Klausur Algorithmen I
Klausur-ID: Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 11. April 2018 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte
Mehr16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule
16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule Autor Arno Eigenwillig, Max-Planck-Institut für Informatik, Saarbrücken Kurt Mehlhorn, Max-Planck-Institut für Informatik,
MehrInformatikgrundlagen (WS 2016/2017)
Informatikgrundlagen (WS 2016/2017) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
MehrFolien aus der Vorlesung Optimierung I SS2013
Folien aus der Vorlesung Optimierung I SS2013 Dr. Jens Maßberg Institut für Optimierung und Operations Research, Universität Ulm July 10, 2013 Datenstrukturen für Graphen und Digraphen Graph Scanning Algorithmus
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00
MehrInformatik 1 (WS 2018/2019)
Informatik 1 (WS 2018/2019) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 22 (20.7.2016) Greedy Algorithmen - Datenkompression Algorithmen und Komplexität Greedy Algorithmen Greedy Algorithmen sind eine Algorithmenmethode,
MehrKapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung
Gliederung 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
MehrÜbersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)
Datenstrukturen und Algorithmen Vorlesung 3: (K4) 1 e für rekursive Algorithmen Prof. Dr. Erika Ábrahám 2 Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/
Mehr6.1. Ein Approximationsalgorithmus für das Rucksackproblem
6.1. Ein Approximationsalgorithmus für das Rucksackproblem Wir erinnern uns an das 0-1-Rucksackproblem: Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke
MehrAlgorithmen und Datenstrukturen 1. Vorlesung
Algorithmen und Datenstrukturen 1. Vorlesung Martin Dietzfelbinger 7. April 2008 FG KTuEA, TU Ilmenau AuD 07.04.2008 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere
MehrAlgorithmen & Datenstrukturen
Algorithmen & Datenstrukturen Prof. Dr. Gerd Stumme Universität Kassel FB Elektrotechnik/Informatik FG Wissensverarbeitung Sommersemester 2009 Ziele der Veranstaltung 1 Kennenlernen grundlegender Algorithmen
MehrMethoden für den Entwurf von Algorithmen
Methoden für den Entwurf von Algorithmen Greedy Algorithmen: - Löse ein einfaches Optimierungsproblem durch eine Folge vernünftiger Entscheidungen. - Eine getroffene Entscheidung wird nie zurückgenommen.
MehrBeispiel: Quicksort. Theoretische Informatik III (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. quicksort(a 1,...,a n ): IF n 2 THEN
Als zweites Beispiel betrachten wir ein weiteres Sortierverfahren, das unter dem Namen quicksort bekannt ist. Eingabe ist wieder ein Array a 1,...,a n AUFGABE: Sortiere a 1,...,a n nach vorgegebenem Schlüssel!
MehrKomplexität von Algorithmen SS 2011
Komplexität von Algorithmen SS 2011 Volker Strehl Informatik 8 4. Mai 2011 Organisatorisches Vorlesungstermine Mittwoch, 08:30 10:00 im H4 Freitag, 10:15 11:45 Uhr im H14 (Werkstoffwissenschaften) Organisatorisches
MehrGraphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47
Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
MehrInformatik II: Algorithmen und Datenstrukturen SS 2013
Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 11b, Mittwoch, 3. Juli 2013 (Editierdistanz, dynamische Programmierung) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen
MehrAlgorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier
Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen
Mehr2.4 Starke Zusammenhangskomponenten in Digraphen
Starke Zusammenhangskomponenten Einleitung 2.4 Starke Zusammenhangskomponenten in Digraphen Definition 2.4.1 Zwei Knoten v und w in einem Digraphen G heißen äquivalent, wenn v w und w v gilt. Notation:
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:
MehrDas Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele
MehrDas Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.
MehrAbschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
Mehr19. Dynamic Programming I
495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 1 (29.4.2014) Organisation, Übungen, Sortieren I Algorithmen und Komplexität Allgemeines Thema der Vorlesung Letztes Semester haben Sie (die
Mehr5.4 Das Rucksackproblem
Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
MehrAlgorithmen und Datenstrukturen
Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmiertutorium: Alexander Wolff (E29) Krzysztof Fleszar (E13)
Mehr21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3
581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv
MehrAlgorithmentheorie 1. Vorlesung
Algorithmentheorie. Vorlesung Martin Dietzfelbinger 6. April 2006 Methode, Material Vorlesung Vorlesungsskript (Netz, Copyshop) Folien (im Netz) Vorlesung nachbereiten! Übung Übungsblätter (im Netz) Übung
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit
MehrGliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III
Gliederung Algorithmen und Datenstrukturen II : Kürzeste Pfade III D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Problem Transitiver
MehrDas Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben
MehrDas Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,
MehrAutomaten und Formale Sprachen 1. Vorlesung
Automaten und Formale Sprachen 1. Vorlesung Martin Dietzfelbinger 11. Oktober 2005 Hörer: Informatikstudierende im 3. Semester, Mathematikstudierende bei Bedarf Material: Skript, Folienkopien, Übungsblätter
Mehr19. Dynamic Programming I
495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.
MehrPanorama der Mathematik und Informatik
Panorama der Mathematik und Informatik 20: Algorithmen V: Schnelle Multiplikation Dirk Frettlöh Technische Fakultät / Richtig Einsteigen 18.6.2015 Eine weitere Anwendung der schnellen Fouriertransformation:
MehrEffiziente Algorithmen
Effiziente Algorithmen Greedy-Algorithmen Vorlesender: Martin Aumüller (nah Folien von Prof. Martin Dietzfelbinger) Mai 2012 FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 1 Kapitel 3:
MehrVorlesung 3: Graphenalgorithmen. Markus Püschel David Steurer Peter Widmayer. PDF download goo.gl/ym3spq
Vorlesung 3: Graphenalgorithmen Markus Püschel David Steurer Peter Widmayer PDF download goo.gl/ym3spq Algorithmen und Datenstrukturen, Herbstsemester 2017, ETH Zürich Gerichtete Graphen und Abhängigkeiten
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen
MehrA1.1 Organisatorisches
Algorithmen und Datenstrukturen 28. Februar 2018 A1. Organisatorisches Algorithmen und Datenstrukturen A1. Organisatorisches A1.1 Organisatorisches Marcel Lüthi and Gabriele Röger Universität Basel A1.2
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrAlgorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8
ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1
MehrEntscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A1. Organisatorisches Marcel Lüthi and Gabriele Röger Universität Basel 28. Februar 2018 Organisatorisches Personen: Dozenten Marcel Lüthi Gabriele Röger Dozenten Dr. Marcel
MehrAlgorithmen I. Dennis Hofheinz und Henning Meyerhenke. Übungen: Christian Staudt und Christoph Striecks
Algorithmen I Dennis Hofheinz und Henning Meyerhenke Übungen: Christian Staudt und Christoph Striecks Institut für theoretische Informatik Web: https://crypto.iti.kit.edu/algo-sose15 (Folien von Peter
Mehr