From 38bb79efcfb2a5537d166a7a956932bee83d9beb Mon Sep 17 00:00:00 2001
From: rode <rode@ibr.cs.tu-bs.de>
Date: Fri, 1 Oct 2021 14:19:14 +0200
Subject: [PATCH] =?UTF-8?q?aud1v3.json=20Knoten=20haben=20jetzt=20"type"-A?=
 =?UTF-8?q?ttribut,=20Kanten=20nicht=20mehr=20aud1v2.json=20updated,=20da?=
 =?UTF-8?q?=20eine=20Zeile=20ge=C3=A4ndert=20AuD-Inhalt2.xlsx=20ein=20Eint?=
 =?UTF-8?q?rag=20ge=C3=A4ndert,=20da=20er=20zu=20Problemen=20f=C3=BChrte?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 datasets/AuD-Inhalt2.xlsx |  Bin 36023 -> 35977 bytes
 datasets/aud1v2.json      |    2 +-
 datasets/aud1v3.json      | 2892 +++++++++++++++++++++++++++++++++++++
 3 files changed, 2893 insertions(+), 1 deletion(-)
 create mode 100644 datasets/aud1v3.json

diff --git a/datasets/AuD-Inhalt2.xlsx b/datasets/AuD-Inhalt2.xlsx
index f07e70394ee951ef64e6d85268e7c24c7d972066..b32d9d1ac06aa600059404f7fb811f2b0fcc20ee 100644
GIT binary patch
delta 27315
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
RP&mAim=H#M;-}Er{{=Yhr<?!)

delta 27377
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
W$&v)h*n1~!5-ei5Nu{IkbN>f)rOBlL

diff --git a/datasets/aud1v2.json b/datasets/aud1v2.json
index bba5f29..65f2487 100644
--- a/datasets/aud1v2.json
+++ b/datasets/aud1v2.json
@@ -403,7 +403,7 @@
         {
             "id": 81,
             "name": "Mandelbrot-Menge",
-            "description": "Die\xa0Mandelbrot-Menge, benannt nach\xa0Benoît Mandelbrot, ist die\xa0Menge\xa0der\xa0komplexen Zahlen c, für welche die durch die\xa0Iteration z_0 = 0 und z_(n+1) = ((z_n)^2) +c definierte\xa0Folge\xa0(z_n) mit n aus den natürlichen Zahlen\xa0beschränkt\xa0ist. - Wikipedia"
+            "description": "Die Mandelbrot-Menge, benannt nach Benoît Mandelbrot, ist die Menge der komplexen Zahlen c, für welche die durch die Iteration z_0 = 0 und z_(n+1) = ((z_n)^2) +c definierte Folge (z_n) mit n aus den natürlichen Zahlen beschränkt ist. - Wikipedia"
         },
         {
             "id": 82,
diff --git a/datasets/aud1v3.json b/datasets/aud1v3.json
new file mode 100644
index 0000000..c574c1b
--- /dev/null
+++ b/datasets/aud1v3.json
@@ -0,0 +1,2892 @@
+{
+  "nodes": [
+    {
+      "id": 1,
+      "name": "Einführung",
+      "description": "Eine Einführung in die Algorithmen und Datenstrukturen\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 2,
+      "name": "Rundreise Problem",
+      "description": "Gegeben: Ein Graph G = (V, E) mit Kantenlängen we, Gesucht: Eine kürzeste Rundreise, welche alle Knoten im Graphen einmal besucht und im Startknoten wieder endet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 3,
+      "name": "Puzzle",
+      "description": "Jeder hat schon einmal ein Puzzle gelöst, doch wie sieht das aus algorithmischer Sicht aus?",
+      "type": "Beispiel"
+    },
+    {
+      "id": 4,
+      "name": "Algorithmus-Definition",
+      "description": "“Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.”-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
+      "type": "Definition"
+    },
+    {
+      "id": 5,
+      "name": "Kofferpacken",
+      "description": "Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? Gegeben: Eine Menge von n Objekten, jedes mit\\neiner Größe li; Gesamtgröße ∑ li = 2K\\nGesucht: Eine Verteilung auf zwei Koffer der Größe K",
+      "type": "Beispiel"
+    },
+    {
+      "id": 6,
+      "name": "P und NP",
+      "description": "Die Klassen P und NP teilen algorithmische Probleme in zwei Kategorien auf. Die eine, bei der man mithilfe eines Algorithmus eine Lösung Pfinden kann (P) und eine zweite, bei der bisher nur das NachPrüfen einer existierenden Lösung gelingt (NP). Wenn es allerdings keine Lösung gibt, so lässt sich das bei Problemen der Klasse NP nur schlecht beweisen.",
+      "type": "Definition"
+    },
+    {
+      "id": 7,
+      "name": "Algorithmen und Datenstrukturen",
+      "description": "In dieser Vorlesung wird der Begriff \'Algorithmus\' definiert und erklärt.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 8,
+      "name": "Datenstrukturen",
+      "description": "Eine Datenstruktur erlaubt es, die für eine Aufgabe notwendigen Informationen geeignet zu repräsentieren und den Zugriff und die Verwaltung während der Bearbeitung in effizienter Weise zu ermöglichen.",
+      "type": "Definition"
+    },
+    {
+      "id": 21,
+      "name": "Organisation und Pseudocode",
+      "description": "In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 9,
+      "name": "Pseudocode",
+      "description": "Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.\\n+ Link zu Pseudocodeblatt, Übung 1",
+      "type": "Definition"
+    },
+    {
+      "id": 10,
+      "name": "Graphen",
+      "description": "Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 11,
+      "name": "Haus des Nikolaus",
+      "description": "Jeder kennt das Haus vom Nikolaus, doch wie wird es gemalt? Wo setzt man den Stift an und wo wieder ab?",
+      "type": "Beispiel"
+    },
+    {
+      "id": 12,
+      "name": "Eulertouren",
+      "description": "Ein Eulerweg ist ein Weg in einem Graphen, welcher alle Kanten nutzt. Eine Eulertour kehrt darüber hinaus auch zum Startknoten zurück.",
+      "type": "Definition"
+    },
+    {
+      "id": 13,
+      "name": "Graphenbegriffe",
+      "description": "Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 14,
+      "name": "Graph",
+      "description": "Über Graphen haben wir bereits viel gesprochen, doch was ein Graph genau ist und wie man ihn definiert erfährst du hier.",
+      "type": "Definition"
+    },
+    {
+      "id": 15,
+      "name": "Wege in Graphen",
+      "description": "Eine Kantenfolge W in einem Graphen G heißt Weg, wenn sich keine Kante darin wiederholt und geschlossener Weg (Tour), wenn man am Ende wieder am Startknoten ankommt. Wiederholt sich kein Knoten spricht man von einem Pfad. Ein Kreis ist ein geschlossener Pfad. Bei einem Eulerweg/ einer Eulertour werden alle Kanten des Graphen genutzt. Ein Hamiltonpfad/kreis nutzt hingegen alle Knoten.",
+      "type": "Definition"
+    },
+    {
+      "id": 16,
+      "name": "Beweistechniken",
+      "description": "In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:\\n+ Link zu Beweisblatt, Übung 2",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 17,
+      "name": "Eulertouren",
+      "description": "In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 18,
+      "name": "Algorithmus Wegfindung",
+      "description": "Dieser Algorithmus (2.7) erhält als Input einen Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Weg in G",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 19,
+      "name": "Algorithmus von Hierholzer",
+      "description": "Dieser Algorithmus (2.8) erhält als Input einen zusammenhängenden Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Eulerweg, bzw. eine Eulertour in G. Dazu wird auch Algorithmus 2.7 zum Finden von Wegen in G verwendet.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 20,
+      "name": "Algorithmus von Fleury",
+      "description": "Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 22,
+      "name": "Anwendung von Graphen",
+      "description": "In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 23,
+      "name": "Beweistechniken Teil 2",
+      "description": "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß\'sche Summenformel oder der Zusammenhang in Graphen  erläutert.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 24,
+      "name": "Graphenscan",
+      "description": "In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.\\n+ Links zu Video und Folien/Notizen/Beweis",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 25,
+      "name": "Algorithmus Graphenscan",
+      "description": "Dieser Algorithmus (3.7) erhählt als Input einen Graphen G = (V,E) und einen Knoten s darin und liefert als Output eine Knotenmenge Y aus V, die von s aus erreichbar ist, sowie eine Kantenmenge T aus E, welche die Erreichbarkeit sicherstellt",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 26,
+      "name": "Datenstrukturen Teil 1",
+      "description": "In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.\\n+ Links zu Video und Folien/Beispiel",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 27,
+      "name": "Warteschlange",
+      "description": "Eine Warteschlange ist eine Datenstruktur, welche nach dem Prinzip \'First In - First Out\' arbeitet. Man findet sie auch im alltäglichen Leben oft wieder, wenn man sich beispielsweise an der Kasse anstellen muss. Der Kunde der zuerst da war, wir auch zuerst bedient.",
+      "type": "Definition"
+    },
+    {
+      "id": 28,
+      "name": "Stapel",
+      "description": "Ein Stapel ist eine Datenstruktur, welche nach dem Prinzip \'Last In - First Out\' arbeitet. Im alltäglichen Leben findet man diese Form der Datenstruktur beim Geschirr abwaschen, man stapelt die Teller und der Teller der zuletzt dreckig wurde wird als erstes gereinigt, da man die Teller von oben herunter nimmt.",
+      "type": "Definition"
+    },
+    {
+      "id": 29,
+      "name": "Breitensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe einer Warteschlange als Datenstruktur. Sie breitet sich aus wie eine Welle.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 30,
+      "name": "Tiefensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe eines Stapels als Datenstruktur. Dabei werden eher einzelne Pfade gelaufen.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 31,
+      "name": "Datenstrukturen Teil 2",
+      "description": "In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 32,
+      "name": "Inzidenz/-Adjazenzmatrix",
+      "description": "In einer Inzidenzmatrix wird mithilfe von 1en und 0en dargestellt, welche Knoten mit welchen Kanten inzident (zusammentreffend) sind. Bei einer Adjazenzmatrix wird dargestellt, welche Knoten adjazent (durch eine Kante verbunden) sind.",
+      "type": "Definition"
+    },
+    {
+      "id": 33,
+      "name": "Kanten-/Adjazenzliste",
+      "description": "Eine Kantenliste ist eine Liste bestehend aus einträgen der Form {vx, vy}, welche bedeuten, dass eine Kante zwischen vx und vy im Graphen existiert.",
+      "type": "Definition"
+    },
+    {
+      "id": 34,
+      "name": "Wachstum/O-Notation",
+      "description": "In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 35,
+      "name": "O-Notation",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. Damit können Größenordnungen und Wachstumsverhalten beschrieben werden.",
+      "type": "Definition"
+    },
+    {
+      "id": 36,
+      "name": "Graphscan Ãœbung",
+      "description": "Simple Anwengung des Graphscan Algorithmus, einmal als Breiten- und als Tiefensuche. Wann welcher Algorithmus besser geeignet ist wird in dieser Übung erklärt.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 37,
+      "name": "Wachstum",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. In dieser Übung werden Zusammenhänge zwischen der Größe des Inputs und dem Wachstum, sowie Relationen zwischen Laufzeitklassen näher beleuchtet. Auch wird die O-Notation an verschiedenen Beispielen erklärt.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 38,
+      "name": "Wiederholung oder\\nSuche in Graphen Zusammenfassung",
+      "description": "Noch einmal ein Rückblick auf alles, was bisher in \'Kapitel 3: Suche in Graphen\' passiert ist. \\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 39,
+      "name": "Eigenschaften von DFS und BFS",
+      "description": "In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 40,
+      "name": "Induktionsbeweise Bsp.",
+      "description": "Einige Beispiele, bei denen der Induktionsbeweis auch in der Graphentheorie zum Einsatz kommt. ",
+      "type": "Beispiel"
+    },
+    {
+      "id": 41,
+      "name": "Adjazenzliste",
+      "description": "Wie eine Adjazenzliste für einen Graphen erstellt werden kann wird hier einmal genauer beleuchtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 42,
+      "name": "Graphscan Beispiel",
+      "description": "Hier wird der Graphscan Algorithmus einmal mithilfe einer Adjazenzliste als Datenstruktur durchgeführt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 43,
+      "name": "Dynamische Datenstrukturen",
+      "description": "In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 44,
+      "name": "Verkettete Liste",
+      "description": "Eine verkettete Liste ist eine dynamische Datenstruktur. Dabei werden für die einzelnen Elemente jeweils Vorgänger und Nachfolger mit gespeichert. Der Vorteil hierbei ist, dass neue Einträge überall eingefügt werden können.",
+      "type": "Definition"
+    },
+    {
+      "id": 45,
+      "name": "Binäre Suche",
+      "description": "Dieser Algorithmus (4.1) erhält als Input einen sortierten Array mit Einträgen S[I], Suchwert WERT, linke Randposition LINKS, rechte Randposition RECHTS und liefert als Output die Position von WERT zwischen Arraypositionen LINKS und RECHTS, falls existent.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 46,
+      "name": "Binäre Suche Idee",
+      "description": "Ein einleitendes Beispiel zur Binären Suche.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 47,
+      "name": "Binäre Suche Beispiel",
+      "description": "Der Algorithmus für die binäre Suche einmal an zwei Beispielen angewandt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 48,
+      "name": "Binäre Suchbäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 49,
+      "name": "Binärer Suchbaum",
+      "description": "In dieser Definition werden die Begriffe \'gerichteter Graph/Baum\', \'Höhe eines Baumes\', \'(voller/vollständiger) binärer Baum\', \'Blatt eines Baumes\', \'Teilbaum eines Knotens\' und \'binärer Suchbaum\' definiert und erklärt.",
+      "type": "Definition"
+    },
+    {
+      "id": 50,
+      "name": "Grundoperationen Suchbaum",
+      "description": "Minimum/Maximum finden, Suche im Baum, Nachfolger finden, Einfügen und Löschen sind die Grundoperationen, welche auf binäre Suchbäume angewendet werden können. Und hier findet ihr die Algorithmen dazu.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 51,
+      "name": "AVL-Bäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 52,
+      "name": "AVL-Baum",
+      "description": "Ein binärer Suchbaum ist höhenbalanciert, wenn sich für jeden Knoten v die Höhe der beiden Kinder von v um höchstens 1 unterscheidet. Ein höhenbalancierter Suchbaum heißt auch AVL-Baum.",
+      "type": "Definition"
+    },
+    {
+      "id": 53,
+      "name": "dyn. Operationen auf AVL-Bäumen",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 54,
+      "name": "AVL-Rotation",
+      "description": "Dieser Algorithmus (4.9) erhält als Input einen Knoten x eines binären Suchbaumes T, Vaterknoten y, Großvaterknoten z und liefert als Output den binären Suchbaum T nach Umstrukturierung mit x, y, z.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 55,
+      "name": "Fibonacci-Zahlen",
+      "description": "Die Fibonacci-Zahlen sind eine rekursiv definierte Zahlenfolge, bei der sich eine Zahl aus der Summe ihrer zwei Vorgänger ergibt. Dabei sind die ersten beiden Elemente gegeben als 1. Die Fibonacci-Zahlen finden sich überall in der Natur wieder und haben nicht wenig mit unserer Auffassung von Schönheit zu tun.",
+      "type": "Definition"
+    },
+    {
+      "id": 56,
+      "name": "Bäume-Übung",
+      "description": "In dieser Übung beschäftigen wir uns noch einmal genauer mit einigen Datenstrukturen wie verketteten Listen, binären Bäumen und AVL-Bäumen.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 57,
+      "name": "Laufzeit von Algorithmus 2.7",
+      "description": "Wir betrachten einmal die Laufzeit des Hierholzer-Algorithmus (2.7) und im Zusammenhang damit auch verkettete Listen.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 58,
+      "name": "Grundoperationen Suchbaum",
+      "description": "In diesem Teil der Übung werden einmal die Operationen Einfügen, Suchen, Vorgänger/Nachfolger finden, löschen und verschmelzen von binären Suchbäumen geübt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 59,
+      "name": "AVL-Baum-Operationen",
+      "description": "Wir schauen uns noch einmal genauer die AVL-Bäume an und was man damit machen kann. Insbesondere auch die Operationen Löschen und Einfügen.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 60,
+      "name": "Dynamische Datenstrukturen 2",
+      "description": "In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 61,
+      "name": "Rot-Schwarz-Bäume",
+      "description": "Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:\\n1. Jeder Knoten ist entweder rot oder schwarz.\\n2. Die Wurzel ist schwarz.\\n3. Jedes Blatt (NIL) ist schwarz.\\n4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.\\n5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.",
+      "type": "Definition"
+    },
+    {
+      "id": 62,
+      "name": "B-Bäume",
+      "description": "B-Bäume sind binäre Suchbäume, welche für externen Speicher (HDDs) optimiert sind. Dabei wird die Höhe des Baumes minimiert und es werden den Knoten mehr Schlüssel zugewiesen.",
+      "type": "Definition"
+    },
+    {
+      "id": 63,
+      "name": "Heaps",
+      "description": "Ein gerichteter binärer Baum heißt binärer Min/Max-Heap, wenn jeder Knoten einen Schlüssel hat, alle Ebenen außer der \'letzten\' genau 2 Knoten haben, auf der \'letzten\' Ebene die linken n-(2^h)+1 Positionen besetzt sind und jeder Schlüssel eines Knotens höchstens/mindestens so groß ist wie die seiner Kinder.",
+      "type": "Definition"
+    },
+    {
+      "id": 64,
+      "name": "Sortieren",
+      "description": "In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 65,
+      "name": "Merge-Sort",
+      "description": "Dieser Algorithmus (5.1) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output ein sortiertes Subarray. Wichtig ist dafür auch die Subroutine (5.2), welche als Input zwei sortierte Subarrays von A=[1,...,n], d.h. A[p,...,q] und A[q+1,...,r] erhält und als Output das sortierte Subarray A[p,...,r] liefert.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 66,
+      "name": "Sortier-Laufzeitschranken",
+      "description": "In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 67,
+      "name": "Permutation",
+      "description": "Eine Permutation P ist eine Umsortierung von n Objekten.",
+      "type": "Definition"
+    },
+    {
+      "id": 68,
+      "name": "Erzeugende Funktionen",
+      "description": "Erzeugende Funktionen können genutzt werden um Rekursionen zu lösen.",
+      "type": "Definition"
+    },
+    {
+      "id": 69,
+      "name": "Erzeugende Funktionen/Mastertheorem",
+      "description": "In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 70,
+      "name": "erzeugende Funktionen Fibonacci-Zahlen",
+      "description": "In diesem Beispiel wird einmal die erzeugende Funktion der Fibonacci-Zahlen hergeleitet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 71,
+      "name": "Master-Theorem",
+      "description": "Das Master-Theorem bietet eine schnelle Lösung für die Frage, in welcher Laufzeitklasse eine gegebene rekursiv definierte Funktion liegt. Dies funktioniert leider nur, solange einer der drei Fälle des Theorems auf die Funktion angewandt werden kann, ansonsten liefert das Theorem keine Aussage.",
+      "type": "Definition"
+    },
+    {
+      "id": 72,
+      "name": "Master-Theorem Beispiele",
+      "description": "Einige Beispiele, an denen das Master-Theorem und seine Funktion noch einmal verdeutlicht wird.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 73,
+      "name": "Sortieralgorithmen und Master-Theorem",
+      "description": "Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 74,
+      "name": "Merge-Sort Beispiel",
+      "description": "Hier wird der Merge-Sort Algorithmus einmal mit einem Beispiel komplett durchgeführt und die Laufzeit des Algorithmus betrachtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 75,
+      "name": "Master-Theorem Beispiel",
+      "description": "3 weitere Beispiele, welche dabei helfen das Master-Theorem zu verstehen und anzuwenden.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 76,
+      "name": "Max-Heaps",
+      "description": "Hier wir aufgezeigt, wie man mithilfe eines Algorithmus Max-Heaps bildet. ",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 77,
+      "name": "Max-Heaps",
+      "description": "Hier wird der Algorithmus aus der Ãœbung 6 zum Erstellen eines Max-Heaps einmal an einem Beispiel angewandt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 78,
+      "name": "Heapsort",
+      "description": "Heapsort ist ein Algorithmus bei dem mithilfe von Max-Heaps eine Reihe von Elementen sortiert werden kann. Der Algorithmus hat dabei eine Laufzeit von O(n log n), wie auch in Ãœbung 6 bewiesen wird.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 79,
+      "name": "nichtlineare Rekursionen (Exkurs)",
+      "description": "In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 80,
+      "name": "logistische Rekursion",
+      "description": "Logistische Rekursion bezeichnet ein Wachstum proportional zu einer Größe. Dabei betrachtet man beispielsweise eine Bevölkerung, welche zwar durch Fruchtbarkeit immer weiter wächst, aber beispielsweise durch Tod auch wieder im Wachstum beschränkt wird.",
+      "type": "Definition"
+    },
+    {
+      "id": 81,
+      "name": "Mandelbrot-Menge",
+      "description": "Die Mandelbrot-Menge, benannt nach Benoît Mandelbrot, ist eine Menge in den komplexen Zahlen. Interpretiert man sie als geometrische Figur, so ergibt sich ein Fraktal, welches im allgemeinen Sprachgebrauch auch als Apfelmännchen bekannt ist.",
+      "type": "Definition"
+    },
+    {
+      "id": 82,
+      "name": "Fraktale",
+      "description": "Ein Fraktal beschreibt natürliche oder künstliche Gebilde oder geometrische Muster und ist ein von Benoît Mandelbrot geprägter Begriff. - Wikipedia",
+      "type": "Definition"
+    },
+    {
+      "id": 83,
+      "name": "Zelluläre Automaten",
+      "description": "Zelluläre oder auch zellulare Automaten dienen der Modellierung räumlich diskreter dynamischer Systeme, wobei die Entwicklung einzelner Zellen zum Zeitpunkt t+1 primär von den Zellzuständen in einer vorgegebenen Nachbarschaft und vom eigenen Zustand zum Zeitpunkt t abhängt. - Wikipedia",
+      "type": "Definition"
+    },
+    {
+      "id": 84,
+      "name": "Game of Life",
+      "description": "Das \'Game of Life\' ist das wohl bekannteste Beispiel eines zellulären Automaten. ",
+      "type": "Beispiel"
+    },
+    {
+      "id": 85,
+      "name": "Quick-Sort",
+      "description": "In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 86,
+      "name": "Quick-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output einen sortierten Subarray. Dabei ist auch Subroutine 5.15 wichtig, welche als Input ein Subarray von A=[1,...,n], d.h. A[p,...,r] erhält und als Output zwei Subarrays A[p,...,q-1] und A[q+1,...,r] mit A[i]≤A[q] und A[q]<A[j] für i=p,...,q-1 und j=q+1,...,r liefert.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 87,
+      "name": "Laufzeit von Quick-Sort",
+      "description": "Die Laufzeit des Quick-Sort Algorithmus lässt sich mithilfe vom Master-Theorem ermitteln. Dazu betrachten wir die 3 Fälle best-case, average-case und worst-case für den Algorithmus.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 88,
+      "name": "Mediane",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Medianen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 89,
+      "name": "Standortprobleme",
+      "description": "Was ist der optimale Standort für beispielsweise ein Amazon-Lagerhaus? Idee: Die durchschnittliche Distanz zu den zu beliefernden Gebäuden minimieren. In Amerika ist dies leicht umgesetzt mit der sogenannten Manhatten-Distanz. Dieses Problem ist die Einführung in das Thema der Mediane.",
+      "type": "Definition"
+    },
+    {
+      "id": 90,
+      "name": "Median (diskret)",
+      "description": "Der Rank k eines Elements x (auch \'k-tes Element\') ist definiert durch |{y ∈ X |y<=x}| = k. Also die Anzahl der Elemente, welche kleiner oder gleich x sind. Speziell heißt x Median, wenn er das [n/2]-te Element ist. [n/2] wird dabei abgerundet.",
+      "type": "Definition"
+    },
+    {
+      "id": 91,
+      "name": "Median (kontinuierlich)",
+      "description": "Der kontinuierliche Median hat als Eigenschaft, dass das sowohl Integral bis zum Median, als auch ab dem Median größer-gleich 1/2 ist.",
+      "type": "Definition"
+    },
+    {
+      "id": 92,
+      "name": "Sortieralgorithmen Sonderfälle",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 93,
+      "name": "Counting-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Array von A=[1],...,A[n] mit Schlüsselwerten aus {1,…, k} und liefert als Output eine sortierte Kopie B[1],…,B[n] von [1],...,A[n].",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 94,
+      "name": "Radix-Sort",
+      "description": "Dieser Algorithmus (5.18) erhält als Input n Zahlen mit je d Ziffern, die k verschiedene Werte annehmen können, [1],...,A[n]  und liefert als Output einen sortierten Array. Dabei geht Radix-Sort im Gegensatz zu anderen Sortieralgorithmen ziffernweise vor.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 95,
+      "name": "Quick-Sort, Mediane, kd-Bäume",
+      "description": "In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 96,
+      "name": "Quick-Sort Beispiel",
+      "description": "In diesem Beispiel wird die Funktionsweise von Quick-Sort, sowie die Laufzeit betrachtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 97,
+      "name": "Mediane Beispiel",
+      "description": "In diesem Teil der Übung schauen wir uns noch einmal genauer an, was Mediane sind, wie man sie algorithmisch bestimmen kann und in welcher Laufzeit das möglich ist.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 98,
+      "name": "kd-Bäume (Exkurs)",
+      "description": "kd-Bäume sind Bäume mit einer höheren Dimension. Mithilfe der Idee den Baum abwechselnd nach x- und y-Koordinate zu durchsuchen und so zu konstruieren entsteht ein Algorithmus mit dem man mehrdimensionale Suchbäume erstellen kann. Auch schauen wir uns an, wie man in einem solchen Baum sucht.",
+      "type": "Definition"
+    },
+    {
+      "id": 99,
+      "name": "(parallelisierte) Sortierverfahren",
+      "description": "In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 100,
+      "name": "Bubble-Sort Beispiel",
+      "description": "Einige Beispiele, wie Bubble-Sort funktioniert, inklusive einiger verschiedener Darstellungen/Animationen und dem Vergleich mit Quick-Sort.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 101,
+      "name": "paralleles Bubble-Sort",
+      "description": "Mithilfe von Parallelisierung lässt sich Bubble-Sort auch in linearer Zeit umsetzen. Die Idee dafür wird hier einmal erläutert.",
+      "type": "Definition"
+    },
+    {
+      "id": 102,
+      "name": "Bogo-Sort",
+      "description": "Bogo-Sort ist ein eher als Scherz gemeinter Sortieralgorithmus. Dabei wird die gegebene Menge solange zufällig durchpermutiert und überprüft bis die korrekte Lösung erreicht ist.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 103,
+      "name": "Zusammenfassung",
+      "description": "Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 104,
+      "name": "Klausurvorbereitung",
+      "description": "Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 105,
+      "name": "Einleitung",
+      "description": "Eine Einleitung in die Welt der Algorithmen und Datenstrukturen. Was ist ein Algorithmus und wozu wird er benötigt? Und was haben Datenstrukturen damit zu tun?",
+      "type": "Kapitel"
+    },
+    {
+      "id": 106,
+      "name": "Graphen",
+      "description": "Graphen sind eine wichtige Darstellungsform von Daten in der Informatik. Wie Graphen aufgebaut sind und was man alles mit ihnen machen kann wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 107,
+      "name": "Suche in Graphen",
+      "description": "Die Suche in Graphen ist ein wichtiges Werkzeug. Allerdings gibt es mehrere Wege, welche zum Ziel führen und nicht alle funktionieren gleich gut. Wie man effizient in Graphen sucht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 108,
+      "name": "Dynamische Datenstrukturen",
+      "description": "Im Laufe der Vorlesung wurden bereits einige Datenstrukturen vorgestellt. In diesem Kapitel beschäftigen wir uns mit einer weiteren Klasse der Datenstrukturen, den dynamischen Datenstrukturen. Und damit, welche Möglichkeiten sie bieten.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 109,
+      "name": "Sortieren",
+      "description": "Neben der Suche von Elementen spielt auch das Sortieren in der Informatik eine große Rolle. Wie man das macht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 0,
+      "name": "AuD1",
+      "description": "Algorithmen und Datenstrukturen 1",
+      "type": "Kapitel"
+    },
+    {
+      "id": 1,
+      "name": "Einführung",
+      "description": "Eine Einführung in die Algorithmen und Datenstrukturen\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 2,
+      "name": "Rundreise Problem",
+      "description": "Gegeben: Ein Graph G = (V, E) mit Kantenlängen we, Gesucht: Eine kürzeste Rundreise, welche alle Knoten im Graphen einmal besucht und im Startknoten wieder endet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 3,
+      "name": "Puzzle",
+      "description": "Jeder hat schon einmal ein Puzzle gelöst, doch wie sieht das aus algorithmischer Sicht aus?",
+      "type": "Beispiel"
+    },
+    {
+      "id": 4,
+      "name": "Algorithmus-Definition",
+      "description": "“Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.”-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
+      "type": "Definition"
+    },
+    {
+      "id": 5,
+      "name": "Kofferpacken",
+      "description": "Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? Gegeben: Eine Menge von n Objekten, jedes mit\\neiner Größe li; Gesamtgröße ∑ li = 2K\\nGesucht: Eine Verteilung auf zwei Koffer der Größe K",
+      "type": "Beispiel"
+    },
+    {
+      "id": 6,
+      "name": "P und NP",
+      "description": "Die Klassen P und NP teilen algorithmische Probleme in zwei Kategorien auf. Die eine, bei der man mithilfe eines Algorithmus eine Lösung Pfinden kann (P) und eine zweite, bei der bisher nur das NachPrüfen einer existierenden Lösung gelingt (NP). Wenn es allerdings keine Lösung gibt, so lässt sich das bei Problemen der Klasse NP nur schlecht beweisen.",
+      "type": "Definition"
+    },
+    {
+      "id": 7,
+      "name": "Algorithmen und Datenstrukturen",
+      "description": "In dieser Vorlesung wird der Begriff \'Algorithmus\' definiert und erklärt.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 8,
+      "name": "Datenstrukturen",
+      "description": "Eine Datenstruktur erlaubt es, die für eine Aufgabe notwendigen Informationen geeignet zu repräsentieren und den Zugriff und die Verwaltung während der Bearbeitung in effizienter Weise zu ermöglichen.",
+      "type": "Definition"
+    },
+    {
+      "id": 21,
+      "name": "Organisation und Pseudocode",
+      "description": "In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 9,
+      "name": "Pseudocode",
+      "description": "Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.\\n+ Link zu Pseudocodeblatt, Übung 1",
+      "type": "Definition"
+    },
+    {
+      "id": 10,
+      "name": "Graphen",
+      "description": "Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 11,
+      "name": "Haus des Nikolaus",
+      "description": "Jeder kennt das Haus vom Nikolaus, doch wie wird es gemalt? Wo setzt man den Stift an und wo wieder ab?",
+      "type": "Beispiel"
+    },
+    {
+      "id": 12,
+      "name": "Eulertouren",
+      "description": "Ein Eulerweg ist ein Weg in einem Graphen, welcher alle Kanten nutzt. Eine Eulertour kehrt darüber hinaus auch zum Startknoten zurück.",
+      "type": "Definition"
+    },
+    {
+      "id": 13,
+      "name": "Graphenbegriffe",
+      "description": "Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 14,
+      "name": "Graph",
+      "description": "Über Graphen haben wir bereits viel gesprochen, doch was ein Graph genau ist und wie man ihn definiert erfährst du hier.",
+      "type": "Definition"
+    },
+    {
+      "id": 15,
+      "name": "Wege in Graphen",
+      "description": "Eine Kantenfolge W in einem Graphen G heißt Weg, wenn sich keine Kante darin wiederholt und geschlossener Weg (Tour), wenn man am Ende wieder am Startknoten ankommt. Wiederholt sich kein Knoten spricht man von einem Pfad. Ein Kreis ist ein geschlossener Pfad. Bei einem Eulerweg/ einer Eulertour werden alle Kanten des Graphen genutzt. Ein Hamiltonpfad/kreis nutzt hingegen alle Knoten.",
+      "type": "Definition"
+    },
+    {
+      "id": 16,
+      "name": "Beweistechniken",
+      "description": "In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:\\n+ Link zu Beweisblatt, Übung 2",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 17,
+      "name": "Eulertouren",
+      "description": "In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 18,
+      "name": "Algorithmus Wegfindung",
+      "description": "Dieser Algorithmus (2.7) erhält als Input einen Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Weg in G",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 19,
+      "name": "Algorithmus von Hierholzer",
+      "description": "Dieser Algorithmus (2.8) erhält als Input einen zusammenhängenden Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Eulerweg, bzw. eine Eulertour in G. Dazu wird auch Algorithmus 2.7 zum Finden von Wegen in G verwendet.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 20,
+      "name": "Algorithmus von Fleury",
+      "description": "Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 22,
+      "name": "Anwendung von Graphen",
+      "description": "In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 23,
+      "name": "Beweistechniken Teil 2",
+      "description": "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß\'sche Summenformel oder der Zusammenhang in Graphen  erläutert.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 24,
+      "name": "Graphenscan",
+      "description": "In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.\\n+ Links zu Video und Folien/Notizen/Beweis",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 25,
+      "name": "Algorithmus Graphenscan",
+      "description": "Dieser Algorithmus (3.7) erhählt als Input einen Graphen G = (V,E) und einen Knoten s darin und liefert als Output eine Knotenmenge Y aus V, die von s aus erreichbar ist, sowie eine Kantenmenge T aus E, welche die Erreichbarkeit sicherstellt",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 26,
+      "name": "Datenstrukturen Teil 1",
+      "description": "In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.\\n+ Links zu Video und Folien/Beispiel",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 27,
+      "name": "Warteschlange",
+      "description": "Eine Warteschlange ist eine Datenstruktur, welche nach dem Prinzip \'First In - First Out\' arbeitet. Man findet sie auch im alltäglichen Leben oft wieder, wenn man sich beispielsweise an der Kasse anstellen muss. Der Kunde der zuerst da war, wir auch zuerst bedient.",
+      "type": "Definition"
+    },
+    {
+      "id": 28,
+      "name": "Stapel",
+      "description": "Ein Stapel ist eine Datenstruktur, welche nach dem Prinzip \'Last In - First Out\' arbeitet. Im alltäglichen Leben findet man diese Form der Datenstruktur beim Geschirr abwaschen, man stapelt die Teller und der Teller der zuletzt dreckig wurde wird als erstes gereinigt, da man die Teller von oben herunter nimmt.",
+      "type": "Definition"
+    },
+    {
+      "id": 29,
+      "name": "Breitensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe einer Warteschlange als Datenstruktur. Sie breitet sich aus wie eine Welle.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 30,
+      "name": "Tiefensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe eines Stapels als Datenstruktur. Dabei werden eher einzelne Pfade gelaufen.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 31,
+      "name": "Datenstrukturen Teil 2",
+      "description": "In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 32,
+      "name": "Inzidenz/-Adjazenzmatrix",
+      "description": "In einer Inzidenzmatrix wird mithilfe von 1en und 0en dargestellt, welche Knoten mit welchen Kanten inzident (zusammentreffend) sind. Bei einer Adjazenzmatrix wird dargestellt, welche Knoten adjazent (durch eine Kante verbunden) sind.",
+      "type": "Definition"
+    },
+    {
+      "id": 33,
+      "name": "Kanten-/Adjazenzliste",
+      "description": "Eine Kantenliste ist eine Liste bestehend aus einträgen der Form {vx, vy}, welche bedeuten, dass eine Kante zwischen vx und vy im Graphen existiert.",
+      "type": "Definition"
+    },
+    {
+      "id": 34,
+      "name": "Wachstum/O-Notation",
+      "description": "In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 35,
+      "name": "O-Notation",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. Damit können Größenordnungen und Wachstumsverhalten beschrieben werden.",
+      "type": "Definition"
+    },
+    {
+      "id": 36,
+      "name": "Graphscan Ãœbung",
+      "description": "Simple Anwengung des Graphscan Algorithmus, einmal als Breiten- und als Tiefensuche. Wann welcher Algorithmus besser geeignet ist wird in dieser Übung erklärt.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 37,
+      "name": "Wachstum",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. In dieser Übung werden Zusammenhänge zwischen der Größe des Inputs und dem Wachstum, sowie Relationen zwischen Laufzeitklassen näher beleuchtet. Auch wird die O-Notation an verschiedenen Beispielen erklärt.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 38,
+      "name": "Wiederholung oder\\nSuche in Graphen Zusammenfassung",
+      "description": "Noch einmal ein Rückblick auf alles, was bisher in \'Kapitel 3: Suche in Graphen\' passiert ist. \\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 39,
+      "name": "Eigenschaften von DFS und BFS",
+      "description": "In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 40,
+      "name": "Induktionsbeweise Bsp.",
+      "description": "Einige Beispiele, bei denen der Induktionsbeweis auch in der Graphentheorie zum Einsatz kommt. ",
+      "type": "Beispiel"
+    },
+    {
+      "id": 41,
+      "name": "Adjazenzliste",
+      "description": "Wie eine Adjazenzliste für einen Graphen erstellt werden kann wird hier einmal genauer beleuchtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 42,
+      "name": "Graphscan Beispiel",
+      "description": "Hier wird der Graphscan Algorithmus einmal mithilfe einer Adjazenzliste als Datenstruktur durchgeführt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 43,
+      "name": "Dynamische Datenstrukturen",
+      "description": "In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 44,
+      "name": "Verkettete Liste",
+      "description": "Eine verkettete Liste ist eine dynamische Datenstruktur. Dabei werden für die einzelnen Elemente jeweils Vorgänger und Nachfolger mit gespeichert. Der Vorteil hierbei ist, dass neue Einträge überall eingefügt werden können.",
+      "type": "Definition"
+    },
+    {
+      "id": 45,
+      "name": "Binäre Suche",
+      "description": "Dieser Algorithmus (4.1) erhält als Input einen sortierten Array mit Einträgen S[I], Suchwert WERT, linke Randposition LINKS, rechte Randposition RECHTS und liefert als Output die Position von WERT zwischen Arraypositionen LINKS und RECHTS, falls existent.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 46,
+      "name": "Binäre Suche Idee",
+      "description": "Ein einleitendes Beispiel zur Binären Suche.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 47,
+      "name": "Binäre Suche Beispiel",
+      "description": "Der Algorithmus für die binäre Suche einmal an zwei Beispielen angewandt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 48,
+      "name": "Binäre Suchbäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 49,
+      "name": "Binärer Suchbaum",
+      "description": "In dieser Definition werden die Begriffe \'gerichteter Graph/Baum\', \'Höhe eines Baumes\', \'(voller/vollständiger) binärer Baum\', \'Blatt eines Baumes\', \'Teilbaum eines Knotens\' und \'binärer Suchbaum\' definiert und erklärt.",
+      "type": "Definition"
+    },
+    {
+      "id": 50,
+      "name": "Grundoperationen Suchbaum",
+      "description": "Minimum/Maximum finden, Suche im Baum, Nachfolger finden, Einfügen und Löschen sind die Grundoperationen, welche auf binäre Suchbäume angewendet werden können. Und hier findet ihr die Algorithmen dazu.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 51,
+      "name": "AVL-Bäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 52,
+      "name": "AVL-Baum",
+      "description": "Ein binärer Suchbaum ist höhenbalanciert, wenn sich für jeden Knoten v die Höhe der beiden Kinder von v um höchstens 1 unterscheidet. Ein höhenbalancierter Suchbaum heißt auch AVL-Baum.",
+      "type": "Definition"
+    },
+    {
+      "id": 53,
+      "name": "dyn. Operationen auf AVL-Bäumen",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 54,
+      "name": "AVL-Rotation",
+      "description": "Dieser Algorithmus (4.9) erhält als Input einen Knoten x eines binären Suchbaumes T, Vaterknoten y, Großvaterknoten z und liefert als Output den binären Suchbaum T nach Umstrukturierung mit x, y, z.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 55,
+      "name": "Fibonacci-Zahlen",
+      "description": "Die Fibonacci-Zahlen sind eine rekursiv definierte Zahlenfolge, bei der sich eine Zahl aus der Summe ihrer zwei Vorgänger ergibt. Dabei sind die ersten beiden Elemente gegeben als 1. Die Fibonacci-Zahlen finden sich überall in der Natur wieder und haben nicht wenig mit unserer Auffassung von Schönheit zu tun.",
+      "type": "Definition"
+    },
+    {
+      "id": 56,
+      "name": "Bäume-Übung",
+      "description": "In dieser Übung beschäftigen wir uns noch einmal genauer mit einigen Datenstrukturen wie verketteten Listen, binären Bäumen und AVL-Bäumen.",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 57,
+      "name": "Laufzeit von Algorithmus 2.7",
+      "description": "Wir betrachten einmal die Laufzeit des Hierholzer-Algorithmus (2.7) und im Zusammenhang damit auch verkettete Listen.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 58,
+      "name": "Grundoperationen Suchbaum",
+      "description": "In diesem Teil der Übung werden einmal die Operationen Einfügen, Suchen, Vorgänger/Nachfolger finden, löschen und verschmelzen von binären Suchbäumen geübt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 59,
+      "name": "AVL-Baum-Operationen",
+      "description": "Wir schauen uns noch einmal genauer die AVL-Bäume an und was man damit machen kann. Insbesondere auch die Operationen Löschen und Einfügen.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 60,
+      "name": "Dynamische Datenstrukturen 2",
+      "description": "In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 61,
+      "name": "Rot-Schwarz-Bäume",
+      "description": "Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:\\n1. Jeder Knoten ist entweder rot oder schwarz.\\n2. Die Wurzel ist schwarz.\\n3. Jedes Blatt (NIL) ist schwarz.\\n4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.\\n5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.",
+      "type": "Definition"
+    },
+    {
+      "id": 62,
+      "name": "B-Bäume",
+      "description": "B-Bäume sind binäre Suchbäume, welche für externen Speicher (HDDs) optimiert sind. Dabei wird die Höhe des Baumes minimiert und es werden den Knoten mehr Schlüssel zugewiesen.",
+      "type": "Definition"
+    },
+    {
+      "id": 63,
+      "name": "Heaps",
+      "description": "Ein gerichteter binärer Baum heißt binärer Min/Max-Heap, wenn jeder Knoten einen Schlüssel hat, alle Ebenen außer der \'letzten\' genau 2 Knoten haben, auf der \'letzten\' Ebene die linken n-(2^h)+1 Positionen besetzt sind und jeder Schlüssel eines Knotens höchstens/mindestens so groß ist wie die seiner Kinder.",
+      "type": "Definition"
+    },
+    {
+      "id": 64,
+      "name": "Sortieren",
+      "description": "In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 65,
+      "name": "Merge-Sort",
+      "description": "Dieser Algorithmus (5.1) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output ein sortiertes Subarray. Wichtig ist dafür auch die Subroutine (5.2), welche als Input zwei sortierte Subarrays von A=[1,...,n], d.h. A[p,...,q] und A[q+1,...,r] erhält und als Output das sortierte Subarray A[p,...,r] liefert.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 66,
+      "name": "Sortier-Laufzeitschranken",
+      "description": "In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 67,
+      "name": "Permutation",
+      "description": "Eine Permutation P ist eine Umsortierung von n Objekten.",
+      "type": "Definition"
+    },
+    {
+      "id": 68,
+      "name": "Erzeugende Funktionen",
+      "description": "Erzeugende Funktionen können genutzt werden um Rekursionen zu lösen.",
+      "type": "Definition"
+    },
+    {
+      "id": 69,
+      "name": "Erzeugende Funktionen/Mastertheorem",
+      "description": "In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 70,
+      "name": "erzeugende Funktionen Fibonacci-Zahlen",
+      "description": "In diesem Beispiel wird einmal die erzeugende Funktion der Fibonacci-Zahlen hergeleitet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 71,
+      "name": "Master-Theorem",
+      "description": "Das Master-Theorem bietet eine schnelle Lösung für die Frage, in welcher Laufzeitklasse eine gegebene rekursiv definierte Funktion liegt. Dies funktioniert leider nur, solange einer der drei Fälle des Theorems auf die Funktion angewandt werden kann, ansonsten liefert das Theorem keine Aussage.",
+      "type": "Definition"
+    },
+    {
+      "id": 72,
+      "name": "Master-Theorem Beispiele",
+      "description": "Einige Beispiele, an denen das Master-Theorem und seine Funktion noch einmal verdeutlicht wird.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 73,
+      "name": "Sortieralgorithmen und Master-Theorem",
+      "description": "Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 74,
+      "name": "Merge-Sort Beispiel",
+      "description": "Hier wird der Merge-Sort Algorithmus einmal mit einem Beispiel komplett durchgeführt und die Laufzeit des Algorithmus betrachtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 75,
+      "name": "Master-Theorem Beispiel",
+      "description": "3 weitere Beispiele, welche dabei helfen das Master-Theorem zu verstehen und anzuwenden.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 76,
+      "name": "Max-Heaps",
+      "description": "Hier wir aufgezeigt, wie man mithilfe eines Algorithmus Max-Heaps bildet. ",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 77,
+      "name": "Max-Heaps",
+      "description": "Hier wird der Algorithmus aus der Ãœbung 6 zum Erstellen eines Max-Heaps einmal an einem Beispiel angewandt.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 78,
+      "name": "Heapsort",
+      "description": "Heapsort ist ein Algorithmus bei dem mithilfe von Max-Heaps eine Reihe von Elementen sortiert werden kann. Der Algorithmus hat dabei eine Laufzeit von O(n log n), wie auch in Ãœbung 6 bewiesen wird.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 79,
+      "name": "nichtlineare Rekursionen (Exkurs)",
+      "description": "In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 80,
+      "name": "logistische Rekursion",
+      "description": "Logistische Rekursion bezeichnet ein Wachstum proportional zu einer Größe. Dabei betrachtet man beispielsweise eine Bevölkerung, welche zwar durch Fruchtbarkeit immer weiter wächst, aber beispielsweise durch Tod auch wieder im Wachstum beschränkt wird.",
+      "type": "Definition"
+    },
+    {
+      "id": 81,
+      "name": "Mandelbrot-Menge",
+      "description": "Die Mandelbrot-Menge, benannt nach Benoît Mandelbrot, ist eine Menge in den komplexen Zahlen. Interpretiert man sie als geometrische Figur, so ergibt sich ein Fraktal, welches im allgemeinen Sprachgebrauch auch als Apfelmännchen bekannt ist.",
+      "type": "Definition"
+    },
+    {
+      "id": 82,
+      "name": "Fraktale",
+      "description": "Ein Fraktal beschreibt natürliche oder künstliche Gebilde oder geometrische Muster und ist ein von Benoît Mandelbrot geprägter Begriff. - Wikipedia",
+      "type": "Definition"
+    },
+    {
+      "id": 83,
+      "name": "Zelluläre Automaten",
+      "description": "Zelluläre oder auch zellulare Automaten dienen der Modellierung räumlich diskreter dynamischer Systeme, wobei die Entwicklung einzelner Zellen zum Zeitpunkt t+1 primär von den Zellzuständen in einer vorgegebenen Nachbarschaft und vom eigenen Zustand zum Zeitpunkt t abhängt. - Wikipedia",
+      "type": "Definition"
+    },
+    {
+      "id": 84,
+      "name": "Game of Life",
+      "description": "Das \'Game of Life\' ist das wohl bekannteste Beispiel eines zellulären Automaten. ",
+      "type": "Beispiel"
+    },
+    {
+      "id": 85,
+      "name": "Quick-Sort",
+      "description": "In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 86,
+      "name": "Quick-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output einen sortierten Subarray. Dabei ist auch Subroutine 5.15 wichtig, welche als Input ein Subarray von A=[1,...,n], d.h. A[p,...,r] erhält und als Output zwei Subarrays A[p,...,q-1] und A[q+1,...,r] mit A[i]≤A[q] und A[q]<A[j] für i=p,...,q-1 und j=q+1,...,r liefert.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 87,
+      "name": "Laufzeit von Quick-Sort",
+      "description": "Die Laufzeit des Quick-Sort Algorithmus lässt sich mithilfe vom Master-Theorem ermitteln. Dazu betrachten wir die 3 Fälle best-case, average-case und worst-case für den Algorithmus.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 88,
+      "name": "Mediane",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Medianen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 89,
+      "name": "Standortprobleme",
+      "description": "Was ist der optimale Standort für beispielsweise ein Amazon-Lagerhaus? Idee: Die durchschnittliche Distanz zu den zu beliefernden Gebäuden minimieren. In Amerika ist dies leicht umgesetzt mit der sogenannten Manhatten-Distanz. Dieses Problem ist die Einführung in das Thema der Mediane.",
+      "type": "Definition"
+    },
+    {
+      "id": 90,
+      "name": "Median (diskret)",
+      "description": "Der Rank k eines Elements x (auch \'k-tes Element\') ist definiert durch |{y ∈ X |y<=x}| = k. Also die Anzahl der Elemente, welche kleiner oder gleich x sind. Speziell heißt x Median, wenn er das [n/2]-te Element ist. [n/2] wird dabei abgerundet.",
+      "type": "Definition"
+    },
+    {
+      "id": 91,
+      "name": "Median (kontinuierlich)",
+      "description": "Der kontinuierliche Median hat als Eigenschaft, dass das sowohl Integral bis zum Median, als auch ab dem Median größer-gleich 1/2 ist.",
+      "type": "Definition"
+    },
+    {
+      "id": 92,
+      "name": "Sortieralgorithmen Sonderfälle",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 93,
+      "name": "Counting-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Array von A=[1],...,A[n] mit Schlüsselwerten aus {1,…, k} und liefert als Output eine sortierte Kopie B[1],…,B[n] von [1],...,A[n].",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 94,
+      "name": "Radix-Sort",
+      "description": "Dieser Algorithmus (5.18) erhält als Input n Zahlen mit je d Ziffern, die k verschiedene Werte annehmen können, [1],...,A[n]  und liefert als Output einen sortierten Array. Dabei geht Radix-Sort im Gegensatz zu anderen Sortieralgorithmen ziffernweise vor.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 95,
+      "name": "Quick-Sort, Mediane, kd-Bäume",
+      "description": "In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 96,
+      "name": "Quick-Sort Beispiel",
+      "description": "In diesem Beispiel wird die Funktionsweise von Quick-Sort, sowie die Laufzeit betrachtet.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 97,
+      "name": "Mediane Beispiel",
+      "description": "In diesem Teil der Übung schauen wir uns noch einmal genauer an, was Mediane sind, wie man sie algorithmisch bestimmen kann und in welcher Laufzeit das möglich ist.",
+      "type": "Beispiel"
+    },
+    {
+      "id": 98,
+      "name": "kd-Bäume (Exkurs)",
+      "description": "kd-Bäume sind Bäume mit einer höheren Dimension. Mithilfe der Idee den Baum abwechselnd nach x- und y-Koordinate zu durchsuchen und so zu konstruieren entsteht ein Algorithmus mit dem man mehrdimensionale Suchbäume erstellen kann. Auch schauen wir uns an, wie man in einem solchen Baum sucht.",
+      "type": "Definition"
+    },
+    {
+      "id": 99,
+      "name": "(parallelisierte) Sortierverfahren",
+      "description": "In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.\\n+ Links zu Video und Folien/Notizen",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 100,
+      "name": "Bubble-Sort Beispiel",
+      "description": "Einige Beispiele, wie Bubble-Sort funktioniert, inklusive einiger verschiedener Darstellungen/Animationen und dem Vergleich mit Quick-Sort.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 101,
+      "name": "paralleles Bubble-Sort",
+      "description": "Mithilfe von Parallelisierung lässt sich Bubble-Sort auch in linearer Zeit umsetzen. Die Idee dafür wird hier einmal erläutert.",
+      "type": "Definition"
+    },
+    {
+      "id": 102,
+      "name": "Bogo-Sort",
+      "description": "Bogo-Sort ist ein eher als Scherz gemeinter Sortieralgorithmus. Dabei wird die gegebene Menge solange zufällig durchpermutiert und überprüft bis die korrekte Lösung erreicht ist.",
+      "type": "Algorithmus"
+    },
+    {
+      "id": 103,
+      "name": "Zusammenfassung",
+      "description": "Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.\\n+ Links zu Video und Folien",
+      "type": "Vorlesung"
+    },
+    {
+      "id": 104,
+      "name": "Klausurvorbereitung",
+      "description": "Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.\\n+ Links zu Video und Folien",
+      "type": "Ãœbung"
+    },
+    {
+      "id": 105,
+      "name": "Einleitung",
+      "description": "Eine Einleitung in die Welt der Algorithmen und Datenstrukturen. Was ist ein Algorithmus und wozu wird er benötigt? Und was haben Datenstrukturen damit zu tun?",
+      "type": "Kapitel"
+    },
+    {
+      "id": 106,
+      "name": "Graphen",
+      "description": "Graphen sind eine wichtige Darstellungsform von Daten in der Informatik. Wie Graphen aufgebaut sind und was man alles mit ihnen machen kann wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 107,
+      "name": "Suche in Graphen",
+      "description": "Die Suche in Graphen ist ein wichtiges Werkzeug. Allerdings gibt es mehrere Wege, welche zum Ziel führen und nicht alle funktionieren gleich gut. Wie man effizient in Graphen sucht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 108,
+      "name": "Dynamische Datenstrukturen",
+      "description": "Im Laufe der Vorlesung wurden bereits einige Datenstrukturen vorgestellt. In diesem Kapitel beschäftigen wir uns mit einer weiteren Klasse der Datenstrukturen, den dynamischen Datenstrukturen. Und damit, welche Möglichkeiten sie bieten.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 109,
+      "name": "Sortieren",
+      "description": "Neben der Suche von Elementen spielt auch das Sortieren in der Informatik eine große Rolle. Wie man das macht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
+    },
+    {
+      "id": 0,
+      "name": "AuD1",
+      "description": "Algorithmen und Datenstrukturen 1",
+      "type": "Kapitel"
+    }
+  ],
+  "links": [
+    {
+      "source": 1,
+      "target": 105,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 2,
+      "target": 1,
+      "type": "Beispiel"
+    },
+    {
+      "source": 3,
+      "target": 1,
+      "type": "Beispiel"
+    },
+    {
+      "source": 4,
+      "target": 105,
+      "type": "Definition"
+    },
+    {
+      "source": 4,
+      "target": 7,
+      "type": "Definition"
+    },
+    {
+      "source": 5,
+      "target": 1,
+      "type": "Beispiel"
+    },
+    {
+      "source": 6,
+      "target": 1,
+      "type": "Definition"
+    },
+    {
+      "source": 7,
+      "target": 105,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 8,
+      "target": 7,
+      "type": "Definition"
+    },
+    {
+      "source": 21,
+      "target": 105,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 9,
+      "target": 105,
+      "type": "Definition"
+    },
+    {
+      "source": 9,
+      "target": 21,
+      "type": "Definition"
+    },
+    {
+      "source": 10,
+      "target": 106,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 11,
+      "target": 14,
+      "type": "Beispiel"
+    },
+    {
+      "source": 12,
+      "target": 106,
+      "type": "Definition"
+    },
+    {
+      "source": 12,
+      "target": 15,
+      "type": "Definition"
+    },
+    {
+      "source": 12,
+      "target": 17,
+      "type": "Definition"
+    },
+    {
+      "source": 12,
+      "target": 19,
+      "type": "Definition"
+    },
+    {
+      "source": 12,
+      "target": 20,
+      "type": "Definition"
+    },
+    {
+      "source": 13,
+      "target": 14,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 13,
+      "target": 15,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 14,
+      "target": 106,
+      "type": "Definition"
+    },
+    {
+      "source": 15,
+      "target": 106,
+      "type": "Definition"
+    },
+    {
+      "source": 16,
+      "target": 106,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 17,
+      "target": 18,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 18,
+      "target": 106,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 19,
+      "target": 18,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 20,
+      "target": 18,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 22,
+      "target": 107,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 23,
+      "target": 107,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 23,
+      "target": 16,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 24,
+      "target": 25,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 25,
+      "target": 107,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 26,
+      "target": 27,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 26,
+      "target": 28,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 26,
+      "target": 29,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 26,
+      "target": 30,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 26,
+      "target": 31,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 27,
+      "target": 107,
+      "type": "Definition"
+    },
+    {
+      "source": 28,
+      "target": 107,
+      "type": "Definition"
+    },
+    {
+      "source": 29,
+      "target": 107,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 29,
+      "target": 25,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 30,
+      "target": 107,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 30,
+      "target": 25,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 31,
+      "target": 32,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 31,
+      "target": 33,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 32,
+      "target": 107,
+      "type": "Definition"
+    },
+    {
+      "source": 33,
+      "target": 107,
+      "type": "Definition"
+    },
+    {
+      "source": 34,
+      "target": 33,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 34,
+      "target": 35,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 35,
+      "target": 107,
+      "type": "Definition"
+    },
+    {
+      "source": 36,
+      "target": 30,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 36,
+      "target": 29,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 36,
+      "target": 24,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 37,
+      "target": 35,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 38,
+      "target": 107,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 39,
+      "target": 35,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 39,
+      "target": 29,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 39,
+      "target": 30,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 40,
+      "target": 23,
+      "type": "Beispiel"
+    },
+    {
+      "source": 41,
+      "target": 33,
+      "type": "Beispiel"
+    },
+    {
+      "source": 42,
+      "target": 25,
+      "type": "Beispiel"
+    },
+    {
+      "source": 42,
+      "target": 33,
+      "type": "Beispiel"
+    },
+    {
+      "source": 43,
+      "target": 26,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 43,
+      "target": 44,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 44,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 45,
+      "target": 108,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 46,
+      "target": 45,
+      "type": "Beispiel"
+    },
+    {
+      "source": 47,
+      "target": 45,
+      "type": "Beispiel"
+    },
+    {
+      "source": 48,
+      "target": 49,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 48,
+      "target": 50,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 49,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 50,
+      "target": 108,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 50,
+      "target": 49,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 51,
+      "target": 52,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 52,
+      "target": 49,
+      "type": "Definition"
+    },
+    {
+      "source": 52,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 53,
+      "target": 52,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 54,
+      "target": 108,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 54,
+      "target": 53,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 54,
+      "target": 52,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 55,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 56,
+      "target": 44,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 56,
+      "target": 45,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 56,
+      "target": 49,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 56,
+      "target": 50,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 56,
+      "target": 52,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 56,
+      "target": 54,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 57,
+      "target": 18,
+      "type": "Beispiel"
+    },
+    {
+      "source": 57,
+      "target": 44,
+      "type": "Beispiel"
+    },
+    {
+      "source": 58,
+      "target": 50,
+      "type": "Beispiel"
+    },
+    {
+      "source": 58,
+      "target": 49,
+      "type": "Beispiel"
+    },
+    {
+      "source": 59,
+      "target": 54,
+      "type": "Beispiel"
+    },
+    {
+      "source": 59,
+      "target": 52,
+      "type": "Beispiel"
+    },
+    {
+      "source": 60,
+      "target": 48,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 60,
+      "target": 61,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 60,
+      "target": 62,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 60,
+      "target": 63,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 61,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 61,
+      "target": 49,
+      "type": "Definition"
+    },
+    {
+      "source": 62,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 62,
+      "target": 49,
+      "type": "Definition"
+    },
+    {
+      "source": 63,
+      "target": 108,
+      "type": "Definition"
+    },
+    {
+      "source": 64,
+      "target": 65,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 64,
+      "target": 66,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 65,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 66,
+      "target": 67,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 66,
+      "target": 68,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 67,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 68,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 69,
+      "target": 68,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 70,
+      "target": 68,
+      "type": "Beispiel"
+    },
+    {
+      "source": 70,
+      "target": 55,
+      "type": "Beispiel"
+    },
+    {
+      "source": 71,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 72,
+      "target": 71,
+      "type": "Beispiel"
+    },
+    {
+      "source": 73,
+      "target": 65,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 73,
+      "target": 71,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 74,
+      "target": 65,
+      "type": "Beispiel"
+    },
+    {
+      "source": 75,
+      "target": 71,
+      "type": "Beispiel"
+    },
+    {
+      "source": 76,
+      "target": 63,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 76,
+      "target": 77,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 76,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 76,
+      "target": 74,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 77,
+      "target": 76,
+      "type": "Beispiel"
+    },
+    {
+      "source": 78,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 78,
+      "target": 76,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 78,
+      "target": 74,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 79,
+      "target": 80,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 79,
+      "target": 81,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 79,
+      "target": 82,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 79,
+      "target": 83,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 80,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 81,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 82,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 82,
+      "target": 81,
+      "type": "Definition"
+    },
+    {
+      "source": 83,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 84,
+      "target": 83,
+      "type": "Beispiel"
+    },
+    {
+      "source": 85,
+      "target": 86,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 86,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 87,
+      "target": 86,
+      "type": "Beispiel"
+    },
+    {
+      "source": 87,
+      "target": 71,
+      "type": "Beispiel"
+    },
+    {
+      "source": 88,
+      "target": 90,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 88,
+      "target": 91,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 89,
+      "target": 88,
+      "type": "Definition"
+    },
+    {
+      "source": 90,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 91,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 91,
+      "target": 90,
+      "type": "Definition"
+    },
+    {
+      "source": 92,
+      "target": 93,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 92,
+      "target": 94,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 93,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 94,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 95,
+      "target": 86,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 95,
+      "target": 90,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 95,
+      "target": 91,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 96,
+      "target": 86,
+      "type": "Beispiel"
+    },
+    {
+      "source": 97,
+      "target": 90,
+      "type": "Beispiel"
+    },
+    {
+      "source": 97,
+      "target": 91,
+      "type": "Beispiel"
+    },
+    {
+      "source": 98,
+      "target": 109,
+      "type": "Definition"
+    },
+    {
+      "source": 98,
+      "target": 49,
+      "type": "Definition"
+    },
+    {
+      "source": 98,
+      "target": 95,
+      "type": "Definition"
+    },
+    {
+      "source": 99,
+      "target": 100,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 99,
+      "target": 101,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 99,
+      "target": 102,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 100,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 100,
+      "target": 86,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 101,
+      "target": 100,
+      "type": "Definition"
+    },
+    {
+      "source": 102,
+      "target": 109,
+      "type": "Algorithmus"
+    },
+    {
+      "source": 103,
+      "target": 0,
+      "type": "Vorlesung"
+    },
+    {
+      "source": 104,
+      "target": 103,
+      "type": "Ãœbung"
+    },
+    {
+      "source": 105,
+      "target": 0,
+      "type": "Kapitel"
+    },
+    {
+      "source": 106,
+      "target": 0,
+      "type": "Kapitel"
+    },
+    {
+      "source": 107,
+      "target": 0,
+      "type": "Kapitel"
+    },
+    {
+      "source": 108,
+      "target": 0,
+      "type": "Kapitel"
+    },
+    {
+      "source": 109,
+      "target": 0,
+      "type": "Kapitel"
+    },
+    {
+      "source": 1,
+      "target": 105
+    },
+    {
+      "source": 2,
+      "target": 1
+    },
+    {
+      "source": 3,
+      "target": 1
+    },
+    {
+      "source": 4,
+      "target": 105
+    },
+    {
+      "source": 4,
+      "target": 7
+    },
+    {
+      "source": 5,
+      "target": 1
+    },
+    {
+      "source": 6,
+      "target": 1
+    },
+    {
+      "source": 7,
+      "target": 105
+    },
+    {
+      "source": 8,
+      "target": 7
+    },
+    {
+      "source": 21,
+      "target": 105
+    },
+    {
+      "source": 9,
+      "target": 105
+    },
+    {
+      "source": 9,
+      "target": 21
+    },
+    {
+      "source": 10,
+      "target": 106
+    },
+    {
+      "source": 11,
+      "target": 14
+    },
+    {
+      "source": 12,
+      "target": 106
+    },
+    {
+      "source": 12,
+      "target": 15
+    },
+    {
+      "source": 12,
+      "target": 17
+    },
+    {
+      "source": 12,
+      "target": 19
+    },
+    {
+      "source": 12,
+      "target": 20
+    },
+    {
+      "source": 13,
+      "target": 14
+    },
+    {
+      "source": 13,
+      "target": 15
+    },
+    {
+      "source": 14,
+      "target": 106
+    },
+    {
+      "source": 15,
+      "target": 106
+    },
+    {
+      "source": 16,
+      "target": 106
+    },
+    {
+      "source": 17,
+      "target": 18
+    },
+    {
+      "source": 18,
+      "target": 106
+    },
+    {
+      "source": 19,
+      "target": 18
+    },
+    {
+      "source": 20,
+      "target": 18
+    },
+    {
+      "source": 22,
+      "target": 107
+    },
+    {
+      "source": 23,
+      "target": 107
+    },
+    {
+      "source": 23,
+      "target": 16
+    },
+    {
+      "source": 24,
+      "target": 25
+    },
+    {
+      "source": 25,
+      "target": 107
+    },
+    {
+      "source": 26,
+      "target": 27
+    },
+    {
+      "source": 26,
+      "target": 28
+    },
+    {
+      "source": 26,
+      "target": 29
+    },
+    {
+      "source": 26,
+      "target": 30
+    },
+    {
+      "source": 26,
+      "target": 31
+    },
+    {
+      "source": 27,
+      "target": 107
+    },
+    {
+      "source": 28,
+      "target": 107
+    },
+    {
+      "source": 29,
+      "target": 107
+    },
+    {
+      "source": 29,
+      "target": 25
+    },
+    {
+      "source": 30,
+      "target": 107
+    },
+    {
+      "source": 30,
+      "target": 25
+    },
+    {
+      "source": 31,
+      "target": 32
+    },
+    {
+      "source": 31,
+      "target": 33
+    },
+    {
+      "source": 32,
+      "target": 107
+    },
+    {
+      "source": 33,
+      "target": 107
+    },
+    {
+      "source": 34,
+      "target": 33
+    },
+    {
+      "source": 34,
+      "target": 35
+    },
+    {
+      "source": 35,
+      "target": 107
+    },
+    {
+      "source": 36,
+      "target": 30
+    },
+    {
+      "source": 36,
+      "target": 29
+    },
+    {
+      "source": 36,
+      "target": 24
+    },
+    {
+      "source": 37,
+      "target": 35
+    },
+    {
+      "source": 38,
+      "target": 107
+    },
+    {
+      "source": 39,
+      "target": 35
+    },
+    {
+      "source": 39,
+      "target": 29
+    },
+    {
+      "source": 39,
+      "target": 30
+    },
+    {
+      "source": 40,
+      "target": 23
+    },
+    {
+      "source": 41,
+      "target": 33
+    },
+    {
+      "source": 42,
+      "target": 25
+    },
+    {
+      "source": 42,
+      "target": 33
+    },
+    {
+      "source": 43,
+      "target": 26
+    },
+    {
+      "source": 43,
+      "target": 44
+    },
+    {
+      "source": 44,
+      "target": 108
+    },
+    {
+      "source": 45,
+      "target": 108
+    },
+    {
+      "source": 46,
+      "target": 45
+    },
+    {
+      "source": 47,
+      "target": 45
+    },
+    {
+      "source": 48,
+      "target": 49
+    },
+    {
+      "source": 48,
+      "target": 50
+    },
+    {
+      "source": 49,
+      "target": 108
+    },
+    {
+      "source": 50,
+      "target": 108
+    },
+    {
+      "source": 50,
+      "target": 49
+    },
+    {
+      "source": 51,
+      "target": 52
+    },
+    {
+      "source": 52,
+      "target": 49
+    },
+    {
+      "source": 52,
+      "target": 108
+    },
+    {
+      "source": 53,
+      "target": 52
+    },
+    {
+      "source": 54,
+      "target": 108
+    },
+    {
+      "source": 54,
+      "target": 53
+    },
+    {
+      "source": 54,
+      "target": 52
+    },
+    {
+      "source": 55,
+      "target": 108
+    },
+    {
+      "source": 56,
+      "target": 44
+    },
+    {
+      "source": 56,
+      "target": 45
+    },
+    {
+      "source": 56,
+      "target": 49
+    },
+    {
+      "source": 56,
+      "target": 50
+    },
+    {
+      "source": 56,
+      "target": 52
+    },
+    {
+      "source": 56,
+      "target": 54
+    },
+    {
+      "source": 57,
+      "target": 18
+    },
+    {
+      "source": 57,
+      "target": 44
+    },
+    {
+      "source": 58,
+      "target": 50
+    },
+    {
+      "source": 58,
+      "target": 49
+    },
+    {
+      "source": 59,
+      "target": 54
+    },
+    {
+      "source": 59,
+      "target": 52
+    },
+    {
+      "source": 60,
+      "target": 48
+    },
+    {
+      "source": 60,
+      "target": 61
+    },
+    {
+      "source": 60,
+      "target": 62
+    },
+    {
+      "source": 60,
+      "target": 63
+    },
+    {
+      "source": 61,
+      "target": 108
+    },
+    {
+      "source": 61,
+      "target": 49
+    },
+    {
+      "source": 62,
+      "target": 108
+    },
+    {
+      "source": 62,
+      "target": 49
+    },
+    {
+      "source": 63,
+      "target": 108
+    },
+    {
+      "source": 64,
+      "target": 65
+    },
+    {
+      "source": 64,
+      "target": 66
+    },
+    {
+      "source": 65,
+      "target": 109
+    },
+    {
+      "source": 66,
+      "target": 67
+    },
+    {
+      "source": 66,
+      "target": 68
+    },
+    {
+      "source": 67,
+      "target": 109
+    },
+    {
+      "source": 68,
+      "target": 109
+    },
+    {
+      "source": 69,
+      "target": 68
+    },
+    {
+      "source": 70,
+      "target": 68
+    },
+    {
+      "source": 70,
+      "target": 55
+    },
+    {
+      "source": 71,
+      "target": 109
+    },
+    {
+      "source": 72,
+      "target": 71
+    },
+    {
+      "source": 73,
+      "target": 65
+    },
+    {
+      "source": 73,
+      "target": 71
+    },
+    {
+      "source": 74,
+      "target": 65
+    },
+    {
+      "source": 75,
+      "target": 71
+    },
+    {
+      "source": 76,
+      "target": 63
+    },
+    {
+      "source": 76,
+      "target": 77
+    },
+    {
+      "source": 76,
+      "target": 109
+    },
+    {
+      "source": 76,
+      "target": 74
+    },
+    {
+      "source": 77,
+      "target": 76
+    },
+    {
+      "source": 78,
+      "target": 109
+    },
+    {
+      "source": 78,
+      "target": 76
+    },
+    {
+      "source": 78,
+      "target": 74
+    },
+    {
+      "source": 79,
+      "target": 80
+    },
+    {
+      "source": 79,
+      "target": 81
+    },
+    {
+      "source": 79,
+      "target": 82
+    },
+    {
+      "source": 79,
+      "target": 83
+    },
+    {
+      "source": 80,
+      "target": 109
+    },
+    {
+      "source": 81,
+      "target": 109
+    },
+    {
+      "source": 82,
+      "target": 109
+    },
+    {
+      "source": 82,
+      "target": 81
+    },
+    {
+      "source": 83,
+      "target": 109
+    },
+    {
+      "source": 84,
+      "target": 83
+    },
+    {
+      "source": 85,
+      "target": 86
+    },
+    {
+      "source": 86,
+      "target": 109
+    },
+    {
+      "source": 87,
+      "target": 86
+    },
+    {
+      "source": 87,
+      "target": 71
+    },
+    {
+      "source": 88,
+      "target": 90
+    },
+    {
+      "source": 88,
+      "target": 91
+    },
+    {
+      "source": 89,
+      "target": 88
+    },
+    {
+      "source": 90,
+      "target": 109
+    },
+    {
+      "source": 91,
+      "target": 109
+    },
+    {
+      "source": 91,
+      "target": 90
+    },
+    {
+      "source": 92,
+      "target": 93
+    },
+    {
+      "source": 92,
+      "target": 94
+    },
+    {
+      "source": 93,
+      "target": 109
+    },
+    {
+      "source": 94,
+      "target": 109
+    },
+    {
+      "source": 95,
+      "target": 86
+    },
+    {
+      "source": 95,
+      "target": 90
+    },
+    {
+      "source": 95,
+      "target": 91
+    },
+    {
+      "source": 96,
+      "target": 86
+    },
+    {
+      "source": 97,
+      "target": 90
+    },
+    {
+      "source": 97,
+      "target": 91
+    },
+    {
+      "source": 98,
+      "target": 109
+    },
+    {
+      "source": 98,
+      "target": 49
+    },
+    {
+      "source": 98,
+      "target": 95
+    },
+    {
+      "source": 99,
+      "target": 100
+    },
+    {
+      "source": 99,
+      "target": 101
+    },
+    {
+      "source": 99,
+      "target": 102
+    },
+    {
+      "source": 100,
+      "target": 109
+    },
+    {
+      "source": 100,
+      "target": 86
+    },
+    {
+      "source": 101,
+      "target": 100
+    },
+    {
+      "source": 102,
+      "target": 109
+    },
+    {
+      "source": 103,
+      "target": 0
+    },
+    {
+      "source": 104,
+      "target": 103
+    },
+    {
+      "source": 105,
+      "target": 0
+    },
+    {
+      "source": 106,
+      "target": 0
+    },
+    {
+      "source": 107,
+      "target": 0
+    },
+    {
+      "source": 108,
+      "target": 0
+    },
+    {
+      "source": 109,
+      "target": 0
+    }
+  ]
+}
\ No newline at end of file
-- 
GitLab