Zum Inhalt springen

Komplexitätsklasse

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 12. September 2004 um 08:07 Uhr durch BWBot (Diskussion | Beiträge) (Bananeweizen - Bot: Plenken entfernt (18x)). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Komplexitätstheorie in der Informatik untersucht unter anderem die Berechenbarkeit und die Komplexität von Algorithmen.

Die Komplexitätsklasse ist definiert durch das asymptotische Verhalten der Obergrenze/des Mittelwertes/der Untergrenze der Zeitdauer/des Speicherbedarfs einer Berechnung in Abhängigkeit von einer Problemgröße . Die Laufzeit kann mit Hilfe der Landau-Symbole beschrieben werden.

Wenn allgemein von Komplexität die Rede ist, ist meist das Verhalten der Obergrenze der Zeitdauer einer Berechnung gemeint.

Die Komplexitätsklasse eines Algorithmus ist nur in einer konkreten Implementation auf einer Maschine, z.B. auf einer Turingmaschine oder im Lambda-Kalkül feststellbar. Die Komplexitätsklassen der Implementationen eines Algorithmus auf unterschiedlichen Maschinenmodellen sind jedoch meist ähnlich oder sogar -- je nach Abstraktionslevel -- gleich.

Es wird festgestellt, dass nur bestimmte Klassen dieser Größe sinnvoll unterscheidbar sind, die alle mit einer charakteristischen Gleichung beschrieben werden. So interessieren z.B. konstante Faktoren in der Komplexität eines Algorithmus nicht - schließlich gibt es in der Realität (Computer) auch Maschinen, deren Ausführungsgeschwindigkeit sich um einen konstanten Faktor unterscheidet. Hier wird auch klar, warum keine Einheiten gebraucht werden.

Eine wichtige Rolle bei der Einteilung der Komplexitätsklassen spielt die Unterscheidung von Zeitkomplexität und Platzkomplexität, bei deren Betrachtung Zeit bzw. Platz beschränkt werden. Weiterhin unterscheidet man deterministische Maschinen von nichtdeterministischen. Informell lässt sich sagen, dass Platz mächtiger ist als Zeit und Nichtdeterminismus mächtiger als Determinismus, allerdings jeweils nur exponentiell mächtiger. Genauere Abschätzungen hierzu geben der Satz von Savitch und der Satz von Immermann/Szelepcsényi.

Zeitbegrenzt

Deterministisch

  • DTIME: deterministisch zeitbeschränkt
  • P: polynomiell zeitbeschränkt
  • E: linear exponentiell zeitbeschränkt
  • EXPTIME: exponentiell zeitbeschränkt

zwischen den einzelnen Klassen von P liegen noch die logarithmischen Komplexitäten:

Nichtdeterministisch

  • NTIME: nichtdeterministisch zeitbeschränkt
  • NP: nichtdeterministisch polynomiell zeitbeschränkt
  • NE: nichtdeterministisch linear exponentiell zeitbeschränkt
  • NEXPTIME: nichtdeterministisch exponentiell zeitbeschränkt

...

Platzbegrenzt

Deterministisch

  • DSPACE: deterministisch platzbeschränkt
  • L/LOGSPACE: logarithmisch platzbeschränkt
  • LINSPACE: linear platzbeschränkt
  • PSPACE: polynomiell platzbeschränkt
  • ESPACE: linear exponentiell platzbeschränkt
  • EXPSPACE: exponentiell platzbeschränkt

Nichtdeterministisch

  • NSPACE: nichtdeterministisch platzbeschränkt
  • NL: nichtdeterministisch logarithmisch platzbeschränkt
  • NLINSPACE: nichtdeterministisch linear platzbeschränkt
  • NPSPACE: nichtdeterministisch polynomiell platzbeschränkt

...

Zusammenhäng

siehe auch: Polynomialzeithierarchie, Probabilistischer Algorithmus...