Datenstrukturen und Algorithmen
|
|
- Nadja Esser
- vor 5 Jahren
- Abrufe
Transkript
1 1 Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich Felix Friedrich FS 2017
2 Willkommen! 2 Vorlesungshomepage: Das Team: Assistenten Dozent Alexander Pilz Daniel Hupp Lukas Humbel Felix Friedrich
3 3 1. Einführung Algorithmen und Datenstrukturen, drei Beispiele
4 4 Ziele der Vorlesung Verständnis des Entwurfs und der Analyse grundlegender Algorithmen und Datenstrukturen. Vertiefter Einblick in ein modernes Programmiermodell (mit C++). Wissen um Chancen, Probleme und Grenzen des parallelen und nebenläufigen Programmierens.
5 Ziele der Vorlesung 5 Einerseits Unverzichtbares Grundlagenwissen aus der Informatik. Andererseits Vorbereitung für Ihr weiteres Studium und die Praxis.
6 Inhalte der Vorlesung 6 Datenstrukturen / Algorithmen Begriff der Invariante, Kostenmodell, Landau Symbole Algorithmenentwurf, Induktion Suchen und Auswahl, Sortieren Dynamic Programming Programmieren mit C++ Graphen, Kürzeste Wege, Backtracking, Flow Wörterbücher: Hashing und Suchbäume, AVL RAII, Move Konstruktion, Smart Pointers, Constexpr, user defined literals Templates und Generische Programmierung Exceptions Funktoren und Lambdas Sortiernetzwerke, parallele Algorithmen Randomisierte Algorithmen (Gibbs/SA), Multiskalen Geometrische Algorithmen, High Performance LA Promises and Futures Threads, Mutexs and Monitors Parallel Programming Parallelität vs. Concurrency, Speedup (Amdahl/- Gustavson), Races, Memory Reordering, Atomic Registers, RMW (CAS,TAS), Deadlock/Starvation
7 Literatur 7 Algorithmen und Datenstrukturen, T. Ottmann, P. Widmayer, Spektrum-Verlag, 5. Auflage, 2011 Algorithmen - Eine Einführung, T. Cormen, C. Leiserson, R. Rivest, C. Stein, Oldenbourg, 2010 Introduction to Algorithms, T. Cormen, C. Leiserson, R. Rivest, C. Stein, 3rd ed., MIT Press, 2009 The C++ Programming Language, B. Stroustrup, 4th ed., Addison-Wesley, The Art of Multiprocessor Programming, M. Herlihy, N. Shavit, Elsevier, 2012.
8 8 1.2 Algorithmen [Cormen et al, Kap. 1;Ottman/Widmayer, Kap. 1.1]
9 Algorithmus 9 Algorithmus: wohldefinierte Berechnungsvorschrift, welche aus Eingabedaten (input) Ausgabedaten (output) berechnet.
10 Beispielproblem 10 Input : Eine Folge von n Zahlen (a 1, a 2,..., a n )
11 Beispielproblem 10 Input : Eine Folge von n Zahlen (a 1, a 2,..., a n ) Output : Eine Permutation (a 1, a 2,..., a n) der Folge (a i ) 1 i n, so dass a 1 a 2 a n
12 Beispielproblem 10 Input : Eine Folge von n Zahlen (a 1, a 2,..., a n ) Output : Eine Permutation (a 1, a 2,..., a n) der Folge (a i ) 1 i n, so dass a 1 a 2 a n Mögliche Eingaben (1, 7, 3), (15, 13, 12, 0.5), (1)...
13 Beispielproblem 10 Input : Eine Folge von n Zahlen (a 1, a 2,..., a n ) Output : Eine Permutation (a 1, a 2,..., a n) der Folge (a i ) 1 i n, so dass a 1 a 2 a n Mögliche Eingaben (1, 7, 3), (15, 13, 12, 0.5), (1)... Jedes Beispiel erzeugt eine Probleminstanz.
14 Beispiele für Probleme in der Algorithmik 11 Routenplanung: Shortest Path
15 11 Beispiele für Probleme in der Algorithmik Routenplanung: Shortest Path Kryptographie / Digitale Signaturen
16 11 Beispiele für Probleme in der Algorithmik Routenplanung: Shortest Path Kryptographie / Digitale Signaturen Stundenpläne / Arbeitspläne: Linear Programming
17 11 Beispiele für Probleme in der Algorithmik Routenplanung: Shortest Path Kryptographie / Digitale Signaturen Stundenpläne / Arbeitspläne: Linear Programming DNA Matching: Dynamic Programming
18 11 Beispiele für Probleme in der Algorithmik Routenplanung: Shortest Path Kryptographie / Digitale Signaturen Stundenpläne / Arbeitspläne: Linear Programming DNA Matching: Dynamic Programming Fabrikationspipeline: Topologische Sortierung
19 11 Beispiele für Probleme in der Algorithmik Routenplanung: Shortest Path Kryptographie / Digitale Signaturen Stundenpläne / Arbeitspläne: Linear Programming DNA Matching: Dynamic Programming Fabrikationspipeline: Topologische Sortierung Geometrische Probleme, z.b. Konvexe Hülle
20 12 Charakteristik Extrem grosse Anzahl potentieller Lösungen Praktische Anwendung
21 13 Datenstrukturen Organisation der Daten, zugeschnitten auf die Algorithmen die auf den Daten operieren Programme = Algorithmen + Datenstrukturen.
22 14 Sehr schwierige Probleme NP-vollständige Probleme: Keine bekannte effiziente Lösung (Fehlen einer solchen Lösung ist aber unbewiesen!) Beispiel: Travelling Salesman Problem
23 15 Ein Traum Wären Rechner unendlich schnell und hätten unendlich viel Speicher dann bräuchten wir die Theorie der Algorithmen (nur) für Aussagen über Korrektheit (incl. Terminierung).
24 16 Die Realität Ressourcen sind beschränkt und nicht umsonst: Rechenzeit Effizienz Speicherplatz Effizienz
25 1.3 Organisation 17
26 Ablauf des Übungsbetriebes 18 Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V V V V Ü Ü
27 Ablauf des Übungsbetriebes 18 Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V V V V Ü Ü Ausgabe Übungsblattausgabe zur Vorlesung am Donnerstag (online).
28 Ablauf des Übungsbetriebes 18 Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V V V V Ü Ü Ausgabe Vorbesprechung Vorbesprechung am Freitag.
29 Ablauf des Übungsbetriebes 18 Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V V V V Ü Ü Ausgabe Abgabe Vorbesprechung Bearbeitung der Übung bis spätestens am Donnerstag darauf.
30 Ablauf des Übungsbetriebes 18 Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V V V V Ü Ü Ausgabe Vorbesprechung Abgabe Nachbesprechung Nachbesprechung der Übung am Freitag darauf. Feeback zu den Abgaben innerhalb einer Woche nach Nachbesprechung.
31 Codeboard 19 Codeboard ist eine Online-IDE: Programmieren im Browser! Sie können Beispiele ausprobieren, ohne dass Sie irgendwelche Tools installieren müssen. Jetzt mit C++14 Auch für die Übungen eingesetzt.
32 20 Codeboard besteht aus zwei unabhängigen Systemen, die miteinander kommunizieren: User Das ETH Abgabesystem: Ermöglicht es uns, ihre Aufgaben zu bewerten Die Online IDE: Die Programmierumgebung ETH Abgabesystem Login mit ETH Credentials Codeboard.io Login mit Codeboard.io Credentials
33 Codeboard 21 Codeboard.io Registrierung Gehen Sie auf und erstellen Sie dort ein Konto, bleiben Sie am besten eingeloggt. Einschreibung in Übungsgruppen Gehen Sie auf und schreiben Sie sich dort in eine Übungsgruppe ein.
34 Codeboard.io Registrierung 22 Falls Sie noch keinen Codeboard.io Account haben... Wir verwenden die Online IDE Codeboard.io
35 22 Codeboard.io Registrierung Falls Sie noch keinen Codeboard.io Account haben... Wir verwenden die Online IDE Codeboard.io Erstellen Sie dort einen Account, um Ihren Fortschritt abzuspeichern und später Submissions anzuschauen
36 22 Codeboard.io Registrierung Falls Sie noch keinen Codeboard.io Account haben... Wir verwenden die Online IDE Codeboard.io Erstellen Sie dort einen Account, um Ihren Fortschritt abzuspeichern und später Submissions anzuschauen Anmeldedaten können beliebig gewählt werden! Verwenden Sie nicht das ETH Passwort.
37 Codeboard.io Login 23 Falls Sie schon einen Account haben, loggen Sie sich ein:
38 Einschreibung in Übungsgruppen - I 24 Besuchen Sie Loggen Sie sich mit Ihrem nethz Account ein.
39 Einschreibung in Übungsgruppen - II 25 Schreiben Sie sich in diesem Dialog in eine Übungsgruppe ein.
40 Die erste Übung 26 Sie sind nun eingeschrieben und die erste Übung ist geladen. Folgen Sie den Anweisungen in der gelben Box. Das Übungsblatt auf der Kurshomepage enthält weitere Anweisungen und Erklärungen.
41 Die erste Übung - Codeboard.io Login 27 Falls Sie diese Nachricht sehen, klicken Sie auf Sign in now und melden Sie sich dort mit ihrem Codeboard.io Account ein.
42 Die erste Übung - Fortschritt speichern! 28 Achtung! Speichern Sie ihren Fortschritt regelmässig ab. So können Sie jederzeit an einem anderen Ort weiterarbeiten.
43 Zu den Übungen 29 Seit HS 2013 für Prüfungszulassung kein Testat mehr erforderlich.
44 Zu den Übungen 29 Bearbeitung der wöchentlichen Uebungsserien ist freiwillig, wird aber dringend empfohlen!
45 Zu den Übungen 29 Bearbeitung der wöchentlichen Uebungsserien ist freiwillig, wird aber dringend empfohlen!
46 30 Relevantes für die Prüfung Prüfungsstoff für die Endprüfung (in der Prüfungssession 2017) schliesst ein Vorlesungsinhalt (Vorlesung, Handout) und Übungsinhalte (Übungsstunden, Übungsblätter).
47 Relevantes für die Prüfung 30 Prüfung (120 min) ist schriftlich. Hilfsmittel: vier A4-Seiten (bzw. 2 A4-Blätter doppelseitig) entweder handgeschrieben oder mit Fontgrösse minimal 11 Punkt.
48 31 In Ihrem und unserem Interesse Bitte melden sie frühzeitig, wenn Sie Probleme sehen, wenn Ihnen die Vorlesung zu schnell, zu schwierig, zu... ist die Übungen nicht machbar sind... Sie sich nicht gut betreut fühlen... Kurz: wenn Ihnen irgendetwas auf dem Herzen liegt.
49 Altägyptische Multiplikation Altägyptische Multiplikation
50 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Auch bekannt als Russiche Bauernmulltiplikation 33
51 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 1 Auch bekannt als Russiche Bauernmulltiplikation 33
52 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 1 Auch bekannt als Russiche Bauernmulltiplikation 33
53 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 1 Auch bekannt als Russiche Bauernmulltiplikation 33
54 33 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 2 Gerade Zahl rechts Zeile streichen. 1 Auch bekannt als Russiche Bauernmulltiplikation
55 33 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 2 Gerade Zahl rechts Zeile streichen. 1 Auch bekannt als Russiche Bauernmulltiplikation
56 33 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 2 Gerade Zahl rechts Zeile streichen. 3 Übrige Zeilen links addieren. 1 Auch bekannt als Russiche Bauernmulltiplikation
57 33 Beispiel 1: Altägyptische Multiplikation 1 Berechnung von Links verdoppeln, rechts ganzzahlig halbieren. 2 Gerade Zahl rechts Zeile streichen. 3 Übrige Zeilen links addieren. 1 Auch bekannt als Russiche Bauernmulltiplikation
58 34 Vorteile Kurze Beschreibung, einfach zu verstehen. Effizient für Computer im Dualsystem: Verdoppeln = Left Shift, Halbieren = Right Shift Beispiel left shift 9 = = 18 right shift 9 = = 4
59 35 Fragen Funktioniert das immer? (z.b. für negative Zahlen) Wenn nicht, wann? Wie beweist man die Korrektheit? Besser als die "Schulmethode"? Was heisst "gut"? Lässt sich Güte anordnen? Wie schreibt man das Verfahren unmissverständlich auf?
60 Beobachtung 36 Wenn b > 1, a Z, dann: { 2a b a b = 2 falls b gerade, a + 2a b 1 2 falls b ungerade.
61 Terminierung 37 a falls b = 1, a b = 2a b 2 falls b gerade, a + 2a b 1 2 falls b ungerade.
62 Rekursiv funktional notiert 38 a falls b = 1, f(a, b) = f(2a, b 2 ) falls b gerade, a + f(2a, b 1 2 ) falls b ungerade.
63 Funktion programmiert 39 // pre: b>0 // post: return a b int f(int a, int b){ if(b==1) return a; else if (b%2 == 0) return f(2 a, b/2); else return a + f(2 a, (b 1)/2); }
64 Korrektheit 40 a falls b = 1, f(a, b) = f(2a, b 2 ) falls b gerade, a + f(2a b 1 2 ) falls b ungerade. Zu zeigen: f(a, b) = a b für a Z, b N +.
65 Beweis per Induktion 41 Anfang: b = 1 f(a, b) = a = a 1. Hypothese: f(a, b ) = a b für 0 < b b Schritt: f(a, b + 1) =! a (b + 1) b {}}{ b + 1 f(2a, ) = a (b + 1) falls b ungerade, f(a, b + 1) = 2 b a + f(2a, ) = a + a b falls b gerade. }{{} 2 b
66 Endrekursion 42 Die Rekursion lässt sich endrekursiv schreiben // pre: b>0 // post: return a b int f(int a, int b){ if (b==1) return a; else if (b%2 == 0) return f(2 a, b/2); else return a + f(2 a, (b 1)/2); } // pre: b>0 // post: return a b int f(int a, int b){ if (b==1) return a; int z=0; if (b%2!= 0){ b; z=a; } return z + f(2 a, b/2); }
67 Endrekursion Iteration // pre: b>0 // post: return a b int f(int a, int b){ if (b==1) return a; int z=0; if (b%2!= 0){ b; z=a; } return z + f(2 a, b/2); } int f(int a, int b) { int res = 0; while (b!= 1) { int z = 0; if (b % 2!= 0){ b; z = a; } res += z; a = 2; // neues a b /= 2; // neues b } res += a; // Basisfall b=1 return res ; } 43
68 Vereinfachen int f(int a, int b) { int res = 0; while (b!= 1) { int z = 0; if (b % 2!= 0){ } b; z = a; } res += z; a = 2; b /= 2; } res += a; return res ; Teil der Division Direkt in res in den Loop // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0) res += a; a = 2; b /= 2; } return res ; } 44
69 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b.
70 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res
71 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res...
72 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res dann auch hier x = a b + res
73 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res dann auch hier x = a b + res b gerade
74 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res dann auch hier x = a b + res b gerade Hier gilt x = a b + res
75 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res dann auch hier x = a b + res b gerade Hier gilt x = a b + res Hier gilt x = a b + res und b = 0
76 45 Invarianten! // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0){ res += a; b; } a = 2; b /= 2; } return res; } Sei x = a b. Hier gilt x = a b + res Wenn hier x = a b + res dann auch hier x = a b + res b gerade Hier gilt x = a b + res Hier gilt x = a b + res und b = 0 Also res = x.
77 Zusammenfassung Der Ausdruck a b + res ist eine Invariante. Werte von a, b, res ändern sich, aber die Invariante bleibt im Wesentlichen unverändert: Invariante vorübergehend durch eine Anweisung zerstört, aber dann darauf wieder hergestellt. Betrachtet man solche Aktionsfolgen als atomar, bleibt der Wert tatsächlich invariant Insbesondere erhält die Schleife die Invariante (Schleifeninvariante), wirkt dort wie der Induktionsschritt bei der vollständigen Induktion Invarianten sind offenbar mächtige Beweishilfsmittel! 46
78 Weiteres Kürzen 47 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { if (b % 2!= 0) res += a; a = 2; b /= 2; } return res ; } // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; }
79 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis
80 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis (9)
81 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis (9) (18)
82 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis (9) (18)
83 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis (9) (18) (72)
84 Analyse 48 // pre: b>0 // post: return a b int f(int a, int b) { int res = 0; while (b > 0) { res += a (b%2); a = 2; b /= 2; } return res ; } Altägyptische Multiplikation entspricht der Schulmethode zur Basis (9) (18) (72) (99)
85 Effizienz 49 Frage: Wie lange dauert eine Multiplikation von a und b? Mass für die Effizienz Gesamtzahl der elementaren Operationen: Verdoppeln, Halbieren, Test auf "gerade", Addition Im rekursiven Code: maximal 6 Operationen pro Aufruf Wesentliches Kriterium: Anzahl rekursiver Aufrufe oder Anzahl Schleifendurchläufe(im iterativen Fall) b 2 n 1 gilt für n log 2 b. Also nicht mehr als 6 log 2 b elementare Operationen.
86 Schnelle Multiplikation von Zahlen [Ottman/Widmayer, Kap ]
87 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b
88 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a
89 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a 6 c b
90 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a 6 c b 1 8 c a
91 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a 6 c b 1 8 c a =
92 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a 6 c b 1 8 c a = = 4 einstellige Multiplikationen.
93 Beispiel 2: Multiplikation grosser Zahlen 51 Primarschule: a b c d d b 4 2 d a 6 c b 1 8 c a = = 4 einstellige Multiplikationen. Multiplikation zweier n-stelliger Zahlen: n 2 einstellige Multiplikationen
94 Beobachtung 52 ab cd = (10 a + b) (10 c + d)
95 Beobachtung 52 ab cd = (10 a + b) (10 c + d) = 100 a c + 10 a c + 10 b d + b d + 10 (a b) (d c)
96 Verbesserung? 53 a b c d d b
97 Verbesserung? 53 a b c d d b 1 4 d b
98 Verbesserung? 53 a b c d d b 1 4 d b 1 6 (a b) (d c)
99 Verbesserung? 53 a b c d d b 1 4 d b 1 6 (a b) (d c) 1 8 c a
100 Verbesserung? 53 a b c d d b 1 4 d b 1 6 (a b) (d c) 1 8 c a 1 8 c a
101 Verbesserung? 53 a b c d d b 1 4 d b 1 6 (a b) (d c) 1 8 c a 1 8 c a =
102 Verbesserung? 53 a b c d d b 1 4 d b 1 6 (a b) (d c) 1 8 c a 1 8 c a = einstellige Multiplikationen.
103 Grosse Zahlen = }{{} 62 }{{} 37 }{{} 58 }{{} 98 a b c d
104 Grosse Zahlen = }{{} 62 }{{} 37 }{{} 58 }{{} 98 a b c Rekursive / induktive Anwendung: a c, a d, b c und c d wie oben berechnen. d
105 Grosse Zahlen = }{{} 62 }{{} 37 }{{} 58 }{{} 98 a b c Rekursive / induktive Anwendung: a c, a d, b c und c d wie oben berechnen. 3 3 = 9 statt 16 einstellige Multiplikationen. d
106 55 Verallgemeinerung Annahme: zwei n-stellige Zahlen, n = 2 k für ein k. (10 n/2 a + b) (10 n/2 c + d) = 10 n a c + 10 n/2 a c + 10 n/2 b d + b d + 10 n/2 (a b) (d c) Rekursive Anwendung dieser Formel: Algorithmus von Karatsuba und Ofman (1962).
107 Analyse 56 M(n): Anzahl einstelliger Multiplikationen. Rekursive Anwendung des obigen Algorithmus Rekursionsgleichung: { M(2 k 1 falls k = 0, ) = 3 M(2 k 1 ) falls k > 0.
108 Teleskopieren 57 Iteratives Einsetzen der Rekursionsformel zum Lösen der Rekursionsgleichung. M(2 k ) = 3 M(2 k 1 )
109 Teleskopieren 57 Iteratives Einsetzen der Rekursionsformel zum Lösen der Rekursionsgleichung. M(2 k ) = 3 M(2 k 1 ) = 3 3 M(2 k 2 ) = 3 2 M(2 k 2 )
110 Teleskopieren 57 Iteratives Einsetzen der Rekursionsformel zum Lösen der Rekursionsgleichung. M(2 k ) = 3 M(2 k 1 ) = 3 3 M(2 k 2 ) = 3 2 M(2 k 2 ) =...! = 3 k M(2 0 ) = 3 k.
111 Beweis: Vollständige Induktion 58 Hypothese H: M(2 k ) = 3 k.
112 Beweis: Vollständige Induktion 58 Hypothese H: M(2 k ) = 3 k. Induktionsanfang (k = 0): M(2 0 ) = 3 0 = 1.
113 Beweis: Vollständige Induktion Hypothese H: M(2 k ) = 3 k. Induktionsanfang (k = 0): M(2 0 ) = 3 0 = 1. Induktionsschritt (k k + 1): M(2 k+1 ) def = 3 M(2 k ) H = 3 3 k = 3 k+1. 58
114 Vergleich 59 Primarschulmethode: n 2 einstellige Multiplikationen.
115 Vergleich 59 Primarschulmethode: n 2 einstellige Multiplikationen. Karatsuba/Ofman: M(n) = 3 log 2 n = (2 log 2 3 ) log 2 n = 2 log 2 3 log 2 n = n log 2 3 n 1.58.
116 Vergleich 59 Primarschulmethode: n 2 einstellige Multiplikationen. Karatsuba/Ofman: M(n) = 3 log 2 n = (2 log 2 3 ) log 2 n = 2 log 2 3 log 2 n = n log 2 3 n Beispiel: 1000-stellige Zahl: /
117 Bestmöglicher Algorithums? 60 Wir kennen nun eine obere Schranke n log 2 3. Es gibt praktisch (für grosses n) relevante, schnellere Algorithmen. Die beste obere Schranke ist nicht bekannt. Untere Schranke: n/2 (Jede Ziffer muss zumindest einmal angeschaut werden).
118 1.6 Finde den Star 61
119 Konstruktiv? 62 Übung: Finde ein schnelleres Multiplikationsverfahren. Unsystematisches Suchen einer Lösung. Betrachten nun ein konstruktiveres Beispiel.
120 63 Beispiel 3: Finde den Star! Raum mit n > 1 Personen. Star: Person, die niemanden anderen kennt, jedoch von allen gekannt wird. Elementare Operation: Einzige erlaubte Frage an Person A: Kennst Du B? (B A) bekannt?
121 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich?
122 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich? Nein!
123 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich? Nein! Nein!
124 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich? Nein! Nein! Annahme: Zwei Stars S 1, S 2.
125 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich? Nein! Nein! Annahme: Zwei Stars S 1, S 2. S 1 kennt S 2 S 1 kein Star.
126 64 Problemeigenschaften Möglich: kein Star anwesend. Möglich: ein Star. Mehr als ein Star möglich? Nein! Nein! Annahme: Zwei Stars S 1, S 2. S 1 kennt S 2 S 1 kein Star. S 1 kennt S 2 nicht S 2 kein Star.
127 Naive Lösung 65 Frage jeden über jeden. Resultat: Ja Nein Nein 2 Nein - Nein Nein 3 Ja Ja - Nein 4 Ja Ja Ja -
128 Naive Lösung 65 Frage jeden über jeden. Resultat: Star ist Ja Nein Nein 2 Nein - Nein Nein 3 Ja Ja - Nein 4 Ja Ja Ja -
129 Naive Lösung 65 Frage jeden über jeden. Resultat: Star ist Ja Nein Nein 2 Nein - Nein Nein 3 Ja Ja - Nein 4 Ja Ja Ja - Anzahl Operationen (Fragen): n (n 1).
130 Geht das besser? 66 Induktion: zerlege Problem in kleinere Teile.
131 Geht das besser? 66 Induktion: zerlege Problem in kleinere Teile. n = 2: Zwei Fragen genügen.
132 Geht das besser? 66 Induktion: zerlege Problem in kleinere Teile. n = 2: Zwei Fragen genügen. n > 2: Schicke eine Person A weg. Finde den Star unter n 1 Personen. Danach überprüfe A mit 2 (n 1) Fragen.
133 Geht das besser? 66 Induktion: zerlege Problem in kleinere Teile. n = 2: Zwei Fragen genügen. n > 2: Schicke eine Person A weg. Finde den Star unter n 1 Personen. Danach überprüfe A mit 2 (n 1) Fragen. Gesamt F (n) = 2(n 1)+F (n 1) = 2(n 1)+2(n 2)+ +2 = n(n 1).
134 Geht das besser? 66 Induktion: zerlege Problem in kleinere Teile. n = 2: Zwei Fragen genügen. n > 2: Schicke eine Person A weg. Finde den Star unter n 1 Personen. Danach überprüfe A mit 2 (n 1) Fragen. Gesamt F (n) = 2(n 1)+F (n 1) = 2(n 1)+2(n 2)+ +2 = n(n 1). Kein Gewinn.
135 Verbesserung 67 Idee: Vermeide, den Star rauszuschicken.
136 Verbesserung 67 Idee: Vermeide, den Star rauszuschicken. Frage eine beliebige Person A im Raum, ob sie B kennt.
137 67 Verbesserung Idee: Vermeide, den Star rauszuschicken. Frage eine beliebige Person A im Raum, ob sie B kennt. Falls ja: A ist kein Star.
138 67 Verbesserung Idee: Vermeide, den Star rauszuschicken. Frage eine beliebige Person A im Raum, ob sie B kennt. Falls ja: A ist kein Star. Falls nein: B ist kein Star.
139 67 Verbesserung Idee: Vermeide, den Star rauszuschicken. Frage eine beliebige Person A im Raum, ob sie B kennt. Falls ja: A ist kein Star. Falls nein: B ist kein Star. Zum Schluss bleiben 2 Personen, von denen möglicherweise eine Person X der Star ist. Wir überprüfen mit jeder Person, die draussen ist, ob X ein Star sein kann.
140 Analyse 68 F (n) = { 2 für n = 2, 1 + F (n 1) + 2 für n > 2.
141 Analyse 68 F (n) = { 2 für n = 2, 1 + F (n 1) + 2 für n > 2. Teleskopieren: F (n) = 3+F (n 1) = 2 3+F (n 2) = = 3 (n 2)+2 = 3n 4. Beweis: Übung!
142 Moral 69 Bei vielen Problemen lässt sich ein induktives oder rekursives Lösungsmuster erarbeiten, welches auf der stückweisen Vereinfachung eines Problems basiert. Weiteres Beispiel in der nächsten Stunde.
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich 1. Einführung Felix Friedrich Algorithmen und Datenstrukturen, drei Beispiele FS 2018 1 22 Ziele der Vorlesung Ziele der Vorlesung
MehrDatenstrukturen und Algorithmen
Willkommen! Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich Vorlesungshomepage: Das Team: http://lec.inf.ethz.ch/da/2017 Felix Friedrich FS 2017 Assistenten Dozent Alexander Pilz
MehrDatenstrukturen und Algorithmen
1 Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich Felix Friedrich FS 2017 Willkommen! 2 Vorlesungshomepage: Das Team: http://lec.inf.ethz.ch/da/2017 Assistenten Dozent Alexander
MehrDatenstrukturen und Algorithmen
Willkommen! Datenstrukturen und Algorithmen Vorlesungshomepage: http://lec.inf.ethz.ch/da/2018 Vorlesung am D-Math (CSE) der ETH Zürich Felix Friedrich FS 2018 Das Team: Chefassistent Assistenten Dozent
MehrInformatik II. Willkommen zur Vorlesung! Das Team. Übungsbetrieb. Vorlesung am D-BAUG der ETH Zürich
Willkommen zur Vorlesung! Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesungshomepage: http://lec.inf.ethz.ch/baug/informatik2/2018/ Felix Friedrich & Hermann Lehner FS 2018 1 2 Das Team Dozenten
MehrInformatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rosmannek, David Sidler, Thilo Weghorn FS 2017
1 Informatik II Übung 1 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rosmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Ablauf der Übungen 2 Wiederholung der
MehrInformatik II. Woche 08, Giuseppe Accaputo
Informatik II Woche 08, 23.2.2017 Giuseppe Accaputo g@accaputo.ch 1 Über mich Giuseppe Accaputo 4. Semester RW/CSE Master E-Mail: g@accaputo.ch Homepage: http://accaputo.ch Homepage zur Assistenz: http://accaputo.ch/hilfsassistenz/informatik-2-d-baug-2017
MehrInformatik II. 1. Einführung. Ziele der Vorlesung. Inhalte der Vorlesung. Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich 1. Einführung Felix Friedrich & Hermann Lehner Algorithmen und Datenstrukturen, erstes Beispiel FS 2018 1 23 Ziele der Vorlesung Inhalte der Vorlesung Verständnis
MehrInformatik. Vorlesung am D-MAVT der ETH Zürich. Hermann Lehner, Malte Schwerhoff SS 2018
18 Informatik Vorlesung am D-MAVT der ETH Zürich Hermann Lehner, Malte Schwerhoff SS 2018 Willkommen 19 zur Vorlesung Informatik am MAVT Department der ETH Zürich. Ort und Zeit: Donnerstag 10:15-11:55,
MehrInformatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018
1 Informatik II Vorlesung am D-BAUG der ETH Zürich Felix Friedrich & Hermann Lehner FS 2018 23 1. Einführung Algorithmen und Datenstrukturen, erstes Beispiel 24 Ziele der Vorlesung Verständnis des Entwurfs
MehrInformatik. Willkommen. Team. Ablauf. Vorlesung am D-MAVT der ETH Zürich. zur Vorlesung Informatik. Ort und Zeit:
Willkommen Informatik Vorlesung am D-MAVT der ETH Zürich Hermann Lehner, Malte Schwerhoff SS 2018 zur Vorlesung Informatik am MAVT Department der ETH Zürich. Ort und Zeit: Donnerstag 10:15-11:55, HG F7/F5.
MehrInformatik. Vorlesung am D-MATH / D-PHYS der ETH Zürich. Bernd Gärtner HS 2017
1 Informatik Vorlesung am D-MATH / D-PHYS der ETH Zürich Bernd Gärtner HS 2017 W i l l k o m m e n 2 zur Vorlesung Informatik! am D-MATH/D-PHYS der ETH Zürich. Ort und Zeit: Tuesday 13:15-15:00, ML D28,
MehrInformatik. Willkommen. Ablauf. Team. Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich. zur Vorlesung Informatik.
Willkommen Informatik Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich Felix Friedrich, Malte Schwerhoff HS 2018 zur Vorlesung Informatik für RW am MATH Department der ETH Zürich.
MehrInformatik I Felix Friedrich
1 Informatik I Felix Friedrich Vorlesung am D-ITET der ETH Zürich HS 2014 W i l l k o m m e n 2 zur Vorlesung Informatik I! am ITET Department der ETH Zürich. Ort und Zeit: Mittwoch 8:15-10:00, ETF E1.
MehrInformatik II. 1. Einführung. Willkommen zur Vorlesung! Das Team. Vorlesung am D-BAUG der ETH Zürich
Willkommen zur Vorlesung! Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesungshomepage: http://lec.inf.ethz.ch/baug/informatik2/2017/ Felix Friedrich FS 2017 1 2 Das Team Dozent Felix Friedrich
MehrInformatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich FS 2017
1 Informatik II Vorlesung am D-BAUG der ETH Zürich Felix Friedrich FS 2017 Willkommen zur Vorlesung! 2 Vorlesungshomepage: http://lec.inf.ethz.ch/baug/informatik2/2017/ Das Team 3 Dozent Felix Friedrich
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/
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
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
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.
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
Mehr9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
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
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]
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
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
MehrStand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften
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:
MehrDatenstrukturen und Algorithmen
Willkommen! Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich Vorlesungshomepage: Das Team: http://lec.inf.ethz.ch/da/2017 Felix Friedrich FS 2017 Assistenten Dozent Alexander Pilz
MehrStudent: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung
Mehr( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
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
MehrRekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
MehrRekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt
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),
MehrÜbung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
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
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/
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
MehrAlgorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor
Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor Organisatorisches: Vorlesung 4 SWS, Zentralübung 2 SWS: 6 Credit Points Mi 9:45 11:15 Raum 1200 (Vorlesung) Do 8:00
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
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
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
MehrInformatik II Übung 2
Informatik II Übung 2 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 7.3.2018 Carina Fuss 7.3.2018 1 Übersicht Tipps zu Eclipse Nachbesprechung Übung 1 Vorbesprechung Übung 2 Wurzelbäume Sortieralgorithmus
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
MehrInformatik II - Tutorium 1
Informatik II - Tutorium 1 Vincent Becker vincent.becker@inf.ethz.ch 28.02.2018 Vincent Becker 28.02.2018 1 CMU, Pittsburgh INESC TEC, Porto Vincent Becker 28.02.2018 2 Interacting with Devices Recognize
Mehr3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.
Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf
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)
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
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 & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten
MehrInformatik I. Vorlesung am D-BAUG der ETH Zürich. Hermann Lehner, Felix Friedrich ETH Zürich HS 2017
1 Informatik I Vorlesung am D-BAUG der ETH Zürich Hermann Lehner, Felix Friedrich ETH Zürich HS 2017 2 Willkommen zur Vorlesung! 1. Einführung Material 3 Vorlesungshomepage: http://lec.inf.ethz.ch/baug/informatik1
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 Übung 1
Informatik II Übung 1 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 28.2.2018 Carina Fuss 28.2.2017 1 Administratives ab nächstem Mal: Beginn um 13:00! Fragen aus der Vorlesung, Praktisches, Nachbesprechung
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
MehrSchleifeninvarianten. Dezimal zu Binär
Schleifeninvarianten Mit vollstandiger Induktion lasst sich auch die Korrektheit von Algorithmen nachweisen. Will man die Werte verfolgen, die die Variablen beim Ablauf eines Algorithmus annehmen, dann
MehrGrundlagen: Algorithmen und Datenstrukturen
Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und
MehrKapitel 2: Analyse der Laufzeit von Algorithmen Gliederung
Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrInformatik II - Übung 01
Informatik II - Übung 01 Raphael Fischer (Folien basierend auf denen von Christian Beckel) fischrap@student.ethz.ch 01.03.2017 Wie sieht eine Übungsstunde aus? 1) Fragen aus der Vorlesung! 2) Praktische
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)
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 Administratives Zentralübung (Mittwoch, 09:45
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
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 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,
MehrPraktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen
1 Grundlagen 1.1 Algorithmen und ihre formalen Eigenschaften, Datenstrukturen Ein Algorithmus ist ein mit formalen Mitteln beschreibbares, mechanisch nachvollziehbares Verfahren zur Lösung einer Klasse
MehrMusterlösung Datenstrukturen und Algorithmen
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer
MehrAlgorithmen und Berechnungskomplexität I
Algorithmen und Berechnungskomplexität I Prof. Dr. Institut für Informatik Wintersemester 2013/14 Organisatorisches Vorlesung Dienstag und Donnerstag, 12:30 14:00 Uhr (HS 1) Übungen 16 Übungsgruppen Anmeldung
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die
Mehr3.3 Laufzeit von Programmen
3.3 Laufzeit von Programmen Die Laufzeit eines Programmes T(n) messen wir als die Zahl der Befehle, die für die Eingabe n abgearbeitet werden Betrachten wir unser Programm zur Berechnung von Zweierpotenzen,
MehrInformatik II. Felix Friedrich FS Vorlesung am D-BAUG der ETH Zürich
Informatik II Felix Friedrich Vorlesung am D-BAUG der ETH Zürich FS 2014 1 0. ORGANISATORISCHES 2 W i l l k o m m e n zur Vorlesung Informatik II! am D-BAUG der ETH Zürich. Ort und Zeit: Montag 12:45 14:30,
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Marc Bux, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft RUD
MehrInformatik II Übung 1 (slides teils von Christian Beckel) Gruppe 4. Lukas Burkhalter
Informatik II Übung 1 (slides teils von Christian Beckel) Gruppe 4 Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 1 Lukas Burkhalter 28. Februar 2018 1 Welcome Über mich https://people.inf.ethz.ch/burlukas
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:
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.
MehrMathematische Rekursion
Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische
MehrDatenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai
MehrAlgorithmen und Datenstrukturen
Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung
MehrStabilitätsabschätzungen Vorlesung vom
Stabilitätsabschätzungen Vorlesung vom 8.12.17 Auswertungsbäume zur systematischen Stabilitätsabschätzung Auswertungsbaum: Knoten, gerichtete Kanten, Wurzel, Blätter Zerlegung in Teilbäume Von den Blättern
MehrKontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht
Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante
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
MehrSAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen. Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014
SAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014 Frühstudium Alle Teilnehmer dieses Praktikums können sich zum Frühstudium
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
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
MehrTheoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!
Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit Sommersemester 2012 Prof. Dr. Nicole Schweikardt AG Theorie komplexer Systeme Goethe-Universität Frankfurt am Main Herzlich willkommen!
Mehr1. Übung Algorithmen I
Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der
MehrInformatik II Übung 01. Benjamin Hepp 8 March 2017
Informatik II Übung 01 Benjamin Hepp benjamin.hepp@inf.ethz.ch 8 March 2017 Administratives Gruppe 03 Ort: IFW B 42 Zeit: Mittwoch um 13:15 (45 Minuten) Keine Uebung an Ostern (17.04 21.04) Buch und Skript:
MehrAlgorithmen und Datenstrukturen Sommersemester 2007
Algorithmen und Datenstrukturen Sommersemester 2007 Steffen Reith reith@informatik.fh-wiesbaden.de Fachhochschule Wiesbaden 4. April 2007 Steffen Reith Algorithmen und Datenstrukturen 4. April 2007 1 /
Mehr18. Natürliche Suchbäume
Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile
MehrPrüfung Datenstrukturen und Algorithmen, D-INFK. Datenstrukturen & Algorithmen
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer
Mehr