Zeit- und Platzklassen: Unterschied zwischen den Versionen

Aus Einführung in die Theoretische Informatik und in die Mathematische Logik
Wechseln zu: Navigation, Suche
(Polynomielle Zeit)
Zeile 32: Zeile 32:
 
== Polynomielle Zeit ==
 
== Polynomielle Zeit ==
  
Eine Sprache heiße '''polynomiell''', wenn es für ihr Entscheidungsproblem einen Algorithmus in ${\cal O}(p)$ für ein Polynom $p$ gibt. Die Klasse aller polynomiellen Sprachen wird mit $P$ bezeichnet. Während lineare Zeit zum Beispiel bei Einband- und Mehrbandturingmaschinen unterschiedlich ist, so gibt es doch zwischen allen Maschinenmodellen polynomielle Reduktionen, das heißt, $P$ ist dort invariant.
+
Eine Sprache heiße '''polynomiell''', wenn es für ihr Entscheidungsproblem einen Algorithmus in ${\cal O}(p)$ für ein Polynom $p$ gibt. Die Klasse aller polynomiellen Sprachen wird mit $P$ bezeichnet. Es gilt $P = \bigcup\limits_{n\in\mathbb{N}} \operatorname{DSPACE(x\mapsto x^n)}$.
 +
 
 +
 
 +
Während lineare Zeit zum Beispiel bei Einband- und Mehrbandturingmaschinen unterschiedlich ist, so gibt es doch zwischen allen Maschinenmodellen polynomielle Reduktionen, das heißt, $P$ ist dort invariant.
  
 
'''TODO'''
 
'''TODO'''
  
 
[[Kategorie:TODO]]
 
[[Kategorie:TODO]]

Version vom 23. August 2018, 17:49 Uhr

Es gibt zwei wesentliche Fragen, die man sich über ein Programm idR stellt: Wie viel Zeit benötigt es, und wie viel Speicher braucht es dafür. Üblicherweise berechnet man den maximalen Platz bzw. die maximale Zeit in Abhängigkeit der Länge der Eingabe.

Weiterhin betrachtet man üblicherweise nicht die absolute Zeit bzw. den absoluten Platz, den ein Algorithmus braucht, sondern dessen Asymptotik, die man üblicherweise in Landau-Notation angibt. Der Grund ist, dass es verschiedene Maschinenmodelle gibt, aber die Asymptotik in den meisten realisierbaren Maschinenmodellen gleich ist (wir lassen an der Stelle mal Quantencomputer außen vor).

Algorithmen

Wir sagen, ein Algorithmus $A(x)$ hat die (Zeit-)Komplexität ${\cal O}(f)$, oder meistens einfach "ist ${\cal O}(f)$", wenn es eine Funktion $g$ gibt, sodass die Zeit, die $A(x)$ braucht, höchstens $g(|x|)$ Schritte sind, wobei $|x|$ die Länge von $x$ ist, sodass $g\in{\cal O}(f)$.

Oft schreibt man auch explizit hin, in Abhängigkeit von was genau die Klasse ist, also in unserem Fall ${\cal O}(f(|x|))$. Meistens redet man aber über Probleme mit nur einer Eingabe, und dann ist üblicherweise die Länge der Eingabe gemeint.

Ist die Eingabe eine Zahl, dann meint man normalerweise deren Länge in einem Stellenwertsystem, zum Beispiel dem Dezimalsystem.

Es ist auf jeden Fall bei solchen Angaben immer wichtig, zu wissen, was genau gemeint ist, sonst kann es schnell zu Missverständnissen kommen.

Sortierung von Listen

Wir wollen uns ein praktisches Beispiel anschauen: Das Sortieren von Listen.

TODO

Klassen

Vielen Algorithmen sieht man ihre Komplexität direkt an, oder man kommt durch ein wenig Nachdenken darauf. Andererseits kann es zum selben Problem viele verschiedene Algorithmen mit unterschiedlichem Laufzeitverhalten geben, wie wir beim Sortieren von Listen gesehen haben.

Umgekehrt kann man sich aber nun die interessantere Frage stellen, wie gut ein gegebenes Problem lösbar ist. Wir werden uns hier im Wesentlichen auf Entscheidungsprobleme beschränken. Eine Klasse von Problemen ist eine Menge von Sprachen; meistens betrachtet man Klassen, deren Probleme die gleiche Zeit- oder Platz-Komplexität haben.

Mit $\operatorname{DTIME}(f)$ bezeichnet man die Menge der Probleme, die sich mit einer deterministischen Turingmaschine in ${\cal O}(f)$ schritten lösen lassen.

Mit $\operatorname{DSPACE}(f)$ bezeichnet man die Menge der Probleme, die sich mit einer deterministischen Turingmaschine unter Platzbedarf ${\cal O}(f)$ lösen lassen.


Polynomielle Zeit

Eine Sprache heiße polynomiell, wenn es für ihr Entscheidungsproblem einen Algorithmus in ${\cal O}(p)$ für ein Polynom $p$ gibt. Die Klasse aller polynomiellen Sprachen wird mit $P$ bezeichnet. Es gilt $P = \bigcup\limits_{n\in\mathbb{N}} \operatorname{DSPACE(x\mapsto x^n)}$.


Während lineare Zeit zum Beispiel bei Einband- und Mehrbandturingmaschinen unterschiedlich ist, so gibt es doch zwischen allen Maschinenmodellen polynomielle Reduktionen, das heißt, $P$ ist dort invariant.

TODO