---
# System prepended metadata

title: AlgoDat Klausur

---

## 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


