Theorie der Programmierung - Cheatsheet.pdf

Theorie der Programmierung - Cheatsheet
Theorie der Programmierung - Cheatsheet Chomsky-Hierarchie Definition: Hierarchie formaler Grammatiken, unterteilt in vier Klassen nach zunehmender Ausdruckskraft. Details: Typ-0: Rekursiv aufzählbare Sprachen Typ-1: Kontext-sensitive Sprachen Typ-2: Kontextfreie Sprachen Typ-3: Reguläre Sprachen Enthält jede Klasse die darüber liegende Klasse (Inklusionsbeziehung) Wichtig für die Beschreibung von...

© StudySmarter 2024, all rights reserved.

Theorie der Programmierung - Cheatsheet

Chomsky-Hierarchie

Definition:

Hierarchie formaler Grammatiken, unterteilt in vier Klassen nach zunehmender Ausdruckskraft.

Details:

  • Typ-0: Rekursiv aufzählbare Sprachen
  • Typ-1: Kontext-sensitive Sprachen
  • Typ-2: Kontextfreie Sprachen
  • Typ-3: Reguläre Sprachen
  • Enthält jede Klasse die darüber liegende Klasse (Inklusionsbeziehung)
  • Wichtig für die Beschreibung von Sprachklassen und Automaten

Turingmaschinen und das Halteproblem

Definition:

Turingmaschine: Berechenbarkeitsmodell, untersucht algorithmische Probleme. Halteproblem: Feststellen, ob ein Programm auf Eingabe jemals hält.

Details:

  • Turingmaschine: Besteht aus Eingabeband, Zustandsregister, Übergangsfunktion, Lese-Schreibkopf.
  • Formale Beschreibung: \(M = (Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject})\)
  • Halteproblem: Entscheidungsproblem, ob Turingmaschine M bei Eingabe w hält (stoppt) oder nicht.
  • Unentscheidbarkeit: Halteproblem ist nachweislich unentscheidbar (es existiert kein Algorithmus, der das für alle Eingaben korrekt entscheidet).
  • Reduktionsbeweis: Nutzt diagonales Argument oder Reduktion auf das Lügner-Paradoxon.
  • Folge: Nicht alle Probleme sind algorithmisch lösbar, Grenzen der Berechenbarkeit.

Komplexitätsklassen P und NP

Definition:

P umfasst Entscheidungsprobleme, die auf einer deterministischen Turingmaschine in polynomialer Zeit gelöst werden können. NP umfasst Entscheidungsprobleme, bei denen eine Lösung in polynomialer Zeit auf einer deterministischen Turingmaschine verifiziert werden kann.

Details:

  • P: Menge von Problemen, die in polynomialer Zeit (poly-time) lösbar sind.
  • NP: Menge von Problemen, deren Lösung in polynomialer Zeit verifizierbar ist.
  • Es gilt: P \( \subseteq \) NP.
  • Unklarheit, ob P = NP (das P-NP-Problem).
  • Bekannte NP-vollständige Probleme können benutzt werden, um die Schwierigkeit eines NP-Problems zu zeigen.
  • Ein Problem ist NP-vollständig, wenn es selbst in NP ist und jedes Problem in NP polynomial auf es reduziert werden kann.

Prädikatenlogik und Unifikationsalgorithmen

Definition:

Prädikatenlogik: Erweiterung der Aussagenlogik um Quantoren und Prädikate. Unifikationsalgorithmus: Verfahren zur Bestimmung einer allgemeinsten Unifikator für Terme.

Details:

  • Prädikatenlogik: Terme, Atome, Formeln
  • Quantoren: Existenz (\thereexists), All (\forall)
  • Unifikation: Ersetze Variablen so, dass Terme gleich werden
  • Allgemeinster Unifikator (MGU): Ein minimaler Satz an Ersetzungen
  • Algorithmus: Festlegen der Substitutionen bis Anpassung

Lambda-Kalkül: Alpha-, Beta- und Eta-Umwandlungen

Definition:

Lambda-Kalkül: Alpha-, Beta- und Eta-Umwandlungen - grundlegende Transformationen zur Manipulation und Vereinfachung von Lambda-Ausdrücken.

Details:

  • Alpha-Umwandlung: Umbenennung von gebundenen Variablen.
  • Beta-Umwandlung: Funktionenanwendung; \((\lambda x. M) N \rightarrow M[x := N]\).
  • Eta-Umwandlung: Extensionalität; \(\lambda x. (M x) \rightarrow M\), falls \(x\) nicht frei in \(M\) ist.

Reguläre Ausdrücke und ihre Anwendungen

Definition:

Reguläre Ausdrücke (Regex) sind Muster, die verwendet werden, um Zeichenketten zu durchsuchen, zu bearbeiten oder zu validieren.

Details:

  • Kern-Konzepte: Literale, Metazeichen, Quantoren, Zeichenklassen
  • Syntaxbeispiele: . (beliebiges Zeichen), * (0 oder mehr), [^abc] (kein a, b oder c)
  • Anwendungen: Pattern Matching, String-Manipulation, Such-und-Ersetz-Operationen, Validierung von Eingaben
  • Integriert in viele Programmiersprachen und Tools: z.B. Python, Java, grep, sed

NP-Vollständigkeit und Polynomialzeitreduktionen

Definition:

NP-Vollständigkeit: Klasse von Problemen, die sowohl in NP liegen als auch NP-schwer sind. Ein Problem ist in NP, wenn die Lösung in polynomialer Zeit verifiziert werden kann. Polynomialzeitreduktionen: Mittel zur Transformation eines Problems in ein anderes, wobei die Transformationszeit polynomial ist.

Details:

  • Ein Problem A ist NP-vollständig, wenn A in NP ist und jedes Problem in NP in polynomialer Zeit auf A reduziert werden kann.
  • Verwende Polynomialzeitreduktionen (Reduktion in polynomieller Zeit), um die Komplexität eines Problems zu analysieren.
  • Wenn ein NP-vollständiges Problem lösbar ist, dann sind alle Probleme in NP lösbar.
  • Bekannte NP-vollständige Probleme: SAT, CLIQUE, Knotenüberdeckung.
  • Verwendete Reduktionsmethoden: Karp-Reduktion, Turing-Reduktion.

Beweise und Beweiserhaltung im Lambda-Kalkül

Definition:

Beweise und Beweiserhaltung im Lambda-Kalkül betreffen die Korrektheit und Konsistenz von Ausdrücken und deren Manipulationen.

Details:

  • Lambda-Kalkül: Formalismus der Funktionstheorie
  • Korrektheit: Einhalten der typisierung im reduzierten Ausdruck
  • Beweiserhaltung: Typen bleiben bei Reduktionsschritten erhalten
  • Grundlegende Theoreme:
    • Substitutionstheorem: Erhaltung der Typkorrektheit bei Substitution
    • Reduktionstheorem: Bei Reduktion bleibt der Typ erhalten
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