Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

P (Komplexitätsklasse)

Diese Problemklasse wird allgemein als die Klasse der „praktisch lösbaren“ Probleme betrachtet. Eine Verallgemeinerung von P ist die Klasse NP. Die Probleme aus …

Inhalt5 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Formale Definition
  3. 3. Modell und vereinfachte Schreibweise
  4. 4. Einordnung unter andere Klassen
  5. 5. P-vollständige und bekannte Probleme

Grundidee und Bedeutung

P, auch PTIME genannt, ist eine Komplexitätsklasse der theoretischen Informatik. Sie enthält alle Entscheidungsprobleme, die eine deterministische Turingmaschine in Polynomialzeit lösen kann. Ein Entscheidungsproblem verlangt als Ergebnis nur „ja“ oder „nein“. Polynomialzeit bedeutet, dass die Laufzeit durch ein Polynom in der Länge der Eingabe begrenzt ist. P gilt deshalb allgemein als die Klasse der „praktisch lösbaren“ beziehungsweise effizient lösbaren Probleme.

P ist unter Komplementbildung abgeschlossen: Liegt ein Entscheidungsproblem in P, dann liegt auch das Problem in P, bei dem die Ja- und Nein-Antworten vertauscht werden.

Formale Definition

Für die formale Beschreibung gilt:

• ℕ₀ := {0, 1, 2, 3, …} ist die Menge der natürlichen Zahlen einschließlich null.

• Σ = {0, 1} ist ein Alphabet. Jedes Wort über diesem Alphabet ist eine binäre Zeichenfolge aus 0 und 1.

• Σⁿ bezeichnet die Menge aller binären Wörter der Länge n ∈ ℕ₀.

• Σ* = ⋃ₙ∈ℕ₀ Σⁿ ist die abzählbare Menge aller endlich langen binären Wörter.

Ein Entscheidungsproblem wird als formale Sprache S ⊆ Σ* dargestellt. Jede Probleminstanz wird durch einen Binärstring beschrieben. S enthält genau diejenigen Strings, für deren Instanzen die richtige Antwort „ja“ lautet.

S heißt effizient lösbar, wenn ein Algorithmus A: Σ* → {0, 1} existiert, der in Polynomialzeit arbeitet und für jedes x die Bedingung

A(x) = 1 ⇔ x ∈ S

erfüllt. Damit ist

P = {S : (∃A)(∀x)[A(x) = 1 ⇔ x ∈ S ∧ A poly]}.

Dabei bedeutet „A poly“, dass A eine polynomielle Laufzeit besitzt.

Modell und vereinfachte Schreibweise

Ein Algorithmus kann hier als deterministische Turingmaschine aufgefasst werden: Für dieselbe Eingabe ist der Berechnungsablauf eindeutig festgelegt.

Die Definition verwendet einige übliche Vereinfachungen. Genau genommen ist vom Entscheidungsproblem der Sprache S die Rede; häufig werden jedoch die Sprache und ihr Entscheidungsproblem miteinander identifiziert. Ebenso wird der Algorithmus A mit der von ihm berechneten Funktion f_A: {0,1}* → {0,1} ∪ {⊥} gleichgesetzt. Das Symbol ⊥ bezeichnet einen Fehlerzustand, also den Fall, dass etwas schiefgegangen ist. In der vereinfachten Definition wird dieser Fehlerzustand weggelassen.

Einordnung unter andere Klassen

NP ist eine Verallgemeinerung von P. Probleme aus NP sind auf einem nichtdeterministischen Maschinenmodell in Polynomialzeit entscheidbar. Dieses Modell gilt nicht als realisierbares gewöhnliches Rechenmodell. Sicher ist P ⊆ NP. Ob sogar P = NP gilt, ist unbekannt und gehört als P-NP-Problem zu den wichtigsten ungelösten Fragen der theoretischen Informatik.

Bekannt ist die folgende Kette von Inklusionen:

L ⊆ NL ⊆ LOGCFL ⊆ NC ⊆ P ⊆ NP ⊆ PSPACE = NPSPACE ⊆ EXPTIME ⊆ NEXPTIME ⊆ EXPSPACE = NEXPSPACE.

Eine Inklusion bedeutet, dass jedes Problem der links stehenden Klasse auch zur rechts stehenden Klasse gehört. Einige Klassen sind nachweislich verschieden:

LOGCFL ≠ PSPACE ≠ EXPSPACE

und

P ≠ EXPTIME.

Die Kette allein sagt dagegen nicht, dass alle benachbarten Klassen verschieden sind.

P-vollständige und bekannte Probleme

Ein Entscheidungsproblem A heißt P-vollständig, wenn zwei Bedingungen erfüllt sind: Erstens liegt A selbst in P. Zweitens lässt sich jedes Problem aus P mit logarithmischem Platzverbrauch auf A reduzieren; diese Reduktionen liegen also in der Komplexitätsklasse L. Eine Reduktion überführt Instanzen eines Problems in Instanzen eines anderen Problems, sodass dessen Lösung zur Lösung des ursprünglichen Problems verwendet werden kann.

P-vollständige Probleme gehören zu den schwersten Problemen, die innerhalb von P noch effizient lösbar sind. Nach heutigem Kenntnisstand sind sie schwer zu parallelisieren, also schwer so aufzuteilen, dass viele Rechenschritte gleichzeitig ausgeführt werden können. Genannte Beispiele sind:

• Circuit Value Problem: Es wird bestimmt, ob das Ergebnis eines Booleschen Schaltkreises bei einer gegebenen Eingabe einer gegebenen Ausgabe entspricht.

• Lineare Programmierung.

• HORNSAT.

Sehr viele weitere Probleme liegen in P. Häufig ist für sie ein passender Algorithmus bekannt. Als Beispiel nennt der Artikel das Sortierungsproblem, das etwa mit Quicksort in einer Laufzeit von O(n²) bearbeitet werden kann. Auch PRIMES, die Entscheidung, ob eine Zahl eine Primzahl ist, liegt entgegen früheren Vermutungen in P. Dies zeigt der AKS-Primzahltest aus dem Jahr 2002.

Lernvideos zu P (Komplexitätsklasse)

Weiterlesen

Komplexitätstheorie Die Komplexität von Algorithmen wird in deren Ressourcenverbrauch gemessen, meist Rechenzeit oder Speicherplatzbedarf, manchmal auch speziellere Maße wie die … Komplexitätsklasse Eine Komplexitätsklasse ist eine Menge von Problemen, welche sich in einem bestimmten ressourcenbeschränkten Berechnungsmodell berechnen lassen. Zusammenhang … Turingmaschine Eine Turingmaschine ist ein mathematisches Modell der theoretischen Informatik, das eine abstrakte Maschine definiert. Bei diesem Rechnermodell werden nach … NP (Komplexitätsklasse) In der Informatik bezeichnet NP (für nichtdeterministisch polynomielle Zeit) eine fundamentale Komplexitätsklasse aus dem Bereich der Komplexitätstheorie. P-NP-Problem Das P-NP-Problem (auch P≟NP oder P versus NP) ist ein ungelöstes Problem der Komplexitätstheorie in der theoretischen Informatik. Natürliche Zahl Die natürlichen Zahlen (ℕ) sind Teil der ganzen Zahlen (ℤ), die Teil der rationalen Zahlen (ℚ), die wiederum Teil der reellen Zahlen (ℝ) sind. Die dabei global … Formale Sprache Eine formale Sprache ist eine abstrakte Sprache, bei der im Unterschied zu natürlichen Sprachen oft nicht die Kommunikation im Vordergrund steht, … Quicksort Quicksort (englisch quick ‚schnell' und to sort ‚sortieren') ist ein schneller, rekursiver, nicht-stabiler Sortieralgorithmus, der nach dem Prinzip Teile … AKS-Primzahltest Der AKS-Primzahltest (auch bekannt unter dem Namen Agrawal-Kayal-Saxena-Primzahltest) ist ein deterministischer Algorithmus, der für eine natürliche Zahl in …