DiscoverAlgorithmen 1, SS2017, Vorlesung
Algorithmen 1, SS2017, Vorlesung
Claim Ownership

Algorithmen 1, SS2017, Vorlesung

Author: Karlsruher Institut für Technologie (KIT)

Subscribed: 23Played: 115
Share

Description

Das Modul beinhaltet die 'Basic Toolbox der Algorithmik'. Im Einzelnen werden folgende Themen bearbeitet:

Ergebnisüberprüfung (Checkers) und Zertifizierung
Asymptotische Algorithmenanalyse: worst case, average case, probabilistisch, amortisiert
Grundbegriffe des Algorithm Engineering
Effektive Umsetzung verketteter Listen
Unbeschränkte Arrays, Stapel, und Warteschlangen
Hashtabellen: mit Verkettung, linear probing, universelles Hashing
Sortieren: effiziente Algorithmen (mergesort, quicksort), untere Schranken, radix sort
Selektion: quickselect
Prioritätslisten: binäre Heaps, addrssierbare Prioritätslisten
Sortierte Folgen/Suchbäume: Wie unterstützt man alle wichtigen Operationen in logarithmischer Zeit
Graphen (Repräsentation, Traversierung: Breitensuche, Tiefensuche, Anwendungen (topologisches Sortieren,...), Kürzeste Wege: Dijkstra's Algorithmus, Bellman-Ford Algorithmus, Minimale Spannbäume: Kruskals Algorithmus, Jarnik-Prim Algorithmus)
Generische Optimierungsalgorithmen (Greedy, Dynamische Programmierung, systematische Suche, Lokale Suche)

Dozenten: Prof. Dr. Jörn Müller-Quade | Karlsruher Institut für Technologie (KIT), Institut für Theoretische Informatik | Vorlesungsaufzeichnung: KIT | WEBCAST: http://webcast.kit.edu
23 Episodes
Reverse
23 | 0:00:00 Starten 0:00:06 Schnuppervorlesung Sicherheit 0:00:39 Überblick 0:03:10 Ziel 0:04:56 Motivation 0:09:01 Grundidee 0:11:20 Erste Eigenschaften 0:14:56 Überblick RSA 0:21:55 RSA-Schlüsselgenerierung 0:28:49 Korrektheit von RSA 0:38:04 Sicherheit? 0:43:31 Semantische Sicherheit für Public-Key-Verschlüsselung 0:50:04 Äquivalenter Begriff: IND-CPA 0:55:11 Sicherheit von RSA 0:56:43 Weitere Angriff auf RSA 0:59:31 Homomorphie von RSA 1:01:57 RSA-Padding 1:05:57 RSA-OAEP 1:07:17 Sicherheit von RSA-OAEP 1:09:35 Relevanz von RSA (-OAEP) 1:12:20 Mehr über ElGamal Das Modul beinhaltet die 'Basic Toolbox der Algorithmik'. Im Einzelnen werden folgende Themen bearbeitet: - Ergebnisüberprüfung (Checkers) und Zertifizierung - Asymptotische Algorithmenanalyse: worst case, average case, probabilistisch, amortisiert - Grundbegriffe des Algorithm Engineering - Effektive Umsetzung verketteter Listen - Unbeschränkte Arrays, Stapel, und Warteschlangen - Hashtabellen: mit Verkettung, linear probing, universelles Hashing - Sortieren: effiziente Algorithmen (mergesort, quicksort), untere Schranken, radix sort - Selektion: quickselect - Prioritätslisten: binäre Heaps, addrssierbare Prioritätslisten - Sortierte Folgen/Suchbäume: Wie unterstützt man alle wichtigen Operationen in logarithmischer Zeit - Graphen (Repräsentation, Traversierung: Breitensuche, Tiefensuche, Anwendungen (topologisches Sortieren,...), Kürzeste Wege: Dijkstra's Algorithmus, Bellman-Ford Algorithmus, Minimale Spannbäume: Kruskals Algorithmus, Jarnik-Prim Algorithmus) - Generische Optimierungsalgorithmen (Greedy, Dynamische Programmierung, systematische Suche, Lokale Suche) Literaturhinweise: Algorithms and Data Structures - The Basic Toolbox, K. Mehlhorn und P. Sanders Springer 2008 Weiterführende Literatur Algorithmen - Eine Einführung T. H. Cormen, C. E. Leiserson, R. L. Rivest, und C. Stein, Oldenbourg, 2007 Algorithmen und Datenstrukturen T. Ottmann und P. Widmayer, Spektrum Akademischer Verlag, 2002 Algorithmen in Java. Teil 1-4: Grundlagen, Datenstrukturen, Sortieren, Suchen R. Sedgewick, Pearson Studium 2003 Algorithm Design J. Kleinberg and É. Tardos, Addison Wesley, 2005 Vöcking et al. Taschenbuch der Algorithmen, Springer, 2008 Lehrinhalt: Dieses Modul soll Studierenden grundlegende Algorithmen und Datenstrukturen vermitteln. Die Vorlesung behandelt unter anderem: - Grundbegriffe des Algorithm Engineering - Asymptotische Algorithmenanalyse (worst case, average case, probabilistisch, amortisiert) - Datenstrukturen z. B. Arrays, Stapel, Warteschlangen und Verkettete Listen - Hashtabellen - Sortieren: vergleichsbasierte Algorithmen (z.B. quicksort, insertionsort), untere Schranken, Linearzeitalgorithmen (z.B. radixsort) - Prioritätslisten - Sortierte Folgen,Suchbäume und Selektion - Graphen (Repräsentation, Breiten-/Tiefensuche, Kürzeste Wege, Minimale Spannbäume) - Generische Optimierungsalgorithmen (Greedy, Dynamische Programmierung, systematische Suche, Lokale Suche) - Geometrische Algorithmen
22 | 0:00:00 Starten 0:01:04 Kap. 13: Zusammenfassung 0:02:22 Zusammenfassung - Datenstrukturen 0:07:39 Zusammenfassung - Algorithmen 0:11:29 Zusammenfassung - Entwurfstechniken I 0:15:46 Zusammenfassung - Entwurfstechniken II 0:20:07 Zusammenfassung - Analysetechniken 0:26:12 Zusammenfassung - weitere Techniken
21 | 0:00:00 Starten 0:00:06 Roadmap Übung 0:00:38 Schwierige Probleme 0:09:30 Erinnerung: Lineare Programme 0:15:36 Erinnerung: Travelling Salesman Problem 0:17:15 Ein ILP für TSP 0:24:57 Heuristiken 0:25:55 Ameisenalgorithmen 0:30:41 Vertex Cover 0:32:22 Approximation 0:34:48 Eine Approximation für Vertex Cover 0:39:05 Metaheuristiken und Nachbarschaften 0:40:20 Nachbarschaftsmetaheuristiken 0:44:43 Lokale Suche für Vertex Cover 0:47:12 Tabu-Suche für Vertex Cover
20 | 0:00:00 Starten 0:03:19 Wdh. Dynamische Programmierung 0:08:34 Algorithmenentwurf mittels dynamischer Programmierung 0:14:18 Anwendungen dynamischer Programmierung 0:17:38 Gegenbeispiel: Teilproblemeigenschaft 0:18:42 Gegenbeispiel: Austauschbarkeit 0:20:53 Systematische Suche 0:23:44 Beispiel: Branch-and-Bound für das Rucksackproblem 0:32:09 Beispielrechnung 0:41:30 Branch-and-Bound - allgemein 0:44:33 Lokale Suche - global denken, lokal handeln 0:47:55 Hill Climbing 0:48:51 Problem: Lokale Optima 0:49:53 Warum die Nachbarschaft wichtig ist 0:53:40 Jenseits von Hill Climbing 1:01:08 Evolutionäre Algorithmen 1:03:50 Zusammenfassung
19 | 0:00:00 Starten 0:00:06 Kap. 12: Generische Optimierungsansätze 0:01:08 Durchgehendes Beispiel: Rucksackproblem 0:04:07 Black-Box-Löser 0:04:40 Lineare Programmieurng 0:08:09 Beispiel: Kürzeste Wege 0:09:11 Eine Anwendung - Tierfutter 0:10:38 Verfeinerungen 0:11:52 Algorithmen und Implementierungen 0:13:15 Ganzzahlige Lineare Programmierung 0:16:09 Umgang mit (M)ILPs 0:18:39 Optimale Greedy-Algorithmen 0:23:56 Dynamische Programmierung - Aufbau aus Bausteinen 0:31:11 Dynamische Programmieurng 0:47:57 Übung: Kürzeste Wege Algorithmen: Bellman-Ford 0:56:11 Minimale Spannbäume 0:59:32 Steinerbäume 1:07:49 Problem des Handlungsreisenden (TSP)
18 | 0:00:00 Starten 0:00:06 Kap. 11: Minimale Spannbäume 0:03:34 Anwendungen 0:13:56 Der Jarnik-Prim-Algorithmus 0:24:48 Kruskals Algorithmus 1:03:02 Vergleich Jarnik-Prim Kruskal 1:04:09 Mehr MST-Algorithmen 1:06:50 Zusammenfassung
17 | 0:00:00 Starten 0:00:37 Mehr zu kürzesten Wegen 0:02:22 Exkurs: Routing in Straßennetzwerken 0:05:58 Distanz zu einem Zielknoten t 0:07:25 Ideen für Routenplannung 0:10:51 Approach: Transit-Node Routing 0:16:55 Erste Beobachtung 0:19:01 Zweite Beobachtung 0:20:27 Transit-Node Routing 0:24:28 Experimente 0:27:25 Offene Fragen 0:29:46 Anfang der Übung 0:30:02 Breitensuche 0:41:12 Tiefensuche 0:51:20 Dijkstras Algorithmus
16 | 0:00:00 Starten 0:00:10 Allgemeine Definition 0:02:19 Kante (u,v) relaxieren 0:04:30 Dijkstras Algorithmus 0:06:53 Beispiel 0:11:27 Korrektheit 0:12:23 v erreichbar -> 0:14:39 v gescannt -> 0:18:46 Dijkstra: Implementierung? 0:20:01 Prioritätsliste 0:21:03 Imlementierung 0:25:38 Beispiel 0:29:27 Dijkstra: Laufzeit 0:36:22 Analyse im Mittel 0:37:23 Monotone ganzzahlige Prioritätslisten 0:38:02 Negative Kosten 0:42:21 Zurück zu Basiskonzepten 0:45:16 Allgemeines Korrektheitskriterium 0:50:42 Algorithmen brutal - Bellman-Ford-Algorithmus für beliebige Kantengewichte 0:54:05 Negative Kreise finden 0:55:47 Beispiel 0:58:14 Bellmann-Ford – Laufzeit 0:59:24 Azyklische Graphen 1:01:11 Von überall nach überall 1:02:57 Kürzeste Wege: Zusammenfassung
15 | 0:00:00 Starten 0:00:08 Tiefensuche 0:11:31 DFS-Baum 0:28:38 Topologische Sortierung 0:40:32 Kap. 10: Kürzeste Wege 0:45:23 Grundlagen 0:52:47 Allgemeine Definitionen 0:58:31 Dijkstras Algorithmus: Pseudocode Das Modul beinhaltet die 'Basic Toolbox der Algorithmik'. Im Einzelnen werden folgende Themen bearbeitet: - Ergebnisüberprüfung (Checkers) und Zertifizierung - Asymptotische Algorithmenanalyse: worst case, average case, probabilistisch, amortisiert - Grundbegriffe des Algorithm Engineering - Effektive Umsetzung verketteter Listen - Unbeschränkte Arrays, Stapel, und Warteschlangen - Hashtabellen: mit Verkettung, linear probing, universelles Hashing - Sortieren: effiziente Algorithmen (mergesort, quicksort), untere Schranken, radix sort - Selektion: quickselect - Prioritätslisten: binäre Heaps, addrssierbare Prioritätslisten - Sortierte Folgen/Suchbäume: Wie unterstützt man alle wichtigen Operationen in logarithmischer Zeit - Graphen (Repräsentation, Traversierung: Breitensuche, Tiefensuche, Anwendungen (topologisches Sortieren,...), Kürzeste Wege: Dijkstra's Algorithmus, Bellman-Ford Algorithmus, Minimale Spannbäume: Kruskals Algorithmus, Jarnik-Prim Algorithmus) - Generische Optimierungsalgorithmen (Greedy, Dynamische Programmierung, systematische Suche, Lokale Suche) Literaturhinweise: Algorithms and Data Structures - The Basic Toolbox, K. Mehlhorn und P. Sanders Springer 2008 Weiterführende Literatur Algorithmen - Eine Einführung T. H. Cormen, C. E. Leiserson, R. L. Rivest, und C. Stein, Oldenbourg, 2007 Algorithmen und Datenstrukturen T. Ottmann und P. Widmayer, Spektrum Akademischer Verlag, 2002 Algorithmen in Java. Teil 1-4: Grundlagen, Datenstrukturen, Sortieren, Suchen R. Sedgewick, Pearson Studium 2003 Algorithm Design J. Kleinberg and É. Tardos, Addison Wesley, 2005 Vöcking et al. Taschenbuch der Algorithmen, Springer, 2008 Lehrinhalt: Dieses Modul soll Studierenden grundlegende Algorithmen und Datenstrukturen vermitteln. Die Vorlesung behandelt unter anderem: - Grundbegriffe des Algorithm Engineering - Asymptotische Algorithmenanalyse (worst case, average case, probabilistisch, amortisiert) - Datenstrukturen z. B. Arrays, Stapel, Warteschlangen und Verkettete Listen - Hashtabellen - Sortieren: vergleichsbasierte Algorithmen (z.B. quicksort, insertionsort), untere Schranken, Linearzeitalgorithmen (z.B. radixsort) - Prioritätslisten - Sortierte Folgen,Suchbäume und Selektion - Graphen (Repräsentation, Breiten-/Tiefensuche, Kürzeste Wege, Minimale Spannbäume) - Generische Optimierungsalgorithmen (Greedy, Dynamische Programmierung, systematische Suche, Lokale Suche) - Geometrische Algorithmen
14 | 0:00:00 Starten 0:00:36 Kap. 8: Repräsentation von Graphen: Einleitung 0:04:35 Repräsentation von Graphen 0:08:29 Notation und Konventionen 0:09:48 Ungerichtete -> gerichtete Graphen 0:10:30 Operationen 0:14:03 Kantenfolgenrepräsentation 0:15:33 Adjazenzfelder 0:19:36 Kantenliste -> Adjazenzfeld 0:26:21 Operationen für Adjazenzfelder 0:29:26 Kantenanfragen 0:30:00 Adjazenzlisten 0:32:47 Customization (Zuschneiden) 0:34:27 Beispiel: DAG- Erkennung 0:42:56 Adjazenz-Matrix 0:47:51 Pfad zählen mittels LA 0:50:29 Beispiel, wo Graphentheorie bei LA hilft 0:52:19 Implizite Repräsentation 0:54:03 ZUsammenhangstest für Intervallgraphen 0:58:16 Beispiel 1:00:30 Graphenrepräsentation: Zusammenfassung 1:02:42 Kap. 9: Graphtraversierung 1:04:26 Graphtraversierung als Kantenklassifizierung 1:09:14 Breitensuche 1:16:32 Repräsentation des Baums
13 | 0:00:00 Starten 0:00:25 Sortierte Folgen 0:01:35 Dynamische Sortierte Folgen 0:02:34 Binäre Suchbäume 0:03:16 Varianten, Bemerkung 0:04:28 locate(k) 0:07:26 Invariante von locate(k) 0:09:06 Ergebnisberechnung von locate(k) 0:11:09 Laufzeit von locate(k) 0:12:47 Naives Einfügen 0:15:22 Suchbäume balancieren 0:17:48 (a, b)-Bäume 1:06:59 Erweiterte Suchbäume 1:09:22 Elternzeiger 1:10:23 Teilbaumgrößen 1:13:15 Zusammenfassung 1:14:00 Mehr zu sortierten Folgen
12 | 0:00:00 Starten 0:00:09 Adressierbare Prioritätslisten 0:06:42 Adressierbare Binäre Heaps 0:09:16 Adressierbare Prioritätslisten-Laufzeiten 0:11:56 Prioritätslisten-Zusammenfassung 0:13:41 Sortierte Folgen 0:16:44 Statisch: Sortiertes Feld mit binärer Suche 0:29:06 Dynamische Sortierte Folgen-Grundoperationen 0:30:21 Mehr Operationen 0:34:10 Abgrenzung 0:36:25 Sortierte Folgen-Anwendungen 0:39:38 Binäre Suchbäume 0:42:07 Anfang der Übung 0:43:12 Graphen und Relationen 0:48:29 Teilbarkeitsgraph 0:49:38 Der Hyperwürfel Q3 0:51:17 Knotengrad 0:53:58 Handshaking Lemma 0:59:51 Adjazenz-und Inzidenzmatrix 1:06:46 Graphen als Matrizen 1:07:58 Wiederholung: DAG 1:10:47 Graphen als Matrizen 1:15:13 Wege, Kreise und Zusammenhang 1:16:48 Eulerische und Hamiltonische Kreise 1:21:35 Satz von Euler (Graphen)
11 | 0:00:00 Starten 0:00:11 Vorlesung 0:00:14 Heap-Algorithmus 0:04:52 Prozedur siftDown 0:12:20 deleteMin: Beispiel 0:15:46 Binärer Heap 0:27:34 Nützlicher Rechentrick 0:32:02 Heapsort 0:38:16 Heapsort, Quicksort, Mergesort 0:40:43 Adressierbare Prioritätslisten 0:40:48 Übung 0:41:39 Roadmap 0:43:44 Erinnerung: Bucketsort 0:44:45 Bucket Sort für [0, 1) 0:51:48 Priority Queues 0:55:18 Bucket Queue 0:58:09 Binary Radix Heap 1:12:41 Schnelle Heaps 1:13:58 Zusammenfassung
10 | 0:00:00 Starten 0:00:08 Halbrekursive Implementierung 0:04:39 Quadratische Komplexität bei gleichen Elementen? 0:11:21 Vergleich Quicksort Mergesort 0:15:33 Auswahl (Selection) 0:20:18 Quickselect 0:37:05 Array-Implementierung 0:47:51 Least-Sigmificant-Digit Radix-Sortieren 0:55:05 Mehr zu ganzzahligem Sortieren 1:04:41 Prioritätslisten 1:09:21 Binäre Heaps 1:12:43 Implizite Baum-Repräsentation
09 | 0:00:00 Starten 0:00:13 Quicksort-zufälliger Pivot 0:05:32 Satz: Quicksort hat erwartete Laufzeit 0:20:42 Exkurs: Harmonische Summe 0:27:19 Quicksort: Effiziente Implementierung 0:38:01 Beispiel: Partinonierung 0:41:31 Beispiel: Rekursion 0:43:42 Größerer Basisfall 0:45:48 Inplace? Wirklich? 0:47:33 Halbrekursive Implementierung 0:50:15 Quadratische Komplexität bei gleichen Elementen? 0:50:52 Anfang der Übung 0:54:07 Rückblick: Insertion Sort 0:57:36 Sentinels am Beispiel Sortieren durch Einfügen 1:04:01 adaptives Sortieren 1:08:04 Insertion Sort: Adaptiv? 1:10:13 Insertion Sort: Erwartete Laufzeit 1:14:15 Natural Merge Sort 1:14:54 Runs 1:21:23 Zusammenfassung: Adaptives Sortieren 1:22:17 Beispiel: C++
08 | 0:00:00 Starten 0:00:31 Einfache Sortieralgorithmen 0:07:38 Analyse 0:11:03 Sortieren durch Mischen 0:26:56 Baumbasierte Sortier-Darstellung 0:43:46 Randomisierung, Mittlere Ausführungszeit 0:44:35 Quicksort - erster Versuch
07 | 0:00:00 Starten 0:02:06 Verketten <-> Lineare Suche 0:06:50 Mehr Hashing 0:10:29 Hashtabellen für assoziative Arrays 0:14:49 Kryptographische Hashfunktion 0:20:50 Sortieren & Co 0:36:21 4. Übung zu Algorithmen 1 0:36:55 Hashtabelle mit einfach verketteten Listen 0:40:13 Duplikaterkennung 1:10:13 Bloom Filter
06 | 0:00:00 Starten 0:00:08 Hashing (Streuspeicherung) 0:03:07 Hashtabellen 0:06:19 Hashing: Anwendungen 0:10:49 Ein (über)optimistischer Ansatz 0:12:44 Kollisionen 0:15:16 Kollisionsauflösung 0:15:48 Hashing mit verketteten Listen 0:22:30 Etwas Wahrscheinlichkeitstheorie für den Hausgebrauch 0:41:59 Analyse für zufällige Hash-Funktion 0:49:42 Universelles Hashing 1:10:23 Hashing mit Linearer Suche (Linear Probing)
05 | 0:00:00 Starten 0:00:08 Beginn Vorlesung 0:01:08 Erinnerung VL vom 08.05.2017 0:01:47 Stapel und Schlangen 0:06:03 Stapel 0:10:30 Warteschlangen / First-In-First-Out / FIFO 0:11:12 FIFO 0:17:58 Warteschlangen 0:20:38 Deque 0:24:29 Vergleich: Listen - Felder 0:27:57 Ausblick: Weitere Repräsentationen von Folgen 0:29:15 Hashings (Steuerspeicherung) 0:29:50 Hashtabellen 0:31:20 Exkurs: Konventionen für Elemente 0:31:53 Hashing: Anwendungen 0:34:22 Beginn Übung 0:34:42 Roadmap 0:35:05 Verkettete Listen 0:35:18 Listen - Mit Überholspur 0:38:03 Skip Lists 0:46:08 Amotisierte Analyse 0:55:20 Hotlist 1:03:01 Zusammenfassung 1:04:56 Verkettete Listen 1:10:00 Variablenwechsel
03 | 0:00:00 Starten 0:01:03 Organisatorisches 0:06:08 Effizienz von Algorithmen 0:14:41 Eingabegröße und Laufzeit 0:17:23 Genauer: (asymptotische) Laufzeit 0:21:29 (Asymptotische) O-Notation 0:22:56 O-Notation (Intuition) 0:28:09 Asymptotische Notationen 0:31:28 Betrachtung über Grenzwerte 0:42:11 Basis des Logarithmus 0:45:48 Invarianten 1:06:51 Teile-und-Herrsche-Paradigma 1:11:46 Karatsuba-Ofman Multiplikation 1:14:01 Mastertheorem, einfache/gerundete Form 1:15:17 Abschätzung von Rekurrenzen
loading
Comments