„Polynomialzeit“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Zeile 18: Zeile 18:


== Bezug zu den Komplexitätsklassen ==
== Bezug zu den Komplexitätsklassen ==
Die Klasse aller Probleme, die sich auf einer deterministischen sequentiellen Maschine in Polynomialzeit lösen lassen, wird als '''[[P (Komplexitätsklasse)|P]]''' (von ''polynomial'') bezeichnet. Die Klasse aller Probleme, die sich von einer (hypothetischen) nichtdeterministischen Maschine in Polynomialzeit lösen lassen, wird als '''[[NP (Komplexitätsklasse)|NP]]''' (von ''nondeterministic-polynomial time'') bezeichnet. Es ist klar, dass <math> P \subseteq NP </math>, also P eine [[Mengenlehre|Teilmenge]] von NP ist. Eine bis heute unbewiesene Vermutung ist, dass wirklich beide Klassen verschieden sind, also <math> P \neq NP </math> . Diese Frage wird [[P/NP-Problem]] genannt und gilt als wichtigstes offenes Problem der Theoretischen Informatik.
Die Klasse aller Probleme, die sich auf einer deterministischen sequentiellen Maschine in Polynomialzeit lösen lassen, wird als '''[[P (Komplexitätsklasse)|P]]''' (von ''polynomial'') bezeichnet. Die Klasse aller Probleme, die sich von einer (hypothetischen) nichtdeterministischen Maschine in Polynomialzeit lösen lassen, wird als '''[[NP (Komplexitätsklasse)|NP]]''' (von ''nondeterministic-polynomial time'') bezeichnet. Es ist klar, dass <math> P \subseteq NP </math>, also P eine [[Mengenlehre|Teilmenge]] von NP ist. Eine bis heute unbewiesene Vermutung ist, dass wirklich beide Klassen verschieden sind, ob also gilt <math> P \neq NP </math> bzw. ob P eine echte Teilmenge von NP ist. Diese Frage wird [[P/NP-Problem]] genannt und gilt als wichtigstes offenes Problem der Theoretischen Informatik.


== Kritik ==
== Kritik ==

Version vom 24. Mai 2006, 07:05 Uhr

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.

Ob ein gegebenes Problem in Polynomialzeit lösbar ist, ist nicht von vornherein klar. So wurde erst 2002 von Agrawal, Kayal und Saxena ein Algorithmus (AKS-Primzahltest) angegeben, der in polynomialer Zeit entscheidet, ob eine vorgegebene natürliche Zahl eine Primzahl ist oder nicht. Das natürliche Verfahren, einfach alle möglichen Teiler durchzuprobieren, ist nicht polynomial.

Formale Definition

Ein Problem ist in polynomialer Zeit lösbar, wenn seine benötigte Rechenzeit (z.B. gemessen als Anzahl von Bitoperationen eines passenden Algorithmus auf einer Turing-Maschine) höchstens polynomial mit der Größe der Eingabemenge des Problems (z.B. gemessen in Anzahl Bits) wächst, d.h. es gibt eine natürliche Zahl mit gemäß der Landau-Notation.

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 (, 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 in Polynomialzeit lösen lassen, wird als NP (von nondeterministic-polynomial time) bezeichnet. Es ist klar, dass , also P eine Teilmenge von NP ist. Eine bis heute unbewiesene Vermutung ist, dass wirklich beide Klassen verschieden sind, ob also gilt bzw. ob P eine echte Teilmenge von NP ist. 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.