{"id":6933,"date":"2026-08-24T16:25:09","date_gmt":"2026-08-24T16:25:09","guid":{"rendered":"https:\/\/technodidact.de\/?p=6933"},"modified":"2026-08-24T16:25:09","modified_gmt":"2026-08-24T16:25:09","slug":"die-kunst-der-problemloesung-eine-reise-durch-die-welt-der-algorithmen-und-datenstrukturen","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/die-kunst-der-problemloesung-eine-reise-durch-die-welt-der-algorithmen-und-datenstrukturen\/","title":{"rendered":"Die Kunst der Probleml\u00f6sung: Eine Reise durch die Welt der Algorithmen und Datenstrukturen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Autor: DerSchneider<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>\u201eDer Computer ist der wichtigste Gehilfe des Menschen. Aber er ist kein Ersatz f\u00fcr das Denken.\u201c<\/em>&nbsp;\u2013 Niklaus Wirth, Erfinder der Programmiersprache Pascal<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">In der unendlichen Pr\u00e4rie digitaler Informationen, in der t\u00e4glich Milliarden von Datenpunkten erzeugt, verarbeitet und gespeichert werden, ist die F\u00e4higkeit, Probleme effizient zu l\u00f6sen, zur Kernkompetenz der modernen Informatik geworden. Algorithmen und Datenstrukturen \u2013 das sind die unsichtbaren Architekten unserer digitalen Welt. Sie entscheiden dar\u00fcber, ob eine Suchanfrage in Millisekunden beantwortet wird oder ob wir uns geduldig den Kaffee holen k\u00f6nnen, w\u00e4hrend der Bildschirm l\u00e4dt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Doch was genau verbirgt sich hinter diesen Begriffen, die an jeder Hochschule und in jedem Softwareunternehmen eine zentrale Rolle spielen? Die Universit\u00e4t Heidelberg definiert Algorithmen als \u201egrundlegende L\u00f6sungsverfahren\u201c, w\u00e4hrend Datenstrukturen die Methoden zur Organisation dieser Daten bereitstellen&nbsp;<a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Sie sind zwei Seiten derselben Medaille \u2013 denn ohne die passende Struktur kann der beste Algorithmus nicht effizient arbeiten, und ohne den richtigen Algorithmus n\u00fctzt die sch\u00f6nste Datenstruktur wenig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Artikel f\u00fchrt Sie durch die faszinierende Welt der Algorithmik, beleuchtet ihre historischen Wurzeln, erkl\u00e4rt die wichtigsten Konzepte und zeigt, warum dieses Wissen heute relevanter ist denn je.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Seele des Algorithmus: Was ihn ausmacht<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor wir in die Tiefe gehen, m\u00fcssen wir kl\u00e4ren: Was ist \u00fcberhaupt ein Algorithmus? Der Begriff leitet sich vom Namen des persischen Gelehrten&nbsp;<strong>Al-Chwarizmi<\/strong>&nbsp;ab, der im 9. Jahrhundert die Grundlagen der Algebra legte. Doch die Idee des Algorithmus ist noch \u00e4lter \u2013 bereits in der Antike entwickelten Mathematiker wie Euklid Verfahren, die heute als die ersten Algorithmen der Menschheitsgeschichte gelten&nbsp;<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Algorithmus ist im Kern eine eindeutige Handlungsvorschrift, die aus einer endlichen Anzahl von Schritten besteht, um ein gegebenes Problem zu l\u00f6sen. Diese Definition mag trocken klingen, doch sie birgt eine revolution\u00e4re Idee: Die&nbsp;<strong>Losl\u00f6sung der L\u00f6sung von der konkreten Umsetzung<\/strong>. Ein Algorithmus ist kein Programmcode, sondern eine abstrakte Probleml\u00f6sungsstrategie, die in verschiedenen Programmiersprachen implementiert werden kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Algorithmik als wissenschaftliche Disziplin befasst sich mit zwei zentralen Fragen&nbsp;<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Korrektheit:<\/strong>\u00a0L\u00f6st der Algorithmus das Problem tats\u00e4chlich f\u00fcr alle zul\u00e4ssigen Eingaben?<\/li>\n\n\n\n<li><strong>Effizienz:<\/strong>\u00a0Wie viele Ressourcen (Zeit und Speicherplatz) ben\u00f6tigt der Algorithmus?<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Diese zweite Frage hat die Algorithmik zu einem der wichtigsten Teilgebiete der Informatik gemacht. In einer Welt, in der Datenmengen exponentiell wachsen, ist Effizienz kein Luxus, sondern eine Notwendigkeit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Beantwortung der Effizienzfrage erfolgt durch die&nbsp;<strong>asymptotische Laufzeitanalyse<\/strong>&nbsp;\u2013 der ber\u00fchmten&nbsp;<em>O-Notation<\/em>&nbsp;(Landau-Symbolik)&nbsp;<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Mit ihr k\u00f6nnen wir beschreiben, wie das Laufzeitverhalten eines Algorithmus mit der Gr\u00f6\u00dfe der Eingabe skaliert. Ein Algorithmus mit&nbsp;<em>O(n)<\/em>&nbsp;ist linear \u2013 verdoppelt sich die Eingabemenge, verdoppelt sich die Laufzeit. Ein Algorithmus mit&nbsp;<em>O(n\u00b2)<\/em>&nbsp;ist quadratisch \u2013 die Laufzeit vervierfacht sich bei Verdopplung der Eingabe. Die Unterschiede sind dramatisch:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\"><strong>Gr\u00f6\u00dfenordnung<\/strong><\/th><th class=\"has-text-align-left\" data-align=\"left\"><strong>Name<\/strong><\/th><th class=\"has-text-align-left\" data-align=\"left\"><strong>Beispiel-Algorithmus<\/strong><\/th><th class=\"has-text-align-left\" data-align=\"left\"><strong>Verhalten bei n=10<\/strong><\/th><th class=\"has-text-align-left\" data-align=\"left\"><strong>Verhalten bei n=1.000<\/strong><\/th><\/tr><\/thead><tbody><tr><td><em>O(1)<\/em><\/td><td>Konstant<\/td><td>Zugriff auf ein Array-Element<\/td><td>1 Schritt<\/td><td>1 Schritt<\/td><\/tr><tr><td><em>O(log n)<\/em><\/td><td>Logarithmisch<\/td><td>Bin\u00e4re Suche<\/td><td>4 Schritte<\/td><td>10 Schritte<\/td><\/tr><tr><td><em>O(n)<\/em><\/td><td>Linear<\/td><td>Lineare Suche<\/td><td>10 Schritte<\/td><td>1.000 Schritte<\/td><\/tr><tr><td><em>O(n log n)<\/em><\/td><td>Quasi-linear<\/td><td>Mergesort \/ Quicksort<\/td><td>40 Schritte<\/td><td>10.000 Schritte<\/td><\/tr><tr><td><em>O(n\u00b2)<\/em><\/td><td>Quadratisch<\/td><td>Bubblesort<\/td><td>100 Schritte<\/td><td>1.000.000 Schritte<\/td><\/tr><tr><td><em>O(2^n)<\/em><\/td><td>Exponentiell<\/td><td>Naive Fibonacci-Berechnung<\/td><td>1.024 Schritte<\/td><td>&gt;10^300 Schritte<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Tabelle 1: Vergleich der Laufzeitklassen und ihre praktische Bedeutung&nbsp;<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Wahl des richtigen Algorithmus kann also den Unterschied zwischen einem Programm, das innerhalb von Sekunden l\u00e4uft, und einem, das Rechenzeit in Anspruch nimmt, die das Alter des Universums \u00fcbersteigt, ausmachen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Werkzeuge des Handwerks: Datenstrukturen im \u00dcberblick<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W\u00e4hrend der Algorithmus das \u201eWas\u201c und \u201eWie\u201c der Probleml\u00f6sung definiert, sind Datenstrukturen die \u201eOrganisationsform\u201c der Daten. Ein abstrakter Datentyp (ADT) definiert lediglich, welche Operationen auf den Daten m\u00f6glich sind \u2013 die konkrete Implementierung kann variieren&nbsp;<a href=\"https:\/\/www.uni-trier.de\/fileadmin\/fb4\/prof\/INF\/TIN\/Folien\/ADS\/ss_2008\/VL5.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Die Wahl der richtigen Datenstruktur ist entscheidend f\u00fcr die Performance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lineare Datenstrukturen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Strukturen organisieren Daten in einer sequenziellen Ordnung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Arrays:<\/strong>\u00a0Die einfachste und am h\u00e4ufigsten verwendete Datenstruktur. Elemente werden in einem zusammenh\u00e4ngenden Speicherblock abgelegt, was einen direkten Zugriff in\u00a0<em>O(1)<\/em>\u00a0erm\u00f6glicht. Der Nachteil: Die Gr\u00f6\u00dfe ist in vielen Implementierungen statisch, und Einf\u00fcgungen oder L\u00f6schungen in der Mitte sind aufw\u00e4ndig (<em>O(n)<\/em>)\u00a0<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Verkettete Listen (Linked Lists):<\/strong>\u00a0Diese dynamische Struktur besteht aus Knoten, die jeweils einen Datenwert und einen Verweis (Pointer) auf den n\u00e4chsten Knoten enthalten. Einf\u00fcgungen und L\u00f6schungen sind hier sehr effizient (<em>O(1)<\/em>), wenn die Position bekannt ist. Der Zugriff auf ein bestimmtes Element erfolgt jedoch sequenziell (<em>O(n)<\/em>)\u00a0<a href=\"https:\/\/www.uni-trier.de\/fileadmin\/fb4\/prof\/INF\/TIN\/Folien\/ADS\/ss_2008\/VL5.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Stacks (Stapel) und Queues (Warteschlangen):<\/strong>\u00a0Diese abstrakten Datentypen beschreiben Datencontainer mit speziellen Zugriffsregeln. Ein Stack folgt dem LIFO-Prinzip (Last-In-First-Out) \u2013 man kann sich das wie einen Stapel Teller vorstellen. Eine Queue folgt dem FIFO-Prinzip (First-In-First-Out) \u2013 wie eine Warteschlange an der Kasse\u00a0<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.uni-trier.de\/fileadmin\/fb4\/prof\/INF\/TIN\/Folien\/ADS\/ss_2008\/VL5.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Nicht-lineare Datenstrukturen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Strukturen bilden komplexere Beziehungen zwischen den Daten ab:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u00e4ume:<\/strong>\u00a0Hierarchische Strukturen mit einer Wurzel und Verzweigungen. Besonders wichtig sind Bin\u00e4rb\u00e4ume, bei denen jeder Knoten maximal zwei Kinder hat. Die Suche in einem geordneten Bin\u00e4rbaum (bin\u00e4rer Suchbaum) kann sehr effizient sein \u2013 im optimal Fall\u00a0<em>O(log n)<\/em>\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Um eine Entartung zu einer linearen Liste zu verhindern, wurden balancierte B\u00e4ume wie\u00a0<strong>AVL-B\u00e4ume<\/strong>\u00a0oder\u00a0<strong>Rot-Schwarz-B\u00e4ume<\/strong>\u00a0entwickelt\u00a0<a href=\"https:\/\/www.sempro.ethz.ch\/Vorlesungsverzeichnis\/Katalogdaten_Fr%c3%bchjahrssemester_2026.pdf?typ=3&amp;semkez=2026S&amp;spracheKomm=1#1116#588\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Heaps (Halden):<\/strong>\u00a0Eine spezielle Baum-Struktur, die oft f\u00fcr Priorit\u00e4tswarteschlangen verwendet wird. Ein Max-Heap hat die Eigenschaft, dass der Wert eines Knotens stets gr\u00f6\u00dfer oder gleich den Werten seiner Kinder ist \u2013 der gr\u00f6\u00dfte Wert steht also immer an der Wurzel. Dies erm\u00f6glicht effizientes Sortieren (Heapsort)\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Graphen:<\/strong>\u00a0Die universellste Datenstruktur. Graphen bestehen aus Knoten (Vertices) und Kanten (Edges) und k\u00f6nnen nahezu jede Art von Beziehung modellieren \u2013 von sozialen Netzwerken \u00fcber Verkehrswege bis hin zu Abh\u00e4ngigkeiten in Softwareprojekten. Sie werden in der Regel entweder als\u00a0<strong>Adjazenzmatrix<\/strong>\u00a0oder als\u00a0<strong>Adjazenzliste<\/strong>\u00a0dargestellt\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Spezielle Datenstrukturen f\u00fcr spezielle Aufgaben<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hashtabellen (Hash Maps \/ Dictionaries):<\/strong>\u00a0Sie sind die Krone der effizienten Datenorganisation. Eine Hashfunktion berechnet aus einem Schl\u00fcssel einen Index, an dem der Wert gespeichert wird. Im Idealfall erm\u00f6glicht dies Zugriffe, Einf\u00fcgungen und L\u00f6schungen in\u00a0<em>O(1)<\/em>\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Kollisionen (zwei Schl\u00fcssel ergeben denselben Index) m\u00fcssen durch Verkettung (Chaining) oder offene Adressierung behandelt werden\u00a0<a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Hashtabellen bilden das Fundament moderner Datenbank-Indizes und Caching-Systeme.<\/li>\n\n\n\n<li><strong>Tries (Pr\u00e4fix-B\u00e4ume):<\/strong>\u00a0Diese Baum-Struktur speichert Strings effizient, indem sie gemeinsame Pr\u00e4fixe zusammenfasst. Sie sind ideal f\u00fcr Autovervollst\u00e4ndigung und W\u00f6rterbuch-Suchen\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Die gro\u00dfe Sortier-Frage: Ordnung schaffen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Sortieren von Daten ist eines der fundamentalsten Probleme der Informatik \u2013 und die Vielfalt der L\u00f6sungen zeigt die Sch\u00f6nheit der Algorithmik. Jedes Sortierverfahren hat seine eigenen St\u00e4rken und Schw\u00e4chen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Klassiker: Einfach und intuitiv<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Algorithmen werden oft in der Lehre verwendet, sind aber f\u00fcr gro\u00dfe Datenmengen nicht zu empfehlen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bubblesort:<\/strong>\u00a0Der bekannteste Vertreter der \u201eeinfachen\u201c Sortierverfahren. Er vergleicht benachbarte Elemente und vertauscht sie bei Bedarf \u2013 die gr\u00f6\u00dften Werte steigen wie Blasen nach oben. Sein Laufzeitverhalten von\u00a0<em>O(n\u00b2)<\/em>\u00a0macht ihn f\u00fcr gro\u00dfe Datenmengen ungeeignet\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Selectionsort:<\/strong>\u00a0Dieses Verfahren sucht wiederholt das kleinste Element im unsortierten Teil und tauscht es an die richtige Position. Es reduziert zwar die Anzahl der Vertauschungen, bleibt aber mit\u00a0<em>O(n\u00b2)<\/em>\u00a0in der gleichen Klasse wie Bubblesort\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Insertionsort:<\/strong>\u00a0Es baut eine sortierte Teilliste auf, indem jedes neue Element an die korrekte Position eingef\u00fcgt wird. F\u00fcr fast sortierte Daten ist Insertionsort \u00fcberraschend effizient und wird oft in der Praxis als Teil von Hybrid-Algorithmen verwendet\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Die Fortgeschrittenen: Schnell und clever<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Algorithmen erreichen die optimal m\u00f6gliche Laufzeit f\u00fcr vergleichsbasiertes Sortieren (<em>O(n log n)<\/em>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mergesort:<\/strong>\u00a0Ein klassischer Vertreter des\u00a0<em>Divide and Conquer<\/em>-Prinzips. Die Liste wird rekursiv in zwei H\u00e4lften geteilt, diese werden sortiert und dann wieder zusammengef\u00fchrt (gemerged). Mergesort ist stabil und hat eine garantierte Laufzeit von\u00a0<em>O(n log n)<\/em>. Der Nachteil ist der zus\u00e4tzliche Speicherbedarf f\u00fcr die Merge-Operation\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li><strong>Quicksort:<\/strong>\u00a0Der wohl ber\u00fchmteste Sortieralgorithmus. Er w\u00e4hlt ein Pivotelement und partitioniert die Liste so, dass alle kleineren Elemente links und alle gr\u00f6\u00dferen rechts stehen. Dann werden beide Teile rekursiv sortiert. Quicksort hat im Durchschnitt eine hervorragende Laufzeit von\u00a0<em>O(n log n)<\/em>, kann aber im ung\u00fcnstigsten Fall auf\u00a0<em>O(n\u00b2)<\/em>\u00a0abfallen\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>. Die Wahl des Pivots ist daher entscheidend.<\/li>\n\n\n\n<li><strong>Heapsort:<\/strong>\u00a0Nutzt die Heap-Datenstruktur aus, um in\u00a0<em>O(n log n)<\/em>\u00a0zu sortieren. Heapsort ben\u00f6tigt keinen zus\u00e4tzlichen Speicherplatz und ist besonders f\u00fcr Umgebungen geeignet, in denen Speicher knapp ist\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Die Spezialisten: Mehr als Vergleiche<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Countingsort \/ Bucketsort:<\/strong>\u00a0Diese Verfahren nutzen die Eigenschaften der Daten aus, um schneller als\u00a0<em>O(n log n)<\/em>\u00a0zu sein. Sie sind auf ganzzahlige oder gleichverteilte Daten beschr\u00e4nkt und erreichen im besten Fall\u00a0<em>O(n)<\/em>\u00a0<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hybrid-Algorithmen: Das Beste aus allen Welten<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Timsort:<\/strong>\u00a0Der in Python verwendete Standard-Sortieralgorithmus ist ein beeindruckendes Beispiel f\u00fcr die praktische Anwendung algorithmischer Erkenntnisse. Timsort kombiniert Insertionsort (f\u00fcr kleine Teillisten) mit Mergesort (zum Zusammenf\u00fchren) und nutzt zus\u00e4tzlich die bereits vorhandene Ordnung in den Daten aus. Dieser Hybrid-Ansatz zeigt, dass die Optimierung von Algorithmen oft im intelligenten Kombinieren verschiedener Strategien liegt [citation:transcript].<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Von der Theorie zur Praxis: Wie Computer wirklich denken<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die akademische Lehre vermittelt die Grundlagen&nbsp;<a href=\"https:\/\/www.sempro.ethz.ch\/Vorlesungsverzeichnis\/Katalogdaten_Fr%c3%bchjahrssemester_2026.pdf?typ=3&amp;semkez=2026S&amp;spracheKomm=1#1116#588\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>, doch in der Praxis sehen Algorithmen oft anders aus. Moderne Systeme sind komplexe \u00d6kosysteme, in denen verschiedene Algorithmen zusammenarbeiten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Datenbanken: Die unsichtbaren Ingenieure<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Datenbankmanagementsysteme sind Meisterwerke der algorithmischen Integration. Ein einfacher SQL-Befehl wie&nbsp;<code>SELECT * FROM users WHERE email = 'test@example.com'<\/code>&nbsp;l\u00f6st eine Reihe von Entscheidungen aus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der Query-Optimizer analysiert die verf\u00fcgbaren Indizes. Ein\u00a0<strong>B+-Baum<\/strong>\u00a0erm\u00f6glicht effiziente Bereichsanfragen und Sortierungen [citation:transcript]. Ein\u00a0<strong>Hash-Index<\/strong>\u00a0liefert zwar blitzschnelle Punktabfragen (<em>O(1)<\/em>), kann aber keine Bereichsanfragen beantworten [citation:transcript].<\/li>\n\n\n\n<li>F\u00fcr die Optimierung von Joins werden verschiedene Strategien in Betracht gezogen:\u00a0<strong>Nested-Loop-Joins<\/strong>\u00a0f\u00fcr kleine Datens\u00e4tze,\u00a0<strong>Hash-Joins<\/strong>\u00a0f\u00fcr gro\u00dfe, unsortierte Datenmengen und\u00a0<strong>Sort-Merge-Joins<\/strong>\u00a0f\u00fcr bereits sortierte Daten [citation:transcript].<\/li>\n\n\n\n<li>Der Optimizer w\u00e4hlt den Plan mit den gesch\u00e4tzten geringsten Kosten basierend auf Statistiken \u00fcber die Datenverteilung \u2013 ein Paradebeispiel f\u00fcr die Anwendung der Entscheidungstheorie auf Algorithmen [citation:transcript].<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Git: Versionskontrolle als Algorithmus<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein weiteres beeindruckendes Beispiel ist Git. Wenn&nbsp;<code>git bisect<\/code>&nbsp;verwendet wird, um den Commit zu finden, der einen Fehler eingef\u00fchrt hat, wird im Kern ein bin\u00e4rer Suchalgorithmus auf der Commit-Historie angewendet. Die Historienstruktur eines Git-Repositories ist ein&nbsp;<strong>gerichteter azyklischer Graph (DAG)<\/strong>, und viele der Operationen \u2013 von&nbsp;<code>git log<\/code>&nbsp;bis&nbsp;<code>git merge<\/code>&nbsp;\u2013 sind letztlich raffinierte Graph-Algorithmen [citation:transcript].<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Denkwerkzeuge und Strategien<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Algorithmen, die wir besprochen haben, sind nicht willk\u00fcrlich entstanden. Sie folgen bestimmten&nbsp;<strong>Entwurfsmustern<\/strong>&nbsp;und&nbsp;<strong>Strategien<\/strong>, die universell auf eine Vielzahl von Problemen anwendbar sind.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Divide and Conquer (Teile und Herrsche)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dieses Prinzip teilt ein Problem in kleinere, unabh\u00e4ngige Teilprobleme auf, l\u00f6st diese rekursiv und kombiniert die L\u00f6sungen. Mergesort und Quicksort sind klassische Beispiele&nbsp;<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>. Aber auch in der Praxis findet es Anwendung \u2013 etwa beim Suchen in riesigen Datens\u00e4tzen, die auf mehrere Server verteilt sind.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dynamische Programmierung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dynamische Programmierung ist eine m\u00e4chtige Strategie f\u00fcr Probleme, bei denen sich Teilprobleme \u00fcberlappen. Die Idee ist einfach, aber genial: Statt die gleichen Teilprobleme immer wieder neu zu berechnen, werden die Ergebnisse gespeichert (Memoization) und wiederverwendet. Das klassische Beispiel ist die Fibonacci-Berechnung, aber auch die Optimierung von Routen (wie beim Problem des Handlungsreisenden) und die Textverarbeitung profitieren von dieser Strategie&nbsp;<a href=\"https:\/\/www.sempro.ethz.ch\/Vorlesungsverzeichnis\/Katalogdaten_Fr%c3%bchjahrssemester_2026.pdf?typ=3&amp;semkez=2026S&amp;spracheKomm=1#1116#588\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Greedy-Algorithmen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Algorithmen sind der \u201eSchnellschuss\u201c unter den Strategien. Sie treffen in jedem Schritt die Entscheidung, die zum aktuellen Zeitpunkt am besten erscheint, ohne R\u00fccksicht auf zuk\u00fcnftige Konsequenzen. Dies funktioniert oft \u00fcberraschend gut und ist extrem schnell \u2013 der Dijkstra-Algorithmus zur Bestimmung k\u00fcrzester Wege in Graphen ist ein prominentes Beispiel&nbsp;<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Backtracking<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das systematische Ausprobieren von L\u00f6sungsm\u00f6glichkeiten. Wenn ein L\u00f6sungsweg nicht funktioniert, wird er verworfen (\u201ezur\u00fcckverfolgt\u201c) und der n\u00e4chste Pfad versucht. Diese Strategie ist unverzichtbar f\u00fcr Probleme wie das L\u00f6sen von Sudoku-R\u00e4tseln oder die Planung von Schachz\u00fcgen&nbsp;<a href=\"https:\/\/www.cit.tum.de\/fileadmin\/w00byx\/cit\/Studium\/Studiengaenge\/Bachelor_Bioinformatik\/LMU_Module\/IN5004_Algorithmen_und_Datenstrukturen_01.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Grenzen des M\u00f6glichen: Komplexit\u00e4tstheorie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Frage, ob ein Problem \u00fcberhaupt effizient l\u00f6sbar ist, f\u00fchrt uns in die komplexit\u00e4tstheoretischen Grenzen der Informatik. Die&nbsp;<strong>P-NP-Problematik<\/strong>&nbsp;ist eine der wichtigsten offenen Fragen der Mathematik und Informatik&nbsp;<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Klasse P:<\/strong>\u00a0Probleme, die in polynomieller Zeit gel\u00f6st werden k\u00f6nnen (effizient l\u00f6sbar).<\/li>\n\n\n\n<li><strong>Klasse NP:<\/strong>\u00a0Probleme, bei denen eine vorgeschlagene L\u00f6sung in polynomieller Zeit \u00fcberpr\u00fcft werden kann. Dazu geh\u00f6ren viele Optimierungsprobleme wie das Problem des Handlungsreisenden oder die Frage nach dem k\u00fcrzesten Pfad in einem Graphen mit bestimmten Einschr\u00e4nkungen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die zentrale Frage ist:&nbsp;<strong>Ist P = NP?<\/strong>&nbsp;Kann jedes Problem, dessen L\u00f6sung schnell \u00fcberpr\u00fcft werden kann, auch schnell gefunden werden? Die \u00fcberwiegende Mehrheit der Experten glaubt, dass P \u2260 NP ist, und dass es viele Probleme gibt, f\u00fcr die wir keine effizienten Algorithmen finden werden. Dies w\u00e4re dann eine grundlegende Grenze der algorithmischen Probleml\u00f6sung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit: Mehr als nur Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Algorithmen und Datenstrukturen sind weit mehr als nur Grundwissen f\u00fcr Programmierer. Sie sind die&nbsp;<strong>Sprache der Effizienz<\/strong>&nbsp;und das Handwerkszeug f\u00fcr die digitale Transformation. Sie helfen uns, Probleme zu durchdringen, komplexe Systeme zu verstehen und intelligente Entscheidungen zu treffen. Sie sind die unsichtbare Hand, die die digitale Welt ordnet und beschleunigt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Besch\u00e4ftigung mit Algorithmen schult nicht nur die technische F\u00e4higkeit, sondern auch das&nbsp;<strong>kritische Denken<\/strong>&nbsp;\u2013 die F\u00e4higkeit, Probleme zu analysieren, Abstraktionen zu bilden und die Machbarkeit von L\u00f6sungen einzusch\u00e4tzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In einer Welt, die zunehmend von KI und datengetriebenen Entscheidungen gepr\u00e4gt wird, wird das Verst\u00e4ndnis der zugrundeliegenden Algorithmen zu einer Schl\u00fcsselkompetenz. Wer die Mechanismen hinter der Magie versteht, ist nicht nur ein besserer Entwickler, sondern ein m\u00fcndigerer B\u00fcrger in der digitalen Gesellschaft.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sedgewick, R.; Wayne, K.:\u00a0<em>Algorithmen. Algorithmen und Datenstrukturen.<\/em>\u00a04. Auflage. M\u00fcnchen: Pearson, 2014\u00a0<a href=\"https:\/\/www.fhdw.de\/wp-content\/uploads\/2024\/06\/Bachelor-Modul-Algorithmen-und-Datenstrukturen.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li>Cormen, T.H.; Leiserson, Ch.E.; Rivest, R.L.; Stein, C.:\u00a0<em>Introduction to Algorithms.<\/em>\u00a04. Auflage. Cambridge: MIT Press, 2022\u00a0<a href=\"https:\/\/www.informatik.tu-darmstadt.de\/systems\/teach\/lectures\/aud\/sys_teaching_aud.en.jsp\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li>Blum, N.:\u00a0<em>Algorithmen und Datenstrukturen. Eine anwendungsorientierte Einf\u00fchrung.<\/em>\u00a0M\u00fcnchen: Oldenbourg, 2004\u00a0<a href=\"http:\/\/www.fh-rosenheim.de\/fileadmin\/inhalte\/Fakultaeten\/Informatik\/Vorlesungen\/Dokumente\/AD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li>Ottmann, T.; Widmayer, P.:\u00a0<em>Algorithmen und Datenstrukturen.<\/em>\u00a05. Auflage. Heidelberg: Spektrum Akademischer Verlag, 2012\u00a0<a href=\"https:\/\/www.fh-swf.de\/media\/de\/neu_np\/fb_tbw_1\/dozentinnen_2\/professorinnen_5\/devries_1\/algorithmik.pdf#25#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li>Pomberger, G.; Dobler, H.:\u00a0<em>Algorithmen und Datenstrukturen \u2013 eine systematische Einf\u00fchrung in die Programmierung.<\/em>\u00a0M\u00fcnchen: Pearson, 2008\u00a0<a href=\"https:\/\/www.fhdw.de\/wp-content\/uploads\/2024\/06\/Bachelor-Modul-Algorithmen-und-Datenstrukturen.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n\n\n\n<li>Mehlhorn, K.; Sanders, P.:\u00a0<em>Algorithms and Data Structures. The Basic Toolbox.<\/em>\u00a0Berlin: Springer, 2008\u00a0<a href=\"https:\/\/www.informatik.uni-heidelberg.de\/c\/image\/f\/default\/pdfs\/modulbeschreibung\/IAD.pdf#1#1\" target=\"_blank\" rel=\"noopener\"><\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Autor: DerSchneider Einleitung \u201eDer Computer ist der wichtigste Gehilfe des Menschen. Aber er ist kein Ersatz f\u00fcr das Denken.\u201c&nbsp;\u2013 Niklaus Wirth, Erfinder der Programmiersprache Pascal In der unendlichen Pr\u00e4rie digitaler Informationen, in der t\u00e4glich Milliarden von Datenpunkten erzeugt, verarbeitet und gespeichert werden, ist die F\u00e4higkeit, Probleme effizient zu l\u00f6sen, zur Kernkompetenz der modernen Informatik geworden. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,41,17,18],"tags":[318,10284,1903,3836,10286,10285],"class_list":["post-6933","post","type-post","status-publish","format-standard","hentry","category-denkwerkzeuge","category-digitalkultur","category-im-herz","category-im-kopf-methoden-werkzeuge","tag-algorithmen","tag-datenstrukturen","tag-effizienz","tag-komplexitatstheorie","tag-o-notation","tag-sortieralgorithmen"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6933","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=6933"}],"version-history":[{"count":1,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6933\/revisions"}],"predecessor-version":[{"id":6934,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/6933\/revisions\/6934"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=6933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=6933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=6933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}