Inhalte der Übungen
Im Rahmen der zur Lehrveranstaltung gehörenden Übungen wenden wir das in der Vorlesung erlernte Wissen an und versuchen mit vielen Beispielen eine anschauliche Sicht auf die Thematik zu werfen. Dabei beschäftigen wir uns mit Grundlagen der formalen Sprachtheorie und wenden diese an. Dazu gehören zum Beispiel Syntaxdiagramme, der Rücksprungalgorithmus, EBNF und Fixpunktsemantik. Die Kenntnisse nutzen wir anschließend um uns mit der Programmiersprache C vertraut zu machen und in dieser einfache Datenstrukturen kennenzulernen. Thematisiert werden schlussendlich auch verkettete Listen und Bäume.
Im zweiten Teil behandeln wir grundlegende Algorithmen aus dem Themenbereichen
- Sortieren (Quicksort und Heapsort)
- Suchen und Ersetzen (KMP-Algorithmus und Levenshtein-Dinstanz)
- Graphalgorithmen (Breiten- und Tiefensuche, topologisches Sortieren, kürzeste Wege, algebraisches Pfadproblem).
- EM-Algorithmus
Hinweis: In diesem Semester wurden die Themen Topologisches Sortieren und der Algorithmus von Dijkstra ausgelassen.
Informationen
Im Folgenden sind meine in den Übungen erarbeiteten Lösungsvorschläge zu finden. Diese Lösungen wurden nicht vom Lehrstuhl erstellt und können damit trotz gründlicher Arbeit noch Fehler enthalten. Die Slides und den zugehörigen Latex-Code dazu findet ihr in meinem entsprechenden Github-Repository. Findet ihr einen Fehler in meinen Lösungen, dann fühlt euch eingeladen mir dies mitzuteilen oder direkt selbst mit einem Request zu beheben.
Bitte beachtet stets die aktuellen Informationen auf der Website der Lehrveranstaltung. Bei Fragen oder Problemen könnt ihr euch an mich oder an Thomas Ruprecht wenden.
Informationen zu Übungsverlegungen infolge von Feiertagen oder anderen Ursachen werden auf der Lehrveranstaltungswebsite und hier veröffentlicht.
Übungsmaterial
Die folgenden Materialien habe ich größtenteils in meiner Freizeit erstellt. Damit sind auch (Tipp-) Fehler keinesfalls ausgeschlossen. Die zur Verfügung gestellten Folien sollen keineswegs den aktiven Besuch der Übungen ersetzen, sondern vielmehr eine Hilfestellung sein um sich während der Übung auf das Verständnis konzentrieren zu können.
Teil 1: Formale Sprachen
Blatt | Inhalte | Download |
---|---|---|
1 | Einführung & grundlegende Begriffe | Slides Handout |
2 | Syntaxdiagramme & Rücksprungalgorithmus | Slides Handout |
3 | EBNF & Fixpunktsemantik | Slides Handout |
4 | EBNF & Fixpunktsemantik | Slides Handout |
Teil 2: Programmieren in C
Leider haben wir in den Übungen nicht die Zeit um allen einen funktionsfähigen Compiler und ein optimales Setup zu garantieren. Daher bitte ich euch die Informationen auf der Lehrveranstaltungswebsite zu beachten. Außerdem habe ich unter dem folgenden Button einige Hinweise zusammengetragen. Wie immer sind natürliche auch Google und YouTube sehr gute Quellen für weitere Hilfe. Im Zweifelsfall hilft euch sicher auch der iFSR.
Hinweise zum Programmieren mit C
Blatt | Inhalte | Download |
---|---|---|
5 | Einführung in die Programmiersprache C | Slides Handout |
6 | Pulsierender Speicher | Slides Handout |
7 | Pulsierender Speicher & Listen | Slides Handout |
8 | Listen, Bäume & Sortieren | Slides Handout |
Teil 3: Algorithmen
Blatt | Inhalte | Download |
---|---|---|
9 | Sortieren, KMP, Levenshtein | Slides Handout KMP |
10 | KMP, Levenshtein, AVL-Bäume | Slides Handout |
11 | AVL, Breiten- & Tiefensuche, Floyd-Warshall | Slides Handout |
12 | Floyd-Warshall & algebraisches Pfadproblem | Slides Handout |
13 | Prozessproblem | Slides Handout |
14 | EM-Algorithmus | Lösung Überblick |