{"id":3737,"date":"2025-03-15T16:54:19","date_gmt":"2025-03-15T15:54:19","guid":{"rendered":"https:\/\/maximini.eu\/work\/?p=3737"},"modified":"2025-03-15T18:10:26","modified_gmt":"2025-03-15T17:10:26","slug":"komplexitaet","status":"publish","type":"post","link":"https:\/\/maximini.eu\/work\/komplexitaet\/","title":{"rendered":"Komplexit\u00e4t von Algorithmen"},"content":{"rendered":"<p>Die <a href=\"https:\/\/de.wikipedia.org\/wiki\/Komplexit%C3%A4t_(Informatik)\" target=\"_blank\" rel=\"noopener\">Komplexit\u00e4t<\/a> beschreibt die Effizienz eines Algorithmus. Sie gibt in der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Landau-Symbole\" target=\"_blank\" rel=\"noopener\">Gro\u00df-O-Notation<\/a> an, wie der Aufwand eines Algorithmus steigt, wenn die Problemgr\u00f6\u00dfe w\u00e4chst, also die Menge der Eingabedaten zunimmt. Sie wird meist f\u00fcr den besten, durchschnittlichen und schlechtesten Fall bestimmt.&nbsp;<\/p>\n<p>In einem Koordinatensystem wird die Komplexit\u00e4t eines Algorithmus als Funktion der Eingabegr\u00f6\u00dfe dargestellt. Auf der horizontalen x-Achse wird die Eingabegr\u00f6\u00dfe n und auf der vertikalen y-Achse der entsprechende Funktionswert f(n) dargestellt.&nbsp;<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; background-color: #cccccc;\"><strong>Beispiel<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 100%;\">Ein Algorithmus mit der Funktion f(n) = 2 \u00b7 n berechnet das Doppelte der Eingabegr\u00f6\u00dfe. Er hat eine lineare Komplexit\u00e4t O(n), da sein Aufwand proportional zur Eingabegr\u00f6\u00dfe n w\u00e4chst.<\/p>\n<p><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-37\" class=\"h5p-iframe\" data-content-id=\"37\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Lineare Komplexit\u00e4t O(n)\"><\/iframe><\/div>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Der Aufwand von Algorithmen (Speicherplatz- und Laufzeit)<\/h2>\n<p>Der Aufwand eines Algorithmus wird durch seinen Speicherplatzbedarf und die Anzahl seiner Berechnungsschritte (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Laufzeit_(Informatik)\" target=\"_blank\" rel=\"noopener\">Laufzeit<\/a>) ermittelt. Da die meisten Computer einen begrenzten Arbeitsspeicher (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Random-Access_Memory\" target=\"_blank\" rel=\"noopener\">RAM<\/a>) haben, sind gute Algorithmen schnell (geringe Laufzeit) und speichereffizient. Je nach Anwendung optimiert man in der Praxis entweder die Geschwindigkeit oder den Speicherverbrauch.<\/p>\n<p>Bei der Analyse des Aufwands werden alle Anweisungen des Algorithmus (Funktion) ab einer gewissen Mindest-Eingabegr\u00f6\u00dfe betrachtet und <a href=\"https:\/\/de.wikipedia.org\/wiki\/Asymptotische_Analyse\" target=\"_blank\" rel=\"noopener\">asymptotisch<\/a> abgesch\u00e4tzt. Dabei wir nur der Term mit dem h\u00f6chsten Wachstum betrachtet.&nbsp;<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; background-color: #cccccc;\"><strong>Beispiel<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 100%;\">Ein Algorithmus mit der Funktion f(n) = \u221an + n<sup>3<\/sup> + 5 eine kubische Laufzeitkomplexit\u00e4t von O(n<sup>3<\/sup>), da der Term n<sup>3 <\/sup>das h\u00f6chste asymptotische Wachstum hat. Der konstante Faktor +5 und der niedrigere Ordnungsterm \u221an werden ignoriert.&nbsp;&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Speicherplatzanalyse (Speicherplatzkomplexit\u00e4t)<\/h3>\n<p>Die Speicherplatzkomplexit\u00e4t (Space Complexity) gibt an, wie viel zus\u00e4tzlicher Speicherplatz ein Algorithmus ben\u00f6tigt, um Eingabedaten und Zwischenergebnisse w\u00e4hrend seiner Ausf\u00fchrung zu speichern. Der Speicherplatz des Algorithmus selbst z\u00e4hlt nicht dazu. Bei der Codeanalyse wird der Speicher f\u00fcr Variablen, <a href=\"https:\/\/maximini.eu\/work\/category\/informatik\/datenstrukturen\/\" target=\"_blank\" rel=\"noopener\">Datenstrukturen<\/a> und Funktionsaufrufe ermittelt. Bei einem Algorithmus (Funktion) der eine Liste erstellt, w\u00e4chst der zus\u00e4tzliche Speicher f\u00fcr das <a href=\"https:\/\/maximini.eu\/work\/array\/\" target=\"_blank\" rel=\"noopener\">Array<\/a> linear (O(n)), d.h. proportional mit der L\u00e4nge der Liste. Auch der Speicherbedarf rekursiver Algorithmen w\u00e4chst linear, da die Variablen bei jedem rekursiven Aufruf im <a href=\"https:\/\/de.wikipedia.org\/wiki\/Stapelspeicher\" target=\"_blank\" rel=\"noopener\">Stack-Speicher<\/a> abgelegt werden. Ein logarithmischer Algorithmus (O(log n)) verbraucht weniger Speicher, da er die Problemgr\u00f6\u00dfe in jedem Schritt reduziert. Zum Beispiel wird die Eingabegr\u00f6\u00dfe bei der <a href=\"https:\/\/maximini.eu\/work\/binaere-suche\/\" target=\"_blank\" rel=\"noopener\">bin\u00e4ren Suche<\/a>&nbsp;halbiert. Algorithmen zum Erstellen einer <a href=\"https:\/\/de.wikipedia.org\/wiki\/Matrix_(Mathematik)\" target=\"_blank\" rel=\"noopener\">Matrix<\/a> haben einen quadratischen Speicherzuwachs (O(n<sup>2<\/sup>)). Bei einem W\u00fcrfel (3D-Array) w\u00e4chst er Kubisch (O(n<sup>3<\/sup>)).<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; background-color: #cccccc;\"><strong>Beispiel<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 100%;\">\n<pre>*** &nbsp; Pseudocode Summe &nbsp;***&nbsp;\r\n\r\n<strong>Funktion summe(a, b) <\/strong>\r\n<strong>return a + b<\/strong><\/pre>\n<p>Der Algorithmus berechnet die Summe von zwei Zahlen und <span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">arbeitet am Platz, d.h. er ben\u00f6tigt <\/span><\/span><\/span><\/span><span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">eine konstante <a href=\"https:\/\/de.wikipedia.org\/wiki\/Datenmenge\" target=\"_blank\" rel=\"noopener\">Datenmenge<\/a><\/span><\/span><\/span><\/span> f\u00fcr die Variablen a und b. Seine Speicherplatzkomplexit\u00e4t ist konstant O(1). &nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Beispiele f\u00fcr Speicherplatzkomplexit\u00e4ten<\/h3>\n<p><code><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-38\" class=\"h5p-iframe\" data-content-id=\"38\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Speicherplatzkomplexit\u00e4t von Algorithmen\"><\/iframe><\/div><\/code><\/p>\n<h3>&nbsp;<\/h3>\n<h3>Laufzeitanalyse (Laufzeitkomplexit\u00e4t)<\/h3>\n<p>Im Gegensatz zur Speicherplatzkomplexit\u00e4t gibt die Laufzeitkomplexit\u00e4t (Time Complexity) an, wie viele Berechnungsschritte ein Algorithmus ausf\u00fchren muss.<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; background-color: #cccccc;\"><strong><strong>Beispiel&nbsp;<\/strong><\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 100%;\"><span style=\"color: #000000;\"><strong>Aufwand des <a style=\"font-size: 1em; font-weight: bold; color: #000000;\" href=\"https:\/\/maximini.eu\/work\/bubble-sort\/\" target=\"_blank\" rel=\"noopener\">Bubble-Sort-<\/a><span style=\"font-size: 1em; font-weight: bold;\">Algorithmus<\/span><\/strong><\/span><\/p>\n<p><strong><span style=\"color: #999999;\">Speicherplatzkomplexit\u00e4t<\/span><\/strong>: konstant O(1)<br \/>\n<span style=\"color: #999999;\"><strong>Laufzeitkomplexit\u00e4t<\/strong>: <\/span>quadratisch O(n\u00b2)<\/p>\n<p>Der Algorithmus <a href=\"https:\/\/maximini.eu\/work\/bubble-sort\/\" target=\"_blank\" rel=\"noopener\">Bubble-Sort<\/a> sortiert eine Liste, indem er benachbarte Elemente vergleicht und gegebenenfalls vertauscht. Unabh\u00e4ngig davon, wie viele Elemente die Liste enth\u00e4lt, ben\u00f6tigt er eine konstante Menge an zus\u00e4tzlichem Speicher f\u00fcr Schleifen- und Hilfsvariablen. Die Laufzeitkomplexit\u00e4t des Algorithmus ist in allen F\u00e4llen quadratisch, da er n-mal eine \u00e4u\u00dfere und n-mal eine innere <a href=\"https:\/\/de.wikipedia.org\/wiki\/Schleife_(Programmierung)\" target=\"_blank\" rel=\"noopener\">Schleife<\/a> durchlaufen muss um alle Elemente der Liste miteinander zu vergleichen (n \u00b7 n = n\u00b2).&nbsp;<\/p>\n<p><figure style=\"width: 362px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/c8\/Bubble-sort-example-300px.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/c8\/Bubble-sort-example-300px.gif\" alt=\"Bubblesort an einer Zahlenliste - Animation von Swfung8\" width=\"362\" height=\"217\"><\/a><figcaption class=\"wp-caption-text\"><a href=\"https:\/\/de.wikipedia.org\/wiki\/Bubblesort\">BubbleSort<\/a> an einer Zahlenliste &#8211; Animation von <a href=\"http:\/\/Swfung8\" target=\"_blank\" rel=\"noopener\">Swfung8<\/a><\/figcaption><\/figure><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3>Komplexit\u00e4tsklassen (Funktionsklassen)&nbsp;von Algorithmen<\/h3>\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Liste_von_Algorithmen#Klassen_von_Algorithmen_nach_Komplexit%C3%A4t\" target=\"_blank\" rel=\"noopener\">Algorithmen<\/a> werden von sehr effizient bis extrem ineffizient klassifiziert. Die aufsteigende Reihenfolge der der Klassen ist O(1) &lt; O(log n) &lt; O(\u221an) &lt; O(n) &lt; O(n log n) &lt; O(n<sup>2<\/sup>) &lt;&nbsp; O(n<sup>3<\/sup>) &lt; O(n<sup>k<\/sup>) &lt; O(2<sup>n<\/sup>) &lt; O(n!) &lt; O(n<sup>n<\/sup>). Ihre Bezeichnung erfolgt mathematisch.<\/p>\n<figure id=\"attachment_3740\" aria-describedby=\"caption-attachment-3740\" style=\"width: 1039px\" class=\"wp-caption alignleft\"><a style=\"font-size: 16px; font-weight: 300;\" href=\"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3740 size-full\" src=\"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen.png\" alt=\"Komplexit\u00e4tsklassen (Funktionsklassen) von Algorithmen\" width=\"1039\" height=\"589\" srcset=\"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen.png 1039w, https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen-300x170.png 300w, https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen-1024x580.png 1024w, https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/02\/Abb_Funktionsklassen-768x435.png 768w\" sizes=\"auto, (max-width: 1039px) 100vw, 1039px\" \/><\/a><figcaption id=\"caption-attachment-3740\" class=\"wp-caption-text\">Komplexit\u00e4tsklassen (Funktionsklassen) von Algorithmen<\/figcaption><\/figure>\n<hr>\n<h3><span style=\"color: #36fc20;\">sehr effizient:<\/span><\/h3>\n<h4>Konstante Komplexit\u00e4t &#8211; Klasse O(1)<\/h4>\n<p>Konstante Algorithmen sind sehr effizient, da sich ihr Aufwand nicht \u00e4ndert. Ihre Laufzeit ist unabh\u00e4ngig von der Eingabegr\u00f6\u00dfe. Ein Idealfall, der meist nur bei trivialen Problemen auftritt, wie zum <span style=\"color: #000000;\">Beispiel ein direkter Treffer bei der <a href=\"https:\/\/maximini.eu\/work\/lineare-suche\/\" target=\"_blank\" rel=\"noopener\">linearen Suche<\/a> (Best Case).<\/span><\/p>\n<hr>\n<h3><span style=\"color: #6ff261;\">effizient:<\/span><\/h3>\n<h4>Logarithmische Komplexit\u00e4t &#8211; Klasse O(log n)<\/h4>\n<p>Logarithmische Algorithmen sind effizient. Ihr Aufwand w\u00e4chst mit zunehmender Problemgr\u00f6\u00dfe nur um eine konstante Zeit l\u00e4nger als die Eingabegr\u00f6\u00dfe. Algorithmen dieser Klasse sind extrem schnell und ben\u00f6tigen meist wenig zus\u00e4tzlichen Speicher f\u00fcr Variablen auf dem <a href=\"https:\/\/de.wikipedia.org\/wiki\/Aufrufstapel\" target=\"_blank\" rel=\"noopener\">Stack.<\/a> Ein Beispiel ist die <a href=\"https:\/\/maximini.eu\/work\/binaere-suche\/\" target=\"_blank\" rel=\"noopener\">bin\u00e4re Suche<\/a> in einem sortierten Array. Logarithmische Algorithmen eignen sich f\u00fcr gro\u00dfe Datenmengen und werden oft bei<a href=\"https:\/\/de.wikipedia.org\/wiki\/K%C3%BCnstliche_Intelligenz\" target=\"_blank\" rel=\"noopener\"> k\u00fcnstlicher Intelligenz<\/a> eingesetzt.&nbsp;<\/p>\n<hr>\n<h3><span style=\"color: #228b22;\">relativ effizient:<\/span><\/h3>\n<h4>Lineare Komplexit\u00e4t &#8211; Klasse O(n)<\/h4>\n<p>Bei linearen Algorithmen w\u00e4chst der Aufwand proportional zur Eingabegr\u00f6\u00dfe. Sie sind relativ effizient und eignen sich auch f\u00fcr gro\u00dfe Eingabemengen, wenn keine komplexen Berechnungen durchgef\u00fchrt werden. Die Laufzeit verdoppelt sich bei Verdoppelung der Eingabegr\u00f6\u00dfe, wie z.B. bei der <a href=\"https:\/\/maximini.eu\/work\/lineare-suche\/\" target=\"_blank\" rel=\"noopener\">linearen Suche<\/a> in einem unsortierten Array.&nbsp;<\/p>\n<h4>Sublineare, quadratwurzel-proportionale Komplexit\u00e4t &#8211; Klasse O(\u221an)<\/h4>\n<p>Bei sublinearen Algorithmen w\u00e4chst der Aufwand etwas langsamer als bei linearen. Sie eignen sich f\u00fcr mittlere Eingabemengen und ben\u00f6tigen meist wenig zus\u00e4tzlichen Speicher f\u00fcr Variablen und einfache Berechnungen. Beispiele f\u00fcr sublineare Komplexit\u00e4t sind Algorithmen die pr\u00fcfen, ob eine Zahl eine Primzahl oder das Quadrat einer Ganzzahl ist.&nbsp;<\/p>\n<h4>Quasilineare Komplexit\u00e4t &#8211; Klasse&nbsp;O(n log n)<\/h4>\n<p>Bei quasilinearen Algorithmen w\u00e4chst der Aufwand mit zunehmender Eingabegr\u00f6\u00dfe moderat. Bei Verdopplung der Eingabegr\u00f6\u00dfe, w\u00e4chst die Laufzeit etwas mehr als doppelt. Sie sind ideal f\u00fcr gro\u00dfe Eingabemengen, weil log \u2061n klein bleibt. Beispiele f\u00fcr Algorithmen mit quasilinearer Laufzeitkomplexit\u00e4t sind die Sortieralgorithmen <a href=\"https:\/\/de.wikipedia.org\/wiki\/Mergesort\" target=\"_blank\" rel=\"noopener\">Merge-Sort<\/a> sowie <a href=\"https:\/\/de.wikipedia.org\/wiki\/Quicksort\" target=\"_blank\" rel=\"noopener\">Quick-Sort<\/a> im Average Case.&nbsp;<\/p>\n<hr>\n<h3><span style=\"color: #ff4500;\">ineffizient:<\/span><\/h3>\n<h4>Quadratische Komplexit\u00e4t &#8211; Klasse O(n<sup>2<\/sup>)<\/h4>\n<p>Quadratische Algorithmen sind ineffizient und eignen sich f\u00fcr mittlere Problemgr\u00f6\u00dfen. Die Laufzeit w\u00e4chst mit der Eingabegr\u00f6\u00dfe quadratisch und vervierfacht sich bei Verdopplung. Der Speicherplatz bleibt oft konstant, w\u00e4chst aber quadratisch bei Verwendung von 2D-Datenstrukturen mit verschachtelten Schleifen. Ein Beispiel ist der Sortieralgorithmus <a href=\"https:\/\/de.wikipedia.org\/wiki\/Insertionsort\" target=\"_blank\" rel=\"noopener\">Insertion-Sort<\/a>, der eine Liste durch Einf\u00fcgen sortiert.<\/p>\n<hr>\n<h3><span style=\"color: #ff0000;\">sehr ineffizient:<\/span><\/h3>\n<h4>Kubische Komplexit\u00e4t &#8211; Klasse O(n<sup>3<\/sup>)<\/h4>\n<p>Kubische Algorithmen sind sehr ineffizient und eignen sich nur f\u00fcr kleine Problemgr\u00f6\u00dfen. Die Laufzeit w\u00e4chst kubisch mit der Eingabegr\u00f6\u00dfe n und verachtfacht sich bei Verdopplung. Der Speicherplatz w\u00e4chst bei Verwendung von 3D-Datenstrukturen kubisch. Ein Beispiel ist die klassische <a href=\"https:\/\/de.wikipedia.org\/wiki\/Matrizenmultiplikation\" target=\"_blank\" rel=\"noopener\">Matrix-Multiplikation<\/a> mit drei geschachtelten Schleifen.<\/p>\n<h4>Polynomiale Komplexit\u00e4t &#8211; Klasse O(n<sup>k<\/sup>)<\/h4>\n<p>Auch polynomiale Algorithmen sind sehr ineffizient. Die Laufzeit w\u00e4chst als Potenz k der Eingabegr\u00f6\u00dfe und der Speicherplatz kann bei gro\u00dfen k exponentiell wachsen. Sie eignen sich haupts\u00e4chlich f\u00fcr kleine Problemgr\u00f6\u00dfen, gelten aber bei kleinen Potenzen als handhabbar. Zum Beispiel berechnet ein polynomialer Algorithmus alle M\u00f6glichkeiten, eine Zahl n als Summe mit k positiven Zahlen zu bilden.<\/p>\n<hr>\n<h3><span style=\"color: #9e1010;\">extrem ineffizient:<\/span><\/h3>\n<h4>Exponentielle Komplexit\u00e4t &#8211; Klasse O(2<sup>n<\/sup>)<\/h4>\n<p>Exponentielle Algorithmen sind extrem ineffizient und in der Praxis fast wertlos, &nbsp;selbst bei kleinen oder moderaten Problemgr\u00f6\u00dfen. Die Laufzeit verdoppelt sich mit jeder zus\u00e4tzlichen Eingabegr\u00f6\u00dfe und der Speicherplatz kann &#8211; je nach Rekursionstiefe &#8211; exponentiell wachsen. Beispielsweise hat die rekursive Berechnung der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Fibonacci-Folge\" target=\"_blank\" rel=\"noopener\">Fibonacci<\/a>-Zahlen eine exponentielle Komplexit\u00e4t.<\/p>\n<h4>Faktorielle Komplexit\u00e4t &#8211; Klasse O(n!)<\/h4>\n<p>Auch Faktorielle Algorithmen sind extrem ineffizient, werden aber in der Praxis sehr selten auch f\u00fcr gr\u00f6\u00dfere Eingabemengen eingesetzt. Die Laufzeit w\u00e4chst noch schneller als exponentiell und auch der&nbsp; Speicherplatz w\u00e4chst meist faktoriell mit der Eingabegr\u00f6\u00dfe, insbesondere wenn viele Teilprobleme oder Zust\u00e4nde gespeichert werden. Ein Beispiel ist das <a href=\"https:\/\/de.wikipedia.org\/wiki\/Problem_des_Handlungsreisenden\" target=\"_blank\" rel=\"noopener\">Travelling Salesman Problem<\/a> (TSP).<\/p>\n<h4>Exponentiale (superexponentielle) Komplexit\u00e4t &#8211; Klasse O(n<sup>n<\/sup>)<\/h4>\n<p>Auch Exponentiale (superexponentiellen) Algorithmen sind extrem ineffizient und werden in der Praxis kaum verwendet, &nbsp;auch nicht bei kleinen Problemgr\u00f6\u00dfen. Die Laufzeit w\u00e4chst noch schneller als faktoriell. Sie sind extrem speicherintensiv,&nbsp; meist exponentiell. Ein Beispiel ist das Placement Problem, bei dem n verschiedene Objekte in n unterschiedliche Beh\u00e4lter gelegt werden.<\/p>\n<hr>\n<h2>Optimale und Brute-Force-Algorithmen<\/h2>\n<p>Ein optimaler Algorithmus l\u00f6st ein bestimmtes Problem am effizientesten, wie beispielsweise der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Dijkstra-Algorithmus\" target=\"_blank\" rel=\"noopener\">Dijkstra<\/a>-Algorithmus, der von einem Startknoten die k\u00fcrzesten Wege zu allen anderen Knoten berechnet.&nbsp;&nbsp;<\/p>\n<figure style=\"width: 521px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/e4\/DijkstraDemo.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/e4\/DijkstraDemo.gif\" alt=\"Animation des Dijkstra-Algorithmus von Shiyu Ji. Die roten Kanten bilden die k\u00fcrzesten Wege vom Startknoten. Die blaue Kante gibt an, f\u00fcr welchen Knoten der Abstand zum Startknoten gepr\u00fcft wird.\" width=\"521\" height=\"518\"><\/a><figcaption class=\"wp-caption-text\">Animation des Dijkstra-Algorithmus von <a href=\"https:\/\/commons.wikimedia.org\/wiki\/User:Shiyu_Ji\" target=\"_blank\" rel=\"noopener\">Shiyu Ji<\/a>. Die roten Kanten bilden die k\u00fcrzesten Wege vom Startknoten. Die blaue Kante gibt an, f\u00fcr welchen Knoten der Abstand zum Startknoten gepr\u00fcft wird.<\/figcaption><\/figure>\n<p>Das Gegenteil sind <a href=\"https:\/\/de.wikipedia.org\/wiki\/Brute-Force-Methode\" target=\"_blank\" rel=\"noopener\">Brute-Force-<\/a>Algorithmen, die alle potenziellen L\u00f6sungen durchprobieren, bis die richtige gefunden ist. Ein Beispiel ist das <a href=\"https:\/\/en.wikipedia.org\/wiki\/Password_cracking\" target=\"_blank\" rel=\"noopener\">Passwort-Cracking<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Komplexit\u00e4t beschreibt die Effizienz eines Algorithmus. Sie gibt in der Gro\u00df-O-Notation an, wie der Aufwand eines Algorithmus steigt, wenn die Problemgr\u00f6\u00dfe w\u00e4chst, also die&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/maximini.eu\/work\/komplexitaet\/\">weiterlesen<span class=\"screen-reader-text\">Komplexit\u00e4t von Algorithmen<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":3832,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[94,35],"tags":[92,100],"class_list":["post-3737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algorithmen","category-informatik","tag-algorithmen","tag-komplexitaet","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Komplexit\u00e4t von Algorithmen - Katja Maximini | work<\/title>\n<meta name=\"description\" content=\"Die Komplexit\u00e4t beschreibt den Speicherplatzbedarf und die Laufzeit eines Algorithmus, wenn die Menge der Eingabedaten w\u00e4chst.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maximini.eu\/work\/komplexitaet\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Komplexit\u00e4t von Algorithmen - Katja Maximini | work\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maximini.eu\/work\/komplexitaet\/\" \/>\n<meta property=\"og:site_name\" content=\"Katja Maximini | work\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-15T15:54:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-15T17:10:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"872\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Katja Maximini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Katja Maximini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/\"},\"author\":{\"name\":\"Katja Maximini\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#\\\/schema\\\/person\\\/e5568f683596440f38d468287e995bd5\"},\"headline\":\"Komplexit\u00e4t von Algorithmen\",\"datePublished\":\"2025-03-15T15:54:19+00:00\",\"dateModified\":\"2025-03-15T17:10:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/\"},\"wordCount\":1432,\"publisher\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#\\\/schema\\\/person\\\/e5568f683596440f38d468287e995bd5\"},\"image\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/maximini.eu\\\/work\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2025\\\/03\\\/Header_Komplexitaet.png\",\"keywords\":[\"Algorithmen\",\"Komplexit\u00e4t\"],\"articleSection\":[\"Algorithmen\",\"Informatik\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/\",\"url\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/\",\"name\":\"Komplexit\u00e4t von Algorithmen - Katja Maximini | work\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/maximini.eu\\\/work\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2025\\\/03\\\/Header_Komplexitaet.png\",\"datePublished\":\"2025-03-15T15:54:19+00:00\",\"dateModified\":\"2025-03-15T17:10:26+00:00\",\"description\":\"Die Komplexit\u00e4t beschreibt den Speicherplatzbedarf und die Laufzeit eines Algorithmus, wenn die Menge der Eingabedaten w\u00e4chst.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#primaryimage\",\"url\":\"https:\\\/\\\/maximini.eu\\\/work\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2025\\\/03\\\/Header_Komplexitaet.png\",\"contentUrl\":\"https:\\\/\\\/maximini.eu\\\/work\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2025\\\/03\\\/Header_Komplexitaet.png\",\"width\":1920,\"height\":872,\"caption\":\"Komplexit\u00e4t von Algorithmen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/komplexitaet\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/maximini.eu\\\/work\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Komplexit\u00e4t von Algorithmen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#website\",\"url\":\"https:\\\/\\\/maximini.eu\\\/work\\\/\",\"name\":\"Katja Maximini | work\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#\\\/schema\\\/person\\\/e5568f683596440f38d468287e995bd5\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maximini.eu\\\/work\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maximini.eu\\\/work\\\/#\\\/schema\\\/person\\\/e5568f683596440f38d468287e995bd5\",\"name\":\"Katja Maximini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g\",\"caption\":\"Katja Maximini\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.maximini.eu\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/katja-maximini-68032566\\\/\"],\"url\":\"https:\\\/\\\/maximini.eu\\\/work\\\/author\\\/katja\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Komplexit\u00e4t von Algorithmen - Katja Maximini | work","description":"Die Komplexit\u00e4t beschreibt den Speicherplatzbedarf und die Laufzeit eines Algorithmus, wenn die Menge der Eingabedaten w\u00e4chst.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/maximini.eu\/work\/komplexitaet\/","og_locale":"de_DE","og_type":"article","og_title":"Komplexit\u00e4t von Algorithmen - Katja Maximini | work","og_url":"https:\/\/maximini.eu\/work\/komplexitaet\/","og_site_name":"Katja Maximini | work","article_published_time":"2025-03-15T15:54:19+00:00","article_modified_time":"2025-03-15T17:10:26+00:00","og_image":[{"width":1920,"height":872,"url":"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png","type":"image\/png"}],"author":"Katja Maximini","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Katja Maximini","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#article","isPartOf":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/"},"author":{"name":"Katja Maximini","@id":"https:\/\/maximini.eu\/work\/#\/schema\/person\/e5568f683596440f38d468287e995bd5"},"headline":"Komplexit\u00e4t von Algorithmen","datePublished":"2025-03-15T15:54:19+00:00","dateModified":"2025-03-15T17:10:26+00:00","mainEntityOfPage":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/"},"wordCount":1432,"publisher":{"@id":"https:\/\/maximini.eu\/work\/#\/schema\/person\/e5568f683596440f38d468287e995bd5"},"image":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#primaryimage"},"thumbnailUrl":"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png","keywords":["Algorithmen","Komplexit\u00e4t"],"articleSection":["Algorithmen","Informatik"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/maximini.eu\/work\/komplexitaet\/","url":"https:\/\/maximini.eu\/work\/komplexitaet\/","name":"Komplexit\u00e4t von Algorithmen - Katja Maximini | work","isPartOf":{"@id":"https:\/\/maximini.eu\/work\/#website"},"primaryImageOfPage":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#primaryimage"},"image":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#primaryimage"},"thumbnailUrl":"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png","datePublished":"2025-03-15T15:54:19+00:00","dateModified":"2025-03-15T17:10:26+00:00","description":"Die Komplexit\u00e4t beschreibt den Speicherplatzbedarf und die Laufzeit eines Algorithmus, wenn die Menge der Eingabedaten w\u00e4chst.","breadcrumb":{"@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maximini.eu\/work\/komplexitaet\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#primaryimage","url":"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png","contentUrl":"https:\/\/maximini.eu\/work\/wp-content\/uploads\/sites\/4\/2025\/03\/Header_Komplexitaet.png","width":1920,"height":872,"caption":"Komplexit\u00e4t von Algorithmen"},{"@type":"BreadcrumbList","@id":"https:\/\/maximini.eu\/work\/komplexitaet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/maximini.eu\/work\/"},{"@type":"ListItem","position":2,"name":"Komplexit\u00e4t von Algorithmen"}]},{"@type":"WebSite","@id":"https:\/\/maximini.eu\/work\/#website","url":"https:\/\/maximini.eu\/work\/","name":"Katja Maximini | work","description":"","publisher":{"@id":"https:\/\/maximini.eu\/work\/#\/schema\/person\/e5568f683596440f38d468287e995bd5"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maximini.eu\/work\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/maximini.eu\/work\/#\/schema\/person\/e5568f683596440f38d468287e995bd5","name":"Katja Maximini","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g","caption":"Katja Maximini"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/6b71fa48f76dd3fbb2952f49b5f639da2f333317ec371c541b72bdb7b3ebc4f8?s=96&r=g"},"sameAs":["https:\/\/www.maximini.eu","https:\/\/www.linkedin.com\/in\/katja-maximini-68032566\/"],"url":"https:\/\/maximini.eu\/work\/author\/katja\/"}]}},"_links":{"self":[{"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/posts\/3737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/comments?post=3737"}],"version-history":[{"count":197,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/posts\/3737\/revisions"}],"predecessor-version":[{"id":4008,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/posts\/3737\/revisions\/4008"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/media\/3832"}],"wp:attachment":[{"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/media?parent=3737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/categories?post=3737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maximini.eu\/work\/wp-json\/wp\/v2\/tags?post=3737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}