Komplexitätsklasse
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...