Polynomialzeit

In der Komplexitätstheorie bezeichnet man ein Problem als in Polynomialzeit lösbar, wenn die Rechenzeit m mit der Problemgröße n nicht stärker als mit einer Polynomfunktion wächst. Die besondere Bedeutung der Polynomialzeit besteht darin, dass man sie als eine Grenze zwischen praktisch lösbaren und praktisch nicht lösbaren Problemen betrachtet. Der Aufwand für Probleme, die nicht in Polynomialzeit lösbar sind, explodiert derart schnell, dass sie schon für geringe Problemgrößen praktisch als unlösbar gelten müssen.

Inhaltsverzeichnis

Formale Definition

In mathematischer Schreibweise gemäß der Landau-Notation: m(n) = O(nk), wobei k eine Konstante ist.

Polynomieller Algorithmus - ein Beispiel

Ein polynomieller Algorithmus ist ein Algorithmus, für den die Rechenzeit für die Lösung eines gegebenen Problems maximal polynomiell von der Problemgröße abhängt. Die Problemgröße bezieht sich dabei in der Regel auf die Eingabelänge.

Beispiel: Ein Sortieralgorithmus, der für ein doppelt so großes Array konsistent etwa viermal so lange benötigt (allgemeiner: der für ein n-mal so großes Array n²-mal so lange braucht), ist ein quadratischer und somit - weil n² ein Polynom ist - ein polynomieller Algorithmus.

Ein Algorithmus, der für eine Aufgabe beispielsweise 2n-mal so lange benötigt, wächst nicht polynomiell, sondern exponentiell (siehe exponentieller Algorithmus). Dies möchte man in der Regel vermeiden.

Superpolynomialzeit

Probleme, deren Berechnungszeit mit der Problemgröße stärker als mit einer Polynomfunktion wächst, heißen in Superpolynomialzeit lösbar, ein Beispiel dafür ist exponentielle Zeit (m(n) = O(cn), c konstant).

Bezug zu den Komplexitätsklassen

Die Klasse aller Probleme, die sich auf einer deterministischen sequentiellen Maschine in Polynomialzeit lösen lassen, wird als P (von polynomial) bezeichnet. Die Klasse aller Probleme, die sich von einer (hypothetischen) nichtdeterministischen Maschine lösen lassen, wird als NP (von nondetermistic-polynomial time) bezeichnet. Es ist klar, dass P \subseteq NP, also P eine Teilmenge von NP ist. Eine bis heute unbewiesene Vermutung ist, dass wirklich beide Klassen verschieden sind, also P \neq NP . Diese Frage wird P/NP-Problem genannt und gilt als wichtigstes offenes Problem der Theoretischen Informatik.

Kritik

Die Polynomialzeit wurde bereits in den 1970er Jahren als Grenze zwischen den praktisch lösbaren und den praktisch unlösbaren Problemen angesehen. Es stellt sich die Frage, ob diese Sichtweise aufgrund der drastischen Verschnellerung moderner Computerhardware angepasst werden muss. Umgekehrt kann die Frage gestellt werden, ob nicht auch Polynome hohen Grades eine Aufwandsexplosion zur Folge haben, die praktisch nicht mehr zu handhaben ist. Die Polynomialzeit erscheint somit als recht willkürliche Grenze der Machbarkeit.

Es lassen sich jedoch eine Reihe von Gründen für die Beibehaltung dieser Sichtweise anführen. Insbesondere hat sich herausgestellt, dass Probleme, die zunächst nur mit schlechtem polynomiellen Aufwand lösbar waren, jeweils recht bald auch mit niedrigem polynomiellem Aufwand (etwa vom Grad 2 oder 3) gelöst werden konnten. Offensichtlich bilden Polynomfunktionen eine so zusammenhängende Struktur, dass der algorithmische Aufwand meist auf Polynome niedrigen Grades zurückgeführt werden kann. Andererseits würde eine Beschränkung der praktisch machbaren Probleme etwa auf die in Linearzeit lösbaren Probleme eine derart große Gruppe bedeutsamer Algorithmen ausschließen, dass dies zumindest aus der Sicht der theoretischen Informatik kaum als gerechtfertigt erscheint.

Dies bedeutet jedoch nicht, dass auch eine Polynomialzeit niedrigen Grades in der Praxis bereits als inakzeptabel gelten kann.

See also: Polynomialzeit, 1970, Komplexitätstheorie, Landau-Notation, Mengenlehre, NP (Komplexitätsklasse), P/NP-Problem, P (Komplexitätsklasse), Polynomfunktion