<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Algorithmenanalyse</id>
	<title>Algorithmenanalyse - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Algorithmenanalyse"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Algorithmenanalyse&amp;action=history"/>
	<updated>2026-06-18T02:55:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Algorithmenanalyse&amp;diff=29138&amp;oldid=prev</id>
		<title>Glanz: aiMOOC über GPT aiMOOC Action erstellt</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Algorithmenanalyse&amp;diff=29138&amp;oldid=prev"/>
		<updated>2026-06-17T14:45:35Z</updated>

		<summary type="html">&lt;p&gt;aiMOOC über GPT aiMOOC Action erstellt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Algorithmenanalyse =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Algorithmenanalyse]]&amp;#039;&amp;#039;&amp;#039; untersucht, wie viele [[Ressource|Ressourcen]] ein [[Algorithmus]] zur Lösung eines Problems benötigt. Besonders wichtig sind die [[Laufzeit]] und der [[Speicherbedarf]]. Dabei geht es nicht nur darum, ein Programm einmal auf einem bestimmten Computer zu messen, sondern sein Verhalten systematisch zu beschreiben: Wie verändert sich der Aufwand, wenn die Eingabe größer wird? Diese Frage ist zentral für [[Informatik]], [[Mathematik]], [[Programmierung]], [[Datenstrukturen]] und viele technische Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Ein Algorithmus kann für kleine Eingaben schnell wirken und bei großen Eingaben trotzdem unbrauchbar werden. Die Algorithmenanalyse hilft Dir, solche Unterschiede zu erkennen. Sie verwendet unter anderem [[Landau-Symbole]] wie &amp;#039;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Ω&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Θ&amp;#039;&amp;#039;&amp;#039;, um Wachstumsraten zu vergleichen. Dadurch kannst Du einschätzen, ob ein Verfahren bei großen Datenmengen noch praktikabel ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lernziele ==&lt;br /&gt;
&lt;br /&gt;
Nach diesem aiMOOC kannst Du erklären, was [[Laufzeitanalyse]] und [[Speicherkomplexität]] bedeuten. Du kannst typische Wachstumsordnungen wie konstante, logarithmische, lineare, quadratische und exponentielle Laufzeit unterscheiden. Außerdem kannst Du einfache Algorithmen analysieren, Schleifen und [[Rekursion]] untersuchen, [[Best Case]], [[Average Case]] und [[Worst Case]] unterscheiden und begründet entscheiden, welcher Algorithmus für eine konkrete Situation geeignet ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Medien- und OER-Lernraum ==&lt;br /&gt;
&lt;br /&gt;
Nutze die folgenden schulgeeigneten OER-Hinweise, um Dir zusätzliche Erklärungen, Abbildungen und Lernvideos zu erschließen. Sie sind als Recherche- und Vertiefungsangebote gedacht, damit keine unsicheren Datei- oder Videoangaben eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
# [[Wikimedia Commons]]: [https://commons.wikimedia.org/w/index.php?search=algorithm+flowchart+complexity&amp;amp;title=Special:MediaSearch&amp;amp;type=image Commons-Mediensuche zu Algorithmus, Flussdiagramm und Komplexität]&lt;br /&gt;
# [[Wikipedia]]: [https://de.wikipedia.org/wiki/Algorithmenanalyse Wikipedia-Suche bzw. Artikel zu Algorithmenanalyse]&lt;br /&gt;
# [[Wikipedia]]: [https://de.wikipedia.org/wiki/Landau-Symbole Artikel zu Landau-Symbolen]&lt;br /&gt;
# [[Wikibooks]]: [https://de.wikibooks.org/w/index.php?search=Algorithmus+Laufzeit+Sortierverfahren&amp;amp;title=Spezial:Suche&amp;amp;fulltext=1 OER-Suche zu Algorithmen, Laufzeit und Sortierverfahren]&lt;br /&gt;
# [[YouTube]]: [https://www.youtube.com/results?search_query=Algorithmenanalyse+Laufzeit+Big+O+deutsch Lernvideosuche zu Algorithmenanalyse, Laufzeit und Big O]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Grundlagen =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Was ist ein Algorithmus? ==&lt;br /&gt;
&lt;br /&gt;
Ein [[Algorithmus]] ist eine endliche, eindeutig beschriebene Folge von Schritten, die ein Problem löst oder eine Aufgabe bearbeitet. Ein Algorithmus kann in natürlicher Sprache, als [[Pseudocode]], als [[Programmcode]], als [[Flussdiagramm]] oder mathematisch beschrieben werden. Für die Algorithmenanalyse ist wichtig, dass die einzelnen Schritte klar genug sind, um ihren Aufwand abzuschätzen.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn Du in einer unsortierten Liste nach einem Namen suchst, kannst Du die Liste von vorne nach hinten durchgehen. Im schlimmsten Fall steht der Name ganz am Ende oder gar nicht in der Liste. Dann musst Du jedes Element prüfen. Bei einer Liste mit n Elementen wächst der Aufwand ungefähr proportional zu n. Man spricht von [[lineare Suche|linearer Suche]] und linearer Laufzeit.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Warum analysiert man Algorithmen? ==&lt;br /&gt;
&lt;br /&gt;
Die Analyse von Algorithmen ist notwendig, weil reale Programme mit unterschiedlich großen Datenmengen arbeiten. Eine App, ein Suchsystem, eine Simulation oder ein Datenbankprogramm kann bei 100 Einträgen problemlos funktionieren, aber bei 100 Millionen Einträgen scheitern. Durch Algorithmenanalyse kannst Du bereits vor der Implementierung abschätzen, ob ein Lösungsweg grundsätzlich geeignet ist.&lt;br /&gt;
&lt;br /&gt;
Die Analyse hilft besonders bei folgenden Entscheidungen: Welche [[Datenstruktur]] ist sinnvoll? Welches [[Sortierverfahren]] passt zur Datenlage? Lohnt sich eine Vorverarbeitung? Muss Speicher gespart werden? Ist eine exakte Lösung möglich oder braucht man eine [[Heuristik]]?&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Eingabegröße n ==&lt;br /&gt;
&lt;br /&gt;
Die [[Eingabegröße]] wird häufig mit &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; bezeichnet. Was n genau bedeutet, hängt vom Problem ab. Bei einer Liste ist n meist die Anzahl der Elemente. Bei einer Zeichenkette ist n oft die Länge der Zeichenkette. Bei einem [[Graph]] können die Anzahl der [[Knoten]] und die Anzahl der [[Kante|Kanten]] getrennt betrachtet werden. Bei einer Matrix können Zeilen und Spalten eine Rolle spielen.&lt;br /&gt;
&lt;br /&gt;
Eine gute Analyse beginnt deshalb mit der Frage: &amp;#039;&amp;#039;&amp;#039;Was ist die relevante Eingabegröße?&amp;#039;&amp;#039;&amp;#039; Erst danach lässt sich sinnvoll bestimmen, wie sich der Aufwand bei wachsenden Eingaben verändert.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Rechenmodell ==&lt;br /&gt;
&lt;br /&gt;
Ein [[Rechenmodell]] legt fest, welche Operationen als elementare Schritte gezählt werden. In einfachen Schul- und Einstiegssituationen nimmt man oft an, dass Vergleiche, Zuweisungen, arithmetische Grundoperationen und Speicherzugriffe jeweils konstant viel Zeit benötigen. Diese Annahme ist eine Vereinfachung, macht aber viele Analysen übersichtlich.&lt;br /&gt;
&lt;br /&gt;
In der Praxis können Hardware, Programmiersprache, Compiler, Cache, Betriebssystem und Netzwerkzugriffe die tatsächliche Laufzeit beeinflussen. Die Algorithmenanalyse abstrahiert von diesen Details, damit grundlegende Wachstumsunterschiede sichtbar werden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Laufzeitanalyse =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Zählen von Operationen ==&lt;br /&gt;
&lt;br /&gt;
Bei der [[Laufzeitanalyse]] wird abgeschätzt, wie viele elementare Operationen ein Algorithmus ausführt. Entscheidend ist meistens nicht die exakte Zahl aller Maschinenbefehle, sondern die Wachstumsordnung. Ob ein Algorithmus ungefähr 3n, 7n oder 20n Schritte benötigt, ist für sehr große n oft weniger wichtig als der Unterschied zwischen n, n² und 2ⁿ.&lt;br /&gt;
&lt;br /&gt;
Ein einfaches Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
summe = 0&lt;br /&gt;
für jedes element in liste:&lt;br /&gt;
    summe = summe + element&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Liste n Elemente enthält, wird die Schleife n-mal durchlaufen. Der Aufwand wächst linear mit n. Die Laufzeit gehört deshalb zur Ordnung &amp;#039;&amp;#039;&amp;#039;O(n)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Schleifen analysieren ==&lt;br /&gt;
&lt;br /&gt;
Schleifen sind ein häufiger Ausgangspunkt der Analyse. Eine einfache Schleife, die n-mal läuft, deutet oft auf lineare Laufzeit hin. Zwei verschachtelte Schleifen, die jeweils n-mal laufen, deuten oft auf quadratische Laufzeit hin. Dabei muss man genau prüfen, ob die innere Schleife wirklich immer vollständig läuft.&lt;br /&gt;
&lt;br /&gt;
Beispiel für quadratische Laufzeit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
für i von 1 bis n:&lt;br /&gt;
    für j von 1 bis n:&lt;br /&gt;
        vergleiche element i mit element j&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier werden ungefähr n · n Vergleiche durchgeführt. Der Aufwand wächst quadratisch und wird als &amp;#039;&amp;#039;&amp;#039;O(n²)&amp;#039;&amp;#039;&amp;#039; beschrieben.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Rekursion analysieren ==&lt;br /&gt;
&lt;br /&gt;
Bei [[Rekursion]] ruft sich ein Algorithmus selbst mit kleineren Teilproblemen auf. Die Analyse erfolgt häufig mit einer [[Rekursionsgleichung]]. Dabei wird beschrieben, wie sich der Aufwand eines Problems der Größe n aus den Aufwänden kleinerer Teilprobleme zusammensetzt.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Ein Verfahren halbiert das Problem bei jedem Schritt und führt zusätzlich konstanten Aufwand aus. Dann ergibt sich häufig eine logarithmische Laufzeit. Wenn ein Verfahren dagegen zwei Teilprobleme der halben Größe bearbeitet und zusätzlich linearen Aufwand benötigt, entsteht oft eine Laufzeit der Ordnung &amp;#039;&amp;#039;&amp;#039;O(n log n)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Best Case, Average Case und Worst Case ==&lt;br /&gt;
&lt;br /&gt;
Der [[Best Case]] beschreibt den günstigsten Fall. Der [[Worst Case]] beschreibt den ungünstigsten Fall. Der [[Average Case]] beschreibt das erwartete Verhalten über viele typische Eingaben hinweg. Diese drei Perspektiven können stark voneinander abweichen.&lt;br /&gt;
&lt;br /&gt;
Bei der [[lineare Suche|linearen Suche]] ist der Best Case erreicht, wenn das gesuchte Element direkt am Anfang steht. Dann reicht ein Vergleich. Im Worst Case steht das Element am Ende oder fehlt ganz. Dann müssen alle n Elemente geprüft werden. Im Average Case liegt der Treffer bei zufälliger Verteilung ungefähr in der Mitte, dennoch bleibt die Wachstumsordnung linear.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Amortisierte Analyse ==&lt;br /&gt;
&lt;br /&gt;
Die [[amortisierte Analyse]] betrachtet nicht nur eine einzelne Operation, sondern eine Folge von Operationen. Eine einzelne Operation kann teuer sein, während die durchschnittlichen Kosten über viele Operationen hinweg niedrig bleiben. Ein typisches Beispiel ist eine dynamische Liste, die gelegentlich vergrößert werden muss. Das Kopieren aller Elemente ist teuer, passiert aber selten. Über viele Einfügeoperationen betrachtet bleiben die Kosten pro Einfügen oft konstant im amortisierten Sinn.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Asymptotische Analyse =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Idee der Asymptotik ==&lt;br /&gt;
&lt;br /&gt;
Die [[Asymptotik]] betrachtet das Verhalten für sehr große Eingaben. Kleine Unterschiede und konstante Faktoren werden dabei häufig ausgeblendet. Das Ziel ist nicht, eine Stoppuhrmessung zu ersetzen, sondern die langfristige Entwicklung des Aufwands zu verstehen.&lt;br /&gt;
&lt;br /&gt;
Wenn ein Algorithmus 100n Schritte benötigt und ein anderer n² Schritte, kann der quadratische Algorithmus bei kleinen n schneller sein. Bei großen n wächst n² jedoch deutlich stärker. Die asymptotische Analyse macht solche Wachstumsunterschiede sichtbar.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Landau-Symbole ==&lt;br /&gt;
&lt;br /&gt;
[[Landau-Symbole]] beschreiben obere, untere und enge Schranken für das Wachstum von Funktionen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Symbol&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Typische Aussage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| obere Schranke&lt;br /&gt;
| Der Aufwand wächst höchstens in dieser Ordnung.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ω&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| untere Schranke&lt;br /&gt;
| Der Aufwand wächst mindestens in dieser Ordnung.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Θ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| enge Schranke&lt;br /&gt;
| Der Aufwand wächst genau in dieser Ordnung bis auf konstante Faktoren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn ein Algorithmus die Laufzeit &amp;#039;&amp;#039;&amp;#039;Θ(n)&amp;#039;&amp;#039;&amp;#039; hat, bedeutet das: Sein Aufwand wächst linear und lässt sich sowohl nach oben als auch nach unten durch lineare Funktionen begrenzen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Typische Wachstumsordnungen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ordnung&lt;br /&gt;
! Name&lt;br /&gt;
! Beispielhafte Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(1)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| konstant&lt;br /&gt;
| Der Aufwand bleibt unabhängig von n ungefähr gleich.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(log n)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| logarithmisch&lt;br /&gt;
| Das Problem wird wiederholt verkleinert, zum Beispiel halbiert.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(n)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| linear&lt;br /&gt;
| Jedes Element wird einmal betrachtet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(n log n)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| linearithmisch&lt;br /&gt;
| Typisch für effiziente vergleichsbasierte Sortierverfahren.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(n²)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| quadratisch&lt;br /&gt;
| Häufig bei zwei verschachtelten Schleifen über dieselbe Datenmenge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(2ⁿ)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| exponentiell&lt;br /&gt;
| Der Aufwand verdoppelt sich ungefähr mit jedem zusätzlichen Eingabeelement.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;O(n!)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| faktoriell&lt;br /&gt;
| Alle möglichen Anordnungen werden ausprobiert.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Reihenfolge zeigt, dass kleine Unterschiede in der Wachstumsordnung große praktische Folgen haben können. Besonders exponentielle und faktorielle Verfahren werden schon bei moderaten Eingabegrößen sehr schnell unpraktisch.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Konstante Faktoren und niedrigere Terme ==&lt;br /&gt;
&lt;br /&gt;
In der asymptotischen Analyse werden konstante Faktoren und niedrigere Terme oft vernachlässigt. Aus 5n² + 20n + 100 wird asymptotisch &amp;#039;&amp;#039;&amp;#039;O(n²)&amp;#039;&amp;#039;&amp;#039;. Der quadratische Term dominiert für große n. Trotzdem können konstante Faktoren in der Praxis wichtig sein, vor allem bei kleinen oder mittleren Eingaben. Deshalb ergänzen sich theoretische Analyse und praktische Messung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Speicherkomplexität =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Speicherbedarf eines Algorithmus ==&lt;br /&gt;
&lt;br /&gt;
Die [[Speicherkomplexität]] beschreibt, wie viel zusätzlicher Speicher ein Algorithmus benötigt. Man unterscheidet häufig zwischen dem Speicher für die Eingabe und zusätzlichem Hilfsspeicher. Ein Algorithmus kann schnell sein, aber viel Speicher verbrauchen. Ein anderer Algorithmus kann sparsamer mit Speicher umgehen, dafür aber länger laufen.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Ein Sortierverfahren, das eine zusätzliche Liste gleicher Größe anlegt, benötigt zusätzlichen Speicher der Ordnung &amp;#039;&amp;#039;&amp;#039;O(n)&amp;#039;&amp;#039;&amp;#039;. Ein Verfahren, das überwiegend innerhalb der vorhandenen Liste arbeitet, kann mit konstantem Zusatzspeicher auskommen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Zeit-Speicher-Abwägung ==&lt;br /&gt;
&lt;br /&gt;
In vielen Situationen gibt es einen [[Trade-off|Zeit-Speicher-Trade-off]]. Zusätzlicher Speicher kann Laufzeit sparen, etwa durch [[Hash-Tabelle|Hash-Tabellen]], Zwischenspeicherung oder Vorberechnung. Umgekehrt kann Speicher gespart werden, wenn man mehr Rechenzeit akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist die Suche nach häufig abgefragten Daten. Werden Ergebnisse in einem Cache gespeichert, können spätere Anfragen schneller beantwortet werden. Dafür wird zusätzlicher Speicher benötigt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Beispiele der Algorithmenanalyse =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lineare Suche ==&lt;br /&gt;
&lt;br /&gt;
Bei der linearen Suche wird eine Liste Element für Element durchsucht. Für eine unsortierte Liste ist das ein naheliegendes Verfahren. Im Worst Case müssen alle Elemente betrachtet werden.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eigenschaft&lt;br /&gt;
! Analyse&lt;br /&gt;
|-&lt;br /&gt;
| Eingabe&lt;br /&gt;
| unsortierte Liste mit n Elementen&lt;br /&gt;
|-&lt;br /&gt;
| Best Case&lt;br /&gt;
| Treffer beim ersten Element&lt;br /&gt;
|-&lt;br /&gt;
| Worst Case&lt;br /&gt;
| Treffer am Ende oder kein Treffer&lt;br /&gt;
|-&lt;br /&gt;
| Laufzeit&lt;br /&gt;
| O(n)&lt;br /&gt;
|-&lt;br /&gt;
| Zusatzspeicher&lt;br /&gt;
| O(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Binäre Suche ==&lt;br /&gt;
&lt;br /&gt;
Die [[binäre Suche]] funktioniert nur auf sortierten Daten. Bei jedem Schritt wird der Suchbereich halbiert. Dadurch entsteht logarithmische Laufzeit.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eigenschaft&lt;br /&gt;
! Analyse&lt;br /&gt;
|-&lt;br /&gt;
| Voraussetzung&lt;br /&gt;
| sortierte Liste&lt;br /&gt;
|-&lt;br /&gt;
| Idee&lt;br /&gt;
| wiederholtes Halbieren des Suchbereichs&lt;br /&gt;
|-&lt;br /&gt;
| Laufzeit&lt;br /&gt;
| O(log n)&lt;br /&gt;
|-&lt;br /&gt;
| Zusatzspeicher&lt;br /&gt;
| iterativ meist O(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die binäre Suche zeigt, warum Vorbedingungen wichtig sind. Das Sortieren einer Liste kostet zunächst Aufwand. Wenn danach aber sehr viele Suchanfragen gestellt werden, kann sich diese Vorarbeit lohnen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Sortierverfahren ==&lt;br /&gt;
&lt;br /&gt;
[[Sortierverfahren]] eignen sich besonders gut, um Algorithmenanalyse zu üben. Einfache Verfahren wie [[Bubble Sort]], [[Selection Sort]] oder [[Insertion Sort]] sind leicht zu verstehen, haben aber oft quadratische Laufzeit. Effizientere Verfahren wie [[Merge Sort]] oder [[Quicksort]] erreichen im Durchschnitt oder im garantierten Fall häufig bessere Wachstumsordnungen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Verfahren&lt;br /&gt;
! Typische Laufzeit&lt;br /&gt;
! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| [[Bubble Sort]]&lt;br /&gt;
| O(n²)&lt;br /&gt;
| didaktisch einfach, praktisch meist langsam&lt;br /&gt;
|-&lt;br /&gt;
| [[Insertion Sort]]&lt;br /&gt;
| O(n²)&lt;br /&gt;
| für fast sortierte kleine Daten oft brauchbar&lt;br /&gt;
|-&lt;br /&gt;
| [[Merge Sort]]&lt;br /&gt;
| O(n log n)&lt;br /&gt;
| stabil, benötigt meist zusätzlichen Speicher&lt;br /&gt;
|-&lt;br /&gt;
| [[Quicksort]]&lt;br /&gt;
| durchschnittlich O(n log n)&lt;br /&gt;
| sehr schnell in der Praxis, Worst Case O(n²)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Graphalgorithmen ==&lt;br /&gt;
&lt;br /&gt;
Bei [[Graphalgorithmus|Graphalgorithmen]] hängt die Analyse häufig von zwei Größen ab: der Anzahl der [[Knoten]] und der Anzahl der [[Kante|Kanten]]. Eine [[Breitensuche]] oder [[Tiefensuche]] kann in der Ordnung O(V + E) analysiert werden, wenn V für die Knoten und E für die Kanten steht. Dadurch wird sichtbar, dass nicht nur die Anzahl der Objekte, sondern auch ihre Verbindungen entscheidend sind.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Vorgehensweise bei einer Analyse =&lt;br /&gt;
&lt;br /&gt;
Eine systematische Algorithmenanalyse kann in mehreren Schritten erfolgen:&lt;br /&gt;
&lt;br /&gt;
# [[Problemverständnis]]: Kläre, welches Problem gelöst wird und welche Eingaben möglich sind.&lt;br /&gt;
# [[Eingabegröße]]: Bestimme, was n oder andere Größen wie V und E bedeuten.&lt;br /&gt;
# [[Grundoperation]]: Lege fest, welche Operation gezählt wird, zum Beispiel Vergleiche oder Zuweisungen.&lt;br /&gt;
# [[Kontrollstruktur]]: Untersuche Schleifen, Verzweigungen und Rekursion.&lt;br /&gt;
# [[Fallunterscheidung]]: Betrachte Best Case, Average Case und Worst Case.&lt;br /&gt;
# [[Asymptotik]]: Vereinfache die Wachstumsfunktion mit Landau-Symbolen.&lt;br /&gt;
# [[Interpretation]]: Erkläre, was die Analyse praktisch bedeutet.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Häufige Fehler =&lt;br /&gt;
&lt;br /&gt;
Ein häufiger Fehler ist die Gleichsetzung von praktischer Messzeit und theoretischer Komplexität. Eine Messung kann durch Hardware oder Implementierungsdetails beeinflusst sein. Die Komplexität beschreibt dagegen eine abstrakte Wachstumsordnung.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Fehler ist die falsche Analyse verschachtelter Schleifen. Nicht jede Verschachtelung führt automatisch zu O(n²). Wenn sich die innere Schleife zum Beispiel halbiert oder nur insgesamt n Schritte über alle äußeren Durchläufe ausführt, kann eine andere Ordnung entstehen.&lt;br /&gt;
&lt;br /&gt;
Auch die Eingabegröße wird oft unklar gewählt. Bei Graphen reicht es nicht immer, nur von n zu sprechen. Man muss angeben, ob Knoten, Kanten oder beide Größen gemeint sind.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Bedeutung in Schule, Studium und Praxis =&lt;br /&gt;
&lt;br /&gt;
In der Schule hilft Dir die Algorithmenanalyse, Programme nicht nur zum Laufen zu bringen, sondern ihre Qualität zu beurteilen. Im Studium bildet sie eine Grundlage für [[Datenstrukturen]], [[Komplexitätstheorie]], [[Software Engineering]], [[Künstliche Intelligenz]] und [[Datenbank|Datenbanken]]. In der Praxis entscheidet sie mit darüber, ob Suchmaschinen, Routenplaner, Empfehlungssysteme, Simulationen oder Sicherheitsverfahren effizient funktionieren.&lt;br /&gt;
&lt;br /&gt;
Algorithmenanalyse ist deshalb mehr als Rechnen mit Formeln. Sie ist eine Denkweise: Du untersuchst, wie ein Lösungsweg wächst, wo Engpässe entstehen und welche Alternative unter welchen Bedingungen sinnvoll ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Teste Dein Wissen ==&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was untersucht die Algorithmenanalyse hauptsächlich?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Den Ressourcenbedarf von Algorithmen)&lt;br /&gt;
(!Die Farbe einer Benutzeroberfläche)&lt;br /&gt;
(!Die Rechtschreibung von Programmkommentaren)&lt;br /&gt;
(!Die Lautstärke eines Computers)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was beschreibt die Eingabegröße n typischerweise?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Die Größe der zu verarbeitenden Eingabe)&lt;br /&gt;
(!Die Versionsnummer eines Programms)&lt;br /&gt;
(!Die Anzahl der Programmiersprachen)&lt;br /&gt;
(!Die Taktfrequenz des Monitors)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Laufzeit entsteht häufig bei einer einfachen Schleife über alle Listenelemente?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Lineare Laufzeit)&lt;br /&gt;
(!Faktorielle Laufzeit)&lt;br /&gt;
(!Konstante Laufzeit)&lt;br /&gt;
(!Exponentielle Laufzeit)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Voraussetzung benötigt die binäre Suche?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine sortierte Datenmenge)&lt;br /&gt;
(!Eine unsortierte Datenmenge)&lt;br /&gt;
(!Eine leere Datenmenge)&lt;br /&gt;
(!Eine zufällig veränderte Datenmenge)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bedeutet Worst Case?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der ungünstigste betrachtete Eingabefall)&lt;br /&gt;
(!Der schönste Programmcode)&lt;br /&gt;
(!Der kürzeste Dateiname)&lt;br /&gt;
(!Der erste erfolgreiche Testlauf)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Ordnung ist typisch für viele effiziente vergleichsbasierte Sortierverfahren?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(O n log n)&lt;br /&gt;
(!O n hoch drei)&lt;br /&gt;
(!O zwei hoch n)&lt;br /&gt;
(!O n Fakultät)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was beschreibt die Speicherkomplexität?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Den zusätzlichen Speicherbedarf eines Algorithmus)&lt;br /&gt;
(!Die Bildschirmauflösung eines Programms)&lt;br /&gt;
(!Die Anzahl der Entwicklerinnen und Entwickler)&lt;br /&gt;
(!Die Länge des Programmnamens)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum werden konstante Faktoren in der asymptotischen Analyse oft weggelassen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Weil das Wachstum für große Eingaben im Mittelpunkt steht)&lt;br /&gt;
(!Weil sie in Programmen verboten sind)&lt;br /&gt;
(!Weil Computer keine Konstanten speichern können)&lt;br /&gt;
(!Weil sie immer größer als n sind)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist ein typisches Merkmal logarithmischer Laufzeit?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der Suchbereich wird wiederholt stark verkleinert)&lt;br /&gt;
(!Alle Permutationen werden ausprobiert)&lt;br /&gt;
(!Jedes Element wird mit jedem anderen verglichen)&lt;br /&gt;
(!Der Speicher wird absichtlich gelöscht)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was leistet die amortisierte Analyse?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Sie betrachtet die durchschnittlichen Kosten über eine Operationsfolge)&lt;br /&gt;
(!Sie ersetzt jeden Algorithmus durch Zufall)&lt;br /&gt;
(!Sie misst nur die Temperatur der Hardware)&lt;br /&gt;
(!Sie bewertet nur die Farbe von Diagrammen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Landau-Symbol || Wachstumsbeschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Worst Case || Ungünstigster Fall&lt;br /&gt;
|-&lt;br /&gt;
| Binäre Suche || Halbierter Suchbereich&lt;br /&gt;
|-&lt;br /&gt;
| Speicherkomplexität || Zusatzspeicher&lt;br /&gt;
|-&lt;br /&gt;
| Rekursion || Selbstaufruf&lt;br /&gt;
|-&lt;br /&gt;
| Lineare Suche || Elementweises Prüfen&lt;br /&gt;
|-&lt;br /&gt;
| Quicksort || Teile-und-herrsche&lt;br /&gt;
|-&lt;br /&gt;
| Asymptotik || Verhalten bei großen Eingaben&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag and Drop ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Ordne die richtigen Begriffe zu.&lt;br /&gt;
! Thema&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Konstante Laufzeit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Aufwand bleibt unabhängig von der Eingabegröße&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Logarithmische Laufzeit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Suchbereich wird wiederholt verkleinert&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Lineare Laufzeit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Jedes Element wird einmal betrachtet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Quadratische Laufzeit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Zwei vollständige Schleifen sind verschachtelt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Exponentielle Laufzeit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Aufwand wächst besonders schnell mit jedem weiteren Element&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Asymptotik || Wie heißt die Betrachtung des Verhaltens bei sehr großen Eingaben?&lt;br /&gt;
|-&lt;br /&gt;
| Laufzeit || Welche Ressource beschreibt die benötigte Rechenzeit?&lt;br /&gt;
|-&lt;br /&gt;
| Speicher || Welche Ressource beschreibt den benötigten Platz im Arbeitsspeicher?&lt;br /&gt;
|-&lt;br /&gt;
| Rekursion || Wie heißt ein Verfahren, bei dem sich eine Methode selbst aufruft?&lt;br /&gt;
|-&lt;br /&gt;
| Iteration || Wie heißt die wiederholte Ausführung mit Schleifen?&lt;br /&gt;
|-&lt;br /&gt;
| Sortieren || Wie heißt das Anordnen von Daten nach einer Ordnung?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Algorithmenanalyse &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Die Algorithmenanalyse untersucht den { Ressourcenbedarf } von Algorithmen. Die wichtigste Eingabegröße wird häufig mit { n } bezeichnet. Eine einfache Schleife über alle Elemente führt oft zu { linearer } Laufzeit. Bei der binären Suche wird der Suchbereich wiederholt { halbiert }. Der ungünstigste Eingabefall heißt { Worst Case }. Der günstigste Eingabefall heißt { Best Case }. Die asymptotische Analyse betrachtet vor allem das Verhalten bei { großen } Eingaben. Das Symbol O beschreibt eine { obere } Schranke. Die Speicherkomplexität untersucht den zusätzlichen { Speicherbedarf }. Bei rekursiven Algorithmen helfen oft { Rekursionsgleichungen }.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
&lt;br /&gt;
# [[Alltagsalgorithmus]]: Beschreibe einen Algorithmus aus Deinem Alltag, zum Beispiel Zähneputzen, Brotbacken oder das Suchen eines Buches, und erkläre, welche Eingabegröße dabei sinnvoll sein könnte.&lt;br /&gt;
# [[Lineare Suche]]: Erstelle eine kleine Liste mit zehn Namen und zeige Schritt für Schritt, wie eine lineare Suche im Best Case und im Worst Case abläuft.&lt;br /&gt;
# [[Laufzeitklassen]]: Zeichne ein Lernplakat, das konstante, logarithmische, lineare und quadratische Laufzeit mit eigenen Beispielen erklärt.&lt;br /&gt;
# [[Pseudocode]]: Schreibe Pseudocode für das Finden der größten Zahl in einer Liste und markiere die Operation, die bei der Analyse gezählt werden soll.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard ===&lt;br /&gt;
&lt;br /&gt;
# [[Schleifenanalyse]]: Analysiere drei kurze Programme mit einfachen und verschachtelten Schleifen und begründe jeweils die vermutete Laufzeitordnung.&lt;br /&gt;
# [[Binäre Suche]]: Vergleiche lineare Suche und binäre Suche an einer sortierten Liste mit 32 Elementen und dokumentiere die maximale Anzahl der Vergleiche.&lt;br /&gt;
# [[Sortierverfahren]]: Recherchiere Bubble Sort, Insertion Sort und Merge Sort in OER-Quellen und erstelle eine Tabelle mit Idee, Laufzeit und Speicherbedarf.&lt;br /&gt;
# [[Messung und Analyse]]: Implementiere ein einfaches Suchverfahren und miss die Laufzeit für verschiedene Eingabegrößen. Vergleiche Deine Messwerte mit der theoretischen Erwartung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
&lt;br /&gt;
# [[Rekursionsgleichung]]: Analysiere einen rekursiven Algorithmus, der ein Problem halbiert, und erkläre mit eigenen Worten, warum eine logarithmische Laufzeit entstehen kann.&lt;br /&gt;
# [[Trade-off]]: Entwickle ein Beispiel, bei dem zusätzlicher Speicher die Laufzeit verbessert, und diskutiere die Vor- und Nachteile.&lt;br /&gt;
# [[Graphalgorithmus]]: Beschreibe eine Breitensuche in einem selbst gezeichneten Graphen und erkläre, warum Knoten und Kanten für die Analyse wichtig sind.&lt;br /&gt;
# [[Algorithmusvergleich]]: Wähle zwei Algorithmen für dasselbe Problem, vergleiche sie nach Laufzeit, Speicherbedarf, Verständlichkeit und praktischer Eignung und begründe eine Empfehlung.&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
# [[Transferaufgabe]]: Ein Online-Shop muss Produkte in einer großen Datenbank suchen. Erkläre, warum eine lineare Suche problematisch sein kann und welche Rolle Sortierung oder Indexierung spielen könnte.&lt;br /&gt;
# [[Fallanalyse]]: Ein Algorithmus ist bei kleinen Eingaben schneller, hat aber eine schlechtere Wachstumsordnung als ein zweiter Algorithmus. Entscheide, welcher Algorithmus für sehr große Eingaben besser geeignet ist, und begründe Deine Entscheidung.&lt;br /&gt;
# [[Komplexitätsvergleich]]: Vergleiche O(n), O(n log n), O(n²) und O(2ⁿ) in einem selbst gewählten Szenario und erkläre die praktischen Folgen.&lt;br /&gt;
# [[Rekursionsverständnis]]: Erkläre an einem Beispiel, wie Rekursion die Laufzeit beeinflussen kann, und unterscheide dabei zwischen einem und mehreren rekursiven Aufrufen.&lt;br /&gt;
# [[Zeit-Speicher-Abwägung]]: Entwirf eine Situation, in der mehr Speicher zu weniger Laufzeit führt, und bewerte, ob sich dieser Tausch lohnt.&lt;br /&gt;
# [[Modellkritik]]: Diskutiere, warum eine theoretische Laufzeitanalyse trotz moderner Hardware wichtig bleibt und wo ihre Grenzen liegen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&lt;br /&gt;
Für einen Lernnachweis sollst Du zeigen, dass Du nicht nur Begriffe wiedergeben, sondern Zusammenhänge anwenden kannst. Bearbeite dazu eine eigene Analyseaufgabe.&lt;br /&gt;
&lt;br /&gt;
# [[Algorithmusauswahl]]: Wähle ein Problem, für das es mindestens zwei Lösungswege gibt, zum Beispiel Suchen, Sortieren oder Duplikate finden.&lt;br /&gt;
# [[Pseudocode]]: Beschreibe beide Lösungswege so genau, dass eine andere Person sie nachvollziehen kann.&lt;br /&gt;
# [[Analyse]]: Bestimme für beide Lösungswege eine plausible Laufzeitordnung und eine plausible Speicherkomplexität.&lt;br /&gt;
# [[Begründung]]: Erkläre, welche Eingabegröße Du verwendest und warum.&lt;br /&gt;
# [[Reflexion]]: Entscheide, welcher Lösungsweg für kleine, mittlere und große Eingaben jeweils sinnvoll ist.&lt;br /&gt;
&lt;br /&gt;
Bewertungskriterien sind fachliche Richtigkeit, nachvollziehbare Begründung, saubere Verwendung der Begriffe, passende Beispiele und eine reflektierte Entscheidung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OERs zum Thema =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Algorithmenanalyse &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergänzende OER- und Recherchehinweise:&lt;br /&gt;
&lt;br /&gt;
# [[Wikimedia Commons]]: [https://commons.wikimedia.org/w/index.php?search=algorithm+complexity+Big+O&amp;amp;title=Special:MediaSearch&amp;amp;type=image Bilder und Diagramme zu Algorithmenkomplexität]&lt;br /&gt;
# [[Wikipedia]]: [https://de.wikipedia.org/wiki/Landau-Symbole Landau-Symbole]&lt;br /&gt;
# [[Wikipedia]]: [https://de.wikipedia.org/wiki/Komplexit%C3%A4tstheorie Komplexitätstheorie]&lt;br /&gt;
# [[Wikibooks]]: [https://de.wikibooks.org/w/index.php?search=Algorithmus+Analyse&amp;amp;title=Spezial:Suche&amp;amp;fulltext=1 Wikibooks-Suche zu Algorithmusanalyse]&lt;br /&gt;
# [[YouTube]]: [https://www.youtube.com/results?search_query=Big+O+Notation+deutsch+Algorithmenanalyse Lernvideosuche zu Big-O-Notation und Algorithmenanalyse]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Algorithmenanalyse]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Algorithmus]]&lt;br /&gt;
# [[Laufzeitanalyse]]&lt;br /&gt;
# [[Speicherkomplexität]]&lt;br /&gt;
# [[Landau-Symbole]]&lt;br /&gt;
# [[Asymptotik]]&lt;br /&gt;
# [[Datenstruktur]]&lt;br /&gt;
# [[Sortierverfahren]]&lt;br /&gt;
# [[Suchalgorithmus]]&lt;br /&gt;
# [[Binäre Suche]]&lt;br /&gt;
# [[Lineare Suche]]&lt;br /&gt;
# [[Rekursion]]&lt;br /&gt;
# [[Komplexitätstheorie]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
Die [[Algorithmenanalyse]] beschreibt, wie der Aufwand eines [[Algorithmus]] mit wachsender [[Eingabegröße]] zunimmt. Sie unterscheidet [[Laufzeit]], [[Speicherkomplexität]], günstige und ungünstige Eingabefälle sowie praktische und theoretische Betrachtungen. Mit [[Landau-Symbole|Landau-Symbolen]] werden Wachstumsordnungen wie O(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ) und O(n!) beschrieben. Dadurch kannst Du Algorithmen vergleichen, Grenzen erkennen und begründete Entscheidungen für Programme und Datenstrukturen treffen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Informatik]]&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;br /&gt;
[[Kategorie:Algorithmenanalyse]]&lt;br /&gt;
[[Kategorie:Datenstrukturen]]&lt;br /&gt;
[[Kategorie:Mathematik]]&lt;br /&gt;
[[Kategorie:Sekundarstufe II]]&lt;br /&gt;
[[Kategorie:Studium]]&lt;br /&gt;
[[Kategorie:Berufliche Bildung]]&lt;br /&gt;
&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
[[Kategorie:AI_MOOC]] [[Kategorie:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>