Übung Algorithmen und Datenstrukturen Sommersemester 2015 Marc Bux, Humboldt-Universität zu Berlin
Organisation Vorlesung: Montag 11 13 Uhr Ulf Leser RUD 26, 0 115 Mittwoch 11 13 Uhr Ulf Leser RUD 26, 0 115 Übung: Montag 13 15 Uhr Marc Bux RUD 26, 1 306 Mittwoch 09 11 Uhr Berit Grußien RUD 26, 1 306 Mittwoch 13 15 Uhr Berit Grußien RUD 26, 0 313 Mittwoch 13 15 Uhr Marc Bux RUD 26, 0 310 Donnerstag 09 11 Uhr Sebastian Wandelt RUD 26, 0 313 Donnerstag 11 13 Uhr Sebastian Wandelt RUD 26, 0 313 Freitag 09 11 Uhr Jan Sürmeli RUD 26, 1 305 Freitag 11 13 Uhr Jan Sürmeli RUD 26, 1 305 Tutorium: Montag 13 15 Uhr Michael R. Jung RUD 25 4.112 Dienstag 13 15 Uhr Michael R. Jung RUD 25 4.112 Donnerstag 17 19 Uhr Michael R. Jung RUD 26 0 313 Klausur: 11. August und 15. September 2015, jeweils 11 14 Uhr 2
Inhalt dieser Veranstaltung Heute (KW 17): Organisatorisches, Vorbereitung und Besprechung 1. Übungsblatt In KW 19, 21, 23, 25, 27, 29: Pflichttermin Ausgabe und Besprechung von Übungsblatt n in KW 15 + 2n Abgabe und Besprechung der Lösungen von Übungsblatt n in KW 17 + 2n Rückgabe der Lösungen von Übungsblatt n in KW 19 + 2n Pro Aufgabe werden zwei bis drei Studenten zur Vorstellung der Lösung ihrer Gruppe ausgelost Wer mehr als zwei Mal gelost wird und nicht anwesend ist (oder die Lösungen seiner Gruppe nicht präsentieren kann), wird nicht zur Prüfung zugelassen In den Wochen dazwischen: freiwillige Veranstaltung Fragen zu den Übungsaufgaben klären Wiederholungen und Vertiefungen von Themen aus der Vorlesung Wenn anderer Termin besser passt oder eine Übung ausfällt: zu anderer Übung gehen (Ausnahme: Pflichttermine) Website: http://tinyurl.com/algodat15 3
Übungsaufgaben 6 Blätter mit je 50 Punkten Ausgabe mindestens zwei Wochen vor Abgabetermin in GOYA und auf der Webseite Erstes Übungsblatt: Seit 17. April Abgabe des ersten Übungsblatts: Bis 4. Mai Danach alle zwei Wochen Lösungen schriftlicher Aufgaben sind auf Papier mit nach Aufgaben getrennten Blättern abzugeben Abgabe schriftlicher Aufgaben vor der Vorlesung bis 11:10 Uhr Oder vorher im Sekretariat RUD 25, 4.402 Programmieraufgaben (Java 1.6) sind auf gruenau2 zu testen und in GOYA abzugeben (gleicher Termin wie schriftliche Aufgaben) Namen, Matrikelnummer, Übungsgruppe auf jeder Aufgabe / Abgabe angeben 4
Übungsschein Übungsschein = Zulassung zur Prüfung Voraussetzungen für Erhalt: Anmeldung und Gruppenzuweisung in GOYA (wichtige Informationen werden über GOYA verschickt) Jedes Übungsblatt muss bearbeitet werden Insgesamt müssen 50% der Punkte erreicht werden (150 Punkte) Anwesenheit und Beteiligung bei Vorrechnen der Aufgaben Bei vermutetem Abschreiben: 0 Punkte Nicht ausführbare Programmieraufgaben: 0 Punkte 5
Übungsgruppen Übungsblätter sind in Gruppen zu bearbeiten Zusammensetzung: zwei Studenten aus der selben Veranstaltung Ziel: Zusammenarbeit fördern und voneinander lernen Beide Mitglieder einer Gruppe müssen Ergebnisse präsentieren können Als Absicherung und um die eigene Abgabe in der Übung parat zu haben: Abgabe kopieren Wenn Übungspartner sich nicht fair beteiligt: früh Bescheid geben Wer Ende der Woche noch keinen Partner hat, bekommt einen zugewiesen Wer hat den Übungsschein bereits? Wer hat noch keinen Übungspartner? 6
Agenda 1. Organisatorisches 2. Die Landau-Notation 3. Vorstellung des ersten Übungsblatts 7
Zeitkomplexität Ziel: Abschätzung der Anzahl notwendiger Operationen eines Algorithmus als Funktion der Eingabe (üblicherweise) im schlechtesten Fall unabhängig von Hardware und Implementierung Grundidee: Welche Faktoren bestimmen die Laufzeit des Algorithmus, wenn die Eingabe sehr groß wird Nur der größte Faktor (mit dem größten Exponent) ist interessant Konstante (und lineare) Faktoren sind uninteressant 8
Die Landau-Notation Seien f und g Funktionen von R 0 + nach R 0 + Wir schreiben f n = Ο(g n ), falls es Zahlen n o und c > 0 gibt, so dass für alle n n 0 gilt: f n c g(n) Bedeutung: f wächst nicht wesentlich (d.h. höchstens um lineare oder konstante Faktoren) schneller als g. Formal bezeichnet Ο g n die Klasse aller Funktionen f, die obige Bedingungen erfüllen Ο g = f: R + + 0 R c R+ > 0 n 0 R + 0 > 0 0 n n 0 : f n c g(n) Gleichung f n = Ο g n drückt in Wahrheit eine Element- Beziehung f Ο(g n ) aus Ο-Terme können auch auf der linken Seite vorkommen; in diesem Fall wird eine Inklusionsbeziehung ausgedrückt n 2 + Ο n = Ο(n 2 ) steht für die Aussage {n 2 + f f Ο n } Ο n 2 9
Die Landau-Notation (2) Definitionen: Ο g = f: R 0 + R 0 + Ω g = f: R 0 + R 0 + Θ g = f: R 0 + R 0 + ο g = f: R 0 + R 0 + ω g = f: R 0 + R 0 + c R + > 0 n 0 R + 0 > 0 n n 0 : f n c g(n) c R + > 0 n 0 R + 0 > 0 n n 0 : f n c g(n) c 1, c 2 R + > 0 n 0 R + 0 > 0 n n 0 : c 1 g n f n c 2 g(n) c R + > 0 n 0 R + 0 > 0 n n 0 : f n < c g(n) c R + > 0 n 0 R + 0 > 0 n n 0 : f n > c g(n) Bedeutung: f wächst... nicht wesentlich schneller als g nicht wesentlich langsamer als g ungefähr genauso schnell wie g wesentlich langsamer als g wesentlich schneller als g 10
Beispiel 1 Definitionen (kurz): f n = Ο g n c, n 0 n n 0 : f n c g(n) f n = Ω g n c, n 0 n n 0 : f n c g(n) f n = Θ g n c 1, c 2, n 0 n n 0 : c 1 g n f n c 2 g(n) Funktionen f n = k mit k > 0 g n = 1 Wähle c = k, n 0 = 0 n n 0 : f n c g n da k k 1 f n = Ο g n = Ο(1) n n 0 : f n c g n da k k 1 f n = Ω g n = Ω(1) f n = Θ g n = Θ 1 Konstante Funktionen wachsen alle asymptotisch gleich schnell (nämlich gar nicht) 11
Definitionen (kurz): Beispiel 2 f n = Ο g n c, n 0 n n 0 : f n c g(n) f n = Ω g n c, n 0 n n 0 : f n c g(n) f n = Θ g n c 1, c 2, n 0 n n 0 : c 1 g n f n c 2 g(n) Funktionen f n = 3n 5 + 4n 3 + 15 g n = n 5 Wähle c = 3 + 4 + 15 = 22, n 0 = 1 n n 0 : f n c g n da 3n 5 + 4n 3 + 15 22 n 5 für n 1 f n = Ο g n = Ο(n 5 ) Wähle c = 3, n 0 = 1 n n 0 : f n c g n da 3n 5 + 4n 3 + 15 3 n 5 für n 1 f n = Ω g n = Ω(n 5 ) f n = Θ g n = Θ(n 5 ) Allgemein gilt: a k n k + a k 1 n k 1 + + a 0 = Θ n k für a k > 0 12
Definitionen (kurz): Beispiel 2 (2) f n = Ο g n c, n 0 n n 0 : f n c g(n) f n = Ω g n c, n 0 n n 0 : f n c g(n) f n = Θ g n c 1, c 2, n 0 n n 0 : c 1 g n f n c 2 g(n) f n = ο g n c n 0 n n 0 : f n < c g(n) f n = ω g n c n 0 n n 0 : f n > c g(n) Funktionen f n = 3n 5 + 4n 3 + 15 g n = n 5 Wähle c = 3 ( c: f n < c g n ) da 3n 5 + 4n 3 + 15 > 3 n 5 für n 1 f n ο g n = ο(n 5 ) Wähle c = 3 + 4 + 15 = 22 ( c: f n > c g n ) da 3n 5 + 4n 3 + 15 < 22 n 5 für n 1 f n ω g n = ο(n 5 ) 13
Zusammenhänge zwischen Ο, Ω, Θ, ο und ω Definitionen (kurz): f n = Ο g n c, n 0 n n 0 : f n c g(n) f n = Ω g n c, n 0 n n 0 : f n c g(n) f n = ο g n c n 0 n n 0 : f n < c g(n) f n = ω g n c n 0 n n 0 : f n > c g(n) Satz: f Ο g g Ω(f) Beweis: f Ο(g) c n 0 n n 0 : f n c g n für c = 1 und das gleiche n c 0 gilt: n n 0 : g n g Ω f Satz: f ο g Satz: f ο g g ω f f Ω(g) c f(n) Beweis: f ο(g) c n 0 n n 0 : f n < c g n es existiert kein c, so dass für ein n 0 gilt: n n 0 : f n f Ω(g) Satz: f ω g f Ο(g) c g(n) 14
Grenzwert als hinreichendes Kriterium Definitionen (kurz): f n = Ο g n c, n 0 n n 0 : f n c g(n) f n = ο g n c n 0 n n 0 : f n < c g(n) Satz: lim f(n) n g(n) < f Ο(g) Funktion im Nenner wächst mindestens so schnell wie im Zähler Satz: lim f(n) n g(n) = 0 f ο(g) Funktion im Nenner wächst schneller als im Zähler Beispiel: f n = 23 g n = log log n f(n) lim n 23 log log n = 0 = lim g(n) n f ο g f Ω(g) und g ω(f) 15
Logarithmen und Satz von L Hôpital Logarithmengesetz für Produkte: log b x r = r log b x log a n = log a n log b a log b a = log b a log a n log b a = log b n log b a = 1 log b a log b n Logarithmen zu verschiedenen Basen können mit einem konstanten Faktor ineinander umgerechnet werden log a n = Θ(log b n) Satz von L Hôpital: Seien f und g zwei differenzierbare Funktionen, deren Grenzwerte entweder beide gegen 0 oder beide gegen f n gehen. Dann gilt lim = lim f n (falls der Grenzwert existiert). n g(n) n g (n) Beispiel: f n = log n = log 2 n g n = n lim log n = lim n = n n log n lim n n = lim ln n = lim n ln 2 n n f o g, f Ω(g), g ω(f) 1 n ln 2 1 2 n 1 2 = lim n 2 n ln 2 n 1 2 2 = lim = 0 n ln 2 n 16
Agenda 1. Organisatorisches 2. Die Landau-Notation 3. Vorstellung des ersten Übungsblatts 17
Übungsblatt 1 18
Konventionen 19
Aufgabe 1 20
Aufgabe 2 21
Beispiele zu Aufgabe 2 f(n) g(n) (f) n 1 2 n 3 4 (g) n + log n 2n (h) 2 n 2 n+1 (i) 2 n 2 2n (j)* 2 n n! 22
Aufgabe 3-1 23
Aufgabe 3-2 24
Aufgabe 4-1 25
Aufgabe 4-2 26
Ausblick: Nächste Woche Klärung von Fragen zum ersten Übungsblatt Wiederholung und Fortsetzung der Vertiefung der Landau- Notation Weitere Beispielaufgaben (an der Tafel) Vertiefende Wiederholung zu Dynamic Programming Als Vorbereitung auf Übungsblatt 2 Fragen? 27