Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Zeitkomplexität

Unter der Zeitkomplexität wird in der Informatik die Anzahl der ... Bubblesort zwar für große Datenmengen ein recht langsames Verfahren, eignet …

Inhalt5 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Algorithmen, Probleme und Modelle
  3. 3. Best-, Worst- und Average-Case
  4. 4. Abhängigkeit von Operationen und Datenstrukturen
  5. 5. Beispiel einer Listensuche und amortisierte Analyse

Grundidee und Bedeutung

Zeitkomplexität bezeichnet in der Informatik die Anzahl der Rechenschritte, die ein optimaler Algorithmus zur Lösung einer Aufgabe benötigt, abhängig von der Länge der Eingabe. Sie wird auch asymptotische Laufzeit genannt: Untersucht wird, wie sich der Aufwand bei sehr großen Eingabemengen verhält.

Entscheidend ist nicht die konkrete Laufzeit eines Programms auf einem bestimmten Computer. Stattdessen betrachtet man die Skalierbarkeit: Wie wächst der Zeitbedarf, wenn mehr Daten verarbeitet werden? Bei doppelter Datenmenge kann sich der Aufwand zum Beispiel verdoppeln oder quadrieren.

Die Laufzeit wird in Abhängigkeit von der Eingabelänge n angegeben und für immer größer werdende n mit der Landau-Notation, insbesondere der Groß-O-Notation, abgeschätzt. Rekursionsgleichungen lassen sich genauer etwa mit dem Mastertheorem oder der Substitutionsmethode abschätzen.

Algorithmen, Probleme und Modelle

Bei einem konkreten Algorithmus ist mit Zeitkomplexität die Zahl der Schritte für eine Eingabe der Länge n gemeint. Sie kann für den besten, schlechtesten oder durchschnittlichen Fall bestimmt werden.

In der Komplexitätstheorie stehen jedoch Probleme im Mittelpunkt. Die Komplexität von Algorithmen ist vor allem wichtig, weil sie Aussagen über die Schwierigkeit des behandelten Problems ermöglicht. Zeitkomplexität gehört dort neben der Platzkomplexität, also dem benötigten Speicherplatz, zu den am häufigsten untersuchten Eigenschaften. Sie bildet unter anderem eine Grundlage für bedeutsame Komplexitätsklassen.

Praktisch hilft die Analyse bei der Auswahl eines passenden Algorithmus. Bubblesort ist bei großen Datenmengen recht langsam, kann wegen seines geringen Overheads aber für kleine Datenmengen geeignet sein, insbesondere für n ≤ 8.

Zeitkomplexität wird stets bezogen auf ein Maschinenmodell angegeben. Üblich ist die Turingmaschine; alternativ kann eine Registermaschine verwendet werden, die tatsächlichen Computern ähnlicher ist. Für parallele Algorithmen eignet sich ein paralleles Modell wie PRAM. Mit PRAM steht das Externspeichermodell in Beziehung; Probleme, die effizient im PRAM lösbar sind, können auch effizient im Externspeicher berechnet werden. Außerdem unterscheidet man deterministische und nichtdeterministische Maschinen.

Best-, Worst- und Average-Case

Wenn neben der Eingabelänge weitere Faktoren die Laufzeit stark beeinflussen, werden verschiedene Fälle unterschieden:

  • Die worst-case-Laufzeit ist die maximale Laufzeit. Nur wenige Eingaben erreichen sie möglicherweise, daher ist sie nicht immer realistisch. In Echtzeitsystemen muss sie aber berücksichtigt werden.
  • Die average-case-Laufzeit ist die erwartete Laufzeit für eine gegebene Verteilung der Eingaben. Ist diese Verteilung unbekannt, lässt sie sich nur unter einschränkenden Annahmen berechnen. Dazu passt auch die amortisierte Laufzeitanalyse.
  • Die best-case-Laufzeit ist die minimale Laufzeit, also die Laufzeit bei idealen Eingaben. Sie wird selten angegeben, weil sie nur für wenige Fälle gilt und in den Angaben zu schlechteren Fällen bereits enthalten ist.

Wenn lediglich von Zeitkomplexität gesprochen wird, ist meistens die Abschätzung für den worst case gemeint.

Abhängigkeit von Operationen und Datenstrukturen

Oft wird Zeitkomplexität nicht unmittelbar in Zeit, sondern in der Anzahl bestimmter Operationen angegeben. Bei Sortieralgorithmen zählt man beispielsweise Vergleichsoperationen und nimmt an, dass jeder Vergleich konstante Zeit benötigt. Für elementare Datentypen gilt das normalerweise, für Zeichenketten jedoch nicht unbedingt. Vergleicht man Algorithmen mit ähnlichen Vergleichen, bleibt das Ergebnis dennoch aussagekräftig.

DBSCAN führt für jeden Punkt genau eine Nachbarschaftsanfrage aus. Da sie als langsamste Operation gilt, wird DBSCAN als linear in der Anzahl der Nachbarschaftsanfragen bezeichnet. Für den Vergleich mit einem Algorithmus ohne solche Anfragen ist jedoch ein anderes Maß nötig. Die Geschwindigkeit einer Nachbarschaftsanfrage hängt von der Indexstruktur ab, ohne dass DBSCAN selbst verändert wird. Ohne Index-Unterstützung besitzt DBSCAN eine quadratische Zeitkomplexität in der Anzahl der Distanzberechnungen.

Beispiel einer Listensuche und amortisierte Analyse

Bei einer Liste mit zwanzig Namen wird von vorn gesucht, bis der eingegebene Name gefunden ist. Im best case steht der Name an erster Stelle; die Suchzeit ist 1. Im worst case steht er an letzter Stelle; die Suchzeit ist 20. Dieselbe Suchzeit entsteht, wenn der Name nicht in der Liste ist. Ist der Name sicher enthalten, beträgt der average case 10,5.

Für komplexe Algorithmen kann die amortisierte Analyse eine realistischere Abschätzung liefern. Sie betrachtet die durchschnittlichen Kosten über alle möglichen Eingaben und berücksichtigt, wie wahrscheinlich einzelne Fälle sind. Beim Sortieren mit einem Fibonacci-Heap kann das Einsortieren eines neuen Eintrags im schlechtesten Fall aufwändig sein. Solche Fälle treten beim Durchlauf des Gesamtalgorithmus aber nur einmal auf; danach ist der Heap „fast sortiert“ und der einzelne Schritt billig. Die Analyse ist schwierig, weil zunächst eine Funktion entwickelt werden muss, die das Verhalten der Datenstruktur und damit die Wahrscheinlichkeit der Fälle möglichst genau modelliert.

In der Informationstheorie dient Zeitkomplexität dazu, die Algorithmische Tiefe einer Datenmenge zu bestimmen.

Lernvideos zu Zeitkomplexität

Weiterlesen

Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Algorithmus Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. ... Damit können sie zur Ausführung in ein Computerprogramm implementiert, aber auch in … Asymptote Eine Asymptote (altgr. ἀσύμπτωτος asýmptōtos „nicht übereinstimmend“, von altgr. πίπτω pípto „ich falle“) ist in der Mathematik eine Kurve, häufig eine … Master-Theorem ... Algorithmus mit Hilfe des Master-Theorem betrachten wir das rekursive Sortierverfahren Mergesort. Mergesort besitzt folgende Rekursionsgleichung: T ( n ) … Komplexitätstheorie Die Komplexität von Algorithmen wird in deren Ressourcenverbrauch gemessen, meist Rechenzeit oder Speicherplatzbedarf, manchmal auch speziellere Maße wie die … Komplexität (Informatik) Die Komplexität eines Problems ist zum Beispiel entscheidend für die Kryptographie und insbesondere für die asymmetrische Verschlüsselung: So verlässt sich … Bubblesort Bubblesort (auch Sortieren durch Aufsteigen oder Austauschsortieren) ist ein Algorithmus, der vergleichsbasiert eine Liste von Elementen sortiert. Turingmaschine Eine Turingmaschine ist ein mathematisches Modell der theoretischen Informatik, das eine abstrakte Maschine definiert. Bei diesem Rechnermodell werden nach … Registermaschine Die Registermaschine (RM) ist eine abstrakte Maschine der theoretischen Informatik. Registermaschinen sind Turing-vollständig, das heißt, … Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Paralleler Algorithmus Umgekehrt sind auch viele bekannte sequentielle Algorithmen parallelisierbar, so z. B. einige bekannte Sortieralgorithmen wie Bubblesort oder Quicksort. Es … Determinismus (Algorithmus) Endlichkeit (statisch: endliche Beschreibung, dynamisch: endlich viele Ressourcen bei der Ausführung) · Komplexität (Aufwand an Rechenzeit und Speicherplatz, …