Übung Algorithmen und Datenstrukturen

Ähnliche Dokumente
Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

V. Claus, Juli 2005 Einführung in die Informatik II 45

WS 2009/10. Diskrete Strukturen

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

2. Effizienz von Algorithmen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tutorium I

es gibt Probleme, die nicht berechenbar sind (z.b. Menge aller Funktionen N N und die Menge aller Sprachen sind überabzählbar)

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Komplexität von Algorithmen OOPM, Ralf Lämmel

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Vorlesung Datenstrukturen

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Komplexität von Algorithmen:

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1-1. Seminar -

Übung Algorithmen und Datenstrukturen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Informatik II. Algorithmen und Datenstrukturen. Vorläufige Version 1 c 2002 Peter Thiemann

Klausur Algorithmen und Datenstrukturen

Informatik I Komplexität von Algorithmen

Grundlagen der Programmierung

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Algorithmen und Datenstrukturen (für ET/IT)

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Datenstrukturen und Algorithmen

Grundlagen: Algorithmen und Datenstrukturen

Die Komplexitätsklassen P und NP

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Informatik I Komplexität von Algorithmen

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Übung zur Vorlesung Berechenbarkeit und Komplexität

Einführung in die Informatik 2

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Algorithmen und Datenstrukturen

Theoretische Informatik 1

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Programmiertechnik II

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Algorithmen & Datenstrukturen Blatt 4

ContainerDatenstrukturen. Große Übung 4

P, NP und NP -Vollständigkeit

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Allgemeine Informatik 1

1 Minimumssuche k = n Maximumssuche n. Median

F3 Berechenbarkeit und Komplexität

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Komplexität von Algorithmen Musterlösungen zu ausgewählten Übungsaufgaben

Konstruktion der reellen Zahlen

Logik für Informatiker

Algorithmen und Berechnungskomplexität I

Einstieg in die Informatik mit Java

Tutoraufgabe 1 (Sortieralgorithmus):

5. Übungsblatt zu Algorithmen I im SoSe 2016

2 Asymptotische Schranken

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Bioinformatik Für Biophysiker

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Algorithmen und Datenstrukturen

Vorlesung: Algorithmische Diskrete Mathematik

Logik für Informatiker

Algorithmen & Komplexität

4. Sortieren 4.1 Vorbemerkungen

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor

Potenzen, Wurzeln, Logarithmen

Datenstrukturen und Algorithmen

Vektorräume. Lineare Algebra I. Kapitel Juni 2012

Theoretische Informatik 2

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2007

Sortierverfahren für Felder (Listen)

Transkript:

Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin

Organisatorisches 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 Berit Grußien RUD 26, 1'303 Gruppe 1 Montag 13 15 Uhr Marc Bux RUD 26, 1'305 Gruppe 2 Dienstag 13 15 Uhr Marc Bux RUD 26, 0'313 Gruppe 3 Dienstag 13 15 Uhr Berit Grußien RUD 26, 1'303 Gruppe 4 Mittwoch 13 15 Uhr Patrick Schäfer RUD 26, 0'313 Gruppe 5 Mittwoch 15 17 Uhr Patrick Schäfer RUD 26, 0'313 Gruppe 6 Donnerstag 09 11 Uhr Lucas Heimberg RUD 26, 0'313 Gruppe 7 Freitag 09 11 Uhr Lucas Heimberg RUD 26, 1'303 Gruppe 8 Klausur: 7. August und 29. September 2017, jeweils 11 15 Uhr Websites: Übung: http://hu.berlin/algodat17 Vorlesung: http://hu.berlin/vl_algodat17 Moodle: http://moodle.hu-berlin.de 2

Inhalt dieser Veranstaltung Heute (KW 17): Organisatorisches Vorbereitung Aufgabenblatt 1, Aufgaben 1 & 2 Nächste Woche (KW 18): Vorbereitung Aufgabenblatt 1, Aufgaben 3 & 4 KW 19, 21, 23, 25, 27: Vorbereitung Aufgabenblatt n in KW 15 + 2n Abgabe von Aufgabenblatt n in KW 17 + 2n KW 20, 22, 24, 26, 28: Vorrechnen von Aufgabenblatt n in KW 18 + 2n jeder kommt mal dran Freiwillige vor, ansonsten wird gelost (seid vorbereitet!) KW 29: Vorrechnen von Aufgabenblatt 6 Außerdem: Rückgabe korrigierter Abgaben 3

Übungsaufgaben 6 Blätter mit je 50 Punkten Veröffentlichung alle zwei Wochen in Moodle und auf der Website jedes Aufgabenblatt muss bearbeitet werden Abgabe des ersten Aufgabenblatts: bis 8. Mai Lösungen schriftlicher Aufgaben separat auf Papier abgeben Blätter einer Aufgabe zusammentackern Abgabe vor der Vorlesung bis 11:10 Uhr oder bis 10:45 Uhr im Briefkasten bei Raum RUD25, 3.321 vorher kopieren oder abfotografieren (zur Vorstellung in der Übung) Programmieraufgaben (Java 8) in Moodle abgeben vorher auf gruenau2 testen gleicher Termin wie schriftliche Aufgaben auf jedes Blatt / jede Java-Datei jeder Abgabe: Namen CMS-Benutzernamen Moodle-Arbeitsgruppe gewünschten Rückgabetermin (eindeutig: Wochentag, Uhrzeit, Dozent) 4

Übungsschein 50% der Punkte (150) = Übungsschein = Prüfungszulassung Anmeldung in Agnes Keine Zulassungsgarantie zum Wunschtermin Anmeldung in Moodle Einschreibeschlüssel: Montag MoB.y9tknp / Dienstag DiB.3rvh2v Bildung von Abgabegruppen bestehend aus zwei (in Ausnahmefällen drei) Studenten Abgabegruppen können sich über mehrere Termine erstrecken Wichtige Nachrichten werden in den Moodle-Foren angekündigt oder über Moodle versendet (ggf. Weiterleitung einrichten) Abgaben ohne Anmeldung in Moodle: 0 Punkte Abgaben mit invalider Gruppengröße: 0 Punkte bei vermutetem Abschreiben: 0 Punkte nicht ausführbare Programmieraufgaben: 0 Punkte 5

Aufgaben für Euch jetzt: wer hat den Übungsschein bereits? wer hat noch keinen Übungspartner? zu nächster Woche: noch kein bestätigter Termin in Agnes: Für eine der Übungsgruppen 6-8 entscheiden und Berit Grußien anschreiben noch kein Übungspartner: Übungspartner finden (z.b. über den dafür eingerichteten Post im Moodle-Forum) in Moodle anmelden und Abgabegruppe bilden dafür sorgen, dass über Agnes und Moodle versandte Nachrichten in einem regelmäßig aberufenem Postfach ankommen O-Tutorial auf der Übungswebsite durchlesen Grenzwerte, Ableitungen, Potenz- und Logarithmusgesetze wiederholen mit der Bearbeitung von Aufgabenblatt 1 beginnen 6

Agenda 1. Organisatorisches 2. Die Landau-Notation 3. Vorbereitung Aufgabenblatt 1, Aufgabe 1 4. Vorbereitung Aufgabenblatt 1, Aufgabe 2 7

Zeitkomplexität Ziel: Abschätzung der Anzahl notwendiger Operationen (und damit der Laufzeit) eines Algorithmus wird definiert als Funktion der Eingabe üblicherweise im schlechtesten Fall (Worst Case), d.h. im Falle der ungünstigsten Eingabe unabhängig von Hardware und Implementierung Grundidee: Welche Terme bestimmen die Laufzeit des Algorithmus, wenn die Eingabe sehr groß wird nur der Term mit dem größten asymptotischen Wachstum (für n ) ist interessant konstante Summanden und Faktoren sind unerheblich 8

Einige gängige Funktionen 9

Die Landau-Notation (Ο-Notation) seien f und g Funktionen von N nach R 0 wir schreiben f Ο(g), falls es Zahlen c R +, n 0 N gibt, so dass für alle n n 0 gilt: f n c g(n) Bedeutung: g wächst mindestens so schnell wie f g ist obere Schranke für f Beispiele: 4n 2 Ο(n 3 ), 4n 2 Ο(n 2 ), n 3 Ο(4n 2 ) Scharfe obere Schranken angeben: 4n 2 Ο(n 2 ) sagt mehr als 4n 2 Ο(n 3 ) Ο g ist die Menge aller Funktionen, welche die obige Bedingungen erfüllen Ο g = f: N R 0 c R + n 0 N n n 0 : f n c g(n) 10

O-Notation: Menge von Funktionen Ο g = f: N R 0 c R + n 0 N n n 0 : f n c g(n) a 1 a 2 a 3 a 4 a 5 a 6 a 1 : Wir definieren Ο(g) a 2 : als Menge aller Funktionen f, für die gilt: a 3 und a 4 : es existieren zwei Konstanten c und n 0, a 5 : sodass für alle Werte n ab n 0 gilt, dass a 6 : c g(n) obere Schranke für f(n) ist. c g(n) = obere Schranke f(n) n 0 11

Wichtige Komplexitätsklassen Ο(1): konstant (Array-Zugriff) Ο(log n): logarithmisch (Binäre Suche) Ο(n): linear (Sequentielle Suche) Ο(n log n): linear-logarithmisch (MergeSort) Ο(n 2 ): quadratisch (BubbleSort) Ο(n k ): polynomiell Ο(2 n ): exponentiell (Traveling Salesman) 12

Weitere Landau-Terme Definitionen: Ο g = f: N R 0 c R + n 0 N n n 0 : f n c g(n) Ω g = f: N R 0 c R + n 0 N n n 0 : f n c g(n) Θ g = f: N R 0 f Ο g f Ω g ο g = f: N R 0 c R + n 0 N n n 0 : f n < c g(n) ω g = f: N R 0 c R + n 0 N n n 0 : f n > c g(n) Bedeutung: g wächst... mindestens so schnell wie f (ist obere Schranke für f) höchstens so schnell wie f (ist untere Schranke für f) ungefähr genauso schnell wie f schneller als f langsamer als f 13

Beispiel 1 Definitionen (kurz): f Ο g c n 0 n n 0 : f n c g(n) f Ω g c n 0 n n 0 : f n c g(n) f Θ g f Ο g f Ω g 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 Ο g = Ο(1) n n 0 : f n c g n da k k 1 f Ω g = Ω(1) f Θ g = Θ 1 konstante Funktionen wachsen alle asymptotisch gleich schnell (nämlich gar nicht) 14

Beispiel 2 Definitionen (kurz): f Ο g c n 0 n n 0 : f n c g(n) f Ω g c n 0 n n 0 : f n c g(n) f Θ g f Ο g f Ω g 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 Ο g = Ο(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 Ω g = Ω(n 5 ) f Θ g = Θ(n 5 ) 15

Beispiel 2 (2) Definitionen (kurz): f Ο g c n 0 n n 0 : f n c g(n) f Ω g c n 0 n n 0 : f n c g(n) f Θ g f Ο g f Ω g f ο g c n 0 n n 0 : f n < c g(n) f ω g 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 ο g = ο(n 5 ) wähle c = 3 + 4 + 15 = 22 ( c: f n n 1 > c g n ) da 3n 5 + 4n 3 + 15 < 22 n 5 für f ω g = ω(n 5 ) 16

Zusammenhänge zwischen Ο, Ω, Θ, ο und ω Definitionen (kurz): f Ο g c n 0 n n 0 : f n c g(n) f Ω g c n 0 n n 0 : f n c g(n) f ο g c n 0 n n 0 : f n < c g(n) f ω g 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) 17

Grenzwert als hinreichendes Kriterium Satz: lim f(n) n g(n) < f Ο(g) g wächst mindestens so schnell wie f Satz: lim f(n) n g(n) > 0 f Ω(g) g wächst höchstens so schnell wie f Satz: lim f(n) n g(n) = 0 f ο(g) g wächst schneller als f Satz: lim f(n) n g(n) = f ω(g) g wächst langsamer als f Beispiel: f n = 23 g n = log log n n f(n) 23 log log n = 0 lim = lim g(n) n f ο g f Ω(g) und g ω(f) 18

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 19

Agenda 1. Organisatorisches 2. Die Landau-Notation 3. Vorbereitung Aufgabenblatt 1, Aufgabe 1 4. Vorbereitung Aufgabenblatt 1, Aufgabe 2 20

Vorbereitung Aufgabenblatt 1, Aufgabe 1 Beweisen oder widerlegen Sie für die Teilaufgaben (a) bis (d) die folgenden Aussagen: f Ο(g), f Ω(g). (a) f(n) n g(n) n 3 4 (b) n + log n 2 n (c) 2 n 2 n+1 (d) 2 n n! 21

Agenda 1. Organisatorisches 2. Die Landau-Notation 3. Vorbereitung Aufgabenblatt 1, Aufgabe 1 4. Vorbereitung Aufgabenblatt 1, Aufgabe 2 22

Vorbereitung Aufgabenblatt 1, Aufgabe 2 Seien f und g Funktionen, die von N nach R + abbilden. Beweisen Sie die folgenden Aussagen: 1. Wenn f Ο g und g Ο(h), dann gilt f Ο h. 2. Seien a, b R + Konstanten, dann gilt a n+b Θ a n. 23

Ausblick zu nächster Woche: noch kein bestätigter Termin in Agnes: Für eine der Übungsgruppen 6-8 entscheiden und Berit Grußien anschreiben noch kein Übungspartner: Übungspartner finden (z.b. über den dafür eingerichteten Post im Moodle-Forum) in Moodle anmelden und Abgabegruppe bilden dafür sorgen, dass über Agnes und Moodle versandte Nachrichten in einem regelmäßig aberufenem Postfach ankommen O-Tutorial auf der Übungswebsite durchlesen Grenzwerte, Ableitungen, Potenz- und Logarithmusgesetze wiederholen mit der Bearbeitung von Aufgabenblatt 1 beginnen nächste Woche: Wiederholung und Vertiefung der O-Notation Vorbereitung Aufgabenblatt 1, Aufgaben 3 & 4 (Pseudocode-Analyse, Algorithmenentwurf) Klärung von Fragen zu Aufgabenblatt 1 24