## Klausuraufbau ### Klausurrelevant: - Fragen (~9 Punkte) - 4x Handaufgaben (4x 8-10 Punkte, $\sum$ 36 Punkte) - Quicksort (selten: Mergesort, Heapsort) - Dijstra oder Floyd-Warshall - Binäre Suchbäume, B-Baum (selten: AVL) - KMP (selten: Pi-Feld) oder Boyer-Moore (selten: Last Feld, Bad Character) - B-Bäume, Dijkstra Floyd-Warshall, Boyer-Moore-Sunday, Quicksort, Mergesort, Heapsort - _Vermutlich nicht in Klausur: Knuth-Morris-Pratt_ - Theorieaufgabe / Theoretische Informatik (9 Punkte + 5 Bonus-Punkte) - Theorieaufgabe wird es eine Teilaufgabe geben, mit der man Zusatzpunkte erwirtschaften kann. Die Teilaufgabe selbst wird eine Wahlaufgabe sein; d.h. aus zweien muss man nur eine beantworten. - Zeichnen Sie einen Automaten - Minimieren Sie einen Automaten - Wahlaufgabe: Induktive/Rekursive Definitionen **vs.** Mächtigkeit von Sprachen/Abzählende Kombinatorik - ~~Code analysieren (~14 Punkte)~~ - Programmieren (15 Punkte) - Binärer Baum, Linked List, etc. ## Wahlaufgaben - Programmieren / Theoretische Informatik (15 Punkte) - Erzeugende Funktion, Polynom 2. Gerades (sicher!) - Programmieren / Algorithmus entwerfen (15 Punkte) - Transferaufgabe, Richtung~ DEA designen, minimieren, überlegen was passen könnte - Beispiel: Nicht-gewichteter Graph -> gewichteter Graph -> Dijkstra | Aufgabe | Punkte | | ------------------------ |:---------------- | | Fragen | 10 P | | 4x Handaufgaben | 36 P | | Theoretische Informatik | 9 P (+5 P Bonus) | | Programmierung | 15 P | | Wahlaufgabe: Prog./TI | 15 P | | Wahlaufgabe Prog./Algor. | 15 P | | **Insgesamt:** | **100P + 5P** | Klausurrelevant: - Floyd-Warshall oder Dijkstra - Quicksort (selten: Mergesort, Heapsort) - Binäre Suchbäume, B-Baum (selten: AVL) - Insertion Sort oder Selection Sort - KMP (selten: Pi-Feld) oder Boyer-Moore (selten: Last Feld, Bad Character) - Erzeugendenfunktion, ~~Master Theorem~~ - Endliche Automaten, Minimieren von Automaten, Regulärer Ausdruck -> Automat - Induktive Definition einer Funktion - Diskrete Kombinatorik - Breitensuche, Tiefensuche für Graph + Baum, ~~Topologisches Sortieren~~ # Themen aus den Aufgaben ## Übungen - Binary Search - ArrayList - Stack (umgekehrte polnische Notation) - Doppelt verkettete Liste - Deque - AVL-Bäume, AVL-Index - HashMap benutzt Hashtabelle, LinkedHashMap gleicht einen Nachteil von HashMap - aus (Recherchieren), TreeMap benutzt Rot-Schwarz-Baum - ArrayList/TreeList O-Klassen - Binary Search Tree (isValid, aus preorderList erstellen) - Breitensuche - Gerichtete Graphen - Algorithmus zur Lösung von einem Problem designen - Beziehungen als Modell in einem Graph darstellen, Bipartitheit prüfen - Entfernungen in einem Graphen modellieren und kürzesten Weg finden - Permutationen - Dijkstra - Algorithmen mit maximaler Laufzeitkomplexität entwerfen ## Hausaufgaben - Parsen mit ArrayDeque Stack - Hashtabelle mit Teillisten - LinkedList - Binary Search Tree (Implementieren, Durchlaufen, Pre-/In-/Post-Order, Level-Order) - vollständigkeit (alle Ebenen besetzt) - AVL-Bedingung - Heap (Feld-Einbettung, upheap, downheap) - Minimaler Spannbaum (Prim Algorithmus) - Adjazenzmatrix, Adjazenzliste, Kantenliste - Backtracking-Algorithmus - Dijkstra - Textsuche Regex - NEA ## Themen für Fragen - Prioritätswarteschlange - Laufzeitkomplexität - Voraussetzungen und Anwendungsfälle für Algorithmen - Pre-/In-/Post-Order - PCRE Regex analysiren (~~Graph~~) - DEA / NDA - Datenstruktur / Abstrakter Datentyp (ADT) - B-Bäume (vollständig balanciert, Ordnung, Höhe) - Hashing (Kollisionsbehandlung durch Teillisten, Lineares Sondieren, Quadratisches Sondieren, Doppeltes Hashing) - AVL-Bäume (AVL-Index/-Eigenschaft) - Sortieralgorithmen (Eigenschaften, stabil, Laufzeitkomplexität avg./best - case, Quick-Sort) - Dynamische Programmierung, Entwurfsprinzipien - AVL-Index berechnen (~~Rotati~~) - Binäre Suchbäume (Knoten Löschen), Rot-Schwarz Bäume - Kantenliste, Knotenliste, Adjazenzmatrix - Merge Sort, Hashtabllen, Prim, Baum- Graphdurchlauf # Handaufgaben - Dijkstra (Tabelle, nicht Baum) - Floyd-Warshall Kürzester Weg - B-Bäume (vollständig balancierter Baum) (Elemente Entfernen, Einfügen, Balancieren) (Ordnung, Höhe) - Heap-Sort (Prioritätswarteschlange) (Einfügen, Löschen, Feld-Einbettung, Einbettung mit Hashtabelle, Heap-Sort) - Quick-Sort - Boyer-Moore-Sunday mit Last-Tabelle - kein zeichnen von Rot-Schwarz Bäumen, kein händisches Durchführen von Merge Sort, keine Rotation von AVL-Bäumen # Aufgaben lineare Rekursionsgleichung mit Hilfe von Erzeugenden Funktionen lösen ## Prof. Pflug wichitg - Dynamische Programmierung nur wissen, welche Algorithmen das betrifft