Computational complexity - Cheatsheet.pdf

Computational complexity - Cheatsheet
Computational complexity - Cheatsheet Definitionen und Eigenschaften der Klasse P Definition: Klasse P umfasst alle Entscheidungsprobleme, die von einer deterministischen Turingmaschine in polynomialer Zeit gelöst werden können. Details: Ein Problem gehört zur Klasse P, wenn es eine Turingmaschine gibt, die das Problem in Laufzeit O(n^k) für ein konstantes k löst. Polynomielle Zeitkomplexität:...

© StudySmarter 2024, all rights reserved.

Computational complexity - Cheatsheet

Definitionen und Eigenschaften der Klasse P

Definition:

Klasse P umfasst alle Entscheidungsprobleme, die von einer deterministischen Turingmaschine in polynomialer Zeit gelöst werden können.

Details:

  • Ein Problem gehört zur Klasse P, wenn es eine Turingmaschine gibt, die das Problem in Laufzeit O(n^k) für ein konstantes k löst.
  • Polynomielle Zeitkomplexität: T(n) = O(n^k) wobei T(n) die Laufzeit und n die Eingabegröße ist.
  • Wichtige Eigenschaft: Alle Algorithmen, die ein Problem der Klasse P lösen, sind effizient bzw. praktisch lösbar.

Das Problem der NP-Vollständigkeit

Definition:

NP-vollständige Probleme sind diejenigen Entscheidungsprobleme, die sowohl in NP liegen als auch NP-schwer sind.

Details:

  • Ein Problem A ist in NP, wenn eine Lösung in polynomieller Zeit verifiziert werden kann.
  • Ein Problem A ist NP-schwer, wenn jedes Problem in NP auf A in polynomieller Zeit reduzierbar ist.
  • Falls ein NP-vollständiges Problem in polynomieller Zeit lösbar ist, sind alle Probleme in NP polynomiell lösbar.
  • Das berühmte Beispiel ist das SAT-Problem.

Polynomzeit-Reduktionen

Definition:

Polynomzeit-Reduktionen, auch bekannt als polynomielle Reduktionen, sind Transformationen eines Problems in ein anderes, wobei die Umwandlung durch ein Algorithmus erfolgt, der in polynomieller Zeit läuft.

Details:

  • Nützlich zur Klassifizierung von Problemen basierend auf ihrer Schwierigkeit.
  • Formell: Ein Problem A ist polynomzeit-reduzierbar auf ein Problem B (A ≤P B), wenn es eine Funktion f gibt, die A auf B in polynomieller Zeit transformiert.
  • Mathematisch ausgedrückt: A ≤P B ⇔ ∃ f: {0,1}* → {0,1}* und f ist in P, so dass für alle x gilt: x ∈ A ⇔ f(x) ∈ B
  • Wichtig für die Theorie der NP-Vollständigkeit: Ein Problem ist NP-vollständig, wenn es in NP liegt und jedes andere Problem in NP in polynomieller Zeit auf es reduzierbar ist.

Log-Raum-Reduktionen

Definition:

Log-Raum-Reduktionen sind Reduktionen zwischen Problemen, die mit logarithmischem Platz (Log-Space) berechnet werden können.

Details:

  • Verwendet eine log-space transducer, die den Eingabestrang liest und den Ausgabestrang schreibt, während nur O(log n) Speicherplatz verwendet wird.
  • Formal: Ein Problem A log-raum-reduziert auf Problem B (A ≤log B), wenn es eine log-space Turingmaschine gibt, die eine Eingabe x in eine Eingabe y für B umwandelt, so dass x in A ist genau dann, wenn y in B ist.
  • Viel genutzt in der Komplexitätstheorie zur Charakterisierung von Komplexitätsklassen wie L, NL, P.
  • Ermöglicht die Untersuchung der Schwierigkeit von Problemen unter Speicherbeschränkungen.
  • Beispiel: Überprüfung der Erreichbarkeit in gerichteten Graphen ist NL-vollständig unter log-raum-Reduktion.

Hierarchiesätze in der Komplexitätstheorie

Definition:

Hierarchiesätze zeigen, dass mehr Ressourcen (z.B. Zeit oder Platz) mehr Problemlösungsmöglichkeiten schaffen.

Details:

  • Zeit-Hierarchiesatz: \( TIME(f(n)) \subsetneq TIME(g(n)) \) für \( f(n) = o(g(n)) \)
  • Platz-Hierarchiesatz: \( SPACE(f(n)) \subsetneq SPACE(g(n)) \) für \( f(n) = o(g(n)) \)
  • Unterscheidung in deterministisch und nicht-deterministisch
  • Wichtige Implikation: P ≠ PSPACE

Dynamische Programmierung

Definition:

Optimierungstechnik zur Lösung komplexer Probleme durch Zerlegung in einfachere Teilprobleme und Speicherung der Lösungen dieser Teilprobleme, um Redundanzen zu vermeiden.

Details:

  • Grundidee: Probleme in Teilprobleme zerlegen
  • Speichere Zwischenergebnisse zur Wiederverwendung
  • Zwei Hauptansätze: Top-Down (Memoisierung) und Bottom-Up
  • Verwendet bei Problemen mit überlappenden Teilproblemen und optimaler Substruktur
  • Zeitkomplexität in der Regel deutlich besser als naive Rekursion
  • Anwendungen: Fibonacci-Zahlen, Kürzeste Pfade, Rucksackproblem, usw.
  • Komplexitätsanalyse oft abhängig von Anzahl der Teilprobleme und Aufwand zum Lösen eines Teilproblems

Branch-and-Bound-Techniken

Definition:

Branch-and-Bound ist eine algorithmische Methode zur Lösung kombinatorischer Optimierungsprobleme durch sukzessives Aufteilen des Suchraums und Verwerfen unvorteilhafter Lösungskandidaten.

Details:

  • Nutzen Begrenzungen, um Teillösungen (Zweige) zu verwerfen.
  • Teile-und-Herrsche-Ansatz: Problem in Teilprobleme aufspalten (branching).
  • Obere und untere Schranken berechnen, um Suchbereich einzugrenzen (bounding).
  • Wichtig bei NP-schweren Problemen zur Reduktion der Berechnungszeit.
  • Typische Anwendungen: TSP, Rucksackproblem, Integer-Programmierung.

Polynomialzeit-Approximationsschemata (PTAS)

Definition:

Algorithmische Technik zur näherungsweisen Lösung von NP-schweren Problemen in Polynomialzeit.

Details:

  • Für jeden \(\text{ε} > 0\) existiert ein Algorithmus der in Polynomialzeit ein \(1 + \text{ε}\)-Approximation liefert.
  • Laufzeit des Algorithmus hängt polynomiell von der Eingabegröße \(n\) und exponentiell von \(\frac{1}{\text{ε}}\) ab: \(O(n^{f(1/\text{ε})})\).
  • Beispiele: Knapsack-Problem, Euclidean Traveling Salesman Problem (Euclid. TSP).
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden